:root{--bg:#f4f6fa;--surface:#fff;--surface-soft:#f8fafc;--ink:#172033;--muted:#738096;--line:#e5eaf1;--blue:#2864dc;--blue-dark:#1d4fb8;--green:#16865a;--red:#c43e4d;--amber:#b97815;--shadow:0 10px 34px rgba(28,43,68,.07);font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink);font-size:14px}button,input,select{font:inherit}button{cursor:pointer}.hidden{display:none!important}.muted{color:var(--muted)}.small{font-size:12px}.app-shell{min-height:100vh;display:grid;grid-template-columns:248px minmax(0,1fr)}.sidebar{background:#131d30;color:#e6ecf5;padding:24px 16px;display:flex;flex-direction:column;min-height:100vh;position:sticky;top:0;height:100vh}.brand-row{display:flex;gap:12px;align-items:center;padding:0 8px 34px}.brand-row strong{display:block;font-size:14px;letter-spacing:.01em}.brand-row small{color:#91a0b7;font-size:11px}.brand-mark{height:36px;width:36px;border-radius:11px;background:linear-gradient(135deg,#4385f7,#2252bd);display:grid;place-items:center;color:#fff;font-size:20px;font-weight:800;box-shadow:0 5px 15px #17396c}.brand-mark.large{height:48px;width:48px;font-size:25px;margin-bottom:18px}.sidebar-label,.eyebrow{font-size:10px;font-weight:800;letter-spacing:.13em;color:#8b98ab}.sidebar-label{padding:0 11px 12px}.nav-actions{display:grid;gap:6px}.nav-item{width:100%;display:flex;gap:12px;align-items:center;text-align:left;border:0;background:transparent;color:#b8c4d6;padding:12px 12px;border-radius:9px;font-size:13px;transition:.15s}.nav-item:hover{background:#1d2b44;color:#fff}.nav-item.active{background:#243a60;color:#fff;box-shadow:inset 3px 0 #6ea1ff}.nav-icon{font-size:18px;width:21px;text-align:center;color:#91b5f7}.sidebar-bottom{margin-top:auto;display:grid;gap:12px}.system-mini{display:flex;align-items:center;gap:10px;border:1px solid #2a3b55;background:#1a2941;padding:12px;border-radius:10px}.system-mini strong{display:block;font-size:11px}.system-mini small{display:block;color:#92a1b7;font-size:10px;margin-top:3px}.online-dot{width:8px;height:8px;background:#36c889;border-radius:50%;box-shadow:0 0 0 4px #24533f}.quiet{font-size:12px}.main-content{padding:30px clamp(20px,3vw,48px) 50px;max-width:1700px;width:100%;margin:0 auto}.topbar{display:flex;justify-content:space-between;align-items:center;margin-bottom:26px}.topbar h1{font-size:27px;margin:6px 0 0;letter-spacing:-.035em}.topbar .eyebrow{color:#8692a5}.topbar-right{display:flex;align-items:center;gap:12px}.status-pill{background:#edf8f2;color:#19784e;border:1px solid #d4efe0;border-radius:99px;padding:8px 12px;font-size:11px;font-weight:700}.icon-btn{width:34px;height:34px;border-radius:9px;background:#fff;border:1px solid var(--line);color:#5a667b;font-size:20px;display:grid;place-items:center}.icon-btn:hover{border-color:#a9b8d0;color:var(--blue)}.workspace-grid{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(285px,.72fr);gap:20px;align-items:start}.left-column,.right-column{display:grid;gap:18px}.panel{background:var(--surface);border:1px solid var(--line);border-radius:14px;box-shadow:var(--shadow);padding:21px}.panel-heading{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:19px}.panel-heading h2{font-size:15px;margin:0 0 5px;letter-spacing:-.01em}.panel-heading p{font-size:11px;color:var(--muted);margin:0}.step-number{font-size:10px;color:#a1aec0;border:1px solid var(--line);padding:5px 7px;border-radius:6px;font-weight:700}.count-badge{background:#f0f4fa;color:#566780;border-radius:8px;padding:5px 9px;font-size:11px;font-weight:700}.field-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.field{display:grid;gap:7px;margin-bottom:14px}.field.full-width{grid-column:1/-1}.field label,.form-label{font-size:11px;font-weight:700;color:#516078}.field input,.field select,.field textarea,.text-input{width:100%;border:1px solid #dce3ed;border-radius:8px;background:#fff;padding:10px 11px;color:var(--ink);outline:none;min-height:39px}.field input:focus,.field select:focus,.field textarea:focus,.text-input:focus{border-color:#77a1ed;box-shadow:0 0 0 3px #e9f1ff}.field small,.field-hint{font-size:10px;color:#8995a8;line-height:1.45}.btn{border:0;border-radius:8px;padding:10px 14px;font-size:12px;font-weight:750;transition:.15s}.btn.primary{background:var(--blue);color:#fff;box-shadow:0 4px 10px #2864dc25}.btn.primary:hover{background:var(--blue-dark)}.btn.secondary{background:#f3f6fa;color:#53647d;border:1px solid #e1e7ef}.btn.secondary:hover{background:#eaf0f7}.btn.danger{background:#fff0f0;color:#bd3947;border:1px solid #f6d7da}.btn.full{width:100%}.btn.small{padding:7px 10px;font-size:11px}.button-row{display:flex;gap:8px;align-items:center}.form-actions{display:flex;justify-content:flex-end;gap:9px;border-top:1px solid var(--line);padding-top:17px;margin-top:7px}.source-select{border:1px dashed #c9d5e5;border-radius:10px;padding:13px;display:flex;gap:12px;align-items:center;background:#fbfcfe}.source-select .file-symbol{width:38px;height:38px;border-radius:9px;background:#edf3ff;color:var(--blue);display:grid;place-items:center;font-size:18px}.source-select .source-text{min-width:0;flex:1}.source-select strong{display:block;font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.source-select small{display:block;color:var(--muted);font-size:10px;margin-top:3px}.source-empty{display:grid;justify-items:center;text-align:center;padding:21px 10px;color:var(--muted);gap:7px}.folder-icon{font-size:34px;color:#91a9cc}.source-empty strong{font-size:12px;color:#53627a}.source-empty span{font-size:10px;line-height:1.5;max-width:220px}.probe-result{margin-top:12px}.probe-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px}.probe-item{border:1px solid var(--line);border-radius:8px;padding:9px}.probe-item span{display:block;font-size:9px;color:var(--muted);margin-bottom:4px}.probe-item strong{font-size:11px;overflow-wrap:anywhere}.capability-list{display:grid;gap:8px}.capability-item{display:flex;justify-content:space-between;align-items:center;font-size:11px;color:#56647b;padding:6px 0;border-bottom:1px solid #f0f2f6}.capability-item:last-child{border:0}.capability-ok{color:var(--green);font-weight:750}.capability-off{color:#a2aaba}.permission-note{display:flex;gap:8px;background:#f2f8f5;padding:10px;border-radius:8px;margin-top:13px;color:#4c7a62}.permission-note span{font-size:10px}.permission-note p{font-size:10px;line-height:1.5;margin:0}.info-panel .muted{line-height:1.6}.version-line{border-top:1px solid var(--line);margin-top:14px;padding-top:11px;display:flex;justify-content:space-between;font-size:10px;color:#8490a2}.tasks-list{display:grid;gap:11px}.empty-state{display:grid;justify-items:center;text-align:center;padding:30px 10px;color:var(--muted);gap:5px}.empty-icon{font-size:27px;color:#a9b7cb}.empty-state strong{font-size:12px;color:#52617a}.empty-state span{font-size:10px}.task-card{border:1px solid var(--line);border-radius:10px;padding:13px}.task-top{display:flex;justify-content:space-between;gap:10px;align-items:center}.task-name{font-weight:750;font-size:12px}.task-status{font-size:9px;font-weight:800;text-transform:uppercase;padding:5px 7px;border-radius:5px;background:#eef2f7;color:#617189}.task-status.running{background:#eaf2ff;color:#245fcb}.task-status.completed{background:#eaf8f0;color:#168253}.task-status.failed{background:#fff0f0;color:#bf3d4a}.task-status.awaiting_fallback{background:#fff6e7;color:#a46a0e}.task-progress-row{display:flex;justify-content:space-between;color:#68768c;font-size:10px;margin:12px 0 6px}.progress-track{height:7px;background:#edf1f6;border-radius:99px;overflow:hidden}.progress-fill{height:100%;border-radius:99px;background:linear-gradient(90deg,#4c83e7,#1e60d2);transition:width .35s}.task-metrics{display:flex;gap:13px;flex-wrap:wrap;margin-top:10px;color:#748198;font-size:10px}.task-metrics b{color:#3b4a61}.task-message{font-size:10px;line-height:1.5;color:#ba3b48;margin-top:9px;white-space:pre-wrap;overflow-wrap:anywhere}.task-logs{background:#131d2e;color:#c8d5e9;border-radius:7px;padding:9px;font:10px/1.5 ui-monospace,monospace;max-height:110px;overflow:auto;margin-top:9px;white-space:pre-wrap}.task-output{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-top:10px}.output-chip{font-size:10px;color:#21724f;background:#eef8f2;padding:6px 8px;border-radius:6px;overflow-wrap:anywhere}.warning-chip{font-size:10px;color:#99660f;background:#fff6e5;padding:7px 9px;border-radius:7px;margin-top:8px}.modal{position:fixed;inset:0;background:#101a2dcc;display:grid;place-items:center;padding:20px;z-index:20}.modal-card{background:#fff;border-radius:15px;box-shadow:0 25px 90px #0005;width:min(720px,100%);max-height:min(780px,90vh);display:flex;flex-direction:column}.modal-header{display:flex;justify-content:space-between;align-items:center;padding:19px 21px;border-bottom:1px solid var(--line)}.modal-header h2{margin:5px 0 0;font-size:17px}.modal-header .eyebrow{color:#8895a8}.browser-location{display:flex;gap:10px;align-items:center;padding:12px 20px;background:#f8fafc;border-bottom:1px solid var(--line);font-size:11px;color:#65748d}.browser-location span:nth-child(2){flex:1;font-family:ui-monospace,monospace;color:#34435c;overflow-wrap:anywhere}.browser-items{padding:9px 13px;overflow:auto;min-height:250px;max-height:50vh}.browser-item{display:flex;gap:11px;align-items:center;padding:10px;border-radius:8px;cursor:pointer;border:1px solid transparent}.browser-item:hover{background:#f4f7fb}.browser-item.selected{background:#edf4ff;border-color:#cbdcff}.browser-item-icon{width:32px;height:32px;display:grid;place-items:center;border-radius:8px;background:#f0f3f8;color:#71829d;font-size:16px}.browser-item-icon.directory{background:#fff5df;color:#ba861c}.browser-item-main{flex:1;min-width:0}.browser-item-main strong{font-size:11px;display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.browser-item-main small{font-size:9px;color:#8b97a8}.browser-item-type{font-size:9px;color:#98a3b4}.browser-check{width:17px;height:17px;accent-color:var(--blue)}.modal-footer{padding:13px 20px;border-top:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;gap:12px}.loading-state{padding:45px;text-align:center;color:var(--muted);font-size:12px}.login-screen{min-height:100vh;display:grid;place-items:center;background:radial-gradient(circle at 20% 20%,#e2ebfd 0,transparent 35%),var(--bg);padding:18px}.login-card{width:min(410px,100%);background:#fff;border:1px solid var(--line);border-radius:16px;box-shadow:var(--shadow);padding:32px}.login-card h1{margin:0 0 8px;font-size:24px;letter-spacing:-.04em}.login-card .muted{font-size:12px;line-height:1.6;margin:0 0 22px}.login-card label{font-size:11px;font-weight:750;display:block;margin:0 0 7px}.login-card input{width:100%;padding:12px;border:1px solid #dce3ed;border-radius:8px;margin-bottom:14px}.login-card .eyebrow{color:#8996a8}.error-text{color:var(--red);font-size:11px;min-height:16px}.toast-region{position:fixed;bottom:20px;right:20px;z-index:40;display:grid;gap:8px}.toast{background:#17243a;color:#fff;box-shadow:0 8px 30px #18263f3a;padding:11px 14px;border-radius:8px;font-size:11px;max-width:360px}.toast.error{background:#8f2e3a}.range-row{display:grid;grid-template-columns:1fr 1fr auto;gap:9px;align-items:end;border:1px solid var(--line);border-radius:9px;padding:11px;margin-bottom:9px}.range-row .field{margin:0}.range-row .btn{height:38px}.divider-label{font-size:10px;font-weight:800;color:#94a0b1;letter-spacing:.09em;text-transform:uppercase;margin:16px 0 10px}.hardware-options{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}.hardware-option{border:1px solid var(--line);border-radius:8px;padding:10px 6px;text-align:center;cursor:pointer;background:#fff}.hardware-option input{display:none}.hardware-option strong{display:block;font-size:11px}.hardware-option small{display:block;color:var(--muted);font-size:9px;margin-top:4px}.hardware-option:has(input:checked){border-color:#7da3ec;background:#f0f5ff;box-shadow:inset 0 0 0 1px #9cb8ed}.helper-banner{background:#f3f7fd;border:1px solid #e0eaf8;color:#587092;padding:10px 12px;border-radius:8px;font-size:10px;line-height:1.5;margin:6px 0 14px}.action-desc{font-size:11px;line-height:1.5;color:var(--muted);margin:-7px 0 17px}.field-inline{display:flex;gap:8px}.field-inline>*{flex:1}.muted-note{font-size:10px;color:#8491a5;margin-top:5px;line-height:1.45}
@media(max-width:1100px){.workspace-grid{grid-template-columns:minmax(0,1fr)}.right-column{grid-template-columns:repeat(2,minmax(0,1fr))}.info-panel{grid-column:1/-1}}
@media(max-width:740px){.app-shell{grid-template-columns:1fr}.sidebar{position:relative;height:auto;min-height:0;padding:13px}.brand-row{padding:0 5px 13px}.sidebar-label,.sidebar-bottom{display:none}.nav-actions{display:flex;overflow:auto;padding-bottom:2px}.nav-item{white-space:nowrap;width:auto;padding:9px 10px}.nav-item span:last-child{font-size:11px}.main-content{padding:20px 12px 35px}.topbar{align-items:flex-start}.topbar h1{font-size:21px}.topbar-right{gap:5px}.status-pill{font-size:9px;padding:7px}.panel{padding:15px}.right-column{grid-template-columns:1fr}.info-panel{grid-column:auto}.field-grid{grid-template-columns:1fr}.hardware-options{grid-template-columns:repeat(2,1fr)}.modal-footer{align-items:flex-start;flex-direction:column}.modal-footer .button-row{width:100%;justify-content:flex-end}.range-row{grid-template-columns:1fr 1fr}.range-row .btn{grid-column:1/-1}}

.zoom-control{display:flex;align-items:center;gap:8px;color:var(--muted);font-size:11px;font-weight:700;white-space:nowrap}
.zoom-control select{min-width:82px;padding:7px 9px;border:1px solid var(--border);border-radius:8px;background:var(--panel);color:var(--ink);font:inherit;font-size:12px;cursor:pointer}
@media(max-width:900px){.zoom-control span{display:none}.zoom-control select{min-width:72px}}


/* Thème sombre : les couleurs structurelles basculent sans modifier le thème clair existant. */
:root[data-theme="dark"]{
  color-scheme:dark;
  --bg:#101722;--surface:#182231;--surface-soft:#202c3d;--ink:#e6edf7;
  --muted:#9aa9bd;--line:#2b394d;--blue:#6d9df5;--blue-dark:#8ab0ff;
  --green:#48c58b;--red:#f07882;--amber:#e5b45e;
  --shadow:0 10px 34px rgba(0,0,0,.22);
}
:root[data-theme="dark"] body{background:var(--bg);color:var(--ink)}
:root[data-theme="dark"] .panel,
:root[data-theme="dark"] .task-card,
:root[data-theme="dark"] .login-card,
:root[data-theme="dark"] .modal-card{background:var(--surface);color:var(--ink);border-color:var(--line)}
:root[data-theme="dark"] .field input,
:root[data-theme="dark"] .field select,
:root[data-theme="dark"] .field textarea,
:root[data-theme="dark"] .text-input,
:root[data-theme="dark"] .login-card input,
:root[data-theme="dark"] .zoom-control select{background:#111b29;color:var(--ink);border-color:var(--line)}
:root[data-theme="dark"] .icon-btn{background:var(--surface);color:var(--ink);border-color:var(--line)}
:root[data-theme="dark"] .status-pill{background:#18372e;color:#78d9aa;border-color:#285744}
:root[data-theme="dark"] .count-badge,
:root[data-theme="dark"] .step-number,
:root[data-theme="dark"] .task-status{background:#263448;color:#bdcbe0;border-color:var(--line)}
:root[data-theme="dark"] .task-status.running{background:#1c3558;color:#9fc2ff}
:root[data-theme="dark"] .task-status.completed{background:#193c30;color:#7cdaad}
:root[data-theme="dark"] .task-status.failed{background:#49272e;color:#ff9ca4}
:root[data-theme="dark"] .task-status.awaiting_fallback{background:#49391f;color:#f1c875}
:root[data-theme="dark"] .btn.secondary{background:#263448;color:#d5e0ef;border-color:var(--line)}
:root[data-theme="dark"] .btn.secondary:hover{background:#304158}
:root[data-theme="dark"] .btn.danger{background:#46262d;color:#ffabb1;border-color:#63323b}
:root[data-theme="dark"] .source-select,
:root[data-theme="dark"] .helper-banner,
:root[data-theme="dark"] .browser-location{background:#202d40;border-color:var(--line);color:#c0cee0}
:root[data-theme="dark"] .source-select .file-symbol,
:root[data-theme="dark"] .browser-item-icon{background:#2b3b52;color:#a9c5f7}
:root[data-theme="dark"] .permission-note{background:#1d382f;color:#9ad8b8}
:root[data-theme="dark"] .capability-item{color:#c0ccdc;border-color:#29374a}
:root[data-theme="dark"] .task-logs{background:#0b111b;color:#cbd8e9}
:root[data-theme="dark"] .output-chip{background:#1c3a2f;color:#91dfb7}
:root[data-theme="dark"] .warning-chip{background:#40351f;color:#f0c979}
:root[data-theme="dark"] .progress-track{background:#2a374a}
:root[data-theme="dark"] .browser-item:hover,
:root[data-theme="dark"] .browser-item.selected{background:#263a57;border-color:#3a5275}
:root[data-theme="dark"] .browser-location span:nth-child(2){color:#d6e1f0}
:root[data-theme="dark"] .browser-item-main small,
:root[data-theme="dark"] .browser-item-type{color:#9aa9bd}
:root[data-theme="dark"] .login-screen{background:radial-gradient(circle at 20% 20%,#1b2b45 0,transparent 35%),var(--bg)}
:root[data-theme="dark"] .login-card .eyebrow,
:root[data-theme="dark"] .topbar .eyebrow{color:#9aa9bd}
:root[data-theme="dark"] .field label,
:root[data-theme="dark"] .form-label{color:#bdcbe0}
:root[data-theme="dark"] .field small,
:root[data-theme="dark"] .field-hint,
:root[data-theme="dark"] .muted-note{color:#9aa9bd}
:root[data-theme="dark"] .hardware-option{background:#1b2737;border-color:var(--line);color:var(--ink)}
:root[data-theme="dark"] .hardware-option:has(input:checked){background:#203756;border-color:#6d9df5}
:root[data-theme="dark"] .modal{background:#050a12dd}
:root[data-theme="dark"] .browser-items{background:var(--surface)}
:root[data-theme="dark"] .browser-check{accent-color:var(--blue)}
:root[data-theme="dark"] .range-row{border-color:var(--line)}
:root[data-theme="dark"] .form-actions,
:root[data-theme="dark"] .modal-header,
:root[data-theme="dark"] .modal-footer{border-color:var(--line)}
:root[data-theme="dark"] .field input:focus,
:root[data-theme="dark"] .field select:focus,
:root[data-theme="dark"] .field textarea:focus,
:root[data-theme="dark"] .text-input:focus{box-shadow:0 0 0 3px #29456d}
@media(max-width:740px){.topbar-right{flex-wrap:wrap;justify-content:flex-end}.theme-control select{min-width:90px}}


/* ============================================================
   SynHub 0.1.6 — palette sombre bleu nuit / marine
   Le thème clair d'origine reste inchangé.
   ============================================================ */
:root[data-theme="dark"] {
  color-scheme: dark;
  --bg: #070d18;
  --surface: #101b2c;
  --surface-soft: #16243a;
  --ink: #f3f6fc;
  --muted: #a8b6ca;
  --line: #263b59;
  --blue: #4d86e8;
  --blue-dark: #3168c9;
  --green: #42c58a;
  --red: #f06b76;
  --amber: #e8b85e;
  --shadow: 0 12px 36px rgba(0,0,0,.34);
  --panel: #101b2c;
  --border: #263b59;
}
:root[data-theme="dark"] body,
:root[data-theme="dark"] .app-shell,
:root[data-theme="dark"] .main-content {
  background: #070d18;
  color: #f3f6fc;
}
:root[data-theme="dark"] .sidebar {
  background: linear-gradient(180deg, #0b1424 0%, #101e34 100%);
  border-right: 1px solid #203450;
  color: #f3f6fc;
}
:root[data-theme="dark"] .nav-item { color: #b9c7dc; }
:root[data-theme="dark"] .nav-item:hover { background: #1a2d49; color: #fff; }
:root[data-theme="dark"] .nav-item.active {
  background: #203b63;
  color: #fff;
  box-shadow: inset 3px 0 #6ea4ff;
}
:root[data-theme="dark"] .panel,
:root[data-theme="dark"] .task-card,
:root[data-theme="dark"] .login-card,
:root[data-theme="dark"] .modal-card,
:root[data-theme="dark"] .probe-item {
  background: #101b2c;
  color: #f3f6fc;
  border-color: #263b59;
  box-shadow: 0 12px 36px rgba(0,0,0,.24);
}
:root[data-theme="dark"] .panel-heading h2,
:root[data-theme="dark"] .topbar h1,
:root[data-theme="dark"] .login-card h1,
:root[data-theme="dark"] .task-name,
:root[data-theme="dark"] .task-top strong,
:root[data-theme="dark"] .browser-item-main strong,
:root[data-theme="dark"] .source-select strong,
:root[data-theme="dark"] .empty-state strong,
:root[data-theme="dark"] .source-empty strong,
:root[data-theme="dark"] .probe-item strong,
:root[data-theme="dark"] .brand-row strong {
  color: #f5f8ff;
}
:root[data-theme="dark"] .panel-heading p,
:root[data-theme="dark"] .muted,
:root[data-theme="dark"] .small,
:root[data-theme="dark"] .field small,
:root[data-theme="dark"] .field-hint,
:root[data-theme="dark"] .muted-note,
:root[data-theme="dark"] .action-desc,
:root[data-theme="dark"] .version-line,
:root[data-theme="dark"] .browser-item-main small,
:root[data-theme="dark"] .browser-item-type,
:root[data-theme="dark"] .empty-state,
:root[data-theme="dark"] .source-empty,
:root[data-theme="dark"] .loading-state,
:root[data-theme="dark"] .task-metrics,
:root[data-theme="dark"] .task-message {
  color: #a8b6ca;
}
:root[data-theme="dark"] .field label,
:root[data-theme="dark"] .form-label,
:root[data-theme="dark"] .login-card label,
:root[data-theme="dark"] .zoom-control {
  color: #d6e1f2;
}
:root[data-theme="dark"] .field input,
:root[data-theme="dark"] .field select,
:root[data-theme="dark"] .field textarea,
:root[data-theme="dark"] .text-input,
:root[data-theme="dark"] .login-card input,
:root[data-theme="dark"] .zoom-control select,
:root[data-theme="dark"] select,
:root[data-theme="dark"] input:not([type="checkbox"]):not([type="radio"]),
:root[data-theme="dark"] textarea {
  background: #091322;
  color: #f3f6fc;
  border-color: #304966;
}
:root[data-theme="dark"] input::placeholder,
:root[data-theme="dark"] textarea::placeholder {
  color: #8294ad;
  opacity: 1;
}
:root[data-theme="dark"] option {
  background: #101b2c;
  color: #f3f6fc;
}
:root[data-theme="dark"] .field input:focus,
:root[data-theme="dark"] .field select:focus,
:root[data-theme="dark"] .field textarea:focus,
:root[data-theme="dark"] .text-input:focus {
  border-color: #6599ed;
  box-shadow: 0 0 0 3px rgba(77,134,232,.2);
}
:root[data-theme="dark"] .btn.secondary,
:root[data-theme="dark"] .icon-btn {
  background: #1a2a41;
  color: #e3ecfa;
  border: 1px solid #304966;
}
:root[data-theme="dark"] .btn.secondary:hover,
:root[data-theme="dark"] .icon-btn:hover {
  background: #243b5c;
  border-color: #4e75a8;
}
:root[data-theme="dark"] .btn.primary {
  background: #356fc9;
  color: #fff;
}
:root[data-theme="dark"] .btn.primary:hover { background: #477fda; }
:root[data-theme="dark"] .btn.danger {
  background: #4a202b;
  border: 1px solid #793744;
  color: #ffb4bc;
}
:root[data-theme="dark"] .status-pill {
  background: #123a32;
  color: #8ce1bd;
  border-color: #23624f;
}
:root[data-theme="dark"] .count-badge,
:root[data-theme="dark"] .step-number,
:root[data-theme="dark"] .task-status {
  background: #1d304a;
  color: #d0def2;
  border-color: #304966;
}
:root[data-theme="dark"] .task-status.running {
  background: #183763; color: #a8caff;
}
:root[data-theme="dark"] .task-status.completed {
  background: #143b31; color: #91e3c0;
}
:root[data-theme="dark"] .task-status.failed {
  background: #49242d; color: #ffafb6;
}
:root[data-theme="dark"] .task-status.awaiting_fallback {
  background: #49371d; color: #f2cf82;
}
:root[data-theme="dark"] .source-select,
:root[data-theme="dark"] .helper-banner,
:root[data-theme="dark"] .browser-location,
:root[data-theme="dark"] .hardware-option {
  background: #14243a;
  border-color: #304966;
  color: #d9e5f5;
}
:root[data-theme="dark"] .source-select .file-symbol,
:root[data-theme="dark"] .browser-item-icon {
  background: #203a5d;
  color: #b9d2ff;
}
:root[data-theme="dark"] .hardware-option:has(input:checked) {
  background: #1b3a65;
  border-color: #6599ed;
  box-shadow: inset 0 0 0 1px #6599ed;
}
:root[data-theme="dark"] .capability-item {
  color: #c4d1e3;
  border-color: #263b59;
}
:root[data-theme="dark"] .capability-ok { color: #69d6a5; }
:root[data-theme="dark"] .capability-off { color: #8192a9; }
:root[data-theme="dark"] .permission-note {
  background: #12372f;
  color: #a4e5c7;
}
:root[data-theme="dark"] .task-logs {
  background: #050a12;
  color: #d6e3f4;
  border-color: #263b59;
}
:root[data-theme="dark"] .progress-track { background: #263b59; }
:root[data-theme="dark"] .progress-fill { background: #4d86e8; }
:root[data-theme="dark"] .output-chip {
  background: #153b31; color: #9ae7c2; border-color: #285b4b;
}
:root[data-theme="dark"] .warning-chip {
  background: #44351c; color: #f3cf82; border-color: #685027;
}
:root[data-theme="dark"] .browser-items { background: #0d1726; }
:root[data-theme="dark"] .browser-item {
  border-color: #243a57;
  color: #e7eef9;
}
:root[data-theme="dark"] .browser-item:hover,
:root[data-theme="dark"] .browser-item.selected {
  background: #1b3557;
  border-color: #5277aa;
}
:root[data-theme="dark"] .modal { background: rgba(1,5,12,.82); }
:root[data-theme="dark"] .modal-header,
:root[data-theme="dark"] .modal-footer,
:root[data-theme="dark"] .form-actions,
:root[data-theme="dark"] .range-row,
:root[data-theme="dark"] .version-line {
  border-color: #263b59;
}
:root[data-theme="dark"] .login-screen {
  background:
    radial-gradient(circle at 18% 15%, rgba(36,74,127,.4) 0, transparent 34%),
    linear-gradient(145deg, #070d18, #0d1b30 60%, #070d18);
}
:root[data-theme="dark"] .login-card .eyebrow,
:root[data-theme="dark"] .topbar .eyebrow { color: #8fa5c4; }
:root[data-theme="dark"] .toast {
  background: #1d3554;
  color: #fff;
  border: 1px solid #34567e;
}
:root[data-theme="dark"] .toast.error {
  background: #662b37;
  border-color: #95414e;
}
:root[data-theme="dark"] .divider-label { color: #90a4c1; }
:root[data-theme="dark"] a { color: #8db8ff; }
:root[data-theme="dark"] hr { border-color: #263b59; }


/* Confirmation de suppression des fichiers sources — signal visuel rouge explicite. */
.source-cleanup-card{width:min(560px,100%);border:1px solid #e7a0a6;box-shadow:0 24px 90px rgba(76,12,22,.28)}
.source-cleanup-card .modal-header{background:#fff3f3;border-bottom-color:#f0c6c9}
.source-cleanup-card .cleanup-eyebrow{color:#bd2738;font-weight:850}
.source-cleanup-card .modal-header h2{color:#7f1d2a}
.cleanup-alert-icon{display:grid;place-items:center;width:38px;height:38px;flex:0 0 38px;border-radius:50%;background:#c83243;color:#fff;font-size:24px;font-weight:900;box-shadow:0 4px 12px #c8324338}
.cleanup-modal-body{padding:20px 22px;color:#344054}
.cleanup-modal-body>p{margin:0 0 14px;line-height:1.6;font-size:13px}
.cleanup-source-list{display:grid;gap:7px;max-height:190px;overflow:auto;margin:0 0 15px}
.cleanup-source-item{display:grid;gap:3px;padding:9px 11px;border:1px solid #f0d5d8;border-radius:8px;background:#fffafa;min-width:0}
.cleanup-source-item strong{font-size:12px;color:#56202a;overflow-wrap:anywhere}
.cleanup-source-item span{font-size:10px;color:#8b5960;overflow-wrap:anywhere}
.cleanup-warning{padding:11px 12px;background:#fff0f0;border:1px solid #f2c3c8;border-left:4px solid #c83243;border-radius:8px;color:#8b2633;font-size:11px;line-height:1.55}
.cleanup-modal-footer{justify-content:flex-end;flex-wrap:wrap;background:#fffafa;border-top-color:#f0c6c9}
.cleanup-modal-footer .btn.danger{background:#bf2638;border-color:#a91e2f;color:#fff;font-weight:800;box-shadow:0 4px 12px #bf26382a}
.cleanup-modal-footer .btn.danger:hover{background:#9f1f2e}
.cleanup-modal-footer .btn:disabled{opacity:.6;cursor:wait}
:root[data-theme="dark"] .source-cleanup-card{border-color:#803e4a;background:#111b2c}
:root[data-theme="dark"] .source-cleanup-card .modal-header{background:#311c2a;border-color:#653442}
:root[data-theme="dark"] .source-cleanup-card .modal-header h2{color:#fff1f2}
:root[data-theme="dark"] .source-cleanup-card .cleanup-eyebrow{color:#ff9eaa}
:root[data-theme="dark"] .cleanup-modal-body{background:#101b2c;color:#eaf0fa}
:root[data-theme="dark"] .cleanup-source-item{background:#1b2537;border-color:#593744}
:root[data-theme="dark"] .cleanup-source-item strong{color:#ffe8eb}
:root[data-theme="dark"] .cleanup-source-item span{color:#d8aab2}
:root[data-theme="dark"] .cleanup-warning{background:#3a1e29;border-color:#743b49;border-left-color:#ed596b;color:#ffd6dc}
:root[data-theme="dark"] .cleanup-modal-footer{background:#111b2c;border-color:#653442}
@media(max-width:560px){.cleanup-modal-footer{flex-direction:column-reverse;align-items:stretch}.cleanup-modal-footer .btn{width:100%}}

/* Réglages avancés de résolution et d'audio */
#resolution:disabled,#deinterlace:disabled,#audio-channels:disabled,#audio-sample-rate:disabled,#framerate:disabled{opacity:.58;cursor:not-allowed}
#source-match-banner{line-height:1.55}
#manual-resolution-wrap .field{margin-bottom:8px}


/* Ligne d'actions juste sous la progression : Annuler / suppression des sources. */
.task-actions-row{
  display:flex;
  align-items:center;
  gap:7px;
  flex-wrap:wrap;
  margin-top:9px;
}
.task-actions-row .btn{margin:0}
.task-actions-row .source-delete-task-btn{
  background:#fff0f0;
  border:1px solid #efbfc5;
  color:#b42332;
  font-weight:750;
}
.task-actions-row .source-delete-task-btn:hover{
  background:#ffe0e3;
  border-color:#d97984;
}
.task-actions-row .source-delete-task-btn:disabled{
  opacity:.42;
  cursor:not-allowed;
}
:root[data-theme="dark"] .task-actions-row .source-delete-task-btn{
  background:#49232d;
  border-color:#79414c;
  color:#ffb1bb;
}
:root[data-theme="dark"] .task-actions-row .source-delete-task-btn:hover{
  background:#5a2935;
  border-color:#a35360;
}
.source-cleanup-card{width:min(470px,100%);max-height:min(650px,88vh)}
.source-cleanup-card .cleanup-modal-body{padding:15px 18px}
.source-cleanup-card .cleanup-modal-footer{padding:12px 18px}
.source-cleanup-card .modal-header{padding:14px 18px}

/* À propos et historique des versions */
.version-line strong{color:var(--ink);font-size:11px}.version-details{display:flex;justify-content:space-between;align-items:center;gap:8px;margin-top:9px;color:var(--muted);font-size:10px}.ai-credit{font-weight:750;color:var(--blue)}.changelog-button{margin-top:13px}.changelog-modal-card{width:min(760px,100%)}.changelog-content{margin:0;padding:18px 21px;overflow:auto;white-space:pre-wrap;overflow-wrap:anywhere;background:var(--surface-soft);color:var(--ink);font:11px/1.7 ui-monospace,SFMono-Regular,Consolas,monospace;max-height:calc(90vh - 150px);min-height:220px}.changelog-modal-card .modal-footer{justify-content:flex-end}
@media(max-width:520px){.version-details{align-items:flex-start;flex-direction:column}.changelog-content{padding:14px;font-size:10px}}

.diagnostic-report{margin-top:11px;padding:11px 12px;border:1px solid var(--line);border-radius:9px;background:var(--surface-soft);font-size:11px;line-height:1.5}.diagnostic-report>strong{display:block;color:var(--ink);font-size:12px;margin-bottom:7px}.diagnostic-meta{display:flex;gap:6px 13px;flex-wrap:wrap;color:var(--muted);margin-bottom:7px}.diagnostic-report ul{margin:6px 0 0;padding-left:17px;color:var(--ink)}.diagnostic-report li{margin:3px 0;overflow-wrap:anywhere}

/* Ergonomie smartphone : navigation basse fixe, contrôles tactiles et panneaux adaptés. */
@media (max-width: 740px) {
  .app-shell {
    display: block;
    min-height: 100dvh;
  }

  .sidebar {
    position: fixed;
    inset: auto 0 0;
    z-index: 30;
    width: 100%;
    height: auto;
    min-height: 0;
    padding: 7px 5px calc(7px + env(safe-area-inset-bottom, 0px));
    border-top: 1px solid #2a3b55;
    box-shadow: 0 -8px 24px rgba(12, 23, 40, .2);
  }

  .brand-row,
  .sidebar-label,
  .sidebar-bottom {
    display: none;
  }

  .nav-actions {
    display: grid;
    grid-template-columns: repeat(7, minmax(0, 1fr));
    gap: 2px;
    width: 100%;
    overflow: visible;
    padding: 0;
  }

  .nav-item {
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: center;
    gap: 3px;
    width: 100%;
    min-width: 0;
    min-height: 58px;
    padding: 6px 2px;
    border-radius: 8px;
    white-space: normal;
    text-align: center;
  }

  .nav-item span:last-child {
    display: block;
    max-width: 100%;
    font-size: 9px;
    line-height: 1.12;
    overflow-wrap: anywhere;
  }

  .nav-icon {
    width: auto;
    font-size: 18px;
    line-height: 1;
  }

  .nav-item.active {
    box-shadow: inset 0 2px #6ea1ff;
  }

  .main-content {
    width: 100%;
    min-width: 0;
    padding: 15px 11px calc(100px + env(safe-area-inset-bottom, 0px));
  }

  .topbar {
    display: grid;
    grid-template-columns: minmax(0, 1fr);
    gap: 11px;
    margin-bottom: 15px;
  }

  .topbar h1 {
    font-size: clamp(21px, 6vw, 25px);
    line-height: 1.15;
    overflow-wrap: anywhere;
  }

  .topbar-right {
    display: flex;
    flex-wrap: wrap;
    justify-content: flex-start;
    align-items: stretch;
    gap: 7px;
    min-width: 0;
  }

  .zoom-control {
    display: grid;
    flex: 1 1 90px;
    min-width: 0;
    gap: 4px;
    font-size: 10px;
  }

  .zoom-control span {
    display: block;
    font-size: 9px;
  }

  .zoom-control select {
    width: 100%;
    min-width: 0;
    min-height: 40px;
    padding: 7px 8px;
    font-size: 12px;
  }

  .status-pill {
    display: flex;
    flex: 1 1 125px;
    justify-content: center;
    align-items: center;
    min-width: 0;
    min-height: 40px;
    padding: 7px 9px;
    font-size: 10px;
    text-align: center;
  }

  .icon-btn {
    flex: 0 0 42px;
    width: 42px;
    height: 42px;
  }

  .workspace-grid,
  .left-column,
  .right-column {
    display: grid;
    grid-template-columns: minmax(0, 1fr);
    gap: 13px;
    min-width: 0;
  }

  .panel {
    min-width: 0;
    padding: 14px;
    border-radius: 12px;
  }

  .panel-heading {
    gap: 9px;
    margin-bottom: 14px;
  }

  .panel-heading h2 {
    font-size: 15px;
    line-height: 1.25;
  }

  .panel-heading p {
    font-size: 11px;
    line-height: 1.4;
  }

  .field-grid,
  .probe-grid {
    grid-template-columns: minmax(0, 1fr);
    gap: 9px;
  }

  .field {
    min-width: 0;
    margin-bottom: 11px;
  }

  .field input,
  .field select,
  .field textarea,
  .text-input,
  input,
  select,
  textarea {
    min-height: 44px;
    font-size: 16px;
  }

  .field label,
  .form-label {
    font-size: 12px;
  }

  .field small,
  .field-hint {
    font-size: 11px;
  }

  .btn {
    min-height: 44px;
    padding: 11px 13px;
    font-size: 13px;
  }

  .btn.small {
    min-height: 38px;
    padding: 8px 10px;
    font-size: 11px;
  }

  .button-row {
    flex-wrap: wrap;
  }

  .button-row > .btn {
    flex: 1 1 auto;
  }

  .form-actions {
    display: flex;
    flex-direction: column-reverse;
    align-items: stretch;
    gap: 8px;
  }

  .form-actions > .btn,
  .form-actions .button-row,
  .form-actions .button-row > .btn {
    width: 100%;
  }

  .source-select {
    align-items: flex-start;
    flex-wrap: wrap;
    padding: 11px;
  }

  .source-select .source-text {
    flex: 1 1 calc(100% - 54px);
  }

  .source-select > .btn {
    width: 100%;
  }

  .task-card {
    min-width: 0;
    padding: 11px;
  }

  .task-top {
    align-items: flex-start;
  }

  .task-name {
    overflow-wrap: anywhere;
    line-height: 1.35;
  }

  .task-status {
    flex: 0 0 auto;
    font-size: 9px;
  }

  .task-progress-row {
    gap: 8px;
    font-size: 11px;
    line-height: 1.35;
  }

  .task-progress-row > span {
    min-width: 0;
    overflow-wrap: anywhere;
  }

  .task-metrics {
    gap: 8px 11px;
    font-size: 11px;
  }

  .task-actions-row .btn {
    flex: 1 1 125px;
  }

  .task-output {
    align-items: stretch;
  }

  .task-output .btn {
    flex: 1 1 120px;
  }

  .task-logs {
    max-height: 220px;
    padding: 10px;
    font-size: 11px;
    overflow-wrap: anywhere;
  }

  .task-logs-wrap summary {
    display: flex;
    align-items: center;
    min-height: 40px;
    font-size: 12px;
  }

  .range-row {
    grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
    gap: 8px;
  }

  .range-row .field {
    min-width: 0;
  }

  .range-row .btn {
    grid-column: 1 / -1;
    width: 100%;
  }

  .hardware-options {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 8px;
  }

  .browser-location {
    display: grid;
    grid-template-columns: auto minmax(0, 1fr) auto;
    gap: 8px;
    padding: 10px 12px;
  }

  .browser-location span:nth-child(2) {
    min-width: 0;
    overflow-wrap: anywhere;
  }

  .browser-items {
    min-height: 120px;
    max-height: none;
    flex: 1 1 auto;
    padding: 7px 9px;
  }

  .browser-item {
    min-height: 48px;
    padding: 9px 7px;
  }

  .browser-item-main strong,
  .browser-item-main small {
    overflow-wrap: anywhere;
  }

  .modal {
    z-index: 50;
    align-items: end;
    padding: 0;
  }

  .modal-card {
    width: 100%;
    max-width: none;
    max-height: min(92dvh, 900px);
    border-radius: 17px 17px 0 0;
    padding-bottom: env(safe-area-inset-bottom, 0px);
  }

  .modal-header {
    padding: 14px 15px;
  }

  .modal-header h2 {
    font-size: 16px;
  }

  .modal-footer {
    align-items: stretch;
    flex-direction: column;
    gap: 9px;
    padding: 12px 15px;
  }

  .modal-footer .button-row {
    display: grid;
    grid-template-columns: minmax(0, 1fr);
    width: 100%;
  }

  .modal-footer .button-row > .btn,
  .modal-footer > .btn {
    width: 100%;
  }

  .browser-card {
    height: min(92dvh, 900px);
  }

  .browser-card .modal-footer .button-row {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .changelog-content {
    min-height: 150px;
    max-height: 58dvh;
    padding: 13px 14px;
    font-size: 11px;
    line-height: 1.6;
  }

  .changelog-modal-card .modal-footer {
    flex-direction: row;
    justify-content: flex-end;
  }

  .changelog-modal-card .modal-footer .btn {
    width: auto;
    min-width: 110px;
  }

  .source-cleanup-card .cleanup-modal-body {
    padding: 14px 15px;
  }

  .source-cleanup-card .cleanup-modal-footer {
    flex-direction: column-reverse;
    align-items: stretch;
  }

  .source-cleanup-card .cleanup-modal-footer .btn {
    width: 100%;
  }

  .version-details {
    align-items: flex-start;
    flex-direction: column;
  }
}

@media (max-width: 380px) {
  .main-content {
    padding-right: 9px;
    padding-left: 9px;
  }

  .panel {
    padding: 12px;
  }

  .nav-item span:last-child {
    font-size: 8px;
  }

  .browser-location {
    grid-template-columns: auto minmax(0, 1fr);
  }

  .browser-location #browser-up {
    grid-column: 1 / -1;
    width: 100%;
  }

  .browser-card .modal-footer .button-row {
    grid-template-columns: minmax(0, 1fr);
  }
}

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    scroll-behavior: auto !important;
    transition-duration: .01ms !important;
    animation-duration: .01ms !important;
    animation-iteration-count: 1 !important;
  }
}

/* Gestion multi-utilisateur et espaces privés — version 0.2.10 */
.settings-view{display:grid;gap:16px}
.settings-section{margin:0}
.settings-section .panel-heading{margin-bottom:15px}
.user-create-grid{align-items:end}
.users-list{display:grid;gap:9px;margin-top:18px}
.user-row{display:grid;grid-template-columns:minmax(130px,.7fr) minmax(0,2fr);gap:12px;align-items:center;padding:12px;border:1px solid var(--line);border-radius:10px;background:var(--surface-soft)}
.user-row-main{min-width:0;display:grid;gap:4px}
.user-row-main strong{font-size:12px;overflow-wrap:anywhere}
.user-row-main small{font-size:10px;color:var(--muted)}
.user-row-controls{display:flex;gap:7px;align-items:center;flex-wrap:wrap}
.user-row-controls input{min-width:120px;max-width:190px;flex:1;border:1px solid var(--line);border-radius:7px;background:var(--surface);color:var(--ink);padding:8px;font-size:11px}
.user-row-controls input::placeholder{color:var(--muted)}
.user-protected{justify-self:start;font-size:10px;color:var(--muted);border:1px solid var(--line);border-radius:20px;padding:6px 9px}
.browser-modal-footer{flex-wrap:wrap}
.browser-footer-actions{flex-wrap:wrap;justify-content:flex-end}
.login-card label:not(:first-child){margin-top:3px}
@media(max-width:740px){
  .user-row{grid-template-columns:1fr}
  .user-row-controls{display:grid;grid-template-columns:1fr 1fr}
  .user-row-controls input{max-width:none;min-height:40px;grid-column:1/-1}
  .user-row-controls .btn{min-height:40px}
  .browser-footer-actions{display:grid;grid-template-columns:1fr 1fr;width:100%}
  .browser-footer-actions .btn{min-height:42px}
  .browser-footer-actions #browser-confirm{grid-column:1/-1}
}
:root[data-theme="dark"] .user-row{background:#17263a;border-color:var(--line)}
:root[data-theme="dark"] .user-row-controls input{background:#0e1827;color:var(--ink);border-color:var(--line)}


/* Sélecteur visuel du dossier de travail commun — version 0.2.10 */
.work-root-control{display:flex;gap:9px;align-items:stretch}
.work-root-control input{flex:1;min-width:0}
.work-root-control .btn{flex:0 0 auto;white-space:nowrap}
@media(max-width:540px){.work-root-control{flex-direction:column}.work-root-control .btn{width:100%;min-height:42px}}


/* Gestionnaire de fichiers double panneau — périmètres Admin /srv et espace privé — version 0.2.13 */
.filemanager-view{display:grid;gap:15px;max-width:1700px;margin:0 auto}
.fm-toolbar-panel{padding:17px 19px}
.fm-toolbar-panel .panel-heading{margin-bottom:12px}
.fm-toolbar{display:flex;gap:7px;flex-wrap:wrap}
.fm-toolbar .btn{min-height:36px}
.fm-toolbar-status{display:flex;gap:9px 18px;flex-wrap:wrap;margin-top:12px;padding-top:10px;border-top:1px solid var(--line);font-size:10px;color:var(--muted)}
.fm-transfer-progress{display:grid;gap:7px;margin-top:12px;padding:11px 12px;border:1px solid var(--line);border-radius:9px;background:var(--surface-soft)}
.fm-transfer-heading,.fm-transfer-details{display:flex;align-items:center;justify-content:space-between;gap:12px}
.fm-transfer-heading{font-size:11px;color:var(--ink)}
.fm-transfer-details{font-size:10px;color:var(--muted);flex-wrap:wrap}
.fm-transfer-details span:first-child{overflow-wrap:anywhere}
.fm-transfer-details span:last-child{text-align:right;font-variant-numeric:tabular-nums}
.fm-transfer-progress progress{width:100%;height:12px;accent-color:var(--blue)}
.fm-dual-layout{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:15px;align-items:start}
.fm-pane{padding:15px;min-width:0;border:1px solid var(--line);transition:border-color .15s,box-shadow .15s}
.fm-pane.active{border-color:#6b98e8;box-shadow:0 0 0 2px #3a78df18,var(--shadow)}
.fm-pane-heading{display:flex;justify-content:space-between;align-items:center;gap:8px;margin-bottom:11px}
.fm-pane-heading h2{font-size:14px;margin:0 0 4px}
.fm-pane-heading p{font-size:10px;margin:0;color:var(--muted)}
.fm-path{font:11px/1.45 ui-monospace,SFMono-Regular,Consolas,monospace;background:var(--surface-soft);color:var(--ink);border:1px solid var(--line);border-radius:7px;padding:9px 10px;overflow-wrap:anywhere;min-height:36px}
.fm-pane-actions{display:flex;justify-content:flex-end;padding:9px 0 7px}
.fm-items{display:grid;gap:4px;max-height:65vh;min-height:230px;overflow:auto;border:1px solid var(--line);border-radius:9px;padding:6px;background:var(--surface-soft)}
.fm-entry{display:grid;grid-template-columns:20px 28px minmax(0,1fr) auto;align-items:center;gap:8px;padding:8px;border:1px solid transparent;border-radius:7px;background:var(--surface);min-width:0}
.fm-entry:hover{border-color:var(--line);background:#f5f8fc}
.fm-entry.selected{border-color:#a9c4f5;background:#edf4ff}
.fm-entry input{width:16px;height:16px;accent-color:var(--blue)}
.fm-entry-icon{width:27px;height:27px;border-radius:7px;background:#eef2f8;display:grid;place-items:center;color:#6a7b96;font-size:14px}
.fm-entry-icon.directory{background:#fff3d9;color:#b9821e}
.fm-entry-name{min-width:0;display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:left;border:0;background:transparent;color:var(--ink);padding:2px 0;font-size:11px;font-weight:700}
.fm-entry-meta{display:grid;justify-items:end;gap:3px;font-size:9px;color:var(--muted);text-align:right;white-space:normal;line-height:1.35}.fm-entry-meta small{font-size:8px;color:var(--muted);font-weight:400}
.fm-empty{display:grid;place-items:center;min-height:170px;color:var(--muted);font-size:11px;text-align:center;padding:15px}
.fm-help{margin:0;padding:0 4px;line-height:1.55}
.fm-permissions-card{width:min(620px,100%)}
.fm-permissions-body{padding:18px 21px;overflow:auto}
.fm-recursive-option{display:flex;align-items:center;gap:9px;font-size:12px;color:var(--ink);padding:10px 0}
.fm-recursive-option input{width:17px;height:17px;accent-color:var(--blue)}
.fm-permissions-body .field{margin-bottom:10px}
:root[data-theme="dark"] .fm-entry:hover{background:#1c2a3e}
:root[data-theme="dark"] .fm-entry.selected{background:#1c3458;border-color:#365d96}
:root[data-theme="dark"] .fm-path{background:#111c2d}
@media(max-width:1000px){.fm-toolbar{display:grid;grid-template-columns:repeat(4,minmax(0,1fr))}.fm-toolbar .btn{padding:9px 8px}}
@media(max-width:740px){
  .fm-toolbar{grid-template-columns:repeat(2,minmax(0,1fr))}
  .fm-toolbar .btn{min-height:42px}
  .fm-dual-layout{grid-template-columns:1fr}
  .fm-items{max-height:48vh;min-height:180px}
  .fm-pane{padding:12px}
  .fm-entry{grid-template-columns:19px 25px minmax(0,1fr) auto;gap:6px;padding:7px}
  .fm-entry-meta{font-size:8px}.fm-entry-meta small{font-size:7px}.fm-transfer-details{font-size:9px}
  .fm-permissions-body{padding:15px}
  .fm-permissions-body .field-grid{grid-template-columns:1fr}
  .fm-permissions-card .modal-footer{flex-direction:column-reverse;align-items:stretch}
  .fm-permissions-card .modal-footer .btn{width:100%;min-height:42px}
}

.fm-context-menu{position:fixed;z-index:10000;min-width:195px;max-height:80vh;overflow-y:auto;background:var(--surface,#202633);color:var(--text,#fff);border:1px solid #7b8797;border-radius:9px;box-shadow:0 12px 32px #0007;padding:5px;display:flex;flex-direction:column}
.fm-context-menu.hidden{display:none}
.fm-context-menu button{background:transparent;border:0;color:inherit;text-align:left;padding:9px 12px;cursor:pointer;border-radius:5px}
.fm-context-menu button:hover:not(:disabled){background:#64748b55}
.fm-context-menu button:disabled{opacity:.4;cursor:default}
.fm-details-content{padding:20px;max-height:65vh;overflow:auto}
.fm-detail-row{display:grid;grid-template-columns:minmax(120px,1fr) 2fr;gap:12px;padding:9px 0;border-bottom:1px solid #8884;overflow-wrap:anywhere}

/* Dashboard */
.home-view { max-width: 1200px; margin: 24px auto; }
.home-intro { margin-bottom: 18px; }
.home-stats { display: grid; grid-template-columns: repeat(auto-fit,minmax(235px,1fr)); gap: 16px; }
.home-stat { min-height: 130px; padding: 22px; display: flex; flex-direction: column; gap: 10px; overflow-wrap: anywhere; }
.home-stat > strong { font-size: clamp(1.2rem,2vw,1.7rem); line-height: 1.3; }

/* Context menu: always reachable on narrow and touch screens. */
.fm-context-menu{box-sizing:border-box;overscroll-behavior:contain;-webkit-overflow-scrolling:touch;touch-action:pan-y}
.fm-context-menu button{min-height:42px;flex-shrink:0}
@media(hover:none),(pointer:coarse){
  .fm-context-menu button{min-height:48px;font-size:14px}
  .fm-entry{min-height:48px}
}

/* Graphiques système : grille adaptable aux écrans mobiles. */
.home-charts{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,340px),1fr));gap:16px;margin-bottom:18px}
.home-chart{min-width:0;padding:16px}
.home-chart-header{display:flex;justify-content:space-between;gap:10px;align-items:center;font-size:13px}
.home-chart-header span{font-variant-numeric:tabular-nums;color:var(--blue);font-weight:800}
.home-chart svg{display:block;width:100%;height:145px;margin:12px 0 7px;overflow:visible}
.home-chart-axis{stroke:var(--line);stroke-width:1;fill:none}
.home-chart-line{stroke:var(--blue);stroke-width:2.5;fill:none;stroke-linejoin:round;stroke-linecap:round;vector-effect:non-scaling-stroke}
/* Toujours au-dessus du contenu et des conteneurs défilants. */
body>.fm-context-menu{position:fixed!important;z-index:100000;overflow-y:auto;overflow-x:hidden;box-sizing:border-box;contain:layout style;}
@media(max-width:600px){.home-chart svg{height:120px}.home-chart{padding:12px}}

/* Tri du gestionnaire : compact et accessible sur mobile */
.fm-pane-actions{align-items:center;gap:8px;flex-wrap:wrap}
.fm-sort-label{font-size:12px;color:var(--muted)}
.fm-sort-select{max-width:100%;min-height:36px;padding:5px 8px;border:1px solid var(--line);border-radius:7px;background:var(--surface-soft);color:var(--text)}
@media(max-width:600px){.fm-pane-actions{justify-content:flex-start}.fm-sort-select{flex:1;min-width:130px;font-size:14px;min-height:44px}}

/* SynHub 0.3 : sous-menu vidéo responsive */
.video-tools{display:flex;flex-direction:column;gap:2px;padding-left:12px;border-left:2px solid var(--line,#dce3ed);margin-left:14px}
.video-tools.hidden{display:none}
.video-tools .nav-item{font-size:0.94em}
@media(max-width:740px){.video-tools{flex-direction:row;flex:0 0 auto;margin:0;padding:0;border:0;gap:3px}.nav-actions{align-items:center}.video-tools .nav-item{flex:0 0 auto}}

.fm-preview-content{max-height:75vh;overflow:auto;min-height:80px}.fm-preview-content img,.fm-preview-content video{display:block;max-width:100%;max-height:65vh;margin:auto}.fm-preview-content audio{width:100%}.fm-preview-content iframe{width:100%;height:65vh;border:0}.fm-preview-content pre{white-space:pre-wrap;overflow-wrap:anywhere;font-size:13px}.fm-preview-content .modal-card{max-width:95vw}
#fm-preview-modal .modal-card{width:min(900px,95vw);max-width:95vw}

.fm-shares-list{overflow:auto;padding:16px;display:grid;gap:12px;max-height:75vh}.fm-share-item{display:grid;gap:8px;padding:12px;border:1px solid var(--line);border-radius:10px;min-width:0}.fm-share-item strong,.fm-share-item small{overflow-wrap:anywhere}.fm-share-item small{color:var(--muted)}.fm-share-item input{min-width:0}.fm-share-actions{flex-wrap:wrap}#fm-shares-modal .modal-card{width:min(800px,95vw)}@media(max-width:600px){.fm-share-actions .btn{min-height:44px}}

/* Partages dans une page dédiée : pas de limite de hauteur de fenêtre modale. */
#shares-view .fm-shares-list{max-height:none;overflow:visible;padding:0;}
#home-view .info-panel{margin-top:18px;}


/* Date et heure de la page d'accueil */
.home-clock{font-size:clamp(2rem,5vw,3.2rem);font-weight:750;letter-spacing:.025em;font-variant-numeric:tabular-nums;margin:10px 0 4px}
.time-panel #home-date{text-transform:capitalize}
.time-panel #home-ntp-status{margin-top:10px}

/* 0.3.16 : accueil horizontal, horloge discrète et indicateurs intégrés aux courbes. */
#home-view.home-view{max-width:1440px;margin:14px auto}
#home-view .home-intro{margin-bottom:12px;padding:14px 18px}
#home-view .home-intro .panel-heading{margin-bottom:5px}
#home-view .home-intro .muted.small{margin:5px 0 0}
#home-view .time-panel{display:grid;grid-template-columns:minmax(155px,.85fr) minmax(230px,1.1fr) minmax(240px,1.6fr);gap:12px 22px;align-items:center;padding:12px 18px;margin-bottom:12px;min-width:0}
#home-view .time-panel-label,#home-view .time-panel-current{min-width:0}
#home-view .time-panel-label h2{font-size:1rem;margin:0 0 4px}
#home-view .time-panel-label p,#home-view .time-panel-ntp{margin:0;overflow-wrap:anywhere}
#home-view .time-panel-current{display:flex;align-items:center;gap:14px;flex-wrap:wrap}
#home-view .home-clock{font-size:clamp(1.35rem,2.2vw,1.9rem);font-weight:750;margin:0;line-height:1.15;white-space:nowrap;letter-spacing:.015em}
#home-view .home-date{font-size:.82rem;line-height:1.3;text-transform:capitalize}
#home-view .time-panel-ntp{font-size:.78rem;line-height:1.35}
#home-view .home-charts{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin-bottom:12px}
#home-view .home-chart{display:flex;flex-direction:column;gap:0;padding:13px 16px;min-width:0}
#home-view .home-chart-header{font-size:.87rem;gap:10px}
#home-view .home-chart-value{font-size:1.12rem;font-weight:800;color:var(--blue);font-variant-numeric:tabular-nums;white-space:nowrap}
#home-view .home-chart svg{height:108px;margin:9px 0 8px}
#home-view .home-chart-details{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px 16px;padding:9px 0;border-top:1px solid var(--line)}
#home-view .home-chart-detail{display:flex;flex-direction:column;gap:3px;min-width:0;font-size:.78rem;overflow-wrap:anywhere}
#home-view .home-chart-detail span{color:var(--muted)}
#home-view .home-chart-detail strong{font-size:.88rem;font-variant-numeric:tabular-nums}
#home-view .home-chart-footer{margin-top:auto;padding-top:6px;font-size:.73rem}
#home-view .home-stats{grid-template-columns:repeat(auto-fit,minmax(215px,1fr));gap:12px}
#home-view .home-stat{min-height:90px;padding:14px;gap:5px}
@media(max-width:940px){#home-view .time-panel{grid-template-columns:1fr 1fr}#home-view .time-panel-ntp{grid-column:1 / -1}}
@media(max-width:700px){#home-view .home-charts{grid-template-columns:1fr}#home-view .time-panel{grid-template-columns:1fr;gap:8px}#home-view .time-panel-ntp{grid-column:auto}#home-view .home-chart svg{height:105px}}


/* 0.3.17 : quatre graphiques sur une ligne, synthèse compacte et stockage visuel.
   La présentation de l'horloge et de la date reste inchangée. */
#home-view.home-view{max-width:1800px}
#home-view .home-charts{grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin-bottom:10px}
#home-view .home-chart{padding:11px 12px}
#home-view .home-chart-header{align-items:flex-start;flex-wrap:wrap;row-gap:4px;font-size:.79rem}
#home-view .home-chart-value{font-size:1.04rem}
#home-view .home-chart svg{height:82px;margin:7px 0}
#home-view .home-chart-details{grid-template-columns:1fr;gap:5px;padding:7px 0}
#home-view .home-chart-detail{flex-direction:row;align-items:baseline;justify-content:space-between;gap:8px;font-size:.75rem}
#home-view .home-chart-detail strong{font-size:.78rem;text-align:right}
#home-view .home-chart-footer{font-size:.7rem;padding-top:4px}
#home-view .home-stats{grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:10px}
#home-view .home-stat{min-height:68px;padding:11px 13px;gap:3px}
#home-view .home-stat>strong{font-size:1.17rem;line-height:1.2}
#home-view .home-storage{grid-column:1/-1;display:flex;flex-direction:column;gap:8px;padding:13px 15px;min-width:0}
#home-view .home-storage-head,#home-view .home-storage-foot{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap}
#home-view .home-storage-head{font-size:.88rem}
#home-view .home-storage-remaining{font-weight:800;color:var(--blue);font-variant-numeric:tabular-nums}
#home-view .home-storage-foot{color:var(--muted);font-size:.76rem;font-variant-numeric:tabular-nums}
#home-view .home-storage-progress{height:12px;border-radius:999px;background:var(--line);overflow:hidden}
#home-view .home-storage-progress-fill{display:block;height:100%;background:var(--blue);border-radius:inherit;transition:width .45s ease}
@media(max-width:1150px){#home-view .home-charts{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:620px){
  #home-view .home-charts{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
  #home-view .home-chart{padding:9px 10px}
  #home-view .home-chart svg{height:70px}
  #home-view .home-chart-header{font-size:.74rem}
  #home-view .home-chart-value{font-size:.94rem}
  #home-view .home-chart-detail{flex-wrap:wrap;gap:3px;font-size:.7rem}
  #home-view .home-chart-detail strong{font-size:.73rem;overflow-wrap:anywhere}
  #home-view .home-stats{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
  #home-view .home-stat{padding:10px}
  #home-view .home-storage{padding:11px}
}
@media(max-width:380px){#home-view .home-charts{grid-template-columns:1fr}}

/* v0.3.18 : le panneau de travail actif a un contour rouge arrondi. */
.fm-pane.active{border:2px solid #e53935!important;border-radius:14px!important;box-shadow:0 0 0 3px rgba(229,57,53,.12),var(--shadow)!important}
.fm-pane:not(.active){border:2px solid var(--line);border-radius:14px}
/* Hub des modules multimédias, plutôt qu'un menu latéral déroulant. */
.multimedia-view{max-width:1300px;margin:20px auto}
.multimedia-tools{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:14px;margin-top:20px}
.multimedia-tool{display:flex;align-items:flex-start;flex-direction:column;gap:9px;min-height:150px;border-radius:14px;border:1px solid var(--line);padding:20px;background:var(--surface);color:var(--ink);text-align:left;cursor:pointer;box-shadow:var(--shadow);transition:transform .15s,border-color .15s}
.multimedia-tool:hover,.multimedia-tool:focus-visible{transform:translateY(-2px);border-color:var(--blue)}
.multimedia-tool>span{font-size:26px;color:var(--blue)}.multimedia-tool strong{font-size:17px}.multimedia-tool small{color:var(--muted);font-size:12px;line-height:1.5}
@media(max-width:650px){.multimedia-tools{grid-template-columns:repeat(2,minmax(0,1fr));gap:9px}.multimedia-tool{min-height:130px;padding:13px}.multimedia-tool strong{font-size:14px}.multimedia-tool small{font-size:11px}}
@media(max-width:370px){.multimedia-tools{grid-template-columns:1fr}}

.fm-password-shade{position:fixed;inset:0;z-index:4500;display:flex;align-items:center;justify-content:center;padding:18px;background:rgba(0,0,0,.55)}
.fm-password-card{width:min(460px,100%);padding:24px;border-radius:16px;background:var(--surface);color:var(--ink);box-shadow:0 18px 50px rgba(0,0,0,.25)}
.fm-password-card h3{margin:0 0 10px;font-size:1.2rem}.fm-password-card p{font-size:.88rem;color:var(--muted);line-height:1.45}
.fm-password-card input{width:100%;margin:12px 0 20px}.fm-password-card .button-row{justify-content:flex-end}

/* 0.3.19 : icônes dossier grises, fichiers blancs, sans fond */
.fm-entry-icon,.fm-entry-icon.directory,.browser-item-icon,.browser-item-icon.directory,.source-select .file-symbol{background:transparent!important;border:none!important;box-shadow:none!important}
.tm-file-svg{width:22px;height:22px;display:block;flex-shrink:0}
.browser-item-icon .tm-file-svg{width:26px;height:26px}
.fm-entry-icon,.browser-item-icon{color:inherit}
:root[data-theme="dark"] .tm-file-svg{filter:none}

/* Photo processing page */
.photos-view{max-width:1000px;margin:18px auto;width:100%}
.photos-view .panel{padding:24px}
.photos-view .photo-help{margin:14px 0;padding:12px 14px;border-radius:12px;background:var(--panel-2,#e9eef5);font-size:.9rem}
.photos-view textarea{width:100%;min-height:96px;resize:vertical}
.photos-view .field-grid{margin:18px 0;grid-template-columns:repeat(2,minmax(0,1fr))}
.photos-view .field input[type=checkbox]{width:auto;height:auto}
@media(max-width:650px){.photos-view .field-grid{grid-template-columns:1fr}.photos-view .panel{padding:15px}}

/* 0.3.21 : sélecteur de photos et destination */
.photo-pick-row{flex-wrap:wrap}.photo-pick-row .text-input{flex:1 1 260px;min-width:0}
.photo-source-list{display:grid;gap:6px;max-height:180px;overflow:auto;margin-top:8px}
.photo-source-row{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:8px 10px;border:1px solid var(--line);border-radius:8px;font-size:12px}
.photo-source-row span{min-width:0;overflow-wrap:anywhere}
@media(max-width:600px){.photo-pick-row>.btn{flex:1 1 auto}}

.tm-share-permission{display:flex;align-items:flex-start;gap:8px;font-size:13px;padding:9px 2px;cursor:pointer}
.tm-share-permission input{margin-top:2px;flex:0 0 auto;accent-color:var(--blue)}

/* 0.3.22 : bannière du module photo contrastée en thèmes clair et sombre. */
.photos-view .photo-help{
  background:var(--blue,#2563eb);
  color:#fff;
  border:1px solid rgba(255,255,255,.2);
  font-weight:500;
}

/* 0.3.23 : attribution des projets open source en bas de chaque module. */
.tool-attribution{margin-top:17px;padding:13px 15px;border:1px solid var(--line);border-radius:10px;background:var(--surface);display:flex;align-items:center;gap:9px 17px;flex-wrap:wrap;font-size:12px;line-height:1.5;color:var(--muted)}
.tool-attribution strong{color:var(--ink)}
.tool-attribution a{color:var(--blue);font-weight:700;text-decoration:underline;text-underline-offset:3px;overflow-wrap:anywhere}
.tool-attribution a:hover{text-decoration-thickness:2px}
.tool-attribution-media{grid-column:1/-1;margin-top:0}
@media(max-width:650px){.tool-attribution{flex-direction:column;align-items:flex-start;gap:7px;padding:12px}}

/* 0.3.25 — Language switch beside theme, responsive without altering layout. */
.topbar-right .language-control{min-width:0}
.topbar-right .language-control select{min-width:84px}
@media(max-width:650px){.topbar-right .language-control span{display:none}.topbar-right .language-control select{width:88px;max-width:100%}}


/* 0.3.26 — Chaque panneau garde une hauteur fixe de 10 lignes, avec défilement et réglage individuel. */
.fm-dual-layout{align-items:start}
.fm-pane .fm-items{
  box-sizing:border-box;
  height:532px; /* dix lignes de 48px + 9 espaces de 4px + les marges intérieures */
  max-height:none;
  min-height:160px;
  overflow-x:hidden;
  overflow-y:auto;
  resize:vertical;
  align-content:start;
  grid-auto-rows:max-content;
  overscroll-behavior:contain;
  scrollbar-gutter:stable;
}
.fm-pane .fm-items .fm-entry{min-height:48px;box-sizing:border-box}
.fm-pane .fm-items .fm-empty{align-self:start}
.fm-pane .fm-items:focus-visible{outline:2px solid var(--blue);outline-offset:2px}
@media(max-width:740px){
  .fm-pane .fm-items{height:532px;max-height:none;min-height:160px}
}

/* Internal folder-sharing dialog */
.tm-internal-dialog{max-height:min(88vh,900px);overflow-y:auto;max-width:min(620px,95vw)}
.tm-internal-users{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:5px;max-height:190px;overflow:auto;border:1px solid var(--line);border-radius:10px;padding:10px;margin:8px 0 16px}
.internal-shares-heading{margin:24px 0 8px}

/* 0.3.28 : formulaire interne compact et plus large. */
.tm-internal-dialog{
  width:min(900px,96vw);
  max-width:96vw;
  max-height:min(90dvh,820px);
  padding:20px 22px;
  overflow-y:auto;
}
.tm-internal-dialog h3{margin-bottom:4px}
.tm-internal-dialog>p{margin:0 0 12px;font-size:.8rem;overflow-wrap:anywhere}
.tm-internal-layout{display:grid;grid-template-columns:minmax(0,1.05fr) minmax(0,1fr);gap:18px;align-items:start}
.tm-internal-column{display:flex;flex-direction:column;gap:9px;min-width:0}
.tm-internal-column>strong{font-size:.85rem}
.tm-internal-users{
  display:grid;grid-template-columns:repeat(2,minmax(0,1fr));align-content:start;
  gap:2px 8px;min-height:130px;max-height:min(42vh,320px);overflow-y:auto;
  margin:0;padding:7px;border-radius:9px;
}
.tm-internal-users .tm-share-permission{padding:5px 6px;min-width:0;overflow-wrap:anywhere;font-size:.78rem}
.tm-internal-dialog .tm-share-permission input{width:auto!important;height:auto;margin:2px 0 0!important;flex-shrink:0}
.tm-internal-expiry{display:flex;flex-direction:column;gap:5px}
.tm-internal-expiry>label{font-size:.81rem}
.tm-internal-expiry>input{width:100%;margin:0!important;min-height:35px}
.tm-internal-rights{display:grid;gap:2px}
.tm-internal-rights .tm-share-permission{padding:5px 4px;font-size:.8rem}
.tm-internal-column>.muted.small{margin:2px 0;font-size:.73rem;line-height:1.35}
.tm-internal-actions{margin-top:15px;padding-top:10px;border-top:1px solid var(--line);gap:9px}
.tm-internal-actions .btn{min-height:35px}
@media(max-width:740px){
  .tm-internal-dialog{width:min(560px,97vw);padding:16px;max-height:94dvh}
  .tm-internal-layout{grid-template-columns:1fr;gap:12px}
  .tm-internal-column{gap:7px}
  .tm-internal-users{min-height:80px;max-height:190px}
  .tm-internal-actions{position:sticky;bottom:-16px;background:var(--surface);padding-bottom:8px}
}
@media(max-width:410px){.tm-internal-users{grid-template-columns:1fr}}

/* 0.3.29 — Deux colonnes de partages : 7 cartes visibles, chacune défilable
   et redimensionnable indépendamment. */
#shares-view.shares-page{max-width:1800px;margin:16px auto;width:100%}
#shares-view .shares-columns{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));align-items:start;gap:14px;margin-top:14px}
#shares-view .shares-column{min-width:0;display:flex;flex-direction:column;gap:10px;padding:14px;border:1px solid var(--line);border-radius:12px;background:var(--surface-soft)}
#shares-view .shares-column-header h3{margin:0 0 4px}
#shares-view .shares-column-header p{margin:0}
#shares-view .shares-bulk-actions{display:flex;gap:6px;flex-wrap:wrap;margin:0}
#shares-view .fm-shares-list.shares-scroll{height:610px;min-height:200px;max-height:none;min-width:0;overflow-y:auto;overflow-x:hidden;resize:vertical;display:flex;flex-direction:column;gap:9px;padding:6px;align-content:start}
#shares-view .fm-share-item{flex:none;padding:10px;gap:7px}
#shares-view .fm-share-actions{gap:5px}
#shares-view .fm-share-actions .btn{padding:6px 9px;font-size:.78rem}
.fm-select-all{display:inline-flex;align-items:center;gap:7px;font-size:12px;color:var(--text);cursor:pointer;white-space:nowrap;margin-right:auto}
.fm-select-all input[type=checkbox]{width:17px;height:17px;flex:none;margin:0;accent-color:var(--blue)}
@media(max-width:850px){#shares-view .shares-columns{grid-template-columns:1fr}}
@media(max-width:600px){#shares-view .shares-column{padding:10px}#shares-view .fm-shares-list.shares-scroll{height:490px} .fm-select-all{width:100%;min-height:30px}}

/* Chaque lien occupe une ligne compacte ; détails/actions par ouverture. */
#shares-view .fm-share-item.fm-share-collapsible{padding:0;display:block;min-height:0}
#shares-view .fm-share-summary{display:flex;align-items:center;justify-content:space-between;gap:8px;min-height:66px;padding:10px 12px;cursor:pointer;list-style:none}
#shares-view .fm-share-summary::-webkit-details-marker{display:none}
#shares-view .fm-share-summary strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;font-size:.86rem}
#shares-view .fm-share-expand{font-size:.73rem;color:var(--blue);white-space:nowrap}
#shares-view details[open]>.fm-share-summary{border-bottom:1px solid var(--line)}
#shares-view details[open]>.fm-share-summary .fm-share-expand{color:var(--muted)}
#shares-view .fm-share-collapsible>small,#shares-view .fm-share-collapsible>.text-input,#shares-view .fm-share-collapsible>.fm-share-actions{display:block;margin:9px 12px}
#shares-view .fm-share-collapsible>.fm-share-actions{display:flex}
#shares-view .fm-share-collapsible>small{line-height:1.5}
#shares-view .fm-share-collapsible>.text-input{width:calc(100% - 24px)}
#shares-view .fm-shares-list.shares-scroll{height:calc(7 * 67px + 6 * 9px + 14px)}

/* 0.3.32 : cartes Applications compactes, ratio 4/3 préservé. */
.tm-applications-view{max-width:1320px;margin:18px auto}
.tm-applications-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(142px,160px));gap:10px;margin:14px 0;justify-content:start}
.tm-application-card{display:flex;flex-direction:column;gap:6px;padding:6px;border:1px solid var(--line);border-radius:10px;background:var(--surface);min-width:0;box-shadow:var(--shadow)}
.tm-application-hero{position:relative;display:block;aspect-ratio:4 / 3;border-radius:8px;overflow:hidden;background:linear-gradient(135deg,#1d5fd0,#5d8eff);border:1px solid rgba(255,255,255,.08);text-decoration:none}
.tm-application-hero.has-image{background-size:cover;background-position:center;background-repeat:no-repeat}
.tm-application-overlay{position:absolute;inset:auto 0 0 0;padding:8px;background:linear-gradient(180deg,rgba(0,0,0,0),rgba(0,0,0,.72));display:grid;gap:3px;color:#fff}
.tm-application-overlay strong{font-size:12px;line-height:1.2;overflow-wrap:anywhere}
.tm-application-overlay small{color:rgba(255,255,255,.9);font-size:9px;line-height:1.25;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.tm-application-meta{display:grid;gap:5px}
.tm-application-meta small{color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0;font-size:10px}
.tm-application-meta .btn{padding:5px 8px;min-height:27px;font-size:10px}
.tm-application-card>.button-row{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:4px}
.tm-application-card>.button-row .btn{min-width:0;padding:5px 3px;font-size:10px;min-height:27px}
.tm-application-preview-card{position:relative;display:grid;place-items:center;aspect-ratio:4 / 3;border-radius:12px;border:1px dashed var(--line);background:#e8f0ff;color:var(--blue);overflow:hidden;text-align:center;padding:12px;background-size:cover;background-position:center;background-repeat:no-repeat}
.tm-application-preview-card.has-image{border-style:solid;color:#fff}
.tm-applications-admin{border-top:1px solid var(--line);padding-top:18px;margin-top:16px}
.tm-applications-form{display:grid;gap:12px}
.tm-applications-all,.tm-applications-person{display:flex;align-items:center;gap:8px;cursor:pointer}
.tm-applications-recipients{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:8px;padding:10px 0}
@media(max-width:410px){.tm-applications-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}}
@media(max-width:310px){.tm-applications-grid{grid-template-columns:1fr}}

/* 0.3.34 — droits accordés par un partage interne/externe */
.tm-share-rights{display:inline-flex;align-items:center;gap:3px;flex-wrap:nowrap;vertical-align:middle;margin-inline:5px}
.tm-share-right{font:800 10px/1 ui-monospace,Consolas,monospace;display:inline-grid;place-items:center;min-width:19px;height:19px;border-radius:5px;border:1px solid currentColor}
.tm-share-right-read{color:#2377c8;background:#e4f0ff}
.tm-share-right-write{color:#187a56;background:#dff9ec}
.tm-share-right-delete{color:#b33c3c;background:#ffebeb}
:root[data-theme="dark"] .tm-share-right-read{background:#173452;color:#a3cbff}
:root[data-theme="dark"] .tm-share-right-write{background:#174836;color:#a2f2c8}
:root[data-theme="dark"] .tm-share-right-delete{background:#4d2328;color:#ffb1b1}
.fm-entry{grid-template-columns:20px 28px minmax(0,1fr) auto auto}
.fm-entry .tm-share-rights{margin-inline:0}
@media(max-width:600px){.fm-entry{grid-template-columns:19px 25px minmax(0,1fr) auto auto}.fm-entry .tm-share-right{min-width:16px;height:17px;font-size:9px}}

/* 0.3.36 : source locale / réseaux déjà montés, avec deux panneaux existants */
.network-manager-controls{display:grid;gap:11px;margin:13px 0 15px;padding:13px;border:1px solid var(--line);border-radius:12px;background:var(--surface-soft)}
.network-manager-controls.hidden{display:none}
.network-manager-intro{display:flex;gap:9px 16px;align-items:baseline;flex-wrap:wrap}
.network-manager-intro span{font-size:11px;color:var(--muted)}
.network-manager-sources{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.network-source{display:flex;align-items:center;flex-wrap:wrap;gap:8px;min-width:0}
.network-source label{width:100%;font-size:11px;font-weight:700}
.network-source select{flex:1;min-width:135px;max-width:100%;border:1px solid var(--line);border-radius:8px;background:var(--surface);color:var(--ink);padding:9px}
.network-manager-manual{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.network-manager-manual label{font-size:11px;font-weight:700;flex-basis:100%}
.network-manager-manual input{flex:1;min-width:140px;border:1px solid var(--line);border-radius:8px;background:var(--surface);color:var(--ink);padding:9px}
@media(max-width:760px){.network-manager-sources{grid-template-columns:1fr}.network-source{align-items:stretch}.network-source .btn{min-height:40px}}

/* 0.3.37 - configuration réseau séparée, explorateur unique */
.tm-network-config-view{max-width:1150px;margin:18px auto}
.tm-network-shortcut-form{display:grid;grid-template-columns:1fr 1.5fr auto;align-items:end;gap:12px;margin:15px 0}
.tm-network-shortcut-form .field{min-width:0}
.tm-network-shortcut-list{display:grid;gap:8px;margin:12px 0}
.tm-network-shortcut-row{display:flex;align-items:center;gap:12px;justify-content:space-between;background:var(--surface-soft);border:1px solid var(--line);border-radius:10px;padding:11px 14px}
.tm-network-shortcut-info{display:grid;gap:3px;min-width:0;flex:1}
.tm-network-shortcut-info small{color:var(--muted);overflow-wrap:anywhere}
.tm-network-online{color:#187a56;font-weight:700;font-size:11px}
.tm-network-offline{color:#b33c3c;font-weight:700;font-size:11px}
.fm-network-picker{display:flex;align-items:center;gap:10px;padding:10px 2px;border-top:1px solid var(--line);margin-top:10px;flex-wrap:wrap}
.fm-network-picker.hidden{display:none}
.fm-network-picker label{font-weight:700;font-size:12px}
.fm-network-picker select{min-width:220px;max-width:100%;border:1px solid var(--line);border-radius:8px;background:var(--surface);color:var(--ink);padding:9px}
@media(max-width:800px){.tm-network-shortcut-form{grid-template-columns:1fr}.fm-network-picker{align-items:stretch;flex-direction:column}.fm-network-picker select{width:100%}}

/* 0.3.38 — local folder picker for Network Manager */
.tm-network-path-picker{display:flex;align-items:stretch;gap:8px;min-width:0}
.tm-network-path-picker input{flex:1;min-width:0}
.tm-network-path-picker .btn{white-space:nowrap}
@media(max-width:650px){.tm-network-path-picker{flex-direction:column}.tm-network-path-picker .btn{width:100%}}

/* 0.3.39 – formulaire de montage aligné et droits utilisateurs */
.tm-network-shortcut-form{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.5fr);gap:12px;align-items:start}
.tm-network-shortcut-form>.field{display:flex;flex-direction:column;align-items:stretch;min-width:0}
.tm-network-shortcut-form>.field>label{min-height:22px;display:block;margin:0 0 5px}
.tm-network-shortcut-form>.field input{min-height:39px}
.tm-network-shortcut-form>.tm-network-access-field{grid-column:1/-1}
.tm-network-shortcut-form>button[type=submit]{grid-column:1/-1;justify-self:start}
.tm-network-users{display:flex;flex-wrap:wrap;gap:10px;padding:8px 0}
.tm-network-user,.tm-network-rights label{display:inline-flex;align-items:center;gap:5px;font-size:12px;cursor:pointer}
.tm-network-rights{display:flex;flex-wrap:wrap;gap:18px;margin-top:9px}
.tm-network-access-dialog{border:1px solid var(--line);border-radius:12px;background:var(--surface);color:var(--ink);padding:20px;min-width:min(90vw,540px)}
.tm-network-access-dialog::backdrop{background:rgba(0,0,0,.5)}
@media(max-width:650px){.tm-network-shortcut-form{grid-template-columns:1fr}.tm-network-shortcut-form .tm-network-access-field{grid-column:auto}}

/* 0.3.42 — barre d’options fichiers compacte, actions secondaires repliables */
#filemanager-view .fm-toolbar-panel{padding:10px 13px;margin-bottom:10px}
#filemanager-view .fm-toolbar-panel .panel-heading{margin-bottom:7px;align-items:center}
#filemanager-view .fm-toolbar-panel .panel-heading h2{font-size:15px;margin:0}
#filemanager-view .fm-toolbar-panel .step-number{font-size:9px;padding:3px 7px}
#filemanager-view .fm-toolbar{display:flex;align-items:center;gap:5px;flex-wrap:wrap}
#filemanager-view .fm-toolbar>.btn{min-height:30px;padding:5px 9px;font-size:11px;white-space:nowrap}
#filemanager-view .fm-more-actions{position:relative;min-width:0}
#filemanager-view .fm-more-actions>summary{display:inline-flex;align-items:center;gap:7px;min-height:30px;padding:5px 9px;border:1px solid var(--line);border-radius:7px;background:var(--surface-soft);color:var(--ink);font-size:11px;font-weight:700;cursor:pointer;list-style:none;user-select:none;box-sizing:border-box}
#filemanager-view .fm-more-actions>summary::-webkit-details-marker{display:none}
#filemanager-view .fm-more-actions[open]>summary{border-color:var(--blue)}
#filemanager-view .fm-more-actions[open]>summary span{transform:rotate(180deg)}
#filemanager-view .fm-more-actions-content{position:absolute;z-index:55;top:calc(100% + 5px);right:0;min-width:205px;width:max-content;max-width:min(94vw,320px);display:grid;grid-template-columns:1fr 1fr;gap:5px;padding:8px;border:1px solid var(--line);border-radius:9px;background:var(--surface);box-shadow:0 12px 28px rgba(0,0,0,.17)}
#filemanager-view .fm-more-actions-content .btn{min-height:32px;padding:6px;font-size:11px;white-space:normal}
#filemanager-view .fm-more-actions-content [data-fm-action="permissions"],#filemanager-view .fm-more-actions-content [data-fm-action="internal-share"]{grid-column:span 2}
#filemanager-view .fm-network-picker{padding:6px 0 0;margin-top:7px;gap:6px;border-top:1px solid var(--line);flex-direction:row;align-items:center}
#filemanager-view .fm-network-picker label{font-size:10px}
#filemanager-view .fm-network-picker select{min-width:165px;width:auto;max-width:320px;padding:5px 7px;min-height:30px;font-size:11px}
#filemanager-view .fm-network-picker .muted{font-size:10px}
#filemanager-view .fm-toolbar-status{gap:5px 12px;margin-top:7px;padding-top:6px;font-size:10px}
#filemanager-view .fm-transfer-progress{margin-top:7px;padding:8px}
@media(max-width:650px){
  #filemanager-view .fm-toolbar-panel{padding:9px}
  #filemanager-view .fm-toolbar{gap:4px}
  #filemanager-view .fm-toolbar>.btn{min-height:34px;padding:6px 8px;font-size:10px}
  #filemanager-view .fm-more-actions>summary{min-height:34px;font-size:10px}
  #filemanager-view .fm-more-actions-content{right:auto;left:0}
  #filemanager-view .fm-network-picker select{flex:1;min-width:0;width:100%;max-width:100%}
  #filemanager-view .fm-network-picker .muted{flex-basis:100%}
}

/* 0.3.45 : une ligne sur toute la largeur, débordement automatique dans « Autres ». */
#filemanager-view .fm-toolbar{display:flex;flex-wrap:nowrap;width:100%;min-width:0;align-items:center}
#filemanager-view .fm-toolbar>.btn{flex:0 0 auto}
#filemanager-view .fm-more-actions{flex:0 0 auto}
#filemanager-view .fm-more-actions-content{right:0;left:auto}
@media(max-width:650px){#filemanager-view .fm-toolbar{display:flex;flex-wrap:nowrap}#filemanager-view .fm-more-actions-content{right:0;left:auto}}

/* 0.3.47 — Restrictions de dossiers */
.fm-restrictions-section{margin-top:12px;padding-top:10px;border-top:1px solid var(--line)}
.fm-restrictions-section .fm-shares-list{max-height:260px;overflow:auto}
.fm-restrictions-section .fm-share-item{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.fm-restrictions-section .fm-share-item p{flex:1;min-width:180px;margin:0}
.fm-restrictions-section .fm-share-item strong{overflow-wrap:anywhere}

/* 0.3.48 – Recherche et Favoris */
.tm-explorer-extras{max-width:1320px;margin:18px auto}
.tm-extra-sort{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin:12px 0}
.tm-extra-sort label{font-weight:600;font-size:12px}
.tm-search-form{display:flex;gap:10px;align-items:end;flex-wrap:wrap;margin:12px 0}
.tm-search-form .field{flex:1 1 220px;min-width:0}
.tm-extra-results{display:grid;gap:5px;min-height:32px;margin:10px 0 20px}
.tm-extra-result{display:grid;grid-template-columns:minmax(0,1fr) minmax(110px,1fr) auto;gap:12px;align-items:center;padding:9px 12px;border:1px solid var(--line);border-radius:8px;background:var(--surface)}
.tm-extra-result-name{border:0;background:none;color:var(--text);font:inherit;text-align:left;font-weight:600;cursor:pointer;overflow-wrap:anywhere}
.tm-extra-result-name:hover{text-decoration:underline}
.tm-extra-result small{overflow-wrap:anywhere}
.tm-extra-result-actions{display:flex;gap:5px;flex-wrap:wrap}
@media(max-width:690px){.tm-extra-result{grid-template-columns:1fr;gap:5px}.tm-extra-result-actions{justify-content:flex-start}}

/* 0.3.49 — Gestion des accès internes regroupée par destinataire */
#fm-user-access-list .tm-access-user{border:1px solid var(--line);border-radius:10px;overflow:visible;min-width:0}
#fm-user-access-list .tm-access-user-summary{padding:11px 13px;cursor:pointer;display:flex;justify-content:space-between;align-items:center;gap:8px;flex-wrap:wrap}
#fm-user-access-list .tm-access-user-summary small{color:var(--muted)}
#fm-user-access-list .tm-access-section{margin:0 10px 12px;display:grid;gap:7px;min-width:0}
#fm-user-access-list .tm-access-section h4{font-size:13px;margin:8px 0 1px}
#fm-user-access-list .tm-access-section .fm-share-item{max-width:100%;min-width:0}
#fm-user-access-list .tm-restriction-item{display:flex;align-items:center;justify-content:space-between;gap:8px;flex-wrap:wrap}
.tm-restriction-paths{max-height:130px;overflow:auto;padding:7px 10px;border:1px solid var(--line);border-radius:8px;font-size:12px;overflow-wrap:anywhere}

/* 0.3.52 : édition complète des partages internes */
.tm-share-editor{width:min(900px,calc(100vw - 24px));max-height:calc(100vh - 32px);overflow:auto}
.tm-share-editor-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px}
.tm-share-editor-field{display:grid;gap:6px;margin-bottom:10px}
.tm-share-editor-field label{font-weight:600}
.tm-share-editor .tm-internal-users{max-height:190px;overflow:auto}
@media(max-width:650px){.tm-share-editor-grid{grid-template-columns:1fr;gap:10px}}

/* SynHub 0.3.53 : visionneuse d'album avec navigation et plein écran. */
#fm-preview-modal .modal-card{max-height:96vh;display:flex;flex-direction:column}
.fm-preview-header-controls{display:flex;align-items:center;gap:9px;margin-left:auto}
.fm-preview-header-controls .icon-btn{flex-shrink:0}
.fm-preview-stage{position:relative;min-height:0;display:flex;align-items:center;justify-content:center;flex:1}
.fm-preview-stage .fm-preview-content{width:100%;min-width:0}
.fm-preview-arrow{position:absolute;top:50%;transform:translateY(-50%);z-index:2;display:grid;place-items:center;width:45px;height:65px;border:0;border-radius:10px;background:rgba(12,24,43,.64);color:#fff;font-size:45px;line-height:1;cursor:pointer;transition:background .15s}
.fm-preview-arrow:hover,.fm-preview-arrow:focus-visible{background:rgba(28,85,184,.94)}
.fm-preview-prev{left:8px}.fm-preview-next{right:8px}
#fm-preview-modal:fullscreen,#fm-preview-modal.fm-photo-fullscreen-fallback{display:flex!important;align-items:center;justify-content:center;background:#050505;padding:10px;inset:0;z-index:9999}
#fm-preview-modal.fm-photo-fullscreen-fallback{position:fixed}
#fm-preview-modal:fullscreen .modal-card,#fm-preview-modal.fm-photo-fullscreen-fallback .modal-card{width:100vw;max-width:100vw;height:100vh;max-height:100vh;padding:0;background:#050505;border:0;border-radius:0}
#fm-preview-modal:fullscreen .modal-header,#fm-preview-modal.fm-photo-fullscreen-fallback .modal-header{color:#fff;background:#111;border:0}
#fm-preview-modal:fullscreen .fm-preview-content,#fm-preview-modal.fm-photo-fullscreen-fallback .fm-preview-content{max-height:calc(100vh - 66px);overflow:hidden}
#fm-preview-modal:fullscreen .fm-preview-content img,#fm-preview-modal.fm-photo-fullscreen-fallback .fm-preview-content img{max-height:calc(100vh - 70px);max-width:100%;object-fit:contain}
@media(max-width:600px){.fm-preview-arrow{width:34px;height:50px;font-size:34px}.fm-preview-prev{left:2px}.fm-preview-next{right:2px}}

/* 0.3.54 : gestes horizontaux mobiles dans la visionneuse, scroll vertical préservé. */
#fm-preview-modal .fm-preview-content img{touch-action:pan-y;user-select:none;-webkit-user-select:none;-webkit-user-drag:none}

/* 0.3.55 — native NAS group listing and multimedia accelerator badge */
.tm-media-accelerators{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
#groups-view .user-row{display:block;margin:8px 0;padding:12px}
#groups-view details summary{cursor:pointer;font-weight:600}
#groups-view details p{padding:9px 0 0 12px;margin:0}

/* 0.3.59 : administration native */
.tm-native-allowed{display:flex;gap:14px;flex-wrap:wrap;margin:9px 0 14px}
.tm-native-allowed label{display:flex;gap:7px;align-items:center;font-size:13px}
#setup-native-subpaths,#setting-native-subpaths{width:100%;margin:6px 0 10px}
.tm-host-action{display:flex;gap:7px;align-items:center;flex-wrap:wrap;margin-top:7px}
.tm-host-action input[type=password]{min-width:140px;max-width:240px}
.tm-host-action .btn{min-height:29px}

/* 0.3.59 : assistant Linux sécurisé et délégation d'administration. */
.sf-bootstrap-box{border:1px solid var(--line);border-radius:10px;padding:10px;margin:12px 0;background:var(--surface)}
.sf-bootstrap-box summary{cursor:pointer;font-weight:700;padding:5px 0}
.sf-bootstrap-box input{width:100%;margin-bottom:9px}
.sf-admin-roles{border:1px solid var(--line);border-radius:10px;padding:12px;margin:15px 0}
.sf-admin-roles-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(170px,1fr));gap:8px;margin:12px 0}
.sf-admin-role-item{display:flex;align-items:center;gap:8px;border:1px solid var(--line);border-radius:7px;padding:8px;cursor:pointer}
.sf-admin-role-item input{width:auto}

.sf-native-create-entry{margin-top:12px;border-top:1px solid var(--line);padding-top:10px}
#setup-create-auth-method{width:100%;margin:6px 0 10px}
.sf-native-create-entry .field-grid{margin:8px 0;gap:8px}
.sf-native-create-entry .field input{width:100%}

/* 0.3.63: distinguish trusted SynHub administrators and home ACL controls. */
.sf-admin-user-row{border-color:var(--accent, #448bcb)!important;box-shadow:inset 3px 0 0 var(--accent, #448bcb)}
.sf-admin-badge{display:inline-flex;margin-left:12px;padding:4px 9px;border:1px solid currentColor;border-radius:20px;font-size:11px;white-space:normal}
.sf-home-option{display:flex;gap:8px;align-items:center;margin:10px 0;font-size:12px}
.sf-home-option input{width:auto}
#users-view .tm-access-user summary{display:flex;gap:8px;flex-wrap:wrap;align-items:center}

/* 0.3.66: permissions in the external-link dialog must not inherit full-width text inputs. */
.fm-password-card .tm-share-permission{display:flex!important;align-items:center!important;gap:12px;min-height:38px;padding:8px 0;color:var(--ink);font-size:13px;line-height:1.45;white-space:normal;opacity:1}
.fm-password-card .tm-share-permission input[type="checkbox"]{appearance:auto!important;display:inline-block!important;flex:0 0 18px!important;width:18px!important;height:18px!important;min-width:18px!important;max-width:18px!important;margin:0!important;padding:0!important;accent-color:var(--blue);opacity:1}
.fm-password-card .tm-share-permission input[type="checkbox"]:disabled{opacity:.5}

/* 0.3.67 - Samba / document picker */
.sf-document-picker-row{display:flex;flex-wrap:wrap;gap:10px;align-items:center}
.sf-document-picker-row input{min-width:240px;flex:1}
.sf-doc-picker{max-width:min(720px,95vw);width:680px;max-height:85vh;overflow:auto;border:1px solid var(--border,#657181);border-radius:12px;padding:20px;color:var(--text,#eee);background:var(--panel,#202938)}
.sf-doc-picker::backdrop{background:rgba(0,0,0,.65)}
.sf-doc-picker-items{display:flex;flex-direction:column;gap:6px;min-height:100px;max-height:50vh;overflow:auto;margin:12px 0}
.sf-doc-picker-item{display:block;width:100%;padding:9px 12px;border-radius:7px;text-align:left;background:transparent;color:inherit;border:1px solid var(--border,#657181);cursor:pointer}
.sf-doc-picker-item:hover,.sf-doc-picker-item.selected{outline:2px solid var(--accent,#7caeff)}

/* SynHub 0.3.68 : photo tools and expanded local editor */
.sf-photo-menu{grid-template-columns:repeat(3,minmax(0,1fr));margin-top:18px}
.sf-photo-tool-header{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:14px 0;border-bottom:1px solid var(--line);margin-bottom:16px}
.sf-photo-tool-header h3{margin:0}
.sf-photo-pane.hidden,.sf-photo-menu.hidden{display:none!important}
.sf-editor-toolbar{flex-wrap:wrap;margin:14px 0}
.sf-editor-preview{display:grid;place-items:center;max-height:65vh;min-height:180px;overflow:auto;background:repeating-conic-gradient(#ddd 0% 25%,#f7f7f7 0% 50%) 50% / 24px 24px;border:1px solid var(--line);border-radius:8px;padding:12px;margin:18px 0}
.sf-editor-preview canvas{max-width:100%;max-height:58vh;object-fit:contain}
#sf-photo-editor-pane h4{margin:22px 0 6px}
#sf-photo-editor-pane input[type=range]{width:100%}
#sf-photo-editor-pane input[type=color]{width:100%;height:42px}
@media(max-width:700px){.sf-photo-menu{grid-template-columns:1fr}.sf-photo-tool-header{flex-direction:column;align-items:flex-start}}

/* 0.3.70: compact editor, photo visible alongside settings */
#sf-photo-editor-pane .sf-editor-workspace{display:grid;grid-template-columns:minmax(275px,315px) minmax(0,1fr);gap:14px;align-items:start;margin:12px 0}
#sf-photo-editor-pane .sf-editor-controls{max-height:72vh;overflow-y:auto;padding:10px;border:1px solid var(--line);border-radius:10px;scrollbar-width:thin}
#sf-photo-editor-pane .sf-editor-controls .field-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px;margin:6px 0}
#sf-photo-editor-pane .sf-editor-controls .field{min-width:0;margin:0}
#sf-photo-editor-pane .sf-editor-controls label{font-size:.75rem;margin-bottom:2px;line-height:1.2}
#sf-photo-editor-pane .sf-editor-controls input,#sf-photo-editor-pane .sf-editor-controls select{min-width:0;max-width:100%;font-size:.81rem;padding:5px}
#sf-photo-editor-pane .sf-editor-controls input[type=range]{padding:0}
#sf-photo-editor-pane .sf-editor-toolbar{margin:6px 0;gap:4px}
#sf-photo-editor-pane .sf-editor-toolbar .btn{padding:4px 7px;font-size:.74rem}
#sf-photo-editor-pane .sf-editor-group{border-top:1px solid var(--line);padding:5px 0}
#sf-photo-editor-pane .sf-editor-group summary{font-size:.83rem;font-weight:650;cursor:pointer;padding:5px 2px}
#sf-photo-editor-pane .sf-editor-canvas-column{min-width:0;position:sticky;top:12px}
#sf-photo-editor-pane .sf-editor-preview{margin:0;min-height:240px;height:min(70vh,720px);max-height:none;padding:8px}
#sf-photo-editor-pane .sf-editor-preview canvas{max-height:calc(min(70vh,720px) - 20px);max-width:100%}
#sf-photo-editor-pane>.muted{margin:4px 0}
.fm-upload-queue{padding:11px 14px;margin-top:10px;border:1px solid var(--line);border-radius:10px}
.fm-upload-queue-heading,.fm-upload-item-line{display:flex;justify-content:space-between;align-items:center;gap:12px}
.fm-upload-queue-items{display:grid;gap:7px;margin-top:8px;max-height:190px;overflow:auto}
.fm-upload-item-line{font-size:.79rem}
.fm-upload-item-line span:first-child{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}
.fm-upload-item progress{display:block;width:100%;height:8px;margin-top:3px}
@media(max-width:800px){#sf-photo-editor-pane .sf-editor-workspace{grid-template-columns:1fr}#sf-photo-editor-pane .sf-editor-controls{max-height:33vh}#sf-photo-editor-pane .sf-editor-canvas-column{position:static}#sf-photo-editor-pane .sf-editor-preview{height:48vh}}

/* 0.3.72 — Panneaux plus hauts à l’écran : commandes au centre, chacun a son emplacement. */
#filemanager-view{gap:7px;max-width:1920px}
#filemanager-view .fm-dual-layout{display:grid;grid-template-columns:minmax(0,1fr) minmax(132px,156px) minmax(0,1fr);gap:9px;align-items:start}
#filemanager-view .fm-pane{padding:9px;min-width:0}
#filemanager-view .fm-pane-heading{margin-bottom:5px}
#filemanager-view .fm-pane-heading h2{font-size:13px;margin:0 0 2px}
#filemanager-view .fm-pane-actions{gap:5px;margin:5px 0}
#filemanager-view .fm-pane .fm-items{height:424px;min-height:160px;max-height:424px;resize:vertical;overflow-y:auto;overscroll-behavior:contain}
#filemanager-view .fm-pane .fm-items .fm-entry{min-height:48px;box-sizing:border-box}
#filemanager-view .fm-center-controls{padding:8px;min-width:0;margin:0;position:relative}
#filemanager-view .fm-center-toolbar{display:flex;flex-direction:column;align-items:stretch;flex-wrap:nowrap;gap:5px;min-width:0;width:100%}
#filemanager-view .fm-center-toolbar>.btn{width:100%;min-height:32px;white-space:normal;padding:5px 3px;text-align:center;font-size:11px}
#filemanager-view .fm-center-toolbar .fm-more-actions{width:100%}
#filemanager-view .fm-center-toolbar .fm-more-actions>summary{justify-content:center;width:100%;box-sizing:border-box}
#filemanager-view .fm-center-toolbar .fm-more-actions-content{right:calc(100% + 3px);left:auto;top:0;max-height:min(65vh,550px);overflow-y:auto;min-width:216px}
#filemanager-view .fm-toolbar-status{display:grid;gap:3px;padding-top:6px;margin-top:6px;font-size:10px;overflow-wrap:anywhere}
#filemanager-view .fm-upload-queue{margin-top:8px;padding:6px}
#filemanager-view .fm-upload-queue-heading,#filemanager-view .fm-upload-item-line{display:flex;flex-wrap:wrap;gap:3px;font-size:10px}
#filemanager-view .fm-upload-item-line span{min-width:0;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
#filemanager-view .fm-upload-queue-items{max-height:175px}
#filemanager-view .fm-transfer-progress{padding:5px;font-size:10px;overflow-wrap:anywhere}
#filemanager-view .fm-transfer-heading,#filemanager-view .fm-transfer-details{display:grid;gap:2px;overflow-wrap:anywhere}
#filemanager-view .fm-pane-location{display:flex;flex-direction:column;align-items:stretch;gap:3px;margin:0 0 5px;padding:0;border:0;min-width:0}
#filemanager-view .fm-pane-location label{font-size:10px}
#filemanager-view .fm-pane-location select{min-width:0;width:100%;max-width:none;min-height:30px;font-size:11px;overflow:hidden;text-overflow:ellipsis}
#sf-photo-editor-pane .sf-edit-sources{display:flex;gap:6px;flex-wrap:wrap;margin:5px 0}
#sf-photo-editor-pane .sf-edit-sources .btn{flex:1 1 125px;white-space:normal;line-height:1.2}
#sf-photo-editor-pane #sf-edit-source-location{font-size:11px;line-height:1.3;margin:4px 0 8px}
@media(max-width:1050px) and (min-width:701px){
  #filemanager-view .fm-dual-layout{grid-template-columns:minmax(0,1fr) 118px minmax(0,1fr);gap:5px}
  #filemanager-view .fm-pane{padding:6px}
  #filemanager-view .fm-center-controls{padding:5px}
  #filemanager-view .fm-pane-actions{flex-wrap:wrap}
}
@media(max-width:700px){
  #filemanager-view .fm-dual-layout{display:flex;flex-direction:column;gap:7px}
  #filemanager-view .fm-pane{width:100%;box-sizing:border-box;padding:7px}
  #filemanager-view .fm-center-controls{width:100%;box-sizing:border-box;padding:6px;position:static}
  #filemanager-view .fm-center-toolbar{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:5px}
  #filemanager-view .fm-center-toolbar>.btn{min-height:40px;white-space:normal;font-size:10px}
  #filemanager-view .fm-center-toolbar .fm-more-actions{width:100%}
  #filemanager-view .fm-center-toolbar .fm-more-actions>summary{min-height:40px}
  #filemanager-view .fm-center-toolbar .fm-more-actions-content{top:calc(100% + 4px);left:auto;right:0;max-width:min(94vw,320px)}
  #filemanager-view .fm-toolbar-status{display:flex;flex-wrap:wrap;gap:4px 12px}
  #filemanager-view .fm-upload-queue-items{max-height:170px}
  #filemanager-view .fm-pane .fm-items{height:424px;max-height:424px}
}
@media(max-width:390px){#filemanager-view .fm-center-toolbar{grid-template-columns:repeat(3,minmax(0,1fr))}}
/* 0.3.72 — the image browser must leave its confirmation visible on phones.
   The list, not the footer, scrolls when many files are present. */
@media(max-width:740px){
  #browser-modal .browser-card{height:calc(100dvh - 16px);max-height:calc(100dvh - 16px);min-height:0;overflow:hidden;display:flex;flex-direction:column}
  #browser-modal .modal-header,#browser-modal .browser-location,#browser-modal .modal-footer{flex-shrink:0}
  #browser-modal .browser-items{height:0;min-height:0;flex:1 1 0;overflow:auto;max-height:none}
  #browser-modal .browser-footer-actions{gap:6px;grid-template-columns:repeat(2,minmax(0,1fr))}
  #browser-modal #browser-confirm{grid-column:1/-1}
}
@media(max-width:740px){
  /* Zoom de l'interface peut aller de 50 % à 200 %. Neutraliser son facteur
     pour que le sélecteur modal demeure entièrement dans le viewport mobile. */
  #browser-modal{zoom:var(--sf-picker-counterzoom,1)}
}
/* Cached pane status remains accessible to screen readers, never visible above the list. */
#filemanager-view .sr-only{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}
@media(max-width:700px){
  /* Compact two-line controls: leave more of the explorer visible on phones. */
  #filemanager-view .fm-pane-actions{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:5px;align-items:center;padding:4px 0}
  #filemanager-view .fm-pane-actions .fm-select-all{grid-column:1;grid-row:1;min-height:32px;width:auto}
  #filemanager-view .fm-pane-actions [data-fm-upload]{grid-column:2;grid-row:1;padding:7px;font-size:10px;max-width:150px;white-space:normal}
  #filemanager-view .fm-pane-actions .fm-sort-label{grid-column:1;grid-row:2;font-size:11px}
  #filemanager-view .fm-pane-actions .fm-sort-select{grid-column:2;grid-row:2;width:min(180px,48vw);min-width:0;max-width:100%;min-height:33px;font-size:11px}
}

/* 0.3.74: flexible action density while reserving the transfer area. */
#filemanager-view .fm-toolbar-status{display:none!important}
#filemanager-view .fm-dual-layout{grid-template-columns:minmax(0,1fr) clamp(145px,15vw,250px) minmax(0,1fr)}
#filemanager-view .fm-center-toolbar{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:4px;align-content:start}
#filemanager-view .fm-center-toolbar>.btn{width:100%;min-width:0;min-height:32px;font-size:10px;padding:4px 2px;overflow-wrap:anywhere}
#filemanager-view .fm-center-toolbar .fm-more-actions{width:100%;grid-column:1/-1}
#filemanager-view .fm-center-toolbar .fm-more-actions-content{right:calc(100% + 3px);left:auto;top:0}
#filemanager-view .fm-upload-item-line{align-items:flex-start}
#filemanager-view .fm-upload-item-line span:last-child{flex:0 0 auto;font-size:10px;white-space:normal;text-align:right}
.sf-audio-details{display:flex;align-items:center;justify-content:center;gap:15px;margin:8px auto;padding:12px;max-width:650px;border:1px solid var(--line);border-radius:10px}
.sf-audio-cover{width:120px;height:120px;object-fit:contain;flex-shrink:0;border-radius:7px}
.sf-audio-cover[hidden]{display:none}
.sf-audio-tags{min-width:0;overflow-wrap:anywhere;line-height:1.7}
@media(max-width:1050px){#filemanager-view .fm-dual-layout{grid-template-columns:minmax(0,1fr) 150px minmax(0,1fr)}#filemanager-view .fm-center-toolbar{grid-template-columns:1fr}}
@media(max-width:700px){#filemanager-view .fm-dual-layout{display:flex;flex-direction:column}#filemanager-view .fm-center-toolbar{grid-template-columns:repeat(3,minmax(0,1fr))}#filemanager-view .fm-center-toolbar .fm-more-actions{grid-column:auto}#filemanager-view .fm-center-toolbar .fm-more-actions-content{top:calc(100% + 4px);right:0;left:auto}}
@media(max-width:390px){#filemanager-view .fm-center-toolbar{grid-template-columns:repeat(2,minmax(0,1fr))}.sf-audio-details{flex-direction:column}}

/* 0.3.75: reserve space for future audio tools, one medium card */
.sf-audio-tool-grid {display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,290px));justify-content:start;gap:12px}
@media(max-width:540px){.sf-audio-tool-grid{grid-template-columns:minmax(0,1fr)}}

/* 0.3.76 - trois zones adaptatives, une seule colonne d'actions même en FHD. */
#filemanager-view .fm-dual-layout{display:grid;grid-template-columns:minmax(0,1fr) clamp(112px,12vw,172px) minmax(0,1fr);gap:clamp(5px,.8vw,12px);align-items:start;width:100%;min-width:0}
#filemanager-view .fm-pane{min-width:0;width:100%;overflow:hidden}
#filemanager-view .fm-center-controls{min-width:0;padding:clamp(5px,.7vw,10px);width:100%;overflow:visible}
#filemanager-view .fm-center-toolbar{display:flex!important;flex-direction:column!important;flex-wrap:nowrap!important;align-items:stretch;gap:5px;min-width:0}
#filemanager-view .fm-center-toolbar>.btn{width:100%;min-width:0;font-size:clamp(9px,.8vw,11px);line-height:1.2;white-space:normal;overflow-wrap:anywhere;min-height:32px}
#filemanager-view .fm-center-toolbar .fm-more-actions{width:100%;min-width:0}
#filemanager-view .fm-center-toolbar .fm-more-actions>summary{width:100%;justify-content:center;white-space:normal}
#filemanager-view .fm-upload-queue,#filemanager-view .fm-transfer-progress{min-width:0;overflow-wrap:anywhere}
@media(max-width:850px) and (min-width:701px){#filemanager-view .fm-dual-layout{grid-template-columns:minmax(0,1fr) 112px minmax(0,1fr)}}
@media(max-width:700px){#filemanager-view .fm-dual-layout{display:flex;flex-direction:column}#filemanager-view .fm-center-controls{width:100%}#filemanager-view .fm-center-toolbar{display:flex!important;flex-direction:column!important;align-items:stretch}#filemanager-view .fm-center-toolbar>.btn{min-height:32px;font-size:11px}#filemanager-view .fm-more-actions-content{top:calc(100% + 4px)!important;right:0!important;left:auto!important}}

/* 0.3.79 — GPU inventory and codec-by-codec FFmpeg validation */
.sf-gpu-inventory{display:grid;gap:8px;min-width:0;overflow-wrap:anywhere;font-size:11px}
.sf-gpu-device,.sf-gpu-method{border:1px solid var(--line);border-radius:9px;padding:10px;display:grid;gap:5px}
.sf-gpu-device strong,.sf-gpu-method strong{font-size:11px}
.sf-gpu-device small,.sf-gpu-method small{font-size:10px;color:var(--muted);line-height:1.5}
.sf-gpu-method>span{display:flex;gap:6px;flex-wrap:wrap}
.sf-gpu-codec{font-size:10px;border-radius:6px;padding:4px 7px;background:#f2f3f6}
.sf-gpu-codec.ready{background:#e5f6eb;color:#137b4e}
.sf-gpu-codec.not-ready{background:#f5eded;color:#9b5c65}

/* 0.3.80: viewport-based explorer. Scroll inside file panes, not the browser page. */
@media (min-width:701px){
  body:has(#filemanager-view:not(.hidden)) .main-content{height:calc(100dvh * var(--sf-picker-counterzoom,1));min-height:0;overflow:hidden;display:flex;flex-direction:column;padding-top:clamp(8px,1.3vh,18px);padding-bottom:8px}
  body:has(#filemanager-view:not(.hidden)) .topbar{flex:0 0 auto;margin-bottom:clamp(7px,1vh,15px)}
  #filemanager-view:not(.hidden){display:flex;flex-direction:column;flex:1 1 0;min-height:0;overflow:hidden}
  #filemanager-view .fm-dual-layout{flex:1 1 0;min-height:0;align-items:stretch}
  #filemanager-view .fm-pane{display:flex;flex-direction:column;min-height:0;max-height:100%;overflow:hidden}
  #filemanager-view .fm-pane .fm-items{flex:1 1 0;height:auto!important;max-height:none!important;min-height:100px;resize:none;overflow:auto}
  #filemanager-view .fm-center-controls{max-height:100%;display:flex;flex-direction:column;min-height:0}
  #filemanager-view .fm-center-toolbar{flex:0 1 auto;min-height:0;overflow:hidden}
  #filemanager-view #fm-upload-queue,#filemanager-view #fm-transfer-progress{flex:0 0 auto}
  #filemanager-view .fm-help,#filemanager-view .tool-attribution{display:none}
}
.sf-audio-player-controls{display:flex;gap:6px;align-items:center;flex-wrap:wrap;margin-top:6px}
.sf-audio-player-controls .btn{min-height:31px;font-size:11px}
.sf-audio-player-controls [aria-pressed="true"]{outline:2px solid var(--blue);outline-offset:0}
#fm-preview-content:has(.sf-audio-details){display:flex;flex-direction:column;align-items:stretch;gap:8px}
#fm-preview-content .sf-audio-details{order:0}
#fm-preview-content audio{width:100%;order:1}
#fm-preview-content .sf-audio-player-controls{order:2}

.sf-video-audio-help{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin:6px 0;font-size:11px}
@media(min-width:701px){
 body:has(#filemanager-view:not(.hidden)) .app-shell{height:calc(100dvh * var(--sf-picker-counterzoom,1));min-height:0;overflow:hidden}
 body:has(#filemanager-view:not(.hidden)) .sidebar{height:100%;min-height:0}
}

/* 0.3.81 — direct encoder control, status remains readable on small screens */
.sf-encoder-selectors{display:flex;gap:9px;align-items:stretch;flex-wrap:wrap}
.sf-encoder-selectors>.hardware-option{display:grid;place-items:center;min-width:145px;min-height:43px;padding:10px 15px;color:var(--ink);font:inherit}
.sf-encoder-open.sf-selected{border-color:#5a94e3;background:#ebf3ff}
.sf-encoder-menu{margin-top:9px;border:1px solid var(--line);border-radius:9px;padding:10px;background:var(--surface)}
.sf-encoder-menu .hardware-options{grid-template-columns:repeat(auto-fit,minmax(105px,1fr))}
.sf-encoder-gpu-status{margin:5px 0 0;font-size:11px;line-height:1.5}
.sf-gpu-available{color:#16865a;font-weight:750}
@media(max-width:600px){.sf-encoder-selectors>.hardware-option{flex:1;min-width:120px}}

/* 0.3.82 — dynamic viewport layout: single screen and controlled page navigation. */
:root{--sf-sidebar-density:1;--sf-top-height:0px;--sf-navigation-height:36px}
html.sf-viewport-layout,html.sf-viewport-layout body{height:calc(100dvh * var(--sf-picker-counterzoom,1));max-height:calc(100dvh * var(--sf-picker-counterzoom,1));overflow:hidden!important}
html.sf-viewport-layout .app-shell:not(.hidden){height:calc(100dvh * var(--sf-picker-counterzoom,1));min-height:0!important;overflow:hidden;display:grid;grid-template-columns:var(--sf-sidebar-width,224px) minmax(0,1fr)}
html.sf-viewport-layout .sidebar{height:100%;min-height:0;padding:clamp(6px,1.5vh,19px) 10px;position:relative;overflow:hidden}
html.sf-viewport-layout .brand-row{padding:0 5px clamp(6px,1.8vh,19px)}
html.sf-viewport-layout .sidebar-label{padding-bottom:clamp(3px,.7vh,9px)}
html.sf-viewport-layout .nav-actions{min-height:0;display:flex;flex-direction:column;gap:clamp(1px,.5vh,5px);overflow:hidden}
html.sf-viewport-layout .nav-item{font-size:clamp(10px,1.3vh,13px);padding:clamp(4px,calc(8px * var(--sf-sidebar-density)),11px) 9px;gap:9px;line-height:1.18;min-height:0}
html.sf-viewport-layout .nav-icon{font-size:clamp(14px,2vh,18px)}
html.sf-viewport-layout .sidebar-bottom{gap:clamp(3px,1vh,10px)}
html.sf-viewport-layout .system-mini{padding:clamp(5px,1vh,10px)}
html.sf-viewport-layout .main-content{height:100%!important;max-height:100%;min-height:0;min-width:0;overflow:hidden!important;display:flex;flex-direction:column;gap:0;padding:clamp(6px,1.2vh,14px) clamp(9px,2vw,26px) clamp(5px,1vh,10px);margin:0;max-width:none}
html.sf-viewport-layout .topbar{flex:0 0 auto;margin-bottom:clamp(4px,.8vh,10px);gap:8px;min-height:0}
html.sf-viewport-layout .topbar h1{font-size:clamp(16px,2.7vh,24px);line-height:1.1}
html.sf-viewport-layout .topbar .eyebrow{font-size:9px;margin:0}
html.sf-viewport-layout .sf-screen-navigation{flex:0 0 auto;display:flex;align-items:center;gap:8px;min-height:30px;max-height:38px;margin-bottom:clamp(3px,.7vh,8px);min-width:0}
.sf-screen-trail{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:11px;color:var(--muted)}
.sf-screen-pages{display:flex;align-items:center;gap:6px;white-space:nowrap}
.sf-screen-pages .btn,.sf-screen-navigation>.btn{min-height:27px;min-width:31px;padding:4px 9px}
.sf-screen-pages.sf-single-page{visibility:hidden}
html.sf-viewport-layout .main-content>section:not(.hidden),html.sf-viewport-layout .main-content>#workspace-grid:not(.hidden){flex:1 1 0;min-height:0;max-height:100%;overflow-y:auto;overflow-x:hidden;overscroll-behavior:contain;scrollbar-width:none;scroll-behavior:smooth}
html.sf-viewport-layout .main-content>section:not(.hidden)::-webkit-scrollbar,html.sf-viewport-layout #workspace-grid:not(.hidden)::-webkit-scrollbar{display:none}
html.sf-viewport-layout .main-content>section:not(.hidden):not(#filemanager-view){padding-bottom:5px}
html.sf-viewport-layout #filemanager-view:not(.hidden){overflow:hidden!important}
html.sf-viewport-layout .tool-attribution{margin-bottom:0}
@media(max-height:650px) and (min-width:741px){html.sf-viewport-layout .brand-row{padding-bottom:6px}html.sf-viewport-layout .sidebar-label{display:none}html.sf-viewport-layout .nav-item{padding:4px 8px}html.sf-viewport-layout .system-mini{display:none}}
@media(max-width:740px){
 html.sf-viewport-layout .app-shell:not(.hidden){display:flex;flex-direction:column}
 html.sf-viewport-layout .sidebar{position:relative;inset:auto;height:auto;flex:0 0 auto;padding:0 8px;background:transparent;border:0;box-shadow:none;z-index:31}
 html.sf-viewport-layout .brand-row,html.sf-viewport-layout .sidebar-label,html.sf-viewport-layout .sidebar-bottom{display:none}
 html.sf-viewport-layout .nav-actions{display:none;position:fixed;z-index:40;top:calc(47px * var(--sf-picker-counterzoom,1));left:8px;right:8px;background:#131d30;padding:12px;border-radius:12px;box-shadow:0 8px 45px #0006;max-height:calc(100dvh * .72);overflow:auto;grid-template-columns:repeat(2,minmax(0,1fr));gap:4px}
 html.sf-viewport-layout .sidebar.sf-menu-open .nav-actions{display:grid}
 html.sf-viewport-layout .nav-item{min-height:38px;flex-direction:row;justify-content:flex-start;text-align:left;white-space:normal;gap:6px;padding:7px}
 html.sf-viewport-layout .nav-item span:last-child{font-size:11px;overflow-wrap:anywhere}
 html.sf-viewport-layout .main-content{width:100%;padding:7px 9px max(7px,env(safe-area-inset-bottom,0px));flex:1 1 0;min-height:0}
 html.sf-viewport-layout .topbar{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin-bottom:4px}
 html.sf-viewport-layout .topbar h1{font-size:17px}
 html.sf-viewport-layout .topbar-right{gap:3px;flex-wrap:wrap}
 html.sf-viewport-layout .topbar-right .zoom-control select{min-width:65px;font-size:10px}
 html.sf-viewport-layout .sf-screen-navigation{min-height:32px}
 html.sf-viewport-layout #filemanager-view:not(.hidden){overflow-y:auto!important}
 html.sf-viewport-layout #filemanager-view .fm-dual-layout{height:auto;min-height:0}
 html.sf-viewport-layout #filemanager-view .fm-pane .fm-items{max-height:30dvh!important;overflow:auto}
}
#sf-mobile-menu{display:none}
@media(max-width:740px){html.sf-viewport-layout #sf-mobile-menu{display:block;flex:0 0 auto}html.sf-viewport-layout .topbar{flex:0 0 auto}}

/* 0.3.83: playable external playlists and synchronized AAC fallback */
.sf-video-external-options{width:100%;margin:8px 0;padding:10px;border:1px solid var(--border,#64748b);border-radius:10px}.sf-video-external-options[hidden]{display:none!important}.sf-video-external-row{display:flex;gap:7px;align-items:center;flex-wrap:wrap;margin:7px 0}.sf-video-external-row span{flex:1;min-width:150px}.sf-video-external-row input{width:100%;min-width:0}.sf-video-audio-help .btn{white-space:normal}
.sf-video-audio-help button[hidden]{display:none!important}

/* 0.3.84 — consistent, viewport-bound screens across all SynHub menus. */
html.sf-viewport-layout .main-content>section:not(.hidden):not(#filemanager-view),
html.sf-viewport-layout .main-content>#workspace-grid:not(.hidden){
 overflow-y:auto;scrollbar-width:none;overscroll-behavior:contain;scroll-snap-type:none;
 max-width:100%!important;margin:0!important;padding-inline:clamp(2px,0.5vw,8px)!important;
}
html.sf-viewport-layout .main-content>section:not(.hidden)>*,
html.sf-viewport-layout #workspace-grid:not(.hidden)>.left-column,
html.sf-viewport-layout #workspace-grid:not(.hidden)>.right-column{scroll-margin-top:4px}
html.sf-viewport-layout .main-content .panel{padding:clamp(9px,1.2vw,20px)}
html.sf-viewport-layout .main-content .panel-heading{margin-bottom:clamp(6px,1vh,17px)}
html.sf-viewport-layout .main-content .field{margin-bottom:clamp(5px,.7vh,13px)}
html.sf-viewport-layout .main-content .field-grid{gap:clamp(6px,1vw,13px)}
html.sf-viewport-layout .main-content textarea{max-height:min(24dvh,240px)}
html.sf-viewport-layout .main-content .panel,html.sf-viewport-layout .main-content .field-grid,
html.sf-viewport-layout .main-content .button-row{min-width:0}
html.sf-viewport-layout .sidebar.sf-sidebar-compact .system-mini{display:none}
html.sf-viewport-layout .sidebar.sf-sidebar-compact .brand-row{padding-bottom:5px}
html.sf-viewport-layout .sidebar.sf-sidebar-compact .nav-actions{gap:0}
html.sf-viewport-layout .sidebar.sf-sidebar-micro .sidebar-label{display:none}
html.sf-viewport-layout .sidebar.sf-sidebar-micro .nav-item{font-size:10px;padding:3px 7px}
html.sf-viewport-layout .sidebar.sf-sidebar-micro .nav-icon{font-size:13px}
html.sf-viewport-layout .sf-screen-navigation{position:relative;z-index:1}
html.sf-viewport-layout .sf-screen-pages:not(.sf-single-page) .btn{border:1px solid var(--line)}
@media(max-width:1000px){html.sf-viewport-layout #workspace-grid:not(.hidden){grid-template-columns:minmax(0,1fr)}
 html.sf-viewport-layout .main-content .field-grid{grid-template-columns:repeat(auto-fit,minmax(min(220px,100%),1fr))}}
@media(max-width:740px){html.sf-viewport-layout .main-content .panel{padding:10px}
 html.sf-viewport-layout .main-content>section:not(.hidden):not(#filemanager-view){overflow-y:auto}
 html.sf-viewport-layout .sf-screen-navigation{gap:4px}
 html.sf-viewport-layout .sf-screen-pages{gap:3px}}


/* 0.3.86 — compact subpages and accessible emergency scroll on five menus. */
html.sf-viewport-layout #home-view:not(.hidden),
html.sf-viewport-layout #applications-view:not(.hidden),
html.sf-viewport-layout #multimedia-view:not(.hidden),
html.sf-viewport-layout #shares-view:not(.hidden),
html.sf-viewport-layout #settings-view:not(.hidden){
  scrollbar-width:thin!important;scrollbar-color:var(--muted) transparent;
  overflow-y:auto!important;overflow-x:hidden!important;
  scroll-behavior:auto;overscroll-behavior-y:contain;
  display:block!important;max-width:100%!important;padding-bottom:18px!important;
}
html.sf-viewport-layout #home-view::-webkit-scrollbar,
html.sf-viewport-layout #applications-view::-webkit-scrollbar,
html.sf-viewport-layout #multimedia-view::-webkit-scrollbar,
html.sf-viewport-layout #shares-view::-webkit-scrollbar,
html.sf-viewport-layout #settings-view::-webkit-scrollbar{display:block!important;width:8px}
.sf-compact-tabs{position:sticky;top:0;z-index:5;display:flex;gap:5px;align-items:center;
  overflow-x:auto;overflow-y:hidden;scrollbar-width:thin;background:var(--bg);
  padding:3px 1px 8px;margin:0 0 8px;max-width:100%;min-width:0}
.sf-compact-tab{flex:0 0 auto;white-space:nowrap;color:var(--ink);font:inherit;font-size:11px;font-weight:650;
  padding:7px 12px;border:1px solid var(--line);border-radius:8px;background:var(--surface);min-height:31px}
.sf-compact-tab[aria-selected="true"]{color:var(--blue);border-color:var(--blue);background:var(--surface-soft);box-shadow:inset 0 -2px var(--blue)}
.sf-compact-tab:focus-visible{outline:2px solid var(--blue);outline-offset:2px}
.sf-compact-tab:disabled{display:none!important}
.sf-tabs-enabled [data-sf-pane]:not(.sf-pane-active){display:none!important}
.sf-tabs-enabled#settings-view > section.panel:not(.sf-pane-active){display:none!important}
#settings-view.sf-tabs-enabled #admin-settings-section:not(.sf-pane-active){display:none!important}
#settings-view.sf-tabs-enabled #admin-settings-section [data-sf-settings-group]:not(.sf-subpane-active){display:none!important}
#settings-view.sf-tabs-enabled #admin-settings-section [data-sf-settings-group].sf-subpane-active{max-width:100%}
#settings-view .sf-compact-heading{margin:2px 0 14px;font-size:15px}
#settings-view .sf-settings-shortcut{margin-top:10px}
html.sf-viewport-layout #settings-view .panel,html.sf-viewport-layout #applications-view .panel,
html.sf-viewport-layout #shares-view .panel,html.sf-viewport-layout #multimedia-view .panel{padding:clamp(10px,1vw,16px)}
html.sf-viewport-layout #settings-view .field-grid{grid-template-columns:repeat(auto-fit,minmax(min(190px,100%),1fr));gap:8px 11px}
html.sf-viewport-layout #settings-view .field{margin-bottom:4px;gap:4px}
html.sf-viewport-layout #settings-view .field input,html.sf-viewport-layout #settings-view .field select{min-height:32px;padding:6px 9px}
html.sf-viewport-layout #settings-view .panel-heading,html.sf-viewport-layout #applications-view .panel-heading,
html.sf-viewport-layout #shares-view .panel-heading{margin-bottom:8px}
html.sf-viewport-layout #applications-view .tm-applications-grid{grid-template-columns:repeat(auto-fill,minmax(118px,145px));gap:8px;margin:7px 0}
html.sf-viewport-layout #applications-view .tm-applications-admin{border-top:0;padding-top:0;margin-top:0}
html.sf-viewport-layout #applications-view .tm-applications-form{gap:7px}
html.sf-viewport-layout #applications-view .tm-application-preview-card{max-height:155px;aspect-ratio:2/1}
html.sf-viewport-layout #applications-view textarea{max-height:80px;resize:vertical}
html.sf-viewport-layout #multimedia-view .panel> .panel-heading{margin-bottom:7px}
html.sf-viewport-layout #multimedia-view .sf-multimedia-group>h3{margin:5px 0 9px;font-size:15px}
html.sf-viewport-layout #multimedia-view .multimedia-tools{margin-top:0;grid-template-columns:repeat(auto-fit,minmax(min(195px,100%),1fr));gap:10px}
html.sf-viewport-layout #multimedia-view .multimedia-tool{min-height:105px;padding:12px;gap:6px}
html.sf-viewport-layout #multimedia-view .multimedia-tool>span{font-size:19px}
html.sf-viewport-layout #multimedia-view .multimedia-tool strong{font-size:13px}
html.sf-viewport-layout #multimedia-view .multimedia-tool small{font-size:10px;line-height:1.35}
html.sf-viewport-layout #shares-view .shares-columns{display:block;margin-top:6px}
html.sf-viewport-layout #shares-view .shares-column{padding:9px;gap:7px;min-width:0}
html.sf-viewport-layout #shares-view .fm-shares-list.shares-scroll{height:clamp(170px,55dvh,650px);min-height:130px;
  max-height:calc(100dvh - 205px);overflow-y:auto!important;overflow-x:hidden!important;resize:none;scrollbar-width:thin}
html.sf-viewport-layout #shares-view .shares-column-header p{font-size:10px}
html.sf-viewport-layout #home-view .home-intro{margin-bottom:7px}
html.sf-viewport-layout #home-view .time-panel{margin-bottom:7px;padding:9px 12px}
html.sf-viewport-layout #home-view .home-charts{gap:8px;margin-bottom:6px}
html.sf-viewport-layout #home-view .home-chart{padding:10px}
html.sf-viewport-layout #home-view .home-chart svg{height:clamp(70px,11dvh,120px);margin:5px 0}
html.sf-viewport-layout #home-view .home-stats{gap:8px}
html.sf-viewport-layout #home-view .home-stat{padding:12px;min-height:94px}
html.sf-viewport-layout #home-view .info-panel{margin-top:0}
@media(max-width:740px){
 .sf-compact-tab{font-size:10px;padding:6px 9px;min-height:30px}
 html.sf-viewport-layout #shares-view .fm-shares-list.shares-scroll{height:clamp(170px,48dvh,470px);max-height:calc(100dvh - 220px)}
 html.sf-viewport-layout #home-view .time-panel{grid-template-columns:minmax(0,1fr);gap:7px}
 html.sf-viewport-layout #home-view .home-charts{grid-template-columns:repeat(2,minmax(0,1fr))}
 html.sf-viewport-layout #home-view .home-chart{padding:8px}
 html.sf-viewport-layout #home-view .home-chart svg{height:64px;margin:4px 0}
 html.sf-viewport-layout #home-view .home-chart-details{gap:3px;padding:5px 0}
 html.sf-viewport-layout #home-view .home-chart-footer{font-size:9px}
 html.sf-viewport-layout #settings-view .panel{padding:10px}
}

@media(max-width:355px){html.sf-viewport-layout #home-view .home-charts{grid-template-columns:minmax(0,1fr)}}
/* Keep forms readable on very wide monitors without compromising scrolling. */
html.sf-viewport-layout #settings-view:not(.hidden){width:min(1120px,100%)!important;max-width:1120px!important;margin:0 auto!important}
html.sf-viewport-layout #applications-view:not(.hidden){width:min(1400px,100%)!important;max-width:1400px!important;margin:0 auto!important}
html.sf-viewport-layout #multimedia-view:not(.hidden){width:min(1400px,100%)!important;max-width:1400px!important;margin:0 auto!important}
html.sf-viewport-layout #home-view:not(.hidden){width:min(1500px,100%)!important;max-width:1500px!important;margin:0 auto!important}
html.sf-viewport-layout #shares-view:not(.hidden){width:min(1500px,100%)!important;max-width:1500px!important;margin:0 auto!important}


/* 0.3.87 — Comfortable baseline, scrollable Montages subpages and genuine
   viewport-fitted share lists. Works with manual and automatic zoom. */
html.sf-viewport-layout #network-config-view:not(.hidden){
  display:block!important;min-width:0;max-width:100%!important;
  overflow-y:auto!important;overflow-x:hidden!important;
  scrollbar-width:thin!important;scrollbar-color:var(--muted) transparent;
  padding-bottom:16px!important;
}
html.sf-viewport-layout #network-config-view::-webkit-scrollbar{display:block!important;width:8px}
html.sf-viewport-layout #network-config-view .panel{padding:clamp(10px,1vw,16px)}
html.sf-viewport-layout #network-config-view .panel-heading{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:9px}
html.sf-viewport-layout #network-config-view .panel-heading>div{flex:1 1 220px;min-width:0}
html.sf-viewport-layout #network-config-view .tm-network-shortcut-list{max-height:min(58dvh,620px);overflow:auto;scrollbar-width:thin}
html.sf-viewport-layout #network-config-view .tm-network-shortcut-form{gap:8px}
html.sf-viewport-layout #network-config-view .field-grid{grid-template-columns:repeat(auto-fit,minmax(min(210px,100%),1fr));gap:8px 11px}
html.sf-viewport-layout #network-config-view .field{margin-bottom:5px}
html.sf-viewport-layout #network-config-view .field input,html.sf-viewport-layout #network-config-view .field select{min-height:34px;padding:7px 9px}
html.sf-viewport-layout #network-config-view .tm-network-users{max-height:170px;overflow:auto;scrollbar-width:thin}
html.sf-viewport-layout #network-config-view:not(.hidden){width:min(1450px,100%)!important;margin:0 auto!important}
/* Shares uses nested flex sizing instead of a vh or saved pixel height.
   The entire panel + its headers/footer fit the REAL available view height.
   Larger content scrolls within the list; tiny windows keep page scrolling. */
html.sf-viewport-layout #shares-view:not(.hidden){
  display:flex!important;flex-direction:column;min-height:0;
  overflow-y:auto!important;overflow-x:hidden!important;
}
html.sf-viewport-layout #shares-view>.sf-compact-tabs{flex:0 0 auto}
html.sf-viewport-layout #shares-view>section.panel{flex:1 1 0;min-height:0;display:flex;flex-direction:column;overflow:visible}
html.sf-viewport-layout #shares-view .shares-columns{flex:1 1 0;min-height:0;display:flex;flex-direction:column;margin-top:3px}
html.sf-viewport-layout #shares-view .shares-column.sf-pane-active{flex:1 1 0;min-height:0;display:flex;flex-direction:column}
html.sf-viewport-layout #shares-view .fm-shares-list.shares-scroll{
  flex:1 1 0;height:auto!important;min-height:0!important;max-height:none!important;
  overflow-y:auto!important;overflow-x:hidden!important;scrollbar-width:thin;resize:none;
}
html.sf-viewport-layout #shares-view>.tool-attribution{flex:0 0 auto;margin-top:5px}
@media(max-height:580px){
 html.sf-viewport-layout #shares-view>section.panel{flex:0 0 auto;min-height:280px}
 html.sf-viewport-layout #shares-view .fm-shares-list.shares-scroll{min-height:110px!important}
}
/* The original two-column grid had align-items:start; overriding display alone
   left the active tab as a narrow ~300px column on Full HD. */
html.sf-viewport-layout #shares-view .shares-columns{align-items:stretch!important}
html.sf-viewport-layout #shares-view .shares-column.sf-pane-active{width:100%;max-width:100%}
@media(max-width:740px){
 html.sf-viewport-layout #shares-view>.tool-attribution{font-size:10px;padding:5px 8px;gap:3px}
 html.sf-viewport-layout #shares-view>.tool-attribution a{display:none}
 html.sf-viewport-layout #shares-view .shares-column-header p{font-size:10px}
}


/* 0.3.88 — File manager: recover spare horizontal space for BOTH browsers.
   Keep the central action bar in one column; never change the mobile stack.
   A small inset remains so focus outlines and panel borders are not clipped. */
@media (min-width:741px){
  html.sf-viewport-layout body:has(#filemanager-view:not(.hidden)) .main-content{
    padding-inline:clamp(6px,.6vw,10px);
  }
  html.sf-viewport-layout #filemanager-view:not(.hidden){
    width:100%;max-width:1920px;margin-inline:auto;
  }
  html.sf-viewport-layout #filemanager-view .fm-dual-layout{
    grid-template-columns:minmax(0,1fr) clamp(112px,10vw,148px) minmax(0,1fr);
    column-gap:clamp(4px,.38vw,7px);
  }
}

/* v0.3.89: compact video details above the windowed player, never in fullscreen. */
.sf-video-metadata{display:grid;gap:7px;width:100%;box-sizing:border-box;min-width:0;
 padding:10px 13px;margin:0 0 9px;border-radius:9px;background:#f0f5fc;border:1px solid #dae5f4;color:#33445e}
.sf-video-metadata[hidden]{display:none!important}
.sf-video-metadata-title{display:block;font-size:13px;font-weight:800;overflow-wrap:anywhere}
.sf-video-metadata-fields{display:flex;gap:5px 15px;flex-wrap:wrap;font-size:11px;line-height:1.4}
.sf-video-metadata-item{white-space:normal;overflow-wrap:anywhere}
.sf-video-metadata-item b{font-weight:750}
#fm-preview-modal:fullscreen .sf-video-metadata,
#fm-preview-modal.fm-photo-fullscreen-fallback .sf-video-metadata,
#fm-preview-modal:has(:fullscreen) .sf-video-metadata{display:none!important}
@media(max-width:740px){.sf-video-metadata{padding:8px 10px}.sf-video-metadata-fields{gap:4px 9px}}

/* v0.3.90 — Navigation par domaines repliés (un seul domaine déployé). */
html.sf-viewport-layout .sidebar{min-width:0}
html.sf-viewport-layout .nav-actions{overflow-y:auto;overflow-x:hidden;scrollbar-width:thin;scrollbar-color:#455a76 transparent;min-height:0;flex:1 1 auto}
html.sf-viewport-layout .sf-nav-group{display:flex;flex-direction:column;min-width:0;flex:0 0 auto;gap:2px}
html.sf-viewport-layout .sf-nav-submenu{display:flex;flex-direction:column;gap:2px;padding:2px 0 5px 9px;border-left:1px solid #3b5276;margin-left:18px}
html.sf-viewport-layout .sf-nav-submenu[hidden]{display:none!important}
html.sf-viewport-layout .sf-nav-group .sf-nav-child{min-width:0;width:100%;padding:7px 7px;font-size:11px;line-height:1.25;gap:7px;min-height:30px}
html.sf-viewport-layout .sf-nav-child .nav-icon{font-size:14px;flex:0 0 16px;width:16px}
html.sf-viewport-layout .sf-nav-group-trigger .sf-nav-chevron{margin-left:auto;font-size:13px;transition:transform .15s;flex:0 0 auto}
html.sf-viewport-layout .sf-nav-group.sf-nav-expanded .sf-nav-chevron{transform:rotate(180deg)}
html.sf-viewport-layout .nav-actions>.nav-item,html.sf-viewport-layout .nav-actions>.sf-nav-group>.sf-nav-group-trigger{flex:0 0 auto}
html.sf-viewport-layout .sf-nav-group-trigger{white-space:normal}
html.sf-viewport-layout .sf-nav-child.active{box-shadow:inset 2px 0 #6ea1ff;background:#243a60}
html.sf-viewport-layout #file-settings-view:not(.hidden),html.sf-viewport-layout #tv-view:not(.hidden){width:min(1120px,100%);max-width:1120px;margin:0 auto;display:block;overflow-y:auto!important;scrollbar-width:thin!important;scroll-behavior:auto!important}
html.sf-viewport-layout #file-settings-view .panel,html.sf-viewport-layout #tv-view .panel{padding:clamp(12px,1.4vw,22px)}
#sf-file-settings-controls{display:grid;gap:12px}
#sf-file-settings-controls>.field-grid{grid-template-columns:repeat(auto-fit,minmax(min(215px,100%),1fr));gap:10px 14px}
#sf-file-settings-controls .helper-banner{margin:0}
.sf-tv-preview{display:flex;min-height:220px;flex-direction:column;gap:13px;align-items:center;justify-content:center;text-align:center;padding:clamp(20px,3vw,42px);background:var(--surface-soft);border:1px dashed var(--line);border-radius:13px}
.sf-tv-preview>span{font-size:50px;color:var(--blue)}
.sf-tv-preview strong{font-size:17px}
.sf-tv-preview p{margin:0;color:var(--muted);max-width:580px;line-height:1.5}
@media(max-width:740px){
 html.sf-viewport-layout .sidebar.sf-menu-open .nav-actions{grid-template-columns:minmax(0,1fr);align-items:stretch;overflow-y:auto;max-height:74dvh}
 html.sf-viewport-layout .nav-actions>.sf-nav-group{width:100%}
 html.sf-viewport-layout .nav-actions>.nav-item,html.sf-viewport-layout .sf-nav-group-trigger{min-height:38px;flex-direction:row;justify-content:flex-start}
 html.sf-viewport-layout .nav-actions>.nav-item span:last-child,html.sf-viewport-layout .sf-nav-group-trigger span:nth-child(2){font-size:12px;line-height:1.3;text-align:left}
 html.sf-viewport-layout .sf-nav-submenu{margin-left:18px;padding-left:9px}
 html.sf-viewport-layout .sf-nav-child{display:flex;flex-direction:row;justify-content:flex-start;text-align:left;min-height:34px}
 html.sf-viewport-layout .sf-nav-group .sf-nav-child span:last-child{font-size:11px;text-align:left}
}

/* TV 0.4.1 — viewport responsive, internal scroll always available. */
html.sf-viewport-layout #tv-view{display:flex;flex-direction:column;gap:8px;max-width:none;width:100%;overflow:auto!important;scrollbar-width:thin;min-height:0}
#tv-view.hidden{display:none!important}
.sf-tv-page-heading{display:flex;justify-content:space-between;align-items:center;gap:8px;flex:0 0 auto}
.sf-tv-page-heading h2{font-size:clamp(15px,1.5vw,22px);margin:0 0 3px}
.sf-tv-page-heading p{margin:0}
.sf-tv-error{color:#db5d5d}
.sf-tv-page{flex:1 1 0;min-height:0;min-width:0;overflow:auto;scrollbar-width:thin}
.sf-tv-page.hidden{display:none!important}
.sf-tv-layout{height:100%;min-height:300px;display:grid;grid-template-columns:minmax(0,1fr) clamp(220px,23%,330px);gap:10px}
.sf-tv-main{display:flex;flex-direction:column;min-height:0;min-width:0;gap:6px}
.sf-tv-video-grid{background:#020306;aspect-ratio:16/9;width:100%;min-height:0;max-height:calc(100% - 108px);display:grid;grid-template-columns:1fr;overflow:hidden;border-radius:8px}
.sf-tv-video-grid.sf-tv-multi{grid-template-columns:repeat(2,minmax(0,1fr));grid-template-rows:repeat(2,minmax(0,1fr))}
.sf-tv-slot{min-width:0;min-height:0;position:relative;overflow:hidden;border:1px solid #253346;background:#000;cursor:pointer}
.sf-tv-slot[hidden]{display:none!important}
.sf-tv-slot.sf-tv-slot-selected{outline:2px solid #6ca0ff;outline-offset:-3px}
.sf-tv-slot>video{width:100%;height:100%;object-fit:contain;display:block;background:#000}
.sf-tv-slot-index{position:absolute;top:6px;left:8px;color:white;background:#0009;border-radius:5px;padding:2px 7px;font-weight:bold;font-size:11px;pointer-events:none}
.sf-tv-controls{display:flex;gap:4px;flex-wrap:wrap;align-content:flex-start;align-items:center;padding:5px;background:var(--surface-soft);border:1px solid var(--line);border-radius:8px;overflow:auto;max-height:110px;scrollbar-width:thin}
.sf-tv-controls .btn{min-height:26px;padding:4px 7px;font-size:11px;white-space:nowrap}
.sf-tv-controls label{display:flex;align-items:center;gap:4px;font-size:10px;margin:0;white-space:nowrap}
.sf-tv-controls select{padding:4px;font-size:11px;min-width:65px;max-width:110px}
.sf-tv-stream-info{font-size:10px;line-height:1.3;color:var(--muted);overflow:hidden;white-space:nowrap;text-overflow:ellipsis}
.sf-tv-channels{min-width:0;min-height:0;display:flex;flex-direction:column;overflow:hidden;background:var(--surface-soft);border:1px solid var(--line);border-radius:8px}
.sf-tv-channel-header{display:flex;flex:0 0 auto;gap:6px;justify-content:space-between;align-items:center;padding:8px;border-bottom:1px solid var(--line)}
.sf-tv-channel-header select{max-width:148px;font-size:11px}
.sf-tv-channel-list{flex:1 1 auto;min-height:0;overflow-y:auto;scrollbar-width:thin}
.sf-tv-channel{display:flex;align-items:center;text-align:left;gap:7px;width:100%;padding:8px 7px;border:0;border-bottom:1px solid var(--line);background:transparent;color:inherit;cursor:pointer}
.sf-tv-channel:hover,.sf-tv-channel.active{background:var(--surface-secondary, #26466d)}
.sf-tv-channel>img{width:33px;height:28px;object-fit:contain;flex:0 0 33px}
.sf-tv-channel-info{display:flex;flex-direction:column;min-width:0;gap:3px;flex:1}
.sf-tv-channel-info small{font-size:10px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.sf-tv-channel-name{font-size:12px;font-weight:650;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.sf-tv-program-progress{height:3px;display:block;border-radius:2px;background:#8a9eb644;overflow:hidden}
.sf-tv-program-progress span{height:100%;display:block;background:#649dff}
.sf-tv-guide-toolbar,.sf-tv-summary{display:flex;gap:7px;align-items:center;flex-wrap:wrap;padding:8px;border:1px solid var(--line);border-radius:8px;background:var(--surface-soft);margin-bottom:7px}
.sf-tv-guide-toolbar label{display:flex;gap:6px;align-items:center;font-size:12px}
.sf-tv-guide-toolbar input,.sf-tv-guide-toolbar select{font-size:12px;padding:5px}
.sf-tv-guide-grid{max-width:100%;height:calc(100% - 70px);min-height:170px;overflow:auto;border:1px solid var(--line);border-radius:8px;scrollbar-width:thin}
.sf-tv-guide-row{display:grid;grid-template-columns:clamp(108px,15%,180px) minmax(650px,1fr);border-bottom:1px solid var(--line);min-height:43px}
.sf-tv-guide-axis{position:sticky;top:0;background:var(--surface-soft);z-index:3}
.sf-tv-guide-row>strong{padding:9px}
.sf-tv-guide-programs{display:flex;align-items:stretch;min-width:0;width:100%}
.sf-tv-guide-axis .sf-tv-guide-programs{display:grid;grid-template-columns:repeat(4,1fr);gap:4px;text-align:center;align-items:center}
.sf-tv-guide-channel{width:100%;min-width:0;overflow:hidden;text-overflow:ellipsis;background:var(--surface-soft);color:inherit;border:0;border-right:1px solid var(--line);cursor:pointer;text-align:left;padding:6px}
.sf-tv-guide-program{min-width:0;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;font-size:11px;padding:6px;border:1px solid #52719c77;background:#3e75b822;color:white;cursor:pointer}
.sf-tv-guide-program:hover,.sf-tv-guide-program.sf-tv-scheduled{background:#5688c877}
.sf-tv-guide-empty{background:repeating-linear-gradient(135deg,transparent,transparent 7px,#8881 7px,#8881 8px);min-width:0}
.sf-tv-details{position:relative;display:flex;gap:15px;margin-top:10px;padding:12px;border:1px solid var(--line);border-radius:8px;background:var(--surface-soft);max-height:48vh;overflow:auto}
.sf-tv-details.hidden{display:none!important}
.sf-tv-details>img{max-width:125px;max-height:185px;object-fit:contain}
.sf-tv-details>div{min-width:0;flex:1}
.sf-tv-details p{white-space:pre-wrap;line-height:1.4}
.sf-tv-details-close{position:absolute;right:8px;top:8px}
.sf-tv-form-row{display:flex;flex-wrap:wrap;gap:8px;align-items:end;margin:9px 0}
.sf-tv-form-row label{display:flex;flex-direction:column;gap:4px;min-width:100px;max-width:min(100%,320px);font-size:11px}
.sf-tv-form-row input,.sf-tv-form-row select{padding:7px;min-width:0;width:100%;font-size:12px}
.sf-tv-form-row label:has(input[type=checkbox]){flex-direction:row;align-items:center}
.sf-tv-form-row input[type=checkbox]{width:auto}
.sf-tv-settings-tabs{display:flex;gap:6px;flex-wrap:wrap;align-items:center;margin-bottom:9px}
.sf-tv-settings-tabs .primary{background:#2468ba;color:white}
.sf-tv-settings-panel{max-height:calc(100% - 44px);overflow:auto;border:1px solid var(--line);border-radius:8px;padding:12px;scrollbar-width:thin}
.sf-tv-settings-panel h3{margin:0 0 8px}
.sf-tv-admin-channels,.sf-tv-record-list{display:flex;flex-direction:column;gap:6px;max-height:45vh;overflow-y:auto;scrollbar-width:thin;margin:8px 0}
.sf-tv-admin-row,.sf-tv-record-card{border:1px solid var(--line);border-radius:7px;padding:8px;display:flex;flex-wrap:wrap;align-items:center;gap:8px;background:var(--surface-soft)}
.sf-tv-record-card>strong,.sf-tv-admin-row>strong{font-size:12px;max-width:100%;overflow-wrap:anywhere}
.sf-tv-record-card>span,.sf-tv-admin-row>small{font-size:11px;flex:1}
.sf-tv-record-preview{flex:0 0 100%;max-width:600px}
.sf-tv-record-preview video{width:100%;max-height:280px;background:black}
.sf-tv-access-row{display:flex;align-items:center;flex-wrap:wrap;gap:8px;padding:8px;border:1px solid var(--line);border-radius:7px;margin:6px 0}
.sf-tv-access-row label{display:flex;gap:5px;align-items:center;font-size:11px}
.sf-tv-access-row input:not([type=checkbox]){width:180px;max-width:100%;padding:6px}
.sf-tv-screen-nav{display:flex;flex-direction:column;margin-left:16px;padding-left:9px;border-left:1px solid #3b5276}
.sf-tv-screen-nav[hidden]{display:none!important}
.sf-tv-stat{padding:8px;border-bottom:1px solid var(--line)}
@media(max-width:1050px){.sf-tv-layout{grid-template-columns:minmax(0,1fr) 210px}.sf-tv-controls{max-height:160px}.sf-tv-video-grid{max-height:calc(100% - 165px)}}
@media(max-width:740px){.sf-tv-layout{height:auto;min-height:0;grid-template-columns:1fr}.sf-tv-video-grid{max-height:none}.sf-tv-channels{height:min(32vh,270px)}.sf-tv-page{overflow:auto}.sf-tv-page-heading{flex-direction:column;align-items:flex-start}.sf-tv-guide-grid{height:55vh}.sf-tv-guide-row{grid-template-columns:115px minmax(700px,1fr)}.sf-tv-settings-panel{max-height:none}.sf-tv-controls{max-height:none}}

.sf-tv-folder-picker{border:1px solid var(--line);border-radius:8px;background:var(--surface-soft);padding:10px;margin-bottom:10px}.sf-tv-folder-picker h4{margin:0 0 9px}.sf-tv-folder-list{display:flex;flex-wrap:wrap;gap:6px;max-height:28vh;overflow:auto;scrollbar-width:thin}.sf-tv-browse-btn{margin-top:4px}

/* SynHub 0.4.2 — Fullscreen TV includes channel and action overlays. */
.sf-tv-layout:fullscreen{width:100vw;height:100vh;max-height:100vh;padding:10px;background:#03060d;display:grid;grid-template-columns:minmax(0,1fr) minmax(230px,25vw);gap:8px}
.sf-tv-layout:fullscreen .sf-tv-video-grid{flex:1 1 auto;aspect-ratio:auto;height:auto;max-height:none;min-height:0}
.sf-tv-layout:fullscreen .sf-tv-main{height:100%;min-height:0}
.sf-tv-layout:fullscreen .sf-tv-channels{height:100%;min-height:0;background:#131925ee}
.sf-tv-layout:fullscreen .sf-tv-controls{max-height:140px;background:#131925ef}
.sf-tv-layout:fullscreen.sf-tv-overlays-hidden{grid-template-columns:minmax(0,1fr)}
.sf-tv-layout:fullscreen.sf-tv-overlays-hidden .sf-tv-channels,
.sf-tv-layout:fullscreen.sf-tv-overlays-hidden .sf-tv-controls,
.sf-tv-layout:fullscreen.sf-tv-overlays-hidden .sf-tv-stream-info{display:none!important}
.sf-tv-layout:fullscreen.sf-tv-overlays-hidden .sf-tv-video-grid{height:100%;flex:1}
.sf-tv-layout:fullscreen .sf-tv-slot{cursor:pointer}
.sf-tv-share-panel{flex:0 0 100%;display:flex;flex-direction:column;gap:8px;padding:12px;background:var(--surface-soft);border:1px solid var(--line);border-radius:8px;min-width:0}
.sf-tv-share-panel h4{margin:0}
.sf-tv-share-users{display:flex;flex-wrap:wrap;gap:9px;max-height:135px;overflow-y:auto}
.sf-tv-share-user{display:flex;align-items:center;gap:5px;font-size:12px}
.sf-tv-share-link{width:100%;min-width:0;padding:7px}
@media(max-width:740px){.sf-tv-layout:fullscreen{grid-template-columns:1fr;grid-template-rows:minmax(0,1fr) minmax(75px,25vh)}.sf-tv-layout:fullscreen .sf-tv-channels{height:100%}}

/* SynHub: TV source URL inline controls */
.sf-tv-direct-link{padding:8px;border-top:1px solid var(--line);display:flex;flex-direction:column;gap:5px}
.sf-tv-direct-link input{width:100%;min-width:0;font-size:12px;padding:6px}
.sf-tv-direct-link label{font-size:11px;font-weight:600}

/* SynHub : media preview, configuration and applications */
#fm-preview-edit{white-space:nowrap}#fm-preview-modal:fullscreen #fm-preview-edit,#fm-preview-modal .modal-card:fullscreen #fm-preview-edit{display:none!important}
.sf-playlist-list{max-height:min(60vh,630px);overflow:auto;display:flex;flex-direction:column;gap:6px;width:100%}
.sf-playlist-row{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:8px;border:1px solid var(--line);border-radius:7px;min-width:0}.sf-playlist-row strong{overflow-wrap:anywhere;min-width:0;flex:1}
.sf-transcode-profile{padding:12px;margin:12px 0;border:1px solid var(--line);border-radius:9px}
.tm-application-card .tm-application-meta{display:none!important}.tm-application-hero{aspect-ratio:1.45;min-height:135px}.tm-application-overlay{justify-content:flex-end;padding:12px;background:linear-gradient(transparent,rgba(0,0,0,.72))}.tm-application-overlay small{display:none}.tm-application-overlay strong{font-size:1.05rem;color:white;text-shadow:0 1px 4px #000}.tm-application-card:not(:hover)>.button-row{opacity:.55}
.sf-ban-list{max-height:180px;overflow-y:auto}.sf-ban-list>div{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:6px}.sf-tv-access-row{display:grid!important;grid-template-columns:100px minmax(0,1fr);gap:9px}.sf-tv-acl-details{min-width:0}.sf-tv-acl-options{max-height:215px;overflow:auto;display:grid;grid-template-columns:repeat(auto-fit,minmax(175px,1fr));gap:6px;padding:8px}.sf-tv-acl-options label{display:flex;align-items:center;gap:6px;white-space:nowrap}

/* SynHub 0.4.4 — TV panel always spans video + controls; scroll inside list. */
#tv-screen-page:not(.hidden){min-height:0;overflow:auto}
#tv-layout{align-items:stretch;min-height:360px}
#tv-layout>.sf-tv-main,#tv-layout>.sf-tv-channels{height:100%;min-height:0;max-height:100%}
#tv-layout .sf-tv-main{display:flex;flex-direction:column;overflow:hidden}
#tv-layout .sf-tv-video-grid{flex:1 1 auto;min-height:0;height:auto;aspect-ratio:auto;max-height:none}
#tv-layout .sf-tv-controls{flex:0 0 auto;max-height:min(30vh,172px);overflow-y:auto}
#tv-layout .sf-tv-stream-info{flex:0 0 auto}
#tv-layout .sf-tv-channels{overflow:hidden}
#tv-layout .sf-tv-channel-list{flex:1 1 auto;min-height:0;overflow-y:auto;overscroll-behavior:contain}
#tv-layout .sf-tv-direct-link{flex:0 0 auto}
@media(max-width:740px){#tv-layout{height:auto;min-height:0;display:flex;flex-direction:column}#tv-layout>.sf-tv-main{height:auto;min-height:240px;overflow:visible}#tv-layout .sf-tv-video-grid{aspect-ratio:16/9;height:auto;flex:none}#tv-layout>.sf-tv-channels{height:clamp(200px,34vh,320px);max-height:none}#tv-layout .sf-tv-controls{max-height:none}}
#tv-layout:fullscreen{height:100vh;min-height:0}
#tv-layout:fullscreen .sf-tv-main{height:100%;min-height:0}
#tv-layout:fullscreen .sf-tv-video-grid{flex:1 1 auto;max-height:none}

/* Program details must be a true modal, outside clipped grid/viewport containers. */
.sf-tv-details-backdrop{position:fixed;inset:0;background:rgba(4,8,19,.78);z-index:10010}
.sf-tv-details-backdrop.hidden{display:none!important}
#tv-guide-details.sf-tv-details{position:fixed!important;top:50%;left:50%;transform:translate(-50%,-50%);z-index:10011;display:grid;grid-template-columns:minmax(120px,200px) minmax(0,1fr);align-items:start;gap:14px;width:min(980px,calc(100vw - 26px));max-width:none;max-height:min(91dvh,960px);overflow:auto;margin:0;padding:clamp(13px,2.1vw,25px);background:var(--surface);box-shadow:0 15px 75px #0009;border:1px solid var(--line);scrollbar-width:thin}
#tv-guide-details.sf-tv-details>img{max-width:100%;max-height:min(54vh,390px);width:100%;object-fit:contain}
#tv-guide-details.sf-tv-details>img[hidden]{display:none}
#tv-guide-details.sf-tv-details:has(>img[hidden]){grid-template-columns:minmax(0,1fr)}
#tv-guide-details.sf-tv-details>div{min-width:0;padding-top:8px}
#tv-guide-details .sf-tv-details-close{position:sticky;justify-self:end;top:0;grid-column:1/-1;z-index:2}
#tv-guide-details .sf-tv-guide-extra{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(220px,100%),1fr));gap:8px;margin:12px 0}
#tv-guide-details .sf-tv-guide-extra-item{display:flex;flex-direction:column;min-width:0;gap:3px;padding:7px 9px;border:1px solid var(--line);border-radius:6px}
#tv-guide-details .sf-tv-guide-extra-item strong{font-size:11px;color:var(--muted)}
#tv-guide-details .sf-tv-guide-extra-item span{overflow-wrap:anywhere}
#tv-guide-details #tv-guide-description{max-height:26vh;overflow-y:auto;white-space:pre-wrap}
@media(max-width:650px){#tv-guide-details.sf-tv-details{grid-template-columns:minmax(0,1fr);max-height:95dvh}#tv-guide-details.sf-tv-details>img{max-height:22vh;max-width:100%;width:auto;justify-self:center}}

/* Channel mapping and XMLTV browse panel. */
.sf-tv-mapping-row{display:grid;grid-template-columns:minmax(130px,1fr) 95px minmax(200px,2fr) minmax(110px,1fr);align-items:center;gap:8px}
.sf-tv-mapping-row select{min-width:0;width:100%;padding:6px}
.sf-tv-xmltv-catalog{max-height:min(36vh,330px);overflow-y:auto;scrollbar-width:thin;border:1px solid var(--line);border-radius:8px;margin-top:8px}
.sf-tv-xmltv-row{display:flex;justify-content:space-between;gap:14px;border-bottom:1px solid var(--line);padding:7px 10px;align-items:center}
.sf-tv-xmltv-row code{overflow-wrap:anywhere;color:var(--muted)}
@media(max-width:750px){.sf-tv-mapping-row{grid-template-columns:minmax(0,1fr)}.sf-tv-xmltv-row{flex-wrap:wrap}}

/* App image geometry matches action buttons on desktop and mobile. */
.tm-application-card{width:100%;min-width:0;overflow:hidden;gap:6px;padding:6px}
.tm-application-card .tm-application-hero{display:block;width:100%;min-height:0;aspect-ratio:4/3;flex:none;background-size:cover;background-position:center}
.tm-application-card>.button-row{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));width:100%;min-width:0;gap:5px}
.tm-application-card>.button-row .btn{min-width:0;width:100%;white-space:nowrap;padding:5px 2px;overflow:hidden;text-overflow:ellipsis;opacity:1}
.tm-application-card:not(:hover)>.button-row{opacity:1}
.tm-applications-form .tm-application-preview-card{width:min(100%,255px);height:auto;max-height:none!important;min-height:0;aspect-ratio:4/3;background-size:cover;background-position:center}

/* SynHub 0.4.5 — compact guide controls, EPUB, slideshow, archive navigation. */
.sf-slideshow-controls{display:flex;gap:7px;align-items:center;flex-wrap:wrap}
.sf-slideshow-controls label{display:flex;gap:4px;align-items:center;font-size:12px}
.sf-slideshow-controls select{max-width:90px;padding:4px}
#fm-preview-modal:fullscreen .sf-slideshow-controls,
#fm-preview-modal.fm-photo-fullscreen-fallback .sf-slideshow-controls{opacity:0;pointer-events:none;transition:opacity .25s}
#fm-preview-modal:fullscreen .sf-slideshow-controls.sf-fullscreen-shown,
#fm-preview-modal.fm-photo-fullscreen-fallback .sf-slideshow-controls.sf-fullscreen-shown{opacity:1;pointer-events:auto}
.fm-preview-content .sf-epub-reader{width:100%;height:min(73vh,900px);min-height:300px;background:#fff;border:1px solid var(--line);border-radius:6px}
.sf-book-nav{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:6px;padding:4px}
.sf-guide-periods{display:flex;align-items:center;gap:4px;flex-wrap:wrap}
.sf-tv-guide-hscroll{display:flex;align-items:center;gap:10px;width:100%;font-size:12px;padding:2px 8px}
.sf-tv-guide-hscroll input{flex:1;min-width:100px}
.sf-tv-guide-channel,.sf-tv-guide-axis>strong{position:sticky;left:0;z-index:2;background:var(--surface-soft)}
.sf-tv-guide-axis>strong{z-index:5}
.sf-tv-guide-grid{height:calc(100% - 105px)}
@media(max-width:740px){.sf-tv-guide-grid{height:50vh}}

.nav-actions a.nav-item{text-decoration:none;color:inherit;}

.sf-nav-group-trigger{cursor:pointer;text-decoration:none;}

/* SynHub 0.4.6 — TV responsive, accessible status indicators and programme colours */
#tv-layout:not(:fullscreen){height:100%;min-height:0;max-height:100%;grid-template-columns:minmax(0,1fr) clamp(196px,23%,315px)}
#tv-layout:not(:fullscreen) .sf-tv-main{min-height:0;max-height:100%;overflow:hidden}
#tv-layout:not(:fullscreen) .sf-tv-video-grid{min-height:0;flex:1 1 auto;aspect-ratio:auto;height:auto}
#tv-layout:not(:fullscreen) .sf-tv-channels{height:100%;max-height:100%;min-height:0;overflow:hidden}
#tv-layout .sf-tv-channel-list{min-height:0;flex:1;overflow-y:auto}
#tv-layout .sf-tv-direct-link{padding:6px;max-height:112px;overflow:auto}
#tv-layout .sf-tv-search-label{display:flex;flex-direction:column;gap:4px;padding:5px 8px;font-size:11px;flex:0 0 auto}
#tv-layout #tv-channel-filter{width:100%;min-width:0;padding:5px;font-size:12px}
#tv-layout:fullscreen .sf-tv-slot-selected{outline:none!important;box-shadow:none!important}
.sf-tv-guide-program.sf-tv-guide-film{background:#ffc9c9;color:#101010;border-color:#df9595}
.sf-tv-guide-program.sf-tv-guide-documentaire{background:#c8f1c7;color:#101010;border-color:#9aca98}
.sf-tv-guide-program.sf-tv-guide-serie{background:#ffe0b4;color:#101010;border-color:#e8bd82}
.sf-tv-guide-program.sf-tv-guide-info{background:#cbe8ff;color:#101010;border-color:#97c2e3}
.sf-tv-guide-program.sf-tv-guide-film:hover,.sf-tv-guide-program.sf-tv-guide-documentaire:hover,.sf-tv-guide-program.sf-tv-guide-serie:hover,.sf-tv-guide-program.sf-tv-guide-info:hover{filter:brightness(.93);color:#111}
.sf-tv-health-fail{display:inline-block;width:max-content;max-width:100%;padding:2px 7px;line-height:1.25;background:#ffcece;border:1px solid #e99;border-radius:5px;color:#111;font-size:11px;font-weight:600}
.sf-tv-health-ok,.sf-tv-health-pending{display:inline-block;padding:2px 7px;font-size:11px;line-height:1.3;color:inherit}
.sf-tv-health-fail+.btn{color:#101010}
@media(max-width:740px){#tv-layout:not(:fullscreen){height:auto;max-height:none;display:flex;flex-direction:column}#tv-layout:not(:fullscreen) .sf-tv-channels{height:clamp(200px,32vh,260px);max-height:260px}#tv-layout:not(:fullscreen) .sf-tv-video-grid{aspect-ratio:16/9;flex:none;height:auto}}

.sf-transcode-seek{display:flex;align-items:center;gap:7px;flex:1 1 100%;min-width:0;font-size:12px}
.sf-transcode-seek input{flex:1;min-width:70px}
.sf-transcode-seek .sf-transcode-position{font-variant-numeric:tabular-nums;white-space:nowrap}

.sf-tv-guide-search-results{padding:8px;border:1px solid var(--line);border-radius:8px;margin:5px 0;max-height:190px;overflow:auto}
.sf-tv-guide-search-list{display:grid;gap:4px;margin-top:6px}
.sf-tv-guide-search-item{text-align:left;border:1px solid var(--line);padding:6px 8px;border-radius:5px;cursor:pointer;color:inherit;background:var(--surface-soft)}
.sf-tv-guide-search-item.sf-tv-guide-film{background:#ffc9c9;color:#111}.sf-tv-guide-search-item.sf-tv-guide-documentaire{background:#c8f1c7;color:#111}.sf-tv-guide-search-item.sf-tv-guide-serie{background:#ffe0b4;color:#111}.sf-tv-guide-search-item.sf-tv-guide-info{background:#cbe8ff;color:#111}

/* SynHub 0.4.7 — guide timeline is wider than its viewport: both scrollers really move. */
.sf-tv-guide-grid{overflow-x:auto!important;overflow-y:auto;overscroll-behavior:contain;touch-action:pan-x pan-y}
.sf-tv-guide-grid>.sf-tv-guide-row{width:calc(100% + clamp(680px,55vw,1200px));min-width:1760px;box-sizing:border-box;grid-template-columns:clamp(116px,12vw,170px) minmax(0,1fr)}
.sf-tv-guide-row>.sf-tv-guide-programs{width:100%;min-width:0}
.sf-tv-guide-dragging,.sf-tv-guide-dragging *{user-select:none!important;cursor:grabbing!important}
.sf-tv-guide-hscroll input{accent-color:#6b97de;cursor:ew-resize}
.sf-tv-guide-clock{white-space:nowrap;font-size:12px;font-weight:700;color:var(--text);padding:3px 8px;border:1px solid var(--line);border-radius:6px}
.sf-tv-schedule-title{border:0;background:transparent;color:inherit;font-size:13px;font-weight:750;text-align:left;cursor:pointer;text-decoration:underline;text-underline-offset:3px;padding:3px}
.sf-tv-schedule-title:hover{color:var(--accent, #6b97de)}
/* SynHub 0.4.7 — default is one larger file browser, with reversible two-pane view. */
#filemanager-view .fm-view-switch{display:flex;gap:12px;align-items:center;justify-content:flex-end;padding:0 3px 7px;flex:0 0 auto}
#filemanager-view.fm-single-mode #fm-pane-right{display:none!important}
#filemanager-view.fm-single-mode .fm-dual-layout{display:grid!important;grid-template-columns:minmax(0,1fr) clamp(112px,10vw,148px)!important;gap:clamp(4px,.38vw,7px)}
#filemanager-view.fm-single-mode #fm-pane-left{grid-column:1;min-width:0}
#filemanager-view.fm-single-mode .fm-center-controls{grid-column:2;min-width:0}
@media(max-width:700px){#filemanager-view.fm-single-mode .fm-dual-layout{display:flex!important;flex-direction:column!important}}
/* Reduce the previously over-sized context menu without shrinking touch targets excessively. */
.fm-context-menu{min-width:162px!important;max-width:min(260px,90vw)!important;padding:3px!important;border-radius:7px}
.fm-context-menu button{min-height:32px!important;padding:5px 9px!important;font-size:12px!important;line-height:1.18!important}
@media(max-width:700px){.fm-context-menu button{min-height:36px!important;font-size:12px!important}}

/* SynHub 0.4.7 — document readers fill the available preview height. */
#fm-preview-modal.fm-document-mode .modal-card{width:min(1500px,98vw);max-width:98vw;height:calc(100dvh - 24px);max-height:calc(100dvh - 24px);display:flex;flex-direction:column}
#fm-preview-modal.fm-document-mode .fm-preview-stage{flex:1 1 0;min-height:0;align-items:stretch;overflow:hidden}
#fm-preview-modal.fm-document-mode .fm-preview-content{display:flex;flex-direction:column;flex:1 1 auto;min-height:0;max-height:none;overflow:auto}
#fm-preview-modal.fm-document-mode .fm-preview-content .sf-epub-reader,#fm-preview-modal.fm-document-mode .fm-preview-content iframe{flex:1 1 0;min-height:180px;height:100%;max-height:none}
#fm-preview-modal.fm-document-mode .sf-book-nav,#fm-preview-modal.fm-document-mode .fm-preview-content>.button-row{flex:0 0 auto}
#fm-preview-modal.fm-document-mode .fm-preview-content>pre{max-height:100%;overflow:auto}
#fm-preview-modal.fm-document-mode:fullscreen .modal-card,#fm-preview-modal.fm-document-mode.fm-photo-fullscreen-fallback .modal-card{width:100vw;max-width:100vw;height:100dvh;max-height:100dvh}
#fm-preview-modal.fm-document-mode:fullscreen .fm-preview-content,#fm-preview-modal.fm-document-mode.fm-photo-fullscreen-fallback .fm-preview-content{max-height:none;overflow:auto}
#fm-preview-modal:fullscreen .modal-header:not(.sf-fullscreen-shown):has(+ .fm-preview-stage img),#fm-preview-modal.fm-photo-fullscreen-fallback .modal-header:not(.sf-fullscreen-shown):has(+ .fm-preview-stage img){opacity:0;pointer-events:none}
#fm-preview-modal:fullscreen .modal-header.sf-fullscreen-shown,#fm-preview-modal.fm-photo-fullscreen-fallback .modal-header.sf-fullscreen-shown{opacity:1;pointer-events:auto}
@media(max-width:700px){#fm-preview-modal.fm-document-mode .modal-card{width:100vw;max-width:100vw;height:calc(100dvh - 6px);max-height:calc(100dvh - 6px)}#fm-preview-modal.fm-document-mode .sf-book-nav{gap:3px}#fm-preview-modal.fm-document-mode .sf-book-nav .btn{padding:5px;font-size:11px}}
/* SynHub 0.4.7 — keep preview actions inside narrow mobile viewports. */
#fm-preview-modal .modal-card{min-width:0;max-width:calc(100vw - 10px)}
#fm-preview-modal .modal-header{min-width:0;max-width:100%;flex-wrap:wrap;gap:5px;padding:9px 11px}
#fm-preview-modal .modal-header h2{min-width:0;flex:1 1 120px;max-width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
#fm-preview-modal .fm-preview-header-controls{min-width:0;max-width:100%;flex:0 1 auto;flex-wrap:wrap;justify-content:flex-end;gap:5px;margin-left:auto}
#fm-preview-modal .fm-preview-header-controls .sf-slideshow-controls{min-width:0;flex-wrap:wrap;gap:3px}
#fm-preview-modal:fullscreen .modal-card,#fm-preview-modal.fm-photo-fullscreen-fallback .modal-card{max-width:100vw}
/* Fullscreen is measured in physical CSS viewport pixels, regardless of SynHub's window zoom. */
#fm-preview-modal:fullscreen{zoom:1!important;inset:0!important;width:var(--sf-fs-width,100vw)!important;height:var(--sf-fs-height,100dvh)!important;padding:0!important;overflow:hidden!important}
#fm-preview-modal:fullscreen .modal-card{height:var(--sf-fs-height,100dvh)!important;max-height:var(--sf-fs-height,100dvh)!important;width:var(--sf-fs-width,100vw)!important;max-width:var(--sf-fs-width,100vw)!important;min-height:0!important;margin:0!important}
