/* LegalNotebook — courtroom-legible dark UI, iPad-first responsive */
:root{
  --bg:#0e1726; --panel:#16233a; --panel2:#1d2d49; --line:#2b3d5e;
  --text:#eaf0f9; --muted:#9fb0c9; --accent:#3b82f6; --accent2:#2563eb;
  --danger:#ef4444; --ok:#22c55e; --warn:#f59e0b; --yellow:#fde047;
}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html,body{margin:0;height:100%;background:var(--bg);color:var(--text);
  font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;
  -webkit-font-smoothing:antialiased;overscroll-behavior:none}
#app{height:100%}
button{font:inherit;cursor:pointer;border:none;border-radius:8px;padding:10px 14px;
  background:var(--panel2);color:var(--text);transition:background .15s}
button:hover{background:#26375a}
button.primary{background:var(--accent)}
button.primary:hover{background:var(--accent2)}
button.danger{background:transparent;color:var(--danger);border:1px solid var(--danger)}
button.ghost{background:transparent;border:1px solid var(--line)}
input,textarea,select{font:inherit;background:#0b1424;color:var(--text);
  border:1px solid var(--line);border-radius:8px;padding:10px 12px;width:100%}
label{display:block;font-size:13px;color:var(--muted);margin:12px 0 5px}
a{color:var(--accent)}
.hidden{display:none !important}

/* ---------- Auth ---------- */
.auth-wrap{height:100%;display:flex;align-items:center;justify-content:center;padding:20px}
.auth-card{background:var(--panel);border:1px solid var(--line);border-radius:16px;
  padding:30px;width:100%;max-width:400px}
.brand{font-size:26px;font-weight:800;letter-spacing:.5px;margin-bottom:4px}
.brand span{color:var(--accent)}
.sub{color:var(--muted);font-size:14px;margin-bottom:18px}
.auth-card button{width:100%;margin-top:18px}
.switch{text-align:center;margin-top:14px;color:var(--muted);font-size:14px}
.err{color:var(--danger);font-size:14px;margin-top:10px;min-height:18px}

/* ---------- App shell ---------- */
.shell{display:flex;flex-direction:column;height:100%}
.topbar{display:flex;align-items:center;gap:12px;padding:10px 16px;
  background:var(--panel);border-bottom:1px solid var(--line);flex:none}
.topbar .brand{font-size:18px;margin:0}
.topbar .spacer{flex:1}
.crumb{color:var(--muted);font-size:14px}
.main{flex:1;display:flex;min-height:0;position:relative}
.main.dropping{outline:3px dashed var(--accent);outline-offset:-8px}
.main.dropping::after{content:"Drop files to add as exhibits";position:absolute;inset:0;
  display:flex;align-items:center;justify-content:center;font-size:22px;font-weight:700;color:var(--text);
  background:rgba(14,23,38,.75);pointer-events:none;z-index:40}

/* Case list */
.center{max-width:900px;margin:0 auto;padding:24px;width:100%}
.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:16px;margin-top:18px}
.card{background:var(--panel);border:1px solid var(--line);border-radius:14px;padding:18px;cursor:pointer}
.card:hover{border-color:var(--accent)}
.card h3{margin:0 0 6px}
.card p{margin:0;color:var(--muted);font-size:13px}
.row{display:flex;align-items:center;gap:10px}
.section-h{display:flex;align-items:center;gap:12px}
.section-h h2{margin:0;font-size:22px}

/* Case workspace: sidebar + viewer */
.sidebar{width:300px;flex:none;background:var(--panel);border-right:1px solid var(--line);
  display:flex;flex-direction:column;min-height:0}
.divider{flex:none;width:6px;cursor:col-resize;background:var(--line);position:relative;touch-action:none}
.divider::before{content:"";position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);
  width:2px;height:34px;border-radius:2px;background:var(--muted);opacity:.5}
.divider:hover{background:var(--accent)}
.divider:hover::before{opacity:.9}
body.resizing{cursor:col-resize;user-select:none}
body.resizing iframe,body.resizing canvas{pointer-events:none}
.sidebar .head{padding:12px;border-bottom:1px solid var(--line);display:flex;gap:8px}
.sidebar .head button{flex:1;font-size:13px;padding:8px}
.exlist{overflow:auto;flex:1;padding:8px}
.folder-title{color:var(--muted);font-size:12px;text-transform:uppercase;letter-spacing:.5px;
  padding:10px 8px 4px}
.folder-head{display:flex;align-items:center;gap:6px;cursor:pointer;border-radius:6px}
.folder-head:hover{background:var(--panel2)}
.folder-head .fname{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.fdisc{flex:none;width:12px;text-align:center;font-size:10px;color:var(--muted)}
.fcount{flex:none;color:var(--muted);font-size:11px;background:var(--panel2);border:1px solid var(--line);
  padding:0 7px;border-radius:10px;line-height:16px}
.folder-head.open .fcount{background:var(--accent2);color:#fff;border-color:transparent}
.admitted-head .fname{color:var(--ok);font-weight:600}
.admitted-head .fcount{background:var(--ok);color:#04210f;border-color:transparent}
.fmove{flex:none;background:none;border:none;color:var(--muted);font-size:10px;line-height:1;
  padding:1px 4px;border-radius:4px;cursor:pointer}
.fmove:hover{background:var(--bg);color:var(--text)}
.foldmenu{flex:none;background:none;border:none;color:var(--muted);font-size:16px;line-height:1;
  padding:2px 8px;border-radius:6px;cursor:pointer}
.foldmenu:hover{background:var(--panel2);color:var(--text)}
.exmenu{flex:none;background:none;border:none;color:var(--muted);font-size:18px;line-height:1;
  padding:2px 8px;border-radius:6px;cursor:pointer;opacity:.6}
.exmenu:hover{background:var(--bg);color:var(--text);opacity:1}
.exmove{flex:none;background:none;border:1px solid var(--line);color:var(--muted);font-size:15px;line-height:1;
  min-width:34px;min-height:34px;padding:4px 8px;border-radius:8px;cursor:pointer;opacity:.85}
.exmove:hover{background:var(--bg);color:var(--text);opacity:1}
/* Bigger, easier-to-tap arrows on touch devices (iPad) */
@media (pointer:coarse){
  .exmove{font-size:20px;min-width:44px;min-height:44px;padding:8px 12px;opacity:.95}
  .exitem{gap:8px}
}
.grip{flex:none;color:var(--muted);cursor:grab;padding:0 2px;font-size:13px;line-height:1;
  opacity:.45;user-select:none;touch-action:none}
.grip:hover{opacity:1}
.exitem.dragging-src{opacity:.4}
.drag-ghost{position:fixed;z-index:300;pointer-events:none;background:var(--accent);color:#fff;
  padding:6px 12px;border-radius:8px;font-size:13px;max-width:240px;overflow:hidden;
  text-overflow:ellipsis;white-space:nowrap;box-shadow:0 8px 24px #000a}
.folder-title.drop-hover,.folder-head.drop-hover{background:var(--accent);color:#fff;outline:2px dashed #fff6}
.folder-head.drop-hover .fname,.folder-head.drop-hover .foldmenu{color:#fff}

/* sharing */
.card.shared{border-color:var(--accent)}
.card.shared p{color:var(--accent)}
.ro-badge{font-size:13px;color:var(--warn);background:#3a2d12;border:1px solid #5a4a1e;
  padding:6px 10px;border-radius:8px;margin-right:6px;white-space:nowrap}
.shlist{border:1px solid var(--line);border-radius:8px;max-height:30vh;overflow:auto;margin-top:4px}
.shrow{display:flex;align-items:center;gap:8px;padding:8px 10px;border-bottom:1px solid var(--line)}
.shrow:last-child{border-bottom:none}
.shemail{flex:1;font-size:14px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.shrevoke{background:transparent;border:1px solid var(--danger);color:var(--danger);padding:4px 10px;font-size:13px}
.shrevoke:hover{background:var(--danger);color:#fff}
.exitem{display:flex;align-items:center;gap:10px;padding:9px 10px;border-radius:8px;cursor:pointer}
.exitem:hover{background:var(--panel2)}
.exitem.active{background:var(--accent2)}
.exitem .ico{width:24px;text-align:center;flex:none}
.exitem .nm{flex:1;font-size:14px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.exitem .badge{font-size:10px;background:var(--ok);color:#04210f;padding:1px 6px;border-radius:6px}
.tag{font-size:11px;color:var(--muted)}
.searchbar{padding:8px;border-bottom:1px solid var(--line);position:relative}
.searchbar input{padding:8px 28px 8px 10px;font-size:14px}
.searchbar .clr{position:absolute;right:16px;top:15px;cursor:pointer;color:var(--muted);font-size:16px;background:none;border:none;padding:0}
.sresult{padding:9px 10px;border-radius:8px;cursor:pointer}
.sresult:hover{background:var(--panel2)}
.sresult .ttl{font-size:14px;display:flex;gap:8px;align-items:center}
.sresult .snip{font-size:12px;color:var(--muted);margin-top:3px;line-height:1.4;
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.sresult mark{background:var(--yellow);color:#111;border-radius:2px;padding:0 1px}
.shint{padding:14px;color:var(--muted);font-size:13px;text-align:center}

/* select / mass-delete bar */
#seltoggle.active{background:var(--accent)}
.selbar{display:flex;align-items:center;gap:10px;padding:8px 10px;border-bottom:1px solid var(--line);
  background:var(--panel2);font-size:13px}
.selbar .selall{display:flex;align-items:center;gap:6px;margin:0;color:var(--text)}
.selbar input[type=checkbox]{width:auto}
.selbar #selcount{color:var(--muted)}
.selbar #seldel{padding:6px 12px}
.selbar #seldel:disabled{opacity:.4;cursor:default}
.selbar #selcancel{padding:6px 12px}
.exitem .exck{width:auto;flex:none;margin:0}
.exitem.picked{background:var(--panel2);box-shadow:inset 3px 0 0 var(--accent)}

/* link-retrieval modal */
.lnkrow{display:flex;gap:10px;padding:9px 0;border-top:1px solid var(--line)}
.lnkrow:first-child{border-top:none}
.lnkchk{margin:0}
.lnkchk input{width:auto}
.lnkmeta{flex:1;min-width:0}
.lnkttl{font-size:14px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.lnkurl{font-size:12px;color:var(--accent);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.lnkst{margin-top:3px}

.viewer-wrap{flex:1;display:flex;flex-direction:column;min-width:0;background:#0a1120}
.toolbar{display:flex;align-items:center;gap:6px;padding:8px 10px;background:var(--panel);
  border-bottom:1px solid var(--line);flex-wrap:wrap;flex:none}
.tool{width:42px;height:42px;display:flex;align-items:center;justify-content:center;
  border-radius:9px;background:var(--panel2);font-size:18px}
.tool.active{background:var(--accent);box-shadow:0 0 0 2px rgba(59,130,246,.4)}
.tool.sep{width:1px;height:28px;background:var(--line);margin:0 4px;pointer-events:none}
.swatch{width:26px;height:26px;border-radius:50%;border:2px solid #fff3;cursor:pointer}
.swatch.active{border-color:#fff}
.canvas-stage{flex:1;position:relative;overflow:auto;display:flex;align-items:flex-start;
  justify-content:center;padding:16px}
/* Word-document rendering */
.docpage{background:#fff;color:#16181d;width:100%;max-width:850px;padding:46px 54px;
  font-family:"Times New Roman",Georgia,serif;font-size:16px;line-height:1.6;box-shadow:0 6px 30px #0008}
.docpage h1,.docpage h2,.docpage h3,.docpage h4{margin:.7em 0 .35em;font-family:inherit;line-height:1.25}
.docpage p{margin:0 0 .8em}
.docpage ul,.docpage ol{margin:0 0 .8em 1.4em}
.docpage table{border-collapse:collapse;margin:.5em 0}
.docpage td,.docpage th{border:1px solid #999;padding:4px 9px}
.docpage img{max-width:100%}
.present .docpage.present-doc{max-height:96vh;overflow:auto;margin:auto}
/* docx-preview host: let the library reproduce the document's real page layout (alignment, fonts, margins). */
.docpage.docx-host{padding:0;max-width:none;background:transparent;color:inherit;font-family:"Century Schoolbook","Times New Roman",Georgia,serif;font-size:14pt;line-height:normal}
.docpage.docx-host .docx{margin:0 auto 16px;box-shadow:0 2px 14px rgba(0,0,0,.4);background:#fff}
.docpage.docx-host section.docx{overflow:visible}
.present .docpage.present-doc.docx-host{background:transparent;box-shadow:none}
.stage-inner{position:relative;margin:auto}
/* continuous scroll ("all pages") view */
.scrollcol{display:flex;flex-direction:column;align-items:center;gap:14px;padding:14px;width:100%}
.scrollpage{background:#fff;box-shadow:0 4px 18px #0007;max-width:100%;border-radius:2px}
/* side-by-side comparison */
.cmp-split{display:flex;flex:1;min-height:0;gap:6px;padding:6px;background:#0a1120}
.cmp-pane{flex:1;display:flex;flex-direction:column;min-width:0;background:var(--panel);
  border:2px solid var(--line);border-radius:8px;overflow:hidden;cursor:pointer}
.cmp-pane.active{border-color:var(--accent)}
.cmp-head{display:flex;align-items:center;gap:8px;padding:6px 10px;background:var(--panel2);border-bottom:1px solid var(--line)}
.cmp-name{flex:1;font-size:13px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.cmp-nav{display:flex;align-items:center;gap:6px}
.cmp-nav button{padding:2px 10px;font-size:14px}
.cmp-pi{font-size:12px;color:var(--muted);min-width:48px;text-align:center}
.cmp-stage{flex:1;overflow:auto;display:flex;align-items:flex-start;justify-content:center;padding:8px;position:relative}
.cmp-canvas{background:#fff;box-shadow:0 4px 16px #0006;max-width:100%}
.cmp-empty{color:var(--muted);margin:auto;font-size:13px;text-align:center;padding:20px}
.cmp-doc{max-width:100%}
@media (max-width:820px){ .cmp-split{flex-direction:column} }
#pdfCanvas,#mediaEl{display:block;max-width:100%;background:#fff;box-shadow:0 6px 30px #0008}
#annoCanvas{position:absolute;left:0;top:0;touch-action:none}
.pagebar{display:flex;align-items:center;gap:10px;justify-content:center;padding:8px;
  background:var(--panel);border-top:1px solid var(--line);flex:none}
.clipbar{display:flex;align-items:center;gap:8px;justify-content:center;flex-wrap:wrap;padding:8px;
  background:var(--panel);border-top:1px solid var(--line);flex:none}
.clipbar button{padding:7px 12px}
.clipbar #clip-info{min-width:130px;text-align:center}
.empty{margin:auto;color:var(--muted);text-align:center;padding:40px}
/* Add-to-case menu */
.addgrid{display:flex;flex-direction:column;gap:10px;margin-top:6px}
.addgrid button{display:flex;flex-direction:column;align-items:flex-start;gap:2px;text-align:left;
  padding:12px 14px;background:var(--bg);border:1px solid var(--line);border-radius:10px;
  color:var(--text);font-size:15px;cursor:pointer}
.addgrid button:hover{border-color:var(--accent)}
.addgrid button small{color:var(--muted);font-size:12px;font-weight:400}
/* Chronology panel */
.chrono-bg{align-items:stretch;justify-content:center;padding:24px}
.chrono-box{background:var(--panel);border:1px solid var(--line);border-radius:14px;width:100%;max-width:1200px;
  display:flex;flex-direction:column;overflow:hidden;max-height:100%}
.chrono-head{display:flex;align-items:center;gap:12px;padding:12px 16px;border-bottom:1px solid var(--line);flex:none}
.chrono-title{font-size:17px;font-weight:600}
.chrono-title .muted{color:var(--muted);font-weight:400}
.chrono-actions{margin-left:auto;display:flex;gap:8px;flex-wrap:wrap}
.chrono-scroll{overflow:auto}
.chrono-table{width:100%;border-collapse:collapse;font-size:13px}
.chrono-table th,.chrono-table td{border:1px solid var(--line);padding:7px 9px;text-align:left;vertical-align:top}
.chrono-table thead th{position:sticky;top:0;background:#1f3864;color:#fff;z-index:1}
.chrono-table td.ch-num,.chrono-table td.ch-exh{text-align:center}
.chrono-table td.ch-date{font-weight:600;white-space:nowrap}
.chrono-table td.ch-exh{color:var(--ok);font-weight:700;font-size:15px}
.chrono-table .ch-src,.chrono-table .ch-doc{color:var(--muted);font-size:11px;font-style:italic;margin-top:3px}
.chrono-table tbody tr:hover{background:var(--panel2)}
.ch-acts{white-space:nowrap}
.ch-acts button{background:none;border:none;color:var(--muted);cursor:pointer;font-size:14px;padding:3px 6px;border-radius:5px;min-height:30px}
.ch-acts button:hover{background:var(--bg);color:var(--text)}
@media (max-width:820px){ .chrono-box{max-width:100%} .chrono-table{font-size:12px} .ch-acts button{min-height:40px;font-size:16px} }

/* Modal */
.modal-bg{position:fixed;inset:0;background:#000a;display:flex;align-items:center;
  justify-content:center;z-index:50;padding:20px}
.modal{background:var(--panel);border:1px solid var(--line);border-radius:16px;
  padding:24px;width:100%;max-width:460px;max-height:90vh;overflow:auto}
.modal h3{margin:0 0 6px}
.modal .actions{display:flex;gap:10px;margin-top:20px}
.modal .actions button{flex:1}

/* Presentation mode */
.present{position:fixed;inset:0;background:#000;z-index:100;display:flex;
  flex-direction:column;align-items:center;justify-content:center}
.present .stage{flex:1;width:100%;display:flex;align-items:center;justify-content:center;position:relative}
.present img,.present canvas,.present video{max-width:100%;max-height:100%;object-fit:contain}
.present-ctrl{position:fixed;bottom:16px;left:50%;transform:translateX(-50%);
  display:flex;gap:10px;background:#1a1a1ad0;backdrop-filter:blur(6px);
  padding:8px 12px;border-radius:14px;opacity:.25;transition:opacity .2s}
.present-ctrl:hover{opacity:1}
.present .blank{background:#000;position:absolute;inset:0}
.present-ctrl button.on{background:var(--accent)}
.laser-dot{position:fixed;width:24px;height:24px;border-radius:50%;pointer-events:none;z-index:120;display:none;
  transform:translate(-50%,-50%);
  background:radial-gradient(circle,rgba(255,50,50,.95) 0%,rgba(255,0,0,.6) 40%,rgba(255,0,0,0) 72%);
  box-shadow:0 0 18px 7px rgba(255,0,0,.5)}

/* toast */
.toast{position:fixed;bottom:20px;left:50%;transform:translateX(-50%);
  background:#000c;border:1px solid var(--line);padding:10px 16px;border-radius:10px;
  z-index:200;font-size:14px}

/* responsive: iPad portrait & phones collapse the sidebar to a drawer */
@media (max-width:820px){
  .sidebar{position:absolute;z-index:30;height:100%;box-shadow:6px 0 30px #000a;
    transform:translateX(-100%);transition:transform .2s}
  .sidebar.open{transform:none}
  .menu-btn{display:flex !important}
}
.menu-btn{display:none}

/* ---------- Admin console ---------- */
.tabbtn{padding:7px 16px;border-radius:9px;font-size:14px}
.admtable{width:100%;border-collapse:collapse;background:var(--panel);border:1px solid var(--line);border-radius:12px;overflow:hidden}
.admtable th{text-align:left;font-size:12px;text-transform:uppercase;letter-spacing:.4px;color:var(--muted);
  padding:10px 12px;background:var(--panel2);border-bottom:1px solid var(--line);white-space:nowrap}
.admtable td{padding:10px 12px;border-bottom:1px solid var(--line);font-size:14px;vertical-align:middle}
.admtable tr:last-child td{border-bottom:none}
.admtable code{background:var(--bg);border:1px solid var(--line);border-radius:6px;padding:2px 7px;font-size:13px;letter-spacing:.5px}
button.mini{padding:4px 10px;font-size:12px}
.pill{display:inline-block;font-size:11px;padding:2px 9px;border-radius:999px;border:1px solid var(--line);
  background:var(--panel2);color:var(--muted);vertical-align:middle}
.pill-ok{background:rgba(34,197,94,.15);color:#4ade80;border-color:transparent}
.pill-off{background:rgba(239,68,68,.15);color:#f87171;border-color:transparent}
.pill-admin{background:rgba(59,130,246,.18);color:#93c5fd;border-color:transparent}
.pill-act{background:var(--bg);color:var(--text);font-family:ui-monospace,monospace;text-transform:none}
