:root{--bg: #f4f7fc;--panel: #fbfdff;--surface: #ffffff;--sunken: #eff2f9;--border: #dbe0e9;--border-strong: #c6ccd8;--text: #2d3340;--text-muted: #6b727f;--text-faint: #8e949f;--accent: #5f83d4;--accent-ink: #3658ac;--accent-tint: #dbeaff;--accent-ring: #a5bdf2;--error: #a33c3c;--stage: #14171e;--stage-edge: #272b35;--stage-text: #cfd6e4;--kind-report: #b7dbff;--kind-report-ink: #2b568b;--kind-ecg: #ffc4c8;--kind-ecg-ink: #833b43;--kind-lab: #a9e8cb;--kind-lab-ink: #006647;--kind-prescription: #e3ccff;--kind-prescription-ink: #624581;--kind-authorization: #f2d39f;--kind-authorization-ink: #724e00;--kind-other: #d0d8e7;--kind-other-ink: #4d5566;--radius-panel: 10px;--radius-tile: 7px;--radius-stage: 16px;--radius-pill: 999px;--shadow-sheet: 0 1px 2px #2d334014, 0 10px 30px #2d334014;--ease: cubic-bezier(.22, .61, .36, 1);color-scheme:light;font-family:Public Sans,ui-sans-serif,system-ui,-apple-system,Segoe UI,sans-serif;font-size:15px;line-height:1.45;-webkit-font-smoothing:antialiased}*{box-sizing:border-box}body{margin:0;height:100vh;overflow:hidden;background:var(--bg);color:var(--text)}button,input{font:inherit;color:inherit}h1,h2{margin:0;font-size:1rem}a{color:var(--accent-ink)}a:hover{color:var(--accent)}@media(prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}.app{display:flex;flex-direction:column;height:100vh}.topbar{display:flex;gap:1rem;align-items:center;flex-shrink:0;height:3.6rem;padding:0 1.1rem;background:var(--panel);border-bottom:1px solid var(--border)}.brand{display:flex;gap:.55rem;align-items:center;font-weight:700;letter-spacing:-.01em;white-space:nowrap}.brand-mark{width:1.4rem;height:1.4rem;border:2.5px solid var(--accent);border-radius:50%;box-shadow:inset 0 0 0 3px var(--panel),inset 0 0 0 5px var(--accent)}.search{position:relative;display:flex;align-items:center;width:22rem;max-width:40vw}.search-icon{position:absolute;left:.7rem;display:flex;color:var(--text-faint);pointer-events:none}.search input{width:100%;padding:.45rem 2rem .45rem 2.1rem;font-size:.88rem;background:var(--sunken);border:1px solid transparent;border-radius:var(--radius-pill);outline:none;transition:background .15s var(--ease),border-color .15s var(--ease)}.search input::-webkit-search-cancel-button{display:none}.search input:focus{background:var(--surface);border-color:var(--accent)}.search-clear{position:absolute;right:.35rem;display:grid;place-items:center;width:1.5rem;height:1.5rem;color:var(--text-muted);background:none;border:0;border-radius:50%;cursor:pointer}.search-clear:hover{color:var(--text);background:var(--sunken)}.topbar-filters{display:flex;gap:.4rem;align-items:center;margin-left:auto}.count-chip{display:inline-flex;gap:.35rem;align-items:center;padding:.2rem .6rem;font-size:.74rem;font-weight:600;white-space:nowrap;background:var(--sunken);color:var(--text-muted);border:1px solid transparent;border-radius:var(--radius-pill);cursor:pointer;transition:box-shadow .15s var(--ease)}.count-chip[data-kind=MR]{background:var(--kind-report);color:var(--kind-report-ink)}.count-chip[data-kind=DX],.count-chip[data-kind=CR]{background:var(--kind-lab);color:var(--kind-lab-ink)}.count-chip[data-kind=documents]{background:var(--kind-other);color:var(--kind-other-ink)}.count-chip:hover{box-shadow:0 0 0 2px var(--accent-ring)}.count-chip.is-active{box-shadow:0 0 0 2px var(--accent)}.workspace{display:flex;flex:1;min-height:0}.panel{display:flex;flex-direction:column;flex-shrink:0;width:21rem;overflow-y:auto;background:var(--panel);border-right:1px solid var(--border)}.panel-heading{padding:.9rem .9rem .35rem;font-size:.7rem;font-weight:700;letter-spacing:.09em;text-transform:uppercase;color:var(--text-faint)}.panel-heading:first-child{padding-top:.75rem}.panel-group{display:flex;flex-direction:column;gap:.1rem;padding:0 .5rem}.panel-group:last-child{padding-bottom:1.2rem}.panel-empty{padding:.4rem .9rem .6rem;font-size:.82rem;color:var(--text-faint)}.row{display:flex;gap:.6rem;align-items:center;width:100%;padding:.4rem .5rem;text-align:left;background:none;border:0;border-radius:var(--radius-panel);cursor:pointer;transition:background .12s var(--ease)}.row:hover{background:var(--sunken)}.row.is-selected{background:var(--accent-tint);box-shadow:inset 2px 0 0 var(--accent)}.row.is-selected .row-title{font-weight:600;color:var(--accent-ink)}.row.is-selected .row-count{color:var(--accent-ink)}.row-chevron{display:flex;flex-shrink:0;color:var(--text-faint);transition:transform .15s var(--ease)}.row-chevron.is-open{transform:rotate(90deg)}.row-body{display:flex;flex-direction:column;flex:1;min-width:0}.row-title{overflow:hidden;font-size:.84rem;text-overflow:ellipsis;white-space:nowrap}.row-meta{overflow:hidden;font-size:.72rem;color:var(--text-faint);text-overflow:ellipsis;white-space:nowrap}.row-count{flex-shrink:0;font-size:.74rem;font-variant-numeric:tabular-nums;color:var(--text-faint)}.row.is-study{padding:.5rem}.row.is-study .row-title{font-size:.86rem;font-weight:600}.row.is-study .row-meta,.row.is-localizer .row-title{color:var(--text-muted)}.avatar{display:grid;place-items:center;flex-shrink:0;width:2rem;height:2rem;font-size:.68rem;font-weight:700;letter-spacing:.02em;color:var(--kind-other-ink);background:linear-gradient(140deg,var(--kind-other),var(--border-strong));border-radius:50%}.avatar[data-modality=RM]{color:#234c88;background:linear-gradient(140deg,#b9daff,#95bdf8)}.avatar[data-modality=RX]{color:#005f41;background:linear-gradient(140deg,#a7e8ce,#7aceaf)}.avatar[data-modality=TC]{color:#573c7f;background:linear-gradient(140deg,#dfcdff,#c4adef)}.row-thumb{flex-shrink:0;width:2.1rem;height:2.1rem;object-fit:contain;background:var(--stage);border-radius:var(--radius-tile)}.row-thumb.is-empty{background:repeating-linear-gradient(135deg,var(--sunken) 0 6px,var(--border) 6px 12px)}.kind-mark{display:grid;place-items:center;flex-shrink:0;width:2.1rem;height:2.1rem;border-radius:var(--radius-tile)}.kind-mark[data-kind=report]{color:var(--kind-report-ink);background:var(--kind-report)}.kind-mark[data-kind=ecg]{color:var(--kind-ecg-ink);background:var(--kind-ecg)}.kind-mark[data-kind=lab]{color:var(--kind-lab-ink);background:var(--kind-lab)}.kind-mark[data-kind=prescription]{color:var(--kind-prescription-ink);background:var(--kind-prescription)}.kind-mark[data-kind=authorization]{color:var(--kind-authorization-ink);background:var(--kind-authorization)}.kind-mark[data-kind=other]{color:var(--kind-other-ink);background:var(--kind-other)}.row-children{display:flex;flex-direction:column;gap:.1rem;margin:.15rem 0 .35rem 1.35rem;padding:0;padding-left:.5rem;list-style:none;border-left:1px solid var(--border);animation:unfold .16s var(--ease)}@keyframes unfold{0%{opacity:0;transform:translateY(-3px)}}.stage{display:flex;flex-direction:column;flex:1;min-width:0;padding:1rem 1.25rem 1.1rem}.stage-header{display:flex;gap:1rem;align-items:flex-start;flex-shrink:0;padding-bottom:.85rem}.stage-heading{display:flex;flex-direction:column;min-width:0}.stage-title{overflow:hidden;font-size:1.05rem;font-weight:700;letter-spacing:-.01em;text-overflow:ellipsis;white-space:nowrap}.stage-meta{display:flex;flex-wrap:wrap;gap:.45rem;align-items:center;margin:0;font-size:.82rem;color:var(--text-muted)}.dot{width:3px;height:3px;background:currentColor;border-radius:50%;opacity:.6}.stage-actions{display:flex;gap:.45rem;align-items:center;margin-left:auto}.button{display:inline-flex;gap:.35rem;align-items:center;flex-shrink:0;padding:.35rem .8rem;font-size:.82rem;font-weight:500;color:var(--text);text-decoration:none;white-space:nowrap;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-pill);cursor:pointer;transition:border-color .15s var(--ease),background .15s var(--ease)}.button:hover{border-color:var(--accent-ring);background:var(--sunken)}.button.is-primary{font-weight:600;color:#fff;background:var(--accent);border-color:var(--accent)}.button.is-primary:hover{background:var(--accent-ink);border-color:var(--accent-ink)}.button.is-active{color:var(--accent-ink);background:var(--accent-tint);border-color:var(--accent)}.button.is-danger:hover{color:var(--error);border-color:var(--error)}.stack-viewer,.pdf-viewer{display:flex;flex:1;flex-direction:column;min-height:0}.viewport-shell{position:relative;flex:1;min-height:0;overflow:hidden;background:var(--stage);border:1px solid var(--stage-edge);border-radius:var(--radius-stage)}.viewport-shell:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.viewport{width:100%;height:100%}.viewport-status{position:absolute;inset:0;display:grid;place-content:center;justify-items:center;gap:.75rem;margin:0;padding:1rem;color:var(--stage-text);text-align:center;pointer-events:none}.viewport-status.is-error{color:#f0a5a5}.spinner{width:1.5rem;height:1.5rem;border:2px solid #ffffff2e;border-top-color:var(--accent-ring);border-radius:50%;animation:spin .7s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.viewport-overlay{position:absolute;display:flex;flex-direction:column;font-size:.76rem;font-variant-numeric:tabular-nums;color:var(--stage-text);text-shadow:0 1px 4px #000;pointer-events:none}.viewport-overlay.is-top-left{top:.8rem;left:.9rem}.viewport-overlay.is-bottom-right{right:.9rem;bottom:.8rem;text-align:right}.viewer-controls{display:flex;gap:1rem;align-items:center;flex-shrink:0;padding-top:.8rem}.slice-control{display:flex;flex:1;gap:.75rem;align-items:center;min-width:0}.slice-control input{flex:1;min-width:0;accent-color:var(--accent)}.slice-counter{min-width:3.6rem;font-size:.82rem;font-variant-numeric:tabular-nums;color:var(--text-muted);text-align:right}.tools{display:flex;gap:.45rem;flex-shrink:0;margin-left:auto}.viewer-hint{flex-shrink:0;margin:.55rem 0 0;font-size:.76rem;color:var(--text-faint);text-align:center}.pdf-frame{flex:1;width:100%;min-height:0;background:var(--sunken);border:1px solid var(--border);border-radius:var(--radius-stage)}.share{position:relative}.share-panel{position:absolute;right:0;z-index:5;display:flex;flex-direction:column;gap:.6rem;align-items:flex-start;width:24rem;margin-top:.5rem;padding:.9rem;background:var(--surface);border:1px solid var(--border);border-radius:14px;box-shadow:var(--shadow-sheet);animation:unfold .16s var(--ease)}.share-url{width:100%;padding:.45rem .6rem;font-family:ui-monospace,SF Mono,Menlo,monospace;font-size:.76rem;color:var(--text);background:var(--sunken);border:1px solid var(--border);border-radius:8px}.share-url:focus{border-color:var(--accent);outline:none}.share-hint{margin:0;font-size:.8rem;color:var(--text-muted)}.share-error{margin:0;font-size:.8rem;color:var(--error)}.share-actions{display:flex;flex-wrap:wrap;gap:.45rem}.notice{display:grid;place-content:center;justify-items:center;gap:.75rem;flex:1;padding:2rem;color:var(--text-muted);text-align:center}.notice .spinner{border-color:var(--border-strong);border-top-color:var(--accent)}.notice.is-error{color:var(--error)}.notice-mark{color:var(--border-strong)}@media(max-width:52rem){.search{max-width:none;flex:1}.topbar-filters{display:none}.workspace{flex-direction:column}.panel{width:100%;max-height:45vh;border-right:0;border-bottom:1px solid var(--border)}.stage{padding:.85rem .9rem .9rem}.stage-header{flex-wrap:wrap}.viewer-hint{display:none}}.login-page h1{margin-bottom:1rem}.login-form{display:flex;flex-direction:column;gap:.75rem;width:min(320px,90vw)}.login-form input{padding:.6rem .8rem;border:1px solid var(--border, #d8d2c8);border-radius:8px;font:inherit;background:var(--panel, #fff);color:inherit}.login-message{font-size:.9rem;margin:0}.login-message.is-error{color:#b3261e}.login-link{background:none;border:none;padding:0;font:inherit;font-size:.9rem;color:inherit;opacity:.7;text-decoration:underline;cursor:pointer}.topbar-session{display:flex;align-items:center;gap:.6rem;margin-left:auto}.session-name{font-size:.9rem;opacity:.75;max-width:16ch;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.upload-control{display:inline-flex;align-items:center;gap:.5rem;padding:.15rem .4rem;border:1px dashed transparent;border-radius:8px}.upload-control.is-dragover{border-color:currentColor;opacity:.85}.upload-message{font-size:.85rem;opacity:.8;max-width:22ch;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.upload-message.is-error{color:#b3261e;opacity:1}
