/* Case workspace: server-rendered, responsive, and compatible with the strict CSP. */
:root { color-scheme: dark; --bg:#0b1220; --panel:#101b2d; --text:#e7edf7; --muted:#a4b4cc; --border:#2b3c56; --accent:#69adff; --nav-hover:#20324b; }
.mode-admin { --bg:#19120b; --panel:#291f13; --text:#fff1dc; --muted:#cdbb9f; --border:#71502a; --accent:#ffc16e; --nav-hover:#4c351c; }
* { box-sizing:border-box; }
body { margin:0; background:var(--bg); color:var(--text); font:15px/1.6 system-ui,-apple-system,"Segoe UI",sans-serif; }
a { color:var(--accent); text-underline-offset:3px; }
button,input,select,textarea { font:inherit; }
button,a,input,select,textarea,summary { touch-action:manipulation; }
:focus-visible { outline:3px solid #a5d1ff; outline-offset:3px; }
h1,h2,h3 { line-height:1.25; margin:0 0 .8rem; overflow-wrap:anywhere; }
h1 { font-size:clamp(1.7rem,3vw,2.4rem); } h2 { font-size:1.2rem; } h3 { font-size:1rem; margin-top:1.3rem; }
p { margin:.6rem 0 1rem; } hr { border:0; border-top:1px solid var(--border); width:100%; }
.layout { display:flex; min-height:100vh; }
.sidebar { flex:0 0 245px; padding:1.2rem; background:var(--panel); border-right:1px solid var(--border); display:flex; flex-direction:column; gap:.8rem; }
.brand img { display:block; width:100%; height:auto; border-radius:.4rem; }
.platform-title { font-size:1.08rem; font-weight:700; line-height:1.4; color:var(--accent); margin:.3rem 0 .8rem; }
.mode-banner { display:flex; justify-content:space-between; align-items:center; flex-wrap:wrap; gap:.5rem; border:1px solid var(--border); border-left:5px solid var(--accent); border-radius:.4rem; padding:.8rem 1rem; margin-bottom:1.5rem; background:var(--panel); }
.mode-banner strong { color:var(--accent); font-size:1.05rem; } .mode-banner span { color:var(--muted); font-size:.85rem; }
.eyebrow { text-transform:uppercase; letter-spacing:.12em; color:var(--muted); font-size:.72rem; font-weight:700; }
.menu { display:flex; flex-direction:column; gap:.2rem; }
.menu-item { padding:.5rem .7rem; color:var(--text); border-radius:.4rem; text-decoration:none; overflow-wrap:anywhere; }
.menu-item:hover,.menu-item.active { background:var(--nav-hover); } .sidebar-label { padding:.4rem .7rem; font-size:.8rem; }
.session-info { margin-top:auto; border-top:1px solid var(--border); padding-top:1rem; display:grid; gap:.7rem; overflow-wrap:anywhere; }
.content { min-width:0; flex:1; max-width:1600px; padding:2rem; }
.page-header,.section-heading { display:flex; align-items:center; justify-content:space-between; gap:1rem; margin-bottom:1.5rem; flex-wrap:wrap; }
.panel { background:var(--panel); border:1px solid var(--border); padding:1.4rem; border-radius:.7rem; min-width:0; }
.narrow { max-width:640px; margin:2rem auto; } .form-panel { max-width:900px; }
.cards { display:grid; grid-template-columns:repeat(auto-fit,minmax(min(100%,300px),1fr)); gap:1rem; }
.case-card { display:flex; flex-direction:column; } .case-card h2 { margin-top:1.2rem; } .case-card small { margin-top:auto; }
.stats { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:1rem; }
.stat { text-decoration:none; display:grid; color:var(--text); } .stat strong { font-size:2rem; color:var(--accent); } .stat span { color:var(--muted); }
.two-column { display:grid; grid-template-columns:1fr 1fr; gap:1rem; }
.section-gap { margin-top:1.5rem; } .actions { display:flex; gap:.6rem; align-items:center; flex-wrap:wrap; }
.btn,.btn-primary,.btn-danger { display:inline-block; padding:.5rem .9rem; border:1px solid var(--border); border-radius:.4rem; cursor:pointer; text-align:center; text-decoration:none; line-height:1.5; }
.btn { background:#19283d; color:var(--text); } .btn-primary { background:#3078cb; border-color:#4d98ed; color:white; font-weight:600; }
.btn:hover { background:#29415f; } .btn-primary:hover { background:#2567b3; }
.btn-danger { color:#fff0f0; background:#7c2b33; border-color:#bd5862; } .btn-danger:hover { background:#98353f; }
.mode-admin .btn { background:#3d2c18; } .mode-admin .btn:hover { background:#594020; }
.mode-admin .btn-primary { color:#241604; background:#e7a647; border-color:#ffc16e; } .mode-admin .btn-primary:hover { background:#ffc16e; }
.mode-admin input,.mode-admin select,.mode-admin textarea { background:#181109; border-color:#846039; }
.mode-admin .badge:not([class*="status-"]) { background:#4a331b; }
.source-card { padding:1rem; border:1px solid var(--border); border-radius:.4rem; } .source-card h3 { margin-top:0; }
.form-grid { display:grid; gap:1rem; } .form-row { display:grid; gap:.35rem; }
label { font-weight:600; } input,select,textarea { width:100%; padding:.65rem .75rem; border:1px solid #455b79; background:#0b1424; color:var(--text); border-radius:.35rem; min-width:0; }
input[type=hidden] { display:none; } input[type=file] { padding:.6rem; } textarea { min-height:120px; resize:vertical; } select[multiple] { min-height:160px; }
.search { display:flex; gap:.6rem; margin-bottom:1.3rem; } .search input { max-width:700px; }
.user-search { flex-wrap:wrap; } .user-search > div:first-child { flex:1 1 260px; } .user-search > div:nth-child(2) { flex:0 1 200px; } .user-search input { max-width:none; }
.help,.muted { color:var(--muted); } .help { font-size:.83rem; } .error { color:#ffb4b4; }
.badge { display:inline-block; font-size:.75rem; padding:.15rem .55rem; border:1px solid var(--border); border-radius:2rem; background:#1a2c45; }
.status-accepted { color:#b4f5ce; background:#174b39; } .status-rejected,.status-failed { color:#ffc2c2; background:#552b36; }
.status-uncertain { color:#ffdc9b; background:#4c3a21; } .status-delivered { color:#bde2ff; background:#16466a; }
.flash,.notice { padding:1rem; border-radius:.5rem; border:1px solid var(--border); margin:0 0 1rem; background:#1b304b; }
.flash-success { background:#174631; } .flash-warning { background:#4c3a21; } .flash-error { background:#552b36; }
.tabs { display:flex; gap:.3rem; flex-wrap:wrap; margin-bottom:1.5rem; border-bottom:1px solid var(--border); }
.tabs a { padding:.6rem .8rem; text-decoration:none; color:var(--muted); border-bottom:3px solid transparent; } .tabs a.active { color:var(--text); border-color:var(--accent); } .tabs span { font-size:.75rem; margin-left:.3rem; }
.table-wrap { overflow-x:auto; } table { width:100%; border-collapse:collapse; text-align:left; } th,td { padding:.8rem; border-bottom:1px solid var(--border); vertical-align:top; } th { color:var(--muted); font-size:.85rem; } td { overflow-wrap:anywhere; }
.empty { padding:2rem; text-align:center; color:var(--muted); }
.prose { white-space:pre-wrap; overflow-wrap:anywhere; } .wrap { overflow-wrap:anywhere; word-break:break-word; } .excerpt { white-space:pre-line; overflow-wrap:anywhere; }
pre { overflow:auto; padding:1rem; background:#0a1423; border-radius:.4rem; } code { font-size:.88em; } .hashes { display:grid; grid-template-columns:auto minmax(0,1fr); gap:.6rem 1rem; } .hashes dd { margin:0; overflow-wrap:anywhere; } .hashes dt { color:var(--muted); }
.timeline { list-style:none; padding:0; display:grid; gap:1rem; } .timeline time { color:var(--accent); font-weight:600; margin-right:.6rem; } .timeline h2 { margin-top:.6rem; }
.relationship-list { padding-left:1.2rem; } .relationship-list li { margin-bottom:.7rem; overflow-wrap:anywhere; }
details { margin-top:.5rem; } summary { color:var(--accent); cursor:pointer; } .pagination { display:flex; gap:1rem; align-items:center; margin-top:1.5rem; }
.sr-only,.skip-link { position:absolute; width:1px; height:1px; padding:0; overflow:hidden; clip:rect(0,0,0,0); white-space:nowrap; }
.skip-link:focus { clip:auto; width:auto; height:auto; padding:.7rem; background:var(--panel); z-index:10; }
@media(max-width:1100px) { .stats { grid-template-columns:repeat(2,minmax(0,1fr)); } .two-column { grid-template-columns:1fr; } }
@media(max-width:760px) { .layout { flex-direction:column; } .sidebar { flex:auto; border-right:0; border-bottom:1px solid var(--border); padding:1rem; } .brand { max-width:180px; } .sidebar .eyebrow { display:none; } .menu { flex-direction:row; flex-wrap:wrap; } .menu hr,.sidebar-label { display:none; } .session-info { display:flex; flex-wrap:wrap; align-items:center; justify-content:space-between; } .content { padding:1rem; } .panel { padding:1rem; } .hashes { grid-template-columns:1fr; gap:.3rem; } .hashes dd { margin-bottom:.6rem; } }
