:root{
    --bg:#091018;
    --panel:#101922;
    --panel-2:#162230;
    --panel-3:#1b2a39;
    --line:#25384b;
    --ink:#e7eef6;
    --ink-dim:#95a7bb;
    --ink-faint:#65788c;
    --teal:#27d3c3;
    --teal-deep:#0c7f78;
    --cyan:#67b7ff;
    --amber:#f7c75c;
    --rose:#ff7c8d;
    --green:#62db8d;
    --shadow:0 18px 48px rgba(0,0,0,.34);
    --mono:"SF Mono",ui-monospace,"JetBrains Mono","Cascadia Code",Consolas,monospace;
    --sans:"IBM Plex Sans","Segoe UI","PingFang SC","Microsoft YaHei",sans-serif;
  }
  *{box-sizing:border-box;margin:0;padding:0}
  html,body{min-height:100%}
  body{
    background:
      radial-gradient(circle at top left, rgba(39,211,195,.08), transparent 28%),
      radial-gradient(circle at top right, rgba(103,183,255,.08), transparent 24%),
      linear-gradient(180deg, #091018 0%, #070c12 100%);
    color:var(--ink);
    font-family:var(--sans);
    overflow:auto;
    -webkit-font-smoothing:antialiased;
  }
  button,input,textarea,select{font:inherit}
  button{cursor:pointer}
  ::-webkit-scrollbar{width:9px;height:9px}
  ::-webkit-scrollbar-thumb{background:#2a3c4d;border-radius:999px}
  .app{display:grid;grid-template-rows:auto auto 1fr auto;min-height:100vh}
  .topbar{
    display:flex;align-items:center;gap:12px;padding:10px 14px;
    background:linear-gradient(180deg, rgba(15,24,35,.96), rgba(10,16,24,.96));
    border-bottom:1px solid var(--line);backdrop-filter:blur(10px)
  }
  .brand{display:flex;align-items:center;gap:10px;min-width:250px}
  .brand-mark{
    width:34px;height:34px;border-radius:11px;
    background:
      radial-gradient(circle at 35% 30%, rgba(255,255,255,.22), transparent 24%),
      linear-gradient(145deg, #22d3c5, #0f706b);
    box-shadow:0 0 0 1px rgba(39,211,195,.25), 0 10px 24px rgba(39,211,195,.22);
    position:relative;
  }
  .brand-mark::after{
    content:"";position:absolute;inset:8px;border:1.5px solid rgba(255,255,255,.68);border-radius:8px;
  }
  .brand-title{font-size:16px;font-weight:700;letter-spacing:.2px}
  .brand-title span{color:var(--teal)}
  .brand-sub{font-size:10px;color:var(--ink-faint);font-family:var(--mono);letter-spacing:.9px;text-transform:uppercase}
  .divider{width:1px;height:28px;background:var(--line)}
  .summary-strip{display:flex;gap:10px;flex-wrap:wrap}
  .summary-card{
    padding:6px 10px;border-radius:10px;border:1px solid var(--line);
    background:linear-gradient(180deg, rgba(22,34,48,.9), rgba(16,25,34,.9));
    min-width:180px;
  }
  .summary-card b{display:block;font-size:10px;color:var(--ink-faint);font-family:var(--mono);text-transform:uppercase;letter-spacing:.7px}
  .summary-card span{display:block;margin-top:4px;font-size:13px;font-weight:600}
  .spacer{flex:1}
  .controls{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
  .btn{
    display:inline-flex;align-items:center;gap:8px;padding:9px 13px;border-radius:10px;
    border:1px solid var(--line);background:var(--panel-2);color:var(--ink);
    transition:.16s ease;font-size:12.5px;font-weight:600;white-space:nowrap;
  }
  .btn:hover{border-color:#38516b;background:#1b2b3b}
  .btn.primary{background:linear-gradient(180deg, #1cb6aa, #0f7c76);border-color:#2ad3c4;color:#041513}
  .btn.ghost{background:transparent}
  .btn svg{width:15px;height:15px;stroke:currentColor;fill:none;stroke-width:1.8}
  .lang-switch{display:flex;border:1px solid var(--line);border-radius:10px;overflow:hidden;background:var(--panel-2)}
  .lang-switch button{border:none;background:transparent;color:var(--ink-dim);padding:9px 12px;font-size:12px;font-weight:700}
  .lang-switch button.on{background:rgba(39,211,195,.15);color:var(--teal)}

  .subbar{
    display:grid;grid-template-columns:minmax(0,1fr);gap:8px;padding:6px 10px;
    background:rgba(9,15,23,.92);border-bottom:1px solid var(--line)
  }
  .subpanel{
    background:linear-gradient(180deg, rgba(16,25,34,.94), rgba(13,21,30,.94));
    border:1px solid var(--line);border-radius:14px;padding:8px 10px;min-height:62px
  }
  .subpanel h2{
    font-size:10px;font-family:var(--mono);text-transform:uppercase;letter-spacing:1px;
    color:var(--ink-faint);margin-bottom:10px
  }
  .patient-grid{display:grid;grid-template-columns:1fr 1fr;gap:6px 12px}
  .meta-line{display:flex;justify-content:space-between;gap:10px;font-size:12px}
  .meta-line label{color:var(--ink-faint)}
  .meta-line span{font-family:var(--mono);font-weight:600;text-align:right}
  .body{
    display:grid;grid-template-columns:230px minmax(0, 1fr);gap:10px;padding:10px 12px;min-height:0;align-items:start
  }
  .sidebar,.inspector,.main{
    min-height:0;border:1px solid var(--line);border-radius:16px;
    background:linear-gradient(180deg, rgba(15,24,34,.95), rgba(10,17,25,.95));
    box-shadow:var(--shadow)
  }
  .sidebar,.inspector{overflow:auto;max-height:none}
  .inspector-hidden{display:none}
  .section{padding:10px;border-bottom:1px solid rgba(37,56,75,.75)}
  .section:last-child{border-bottom:none}
  .section h3{
    display:flex;justify-content:space-between;align-items:center;
    font-size:10px;font-family:var(--mono);letter-spacing:1px;color:var(--ink-faint);
    text-transform:uppercase;margin-bottom:10px
  }
  .mini-note{font-size:10px;color:var(--ink-faint)}
  .study-list,.series-list,.finding-list{display:flex;flex-direction:column;gap:8px}
  .compact-studylist{margin-bottom:10px}
  .study-card,.series-card,.finding-card{
    border:1px solid var(--line);border-radius:10px;background:var(--panel-2);padding:9px 10px;
    transition:.15s ease
  }
  .study-card.active,.series-card.active,.finding-card.active{
    border-color:#4ba8ff;box-shadow:0 0 0 1px rgba(103,183,255,.22)
  }
  .study-card strong,.series-card strong,.finding-card strong{display:block;font-size:12px}
  .study-card span,.series-card span,.finding-card span{
    display:block;margin-top:4px;color:var(--ink-dim);font-size:10.5px;line-height:1.4
  }
  .study-card .badge-row,.series-card .badge-row{display:flex;gap:6px;flex-wrap:wrap;margin-top:8px}
  .series-actions{
    display:flex;
    justify-content:flex-end;
    margin-top:8px;
  }
  .mini-action{
    padding:6px 10px;
    border-radius:999px;
    border:1px solid #304456;
    background:#101a25;
    color:var(--ink-dim);
    font-size:10px;
    font-weight:700;
    line-height:1;
  }
  .mini-action:hover{
    border-color:#45607a;
    color:var(--ink);
  }
  .mini-action.on{
    border-color:rgba(39,211,195,.45);
    background:rgba(39,211,195,.12);
    color:var(--teal);
  }
  .badge{
    padding:4px 7px;border-radius:999px;background:#101a25;border:1px solid #304456;
    font-size:10px;font-family:var(--mono);color:var(--ink-dim)
  }
  .badge.good{color:var(--green);border-color:rgba(98,219,141,.35)}
  .badge.warn{color:var(--amber);border-color:rgba(247,199,92,.35)}
  .tools-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:7px}
  .tool{
    border:1px solid var(--line);background:var(--panel-2);border-radius:10px;padding:9px 6px;text-align:center;
    font-size:10px;font-weight:700;color:var(--ink-dim)
  }
  .tool.active{border-color:var(--teal);color:var(--teal)}
  .preset-row{display:flex;flex-wrap:wrap;gap:6px}
  .chip{
    padding:5px 9px;border-radius:999px;border:1px solid var(--line);
    background:var(--panel-2);font-size:11px;font-weight:700;color:var(--ink-dim)
  }
  .chip.on{background:rgba(39,211,195,.14);border-color:var(--teal);color:var(--teal)}
  .range-wrap{margin-top:10px}
  .range-wrap label{
    display:flex;justify-content:space-between;margin-bottom:5px;font-size:10px;
    color:var(--ink-faint);font-family:var(--mono)
  }
  input[type=range]{width:100%;height:4px;-webkit-appearance:none;background:#243748;border-radius:999px;outline:none}
  input[type=range]::-webkit-slider-thumb{
    -webkit-appearance:none;width:14px;height:14px;border-radius:50%;background:var(--teal);
    box-shadow:0 0 0 4px rgba(39,211,195,.16)
  }
  .switch-row{display:flex;align-items:center;justify-content:space-between;margin-top:10px}
  .switch-row label{font-size:11px;color:var(--ink-dim)}
  .switch-row input{accent-color:var(--teal)}
  .main{display:grid;grid-template-rows:auto minmax(680px,auto) auto auto;overflow:visible}
  .main-toolbar{
    display:flex;align-items:center;gap:8px;padding:8px 10px;border-bottom:1px solid var(--line);flex-wrap:wrap
  }
  .view-switch{display:flex;gap:7px;flex-wrap:wrap}
  .view-switch button{
    padding:8px 11px;border-radius:10px;border:1px solid var(--line);background:var(--panel-2);
    color:var(--ink-dim);font-size:11.5px;font-weight:700
  }
  .view-switch button.on{background:rgba(103,183,255,.13);border-color:var(--cyan);color:var(--cyan)}
  .main-toolbar .stack{display:flex;gap:8px;align-items:center}
  .dual-sync-switch{
    display:flex;border:1px solid var(--line);border-radius:10px;overflow:hidden;background:var(--panel-2)
  }
  .dual-sync-switch button{
    border:none;background:transparent;color:var(--ink-dim);padding:8px 10px;font-size:11px;font-weight:700
  }
  .dual-sync-switch button.on{background:rgba(39,211,195,.15);color:var(--teal)}
  .viewer{
    position:relative;padding:10px 10px 12px;min-height:680px;
    background:radial-gradient(circle at top, rgba(12,24,38,.6), rgba(3,6,10,1) 70%)
  }
  .layout{position:absolute;inset:10px;display:none;gap:10px;align-content:start}
  .layout.on{display:grid}
  .layout-four{
    grid-template-columns:minmax(420px, 1.08fr) minmax(0, 1.38fr) minmax(0, 1.02fr);
    grid-template-rows:minmax(360px, 1.22fr) minmax(290px, .94fr);
    grid-template-areas:
      "quad1 quad2 quad2"
      "quad1 quad3 quad4";
  }
  .layout-four [data-viewport-key="quad1"]{grid-area:quad1}
  .layout-four [data-viewport-key="quad2"]{grid-area:quad2}
  .layout-four [data-viewport-key="quad3"]{grid-area:quad3}
  .layout-four [data-viewport-key="quad4"]{grid-area:quad4}
  .layout-compare{grid-template-columns:repeat(2, minmax(0, 1fr));grid-template-rows:1fr}
  .layout-report{grid-template-columns:minmax(0, 1fr);grid-template-rows:1fr}
  .pane{
    position:relative;border-radius:14px;border:1px solid #294055;overflow:hidden;
    background:
      linear-gradient(180deg, rgba(11,16,22,.55), rgba(0,0,0,.18)),
      radial-gradient(circle at 50% 45%, rgba(98,120,144,.11), rgba(0,0,0,.96) 72%);
  }
  .pane.active{border-color:#8ea6bc;box-shadow:0 0 0 1px rgba(176,194,210,.18)}
  .dicom-viewport{position:absolute;inset:0;width:100%;height:100%;background:#000;cursor:crosshair}
  .dicom-viewport[data-render-mode="mpr"] canvas:not(.mpr-overlay){opacity:0}
  .mpr-overlay{
    position:absolute;inset:0;width:100%;height:100%;display:block;z-index:1;background:transparent;pointer-events:none;
  }
  .mpr-overlay.hidden{display:none}
  .pane-header,.pane-footer{
    position:absolute;left:10px;right:10px;z-index:3;display:flex;justify-content:space-between;align-items:center;
    pointer-events:none
  }
  .pane-header{top:10px}
  .pane-footer{bottom:10px}
  .orientation-markers{
    position:absolute;inset:0;z-index:2;pointer-events:none;
  }
  .orientation-markers.hidden{display:none}
  .orientation-marker{
    position:absolute;display:inline-flex;align-items:center;justify-content:center;
    min-width:28px;height:28px;padding:0 8px;border-radius:999px;
    background:rgba(3,8,14,.48);backdrop-filter:blur(8px);
    border:1px solid rgba(176,194,210,.16);color:#e2e8ef;
    font-family:var(--mono);font-size:11px;font-weight:700;letter-spacing:.45px;
  }
  .orientation-marker.top{top:48px;left:50%;transform:translateX(-50%)}
  .orientation-marker.right{top:50%;right:12px;transform:translateY(-50%)}
  .orientation-marker.bottom{bottom:46px;left:50%;transform:translateX(-50%)}
  .orientation-marker.left{top:50%;left:12px;transform:translateY(-50%)}
  .scale-bar{
    position:absolute;left:18px;bottom:52px;z-index:2;pointer-events:none;
    display:flex;flex-direction:column;gap:6px;align-items:flex-start;
  }
  .scale-bar.hidden{display:none}
  .scale-bar-line{
    height:10px;border-left:2px solid rgba(231,238,246,.94);border-right:2px solid rgba(231,238,246,.94);
    border-bottom:2px solid rgba(231,238,246,.94);border-radius:2px;
    box-shadow:0 0 0 1px rgba(3,8,14,.25);
  }
  .scale-bar-label{
    padding:3px 7px;border-radius:999px;background:rgba(3,8,14,.48);backdrop-filter:blur(8px);
    color:#d5e2f1;font-family:var(--mono);font-size:10px;letter-spacing:.5px;
    border:1px solid rgba(176,194,210,.14);
  }
  .acquisition-info{
    position:absolute;right:18px;bottom:52px;z-index:2;pointer-events:none;
    max-width:min(48%, 320px);padding:5px 9px;border-radius:999px;
    background:rgba(3,8,14,.5);backdrop-filter:blur(8px);
    border:1px solid rgba(176,194,210,.14);color:#d5e2f1;
    font-family:var(--mono);font-size:10px;letter-spacing:.45px;
    white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
  }
  .acquisition-info.hidden{display:none}
  .pane-status{
    position:absolute;left:50%;bottom:52px;transform:translateX(-50%);z-index:2;pointer-events:none;
    display:flex;gap:6px;align-items:center;
  }
  .pane-status.hidden{display:none}
  .pane-status-chip{
    padding:4px 8px;border-radius:999px;background:rgba(3,8,14,.5);backdrop-filter:blur(8px);
    border:1px solid rgba(176,194,210,.14);color:#d5e2f1;
    font-family:var(--mono);font-size:10px;letter-spacing:.45px;
    white-space:nowrap;
  }
  .measurement-info{
    position:absolute;left:50%;bottom:84px;transform:translateX(-50%);z-index:2;pointer-events:none;
    max-width:min(42%, 280px);padding:5px 9px;border-radius:999px;
    background:rgba(8,18,28,.7);backdrop-filter:blur(8px);
    border:1px solid rgba(176,194,210,.16);color:#e2e8ef;
    font-family:var(--mono);font-size:10px;letter-spacing:.45px;
    white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
  }
  .measurement-info.hidden{display:none}
  .pane-label,.pane-corner{
    padding:4px 8px;border-radius:8px;background:rgba(3,8,14,.55);backdrop-filter:blur(8px);
    font-family:var(--mono);font-size:10px;letter-spacing:.7px
  }
  .pane-label{color:var(--ink)}
  .pane-label.teal{color:var(--teal)}
  .pane-label.cyan{color:var(--cyan)}
  .pane-label.rose{color:var(--rose)}
  .pane-label.amber{color:var(--amber)}
  .pane-corner{color:var(--ink-dim)}
  .pane-empty{
    position:absolute;inset:0;display:flex;align-items:center;justify-content:center;padding:20px;
    text-align:center;color:var(--ink-faint);font-size:12px;line-height:1.7;z-index:2
  }
  .pane-empty.hidden{display:none}
  .viewer-footer{
    display:flex;align-items:center;gap:14px;padding:10px 14px;border-top:1px solid var(--line);
    font-size:11px;font-family:var(--mono);color:var(--ink-dim);flex-wrap:wrap
  }
  .viewer-footer b{color:var(--teal)}
  .viewer-footer .spacer{flex:1}
  .series-strip{
    display:flex;gap:8px;overflow:auto;padding:8px 10px 10px;border-top:1px solid rgba(37,56,75,.75);
    background:linear-gradient(180deg, rgba(8,13,19,.9), rgba(10,16,23,.96));
  }
  .series-strip-empty{
    min-height:54px;display:flex;align-items:center;color:var(--ink-faint);font-size:11px;line-height:1.5
  }
  .series-thumb{
    min-width:180px;max-width:220px;flex:none;border:1px solid var(--line);border-radius:12px;
    background:linear-gradient(180deg, rgba(19,29,40,.96), rgba(12,19,27,.96));
    padding:10px 11px;transition:.16s ease;text-align:left
  }
  .series-thumb:hover{border-color:#3b556d;background:#182533}
  .series-thumb.active{border-color:var(--cyan);box-shadow:0 0 0 1px rgba(103,183,255,.24)}
  .series-thumb-preview{
    width:100%;aspect-ratio:16 / 10;border-radius:9px;border:1px solid rgba(58,79,99,.9);
    background:
      radial-gradient(circle at 50% 40%, rgba(163,184,204,.22), rgba(12,17,24,.98) 70%);
    overflow:hidden;display:flex;align-items:center;justify-content:center
  }
  .series-thumb-preview img{
    width:100%;height:100%;object-fit:cover;display:block;filter:grayscale(.04) contrast(1.04)
  }
  .series-thumb-preview span{
    margin:0;color:var(--ink-faint);font-size:10px;font-family:var(--mono);letter-spacing:.6px
  }
  .series-thumb strong{display:block;font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .series-thumb span{display:block;margin-top:5px;color:var(--ink-dim);font-size:11px;line-height:1.45}
  .series-thumb-copy{margin-top:8px}
  .series-thumb .thumb-meta{display:flex;gap:6px;flex-wrap:wrap;margin-top:8px}
  .series-thumb .thumb-chip{
    padding:3px 6px;border-radius:999px;border:1px solid #31485b;background:#0f1821;
    color:var(--ink-dim);font-size:10px;font-family:var(--mono)
  }
  .series-thumb .thumb-chip.on{color:var(--teal);border-color:rgba(39,211,195,.4)}
  .pane.is-fullscreen{
    position:fixed;left:50%;top:14px;transform:translateX(-50%);width:min(96vw, 1680px);height:calc(100vh - 28px);z-index:120;border-radius:18px;border-color:var(--teal);
    box-shadow:0 0 0 1px rgba(39,211,195,.35), 0 28px 80px rgba(0,0,0,.55)
  }
  body.fullscreen-reading .topbar,
  body.fullscreen-reading .subbar,
  body.fullscreen-reading .sidebar,
  body.fullscreen-reading .inspector,
  body.fullscreen-reading .viewer-footer,
  body.fullscreen-reading .series-strip,
  body.fullscreen-reading .footer{display:none}
  body.fullscreen-reading .body{grid-template-columns:1fr;padding:0}
  body.fullscreen-reading .main{border:none;border-radius:0;box-shadow:none}
  body.fullscreen-reading .main-toolbar{display:none}
  body.fullscreen-reading .viewer{padding:0;background:#000}
  body.fullscreen-reading .layout{inset:0}

  .textarea{
    width:100%;min-height:120px;border-radius:12px;border:1px solid var(--line);
    background:var(--panel-2);color:var(--ink);padding:12px;resize:vertical;line-height:1.6;font-size:12px
  }
  .checklist{display:flex;flex-direction:column;gap:8px}
  .check{
    display:flex;align-items:flex-start;gap:10px;padding:9px 10px;border-radius:11px;
    border:1px solid var(--line);background:var(--panel-2)
  }
  .check i{
    width:18px;height:18px;border-radius:50%;display:inline-grid;place-items:center;
    background:rgba(39,211,195,.14);color:var(--teal);font-style:normal;font-size:11px;font-weight:700;flex:none
  }
  .check div{font-size:11.5px;color:var(--ink-dim);line-height:1.5}
  .check b{display:block;color:var(--ink);margin-bottom:2px}
  .footer{
    display:flex;align-items:center;gap:14px;padding:9px 16px;border-top:1px solid var(--line);
    background:rgba(11,18,27,.95);font-size:11px;font-family:var(--mono);color:var(--ink-dim);flex-wrap:wrap
  }
  .footer .led{width:8px;height:8px;border-radius:50%;background:var(--green);box-shadow:0 0 10px rgba(98,219,141,.65)}
  .footer .spacer{flex:1}
  .footer b{color:var(--teal)}
  .muted{color:var(--ink-faint)}
  .toast{
    position:fixed;left:50%;bottom:20px;transform:translateX(-50%) translateY(16px);
    padding:8px 12px;border-radius:10px;border:1px solid rgba(176,194,210,.18);
    background:rgba(8,14,21,.92);color:#dfe7ef;font-family:var(--sans);font-size:12px;
    box-shadow:0 14px 30px rgba(0,0,0,.35);opacity:0;pointer-events:none;
    transition:opacity .18s ease, transform .18s ease;z-index:300;
  }
  .toast.show{opacity:1;transform:translateX(-50%) translateY(0)}
  .lang-en [data-zh]{display:none!important}
  .lang-zh [data-en]{display:none!important}
  @media (max-width:1450px){
    .subbar{grid-template-columns:1fr}
    .body{grid-template-columns:220px 1fr}
  }
  @media (max-width:1100px){
    body{overflow:auto}
    .app{height:auto;min-height:100vh}
    .topbar{flex-wrap:wrap}
    .summary-strip{order:3;width:100%}
    .body{grid-template-columns:1fr}
    .sidebar,.main{min-height:unset}
    .viewer{min-height:880px}
    .layout-four,.layout-compare,.layout-report{grid-template-columns:1fr;grid-template-rows:repeat(auto-fit,minmax(220px,1fr))}
    .layout-four{grid-template-areas:none}
    .series-thumb{min-width:160px}
  }
