/* WhereCrew Desktop Workspace — original APIs and feature controls remain unchanged. */
:root{--dsm-ink:#1d2a3a;--dsm-muted:#627487;--dsm-line:rgba(52,78,108,.16);--dsm-blue:#1684e5;--dsm-cyan:#34b8d3;--dsm-surface:rgba(250,253,255,.88);--dsm-shadow:0 18px 50px rgba(24,53,84,.16)}
body.dsm-shell{display:block;min-height:100vh;overflow-x:hidden;background:radial-gradient(circle at 78% 12%,rgba(111,203,244,.45),transparent 29%),radial-gradient(circle at 14% 77%,rgba(126,175,247,.32),transparent 31%),linear-gradient(145deg,#c8e4f8 0%,#eff8fe 48%,#b6d5ec 100%);color:var(--dsm-ink);font-family:Inter,-apple-system,BlinkMacSystemFont,"Segoe UI","Noto Sans KR",sans-serif}
body.dsm-shell:before{content:"";position:fixed;inset:0;z-index:-1;opacity:.52;background-image:linear-gradient(rgba(255,255,255,.24) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.24) 1px,transparent 1px);background-size:44px 44px;mask-image:linear-gradient(to bottom,black,transparent)}
body.dsm-shell #login-screen{min-height:100vh;background:linear-gradient(135deg,rgba(22,58,88,.92),rgba(32,113,164,.76));display:flex;align-items:center;justify-content:center;padding:28px}
body.dsm-shell #login-screen:before{content:"";position:absolute;inset:0;background:radial-gradient(circle at 20% 20%,rgba(102,219,255,.3),transparent 26%),radial-gradient(circle at 80% 85%,rgba(152,182,255,.25),transparent 30%)}
body.dsm-shell .login-box{position:relative;width:min(420px,100%);padding:34px;border:1px solid rgba(255,255,255,.4);border-radius:20px;background:rgba(250,253,255,.91);box-shadow:0 24px 80px rgba(5,28,50,.35);color:var(--dsm-ink)}
body.dsm-shell .login-brand{gap:12px}body.dsm-shell .login-brand h1{color:#183a56;font-size:26px;letter-spacing:-.5px}body.dsm-shell .login-box>p{color:var(--dsm-muted);line-height:1.7;margin:13px 0 25px}.dsm-shell .brand-mark{width:42px;height:42px;border-radius:13px;background:linear-gradient(135deg,#0977da,#34bfc9);box-shadow:0 8px 22px rgba(16,129,219,.29)}
body.dsm-shell .sidebar{width:76px;padding:12px 8px;align-items:center;background:rgba(16,38,61,.91);border-right:1px solid rgba(255,255,255,.17);box-shadow:4px 0 20px rgba(10,40,66,.16);backdrop-filter:blur(16px)}
body.dsm-shell .sidebar-logo{display:flex;justify-content:center;width:100%;padding:7px 0 15px;border:0}body.dsm-shell .sidebar-brand>div:last-child,body.dsm-shell .nav-section,body.dsm-shell .server-info>div:not(:last-child){display:none}.dsm-shell .sidebar-logo .brand-mark{width:40px;height:40px;border-radius:13px;font-size:13px}.dsm-shell .sidebar-nav{width:100%;padding:6px 0}.dsm-shell .nav-item{position:relative;justify-content:center;width:48px;height:48px;margin:6px auto;padding:0;border:1px solid transparent;border-radius:13px;color:#c5d7e8;font-size:0;transition:transform .18s,background .18s,border-color .18s,box-shadow .18s}.dsm-shell .nav-item svg{width:21px;height:21px}.dsm-shell .nav-item:hover{transform:translateY(-1px);background:rgba(255,255,255,.13);border-color:rgba(255,255,255,.17);color:#fff}.dsm-shell .nav-item.active{border-left:1px solid rgba(128,224,250,.9);background:linear-gradient(145deg,rgba(29,143,226,.83),rgba(41,185,207,.68));box-shadow:0 8px 20px rgba(1,116,196,.36);color:#fff}.dsm-shell .nav-item[data-dsm-tip]:hover:after{position:absolute;left:57px;z-index:220;content:attr(data-dsm-tip);padding:7px 10px;border-radius:8px;background:#15304a;color:#fff;box-shadow:0 5px 17px rgba(0,0,0,.2);font-size:12px;white-space:nowrap}.dsm-shell .sidebar-footer{padding:10px 0 0;border:0;width:100%}.dsm-shell .sidebar-footer .btn{border:1px solid rgba(255,255,255,.16);background:rgba(255,255,255,.09);color:#dbeeff;font-size:0;height:38px;border-radius:11px}.dsm-shell .sidebar-footer .btn:before{content:"↪";font-size:18px}
body.dsm-shell .main{margin-left:76px;min-height:100vh}.dsm-shell .topbar{height:64px;margin:14px 16px 0;padding:0 17px;border:1px solid rgba(255,255,255,.7);border-radius:16px;background:rgba(250,253,255,.79);box-shadow:0 7px 25px rgba(33,70,104,.09);backdrop-filter:blur(18px);color:var(--dsm-ink)}.dsm-shell .topbar-title{font-size:15px;font-weight:750}.dsm-shell .topbar-utility{color:var(--dsm-muted);font-size:12px}.dsm-shell .topbar .btn{border-color:rgba(48,101,145,.2);background:rgba(255,255,255,.6);color:#34506a}.dsm-shell .topbar .btn:hover{background:#fff}.dsm-shell .content{max-width:1480px;margin:0 auto;padding:24px 28px 42px}.dsm-shell .page-intro{margin:0 0 14px;padding:0;background:transparent;border:0}.dsm-shell .page-intro h2{font-size:25px;color:#18344e;letter-spacing:-.6px}.dsm-shell .page-eyebrow{color:#227ec1;font-weight:800;letter-spacing:1.2px}.dsm-shell .page-intro p,.dsm-shell .page-updated{color:var(--dsm-muted)}
.dsm-desktop-scene{min-height:calc(100vh - 153px);padding:16px 4px 22px}.dsm-desktop-scene~*{display:none}.dsm-shell:has(.dsm-desktop-scene) .page-intro{display:none}.dsm-desktop-head{display:flex;align-items:flex-start;justify-content:space-between;gap:20px;margin:0 0 32px;padding:14px 5px}.dsm-desktop-head h2{margin:5px 0 7px;color:#173b5a;font-size:30px;letter-spacing:-1px}.dsm-desktop-head p{max-width:570px;color:#4d6981;line-height:1.65}.dsm-clock{text-align:right}.dsm-clock-time{font-size:26px;font-weight:750;color:#193f60;letter-spacing:-1px}.dsm-clock-date{margin-top:3px;color:#5b758d;font-size:12px}.dsm-desktop-health{display:flex;justify-content:flex-end;gap:7px;margin-top:10px}.dsm-health-pill{padding:5px 9px;border:1px solid rgba(35,132,188,.18);border-radius:999px;background:rgba(255,255,255,.62);color:#3b607e;font-size:11px}.dsm-health-pill b{color:#186eae}.dsm-app-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(142px,1fr));gap:18px;max-width:1000px;margin:8px 0 36px}.dsm-workspace-app{min-height:149px;padding:17px 14px;text-align:left;border:1px solid rgba(255,255,255,.72);border-radius:19px;background:rgba(248,253,255,.72);box-shadow:0 10px 26px rgba(42,78,113,.09);color:#1d3953;cursor:pointer;transition:transform .18s,box-shadow .18s,background .18s}.dsm-workspace-app:hover{transform:translateY(-5px);background:rgba(255,255,255,.94);box-shadow:0 16px 34px rgba(34,81,124,.17)}.dsm-workspace-app[hidden]{display:none!important}.dsm-workspace-icon{display:grid;width:47px;height:47px;place-items:center;margin-bottom:15px;border-radius:15px;background:linear-gradient(145deg,var(--app-a),var(--app-b));box-shadow:0 8px 18px color-mix(in srgb,var(--app-a) 30%,transparent);color:#fff;font-weight:850;font-size:13px;letter-spacing:.4px}.dsm-workspace-name{display:block;font-size:13px;font-weight:750}.dsm-workspace-sub{display:block;overflow:hidden;margin-top:5px;color:#65809a;font-size:10px;line-height:1.35;white-space:nowrap;text-overflow:ellipsis}.dsm-desktop-footer{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(260px,.65fr);gap:18px}.dsm-info-card{padding:19px 21px;border:1px solid rgba(255,255,255,.71);border-radius:18px;background:rgba(248,252,255,.7);box-shadow:0 10px 24px rgba(35,74,110,.08)}.dsm-info-card h3{margin:0;color:#23415b;font-size:14px}.dsm-info-card p{margin:8px 0 0;color:#628099;font-size:12px;line-height:1.6}.dsm-system-line{display:flex;gap:20px;flex-wrap:wrap;margin-top:13px}.dsm-system-line span{color:#678199;font-size:11px}.dsm-system-line b{margin-left:4px;color:#1d5682}.dsm-shortcut{display:flex;align-items:center;justify-content:space-between;gap:16px}.dsm-shortcut .btn{flex-shrink:0}
.dsm-window-bar{display:flex;align-items:center;justify-content:space-between;gap:16px;margin:0;border:1px solid rgba(255,255,255,.78);border-bottom:0;border-radius:17px 17px 0 0;padding:14px 18px;background:rgba(246,252,255,.88);box-shadow:0 10px 23px rgba(35,75,110,.08)}.dsm-window-route{display:flex;align-items:center;gap:9px;color:#6b8297;font-size:11px}.dsm-window-route b{color:#24445f;font-size:14px}.dsm-window-actions{display:flex;gap:7px}.dsm-window-actions button{width:27px;height:27px;border:1px solid rgba(48,97,137,.18);border-radius:8px;background:#fff;color:#587187;cursor:pointer}.dsm-window-actions button:hover{color:#156fb2;border-color:#55a8e5}.dsm-app-open #page-content{min-height:520px;padding:20px;border:1px solid rgba(255,255,255,.78);border-radius:0 0 17px 17px;background:rgba(250,253,255,.86);box-shadow:var(--dsm-shadow)}.dsm-app-open #page-content>.card{border-color:var(--dsm-line);background:rgba(255,255,255,.72);box-shadow:0 7px 18px rgba(34,72,105,.055)}.dsm-app-open #page-content .stat-card{border-color:var(--dsm-line);background:rgba(246,251,255,.88)}.dsm-app-open #page-content table th{background:rgba(230,242,252,.65);color:#4d6b85}.dsm-app-open #page-content table td{border-color:rgba(66,104,136,.12)}
@media(max-width:800px){body.dsm-shell .sidebar{transform:translateX(-105%)}body.dsm-shell .sidebar.open{transform:translateX(0)}body.dsm-shell .main{margin-left:0}.dsm-shell .topbar{margin:9px 9px 0;height:56px}.dsm-shell .content{padding:18px 13px 30px}.dsm-shell .topbar-utility{display:none}.dsm-desktop-scene{min-height:calc(100vh - 112px)}.dsm-desktop-head{margin-bottom:20px}.dsm-desktop-head h2{font-size:25px}.dsm-clock{display:none}.dsm-app-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.dsm-workspace-app{min-height:125px;padding:12px 10px;border-radius:15px}.dsm-workspace-icon{width:40px;height:40px;margin-bottom:10px;border-radius:12px}.dsm-workspace-sub{font-size:9px}.dsm-desktop-footer{grid-template-columns:1fr}.dsm-window-bar{padding:11px 13px}.dsm-window-route{min-width:0}.dsm-window-route b{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.dsm-app-open #page-content{padding:12px;border-radius:0 0 14px 14px}.dsm-shell .page-intro{display:none!important}.dsm-shell .stat-grid{grid-template-columns:1fr 1fr}}
@media(max-width:410px){.dsm-app-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.dsm-shell .topbar{padding:0 10px}.dsm-shell .topbar-actions{gap:7px}.dsm-shell .topbar-title{font-size:13px}}


/* ─────────────────────────────────────────────────────────────────────────
   High-contrast application workspace
   The DSM shell is intentionally light.  The previous dark-console component
   colours were inherited into this surface, yielding very pale text.  These
   rules establish an explicit readable palette for all opened applications.
   ───────────────────────────────────────────────────────────────────────── */
.dsm-app-open #page-content {
  color: #1d3a52;
  text-shadow: none;
}
.dsm-app-open #page-content .card,
.dsm-app-open #page-content .stat-card {
  background: #ffffff;
  border-color: #c9dce8;
}
.dsm-app-open #page-content .card-title,
.dsm-app-open #page-content h1,
.dsm-app-open #page-content h2,
.dsm-app-open #page-content h3,
.dsm-app-open #page-content strong {
  color: #16324a;
}
.dsm-app-open #page-content .text-muted,
.dsm-app-open #page-content .text-sm.text-muted,
.dsm-app-open #page-content .stat-sub,
.dsm-app-open #page-content .file-station-breadcrumb,
.dsm-app-open #page-content .file-root-label {
  color: #49677e;
  opacity: 1;
}
.dsm-app-open #page-content table th {
  background: #e6f1f8;
  border-bottom-color: #bfd4e1;
  color: #305976;
  font-size: 11px;
  font-weight: 800;
}
.dsm-app-open #page-content table td {
  border-bottom-color: #dce8ef;
  color: #1e4059;
  font-size: 13px;
  font-weight: 600;
}
.dsm-app-open #page-content table td strong { font-weight: 800; }
.dsm-app-open #page-content table tr:nth-child(even) td { background: #f8fbfd; }
.dsm-app-open #page-content table tr:hover td { background: #e8f5fc; }
.dsm-app-open #page-content .btn {
  border-color: #b5cede;
  background: #ffffff;
  color: #1b405c;
  font-weight: 750;
  text-shadow: none;
}
.dsm-app-open #page-content .btn:hover {
  border-color: #398cc7;
  background: #edf8ff;
  color: #0e5e9c;
}
.dsm-app-open #page-content .btn-primary,
.dsm-app-open #page-content .btn-primary:hover { color: #ffffff; }
.dsm-app-open #page-content .btn-danger,
.dsm-app-open #page-content .btn-danger:hover { color: #ffffff; }
.dsm-app-open #page-content .btn-success,
.dsm-app-open #page-content .btn-success:hover { color: #ffffff; }
.dsm-app-open #page-content input,
.dsm-app-open #page-content select,
.dsm-app-open #page-content textarea {
  border-color: #adc7d8;
  background: #ffffff;
  color: #16354d;
  font-weight: 600;
}
.dsm-app-open #page-content input::placeholder,
.dsm-app-open #page-content textarea::placeholder { color: #668298; opacity: 1; }
.dsm-app-open #page-content .form-group label { color: #294e68; font-weight: 800; }
.dsm-app-open #page-content .progress { height: 8px; background: #d8e8f1; border: 1px solid #ccdee8; }
.dsm-app-open #page-content .progress-bar { box-shadow: none; }
.dsm-app-open #page-content .badge { font-weight: 800; border-width: 1px; }
.dsm-app-open #page-content .badge-green { color: #08734d; background: #ddf6ea; border-color: #91d5b5; }
.dsm-app-open #page-content .badge-blue { color: #075f9f; background: #e1f2ff; border-color: #9dcae9; }
.dsm-app-open #page-content .badge-yellow { color: #875400; background: #fff2d6; border-color: #efcb82; }
.dsm-app-open #page-content .badge-red { color: #a11d2a; background: #ffe7e9; border-color: #efa5ad; }
.dsm-app-open #page-content a { color: #076fab; font-weight: 700; }
.dsm-app-open #page-content :focus-visible { outline: 3px solid rgba(25, 129, 207, .55); outline-offset: 2px; }

/* Download Center: dense operational rows receive stronger hierarchy. */
#page-content[data-page="downloads"] { padding-top: 22px; }
#page-content[data-page="downloads"] .stat-card { min-height: 126px; }
#page-content[data-page="downloads"] .stat-label { color: #3e6179; font-weight: 800; }
#page-content[data-page="downloads"] .stat-value { color: #113750; font-weight: 850; }
#page-content[data-page="downloads"] .card { margin-bottom: 16px; }
#page-content[data-page="downloads"] .card-title { font-size: 15px; font-weight: 850; }
#page-content[data-page="downloads"] .card > .text-muted { font-size: 12px; line-height: 1.65; }
#page-content[data-page="downloads"] .table-wrap {
  border: 1px solid #c6dbe7;
  border-radius: 10px;
  background: #ffffff;
}
#page-content[data-page="downloads"] table { min-width: 875px; }
#page-content[data-page="downloads"] table th { height: 44px; }
#page-content[data-page="downloads"] table td { min-height: 72px; padding-top: 12px; padding-bottom: 12px; vertical-align: middle; }
#page-content[data-page="downloads"] table td:first-child { max-width: 340px; }
#page-content[data-page="downloads"] table td:first-child > strong { display: inline-block; color: #102f47; font-size: 13px; line-height: 1.45; word-break: break-word; }
#page-content[data-page="downloads"] table td .text-muted { display: inline-block; margin-top: 3px; color: #3e6078; font-size: 12px; font-weight: 650; }
#page-content[data-page="downloads"] table td:nth-child(3) { color: #174a6b; font-size: 12px; font-weight: 800; line-height: 1.7; white-space: nowrap; }
#page-content[data-page="downloads"] table td:nth-child(4) { color: #355c77; white-space: nowrap; }
#page-content[data-page="downloads"] .progress { min-width: 166px; margin: 8px 0 4px; }
#page-content[data-page="downloads"] .progress-bar.green { background: #16895f; }
#page-content[data-page="downloads"] .progress-bar.yellow { background: #c78719; }
#page-content[data-page="downloads"] .progress-bar.red { background: #c94350; }
#page-content[data-page="downloads"] .progress-bar.blue { background: #177fc9; }
#page-content[data-page="downloads"] .badge { display: inline-flex; align-items: center; min-height: 27px; padding: 4px 9px; }
#page-content[data-page="downloads"] .flex.gap-8 { flex-wrap: wrap; gap: 7px; }
#page-content[data-page="downloads"] .btn.btn-sm { min-height: 32px; padding: 6px 11px; font-size: 12px; }
#page-content[data-page="downloads"] .inline-form { gap: 14px; }
#page-content[data-page="downloads"] .svc-actions { gap: 9px; }
@media (max-width: 800px) {
  #page-content[data-page="downloads"] table { min-width: 760px; }
  #page-content[data-page="downloads"] table td { min-height: 67px; }
  #page-content[data-page="downloads"] table td:first-child { max-width: 255px; }
  #page-content[data-page="downloads"] .stat-card { min-height: 112px; }
}


/* Torrent batch registration and recovery controls */
#page-content[data-page="downloads"] .torrent-add-grid{display:grid;grid-template-columns:minmax(280px,1.35fr) minmax(220px,1fr) minmax(180px,.8fr) auto;gap:14px;align-items:end}
#page-content[data-page="downloads"] .torrent-files-group{min-width:0}
#page-content[data-page="downloads"] .torrent-field-note{margin-left:5px;color:#5c7890;font-size:10px;font-weight:700}
#page-content[data-page="downloads"] .torrent-dropzone{position:relative;display:flex;align-items:center;gap:11px;min-height:45px;padding:7px 10px;border:1.5px dashed #77a8c8;border-radius:9px;background:#f6fbff;color:#20445e;cursor:pointer;transition:.16s ease}
#page-content[data-page="downloads"] .torrent-file-input{position:absolute;inset:0;z-index:3;width:100%;height:100%;opacity:0;cursor:pointer}
#page-content[data-page="downloads"] .torrent-dropzone:hover,#page-content[data-page="downloads"] .torrent-dropzone.is-dragging{border-color:#1684cf;background:#e5f4ff;box-shadow:0 0 0 3px rgba(22,132,207,.13)}
#page-content[data-page="downloads"] .torrent-drop-icon{display:grid;flex:none;width:28px;height:28px;place-items:center;border-radius:7px;background:#d5ebf9;color:#0c6fae;font-size:17px;font-weight:850}
#page-content[data-page="downloads"] .torrent-dropzone b{display:block;font-size:12px;line-height:1.25}
#page-content[data-page="downloads"] .torrent-dropzone small{display:block;margin-top:2px;color:#476a84;font-size:10px;line-height:1.25}
#page-content[data-page="downloads"] .torrent-submit-group{min-width:118px}
#page-content[data-page="downloads"] .torrent-submit-group .btn{width:100%;height:42px;white-space:nowrap}
#page-content[data-page="downloads"] .torrent-missing-row td{background:#fffafb}
#page-content[data-page="downloads"] .torrent-missing-row:hover td{background:#fff0f1}
#page-content[data-page="downloads"] .torrent-delete-actions{flex-wrap:wrap}
#page-content[data-page="downloads"] .torrent-delete-files{background:#b93846;border-color:#b93846}
@media(max-width:1050px){#page-content[data-page="downloads"] .torrent-add-grid{grid-template-columns:minmax(280px,1fr) minmax(220px,1fr)}#page-content[data-page="downloads"] .torrent-submit-group{grid-column:span 1}}
@media(max-width:620px){#page-content[data-page="downloads"] .torrent-add-grid{grid-template-columns:1fr}#page-content[data-page="downloads"] .torrent-submit-group{grid-column:auto}.torrent-delete-actions .btn{width:100%}}


/* Torrent operations automation */
#page-content[data-page="downloads"] .torrent-add-grid{grid-template-columns:minmax(250px,1.3fr) minmax(210px,1fr) minmax(180px,.8fr) minmax(210px,.95fr) auto}
#page-content[data-page="downloads"] .torrent-automation-card{border:1px solid #b9d9ec;background:linear-gradient(135deg,#f8fcff,#eef8fd)}
#page-content[data-page="downloads"] .torrent-automation-grid{display:grid;grid-template-columns:1.05fr minmax(190px,.9fr) 1fr minmax(210px,1fr) auto;gap:12px;align-items:end;margin-top:12px}
#page-content[data-page="downloads"] .rule-toggle{display:flex;align-items:center;gap:8px;min-height:42px;padding:10px 12px;border:1px solid #bdd6e6;border-radius:8px;background:#fff;color:#173c58;font-size:12px;font-weight:750}
#page-content[data-page="downloads"] .rule-toggle input{width:16px;height:16px;accent-color:#1684cf}
#page-content[data-page="downloads"] .torrent-control-summary{display:grid;grid-template-columns:repeat(2,max-content);gap:3px 8px;color:#284e6b;font-size:10px;font-weight:700;white-space:nowrap}
#page-content[data-page="downloads"] .torrent-control-button{margin-top:7px;white-space:nowrap}
#page-content[data-page="downloads"] .torrent-control-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}
#page-content[data-page="downloads"] .torrent-result-list{max-height:380px;overflow:auto;border:1px solid var(--border);border-radius:8px;background:#f8fbfd}
#page-content[data-page="downloads"] .torrent-result-list>div{display:grid;grid-template-columns:minmax(140px,1fr) auto;gap:5px 12px;align-items:center;padding:10px 12px;border-bottom:1px solid #dbe7ef;color:#173c58}
#page-content[data-page="downloads"] .torrent-result-list>div:last-child{border-bottom:0}
#page-content[data-page="downloads"] .torrent-result-list small{grid-column:1/-1;color:#557187}
@media(max-width:1180px){#page-content[data-page="downloads"] .torrent-add-grid,#page-content[data-page="downloads"] .torrent-automation-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.torrent-submit-group,.torrent-rule-save{grid-column:span 2}}
@media(max-width:720px){#page-content[data-page="downloads"] .torrent-add-grid,#page-content[data-page="downloads"] .torrent-automation-grid,#page-content[data-page="downloads"] .torrent-control-grid{grid-template-columns:1fr}.torrent-submit-group,.torrent-rule-save{grid-column:auto}#page-content[data-page="downloads"] .torrent-control-summary{font-size:11px}}
