:root {
  --bg:#0b1220;
  --card:#101a2e;
  --card2:#0f172a;
  --line:#26344f;
  --text:#e5eefc;
  --muted:#9fb0ca;
  --accent:#38bdf8;
  --ok:#22c55e;
  --danger:#ef4444;
}
*{box-sizing:border-box}
body{margin:0;background:linear-gradient(180deg,#07101f,#0b1220 30%,#0b1220);color:var(--text);font:14px/1.45 Inter,ui-sans-serif,system-ui,-apple-system,Segoe UI,Roboto,Arial,sans-serif}
.wrap{max-width:1240px;margin:auto;padding:24px}
.hero{display:flex;gap:20px;align-items:flex-start;justify-content:space-between;margin:8px 0 24px}
.eyebrow{margin:0 0 6px;color:var(--accent);font-weight:800;letter-spacing:.12em;font-size:12px}
h1{margin:0;font-size:30px;line-height:1.15}
.subtitle{color:var(--muted);margin:8px 0 0}
.badge{border:1px solid #24566d;background:#0b2431;color:#a8e7ff;border-radius:999px;padding:8px 12px;white-space:nowrap}
.card{background:rgba(16,26,46,.94);border:1px solid var(--line);border-radius:18px;padding:20px;margin:16px 0;box-shadow:0 12px 35px rgba(0,0,0,.15)}
h2{font-size:18px;margin:0 0 16px}
.grid{display:grid;gap:14px}.cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}
label{display:flex;flex-direction:column;gap:7px;color:#cbd7ea;font-weight:650}
input,select,button{font:inherit}
input,select{width:100%;background:#0a1324;color:var(--text);border:1px solid #31415e;border-radius:10px;padding:10px 11px;outline:none}
input:focus,select:focus{border-color:#38bdf8;box-shadow:0 0 0 3px rgba(56,189,248,.12)}
input[type=range]{padding:0;height:38px}
button{border:0;border-radius:10px;padding:10px 14px;background:#1f6f96;color:white;font-weight:800;cursor:pointer}
button:hover{filter:brightness(1.08)}
button:disabled{opacity:.55;cursor:not-allowed}
button.secondary{background:#25344c}button.primary{background:#0284c7}button.danger{background:#9f2d33}
.hint{color:var(--muted);margin:10px 0 0}
.notice{margin-top:14px;padding:12px 14px;border-radius:12px;border:1px solid #2f4a62;background:#0b1728;color:#c9d8ea}.notice.success{border-color:#1f6a42;background:#0c251b}
.section-row{display:flex;align-items:center;justify-content:space-between;gap:12px}
.table-wrap{overflow:auto;border:1px solid var(--line);border-radius:12px}
table{width:100%;border-collapse:collapse;min-width:920px}th,td{padding:10px;border-bottom:1px solid #25344c;text-align:left;vertical-align:top}th{background:#0c1628;color:#b8cae3;font-size:12px;text-transform:uppercase;letter-spacing:.04em}tr:last-child td{border-bottom:0}.coord{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12px;color:#b9e6ff;line-height:1.55}
.sessions{display:grid;gap:14px}.session-card{border:1px solid var(--line);background:#0d1728;border-radius:15px;padding:15px}.session-top{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:12px}.session-title{font-size:16px;font-weight:850}.session-meta{color:var(--muted);font-size:12px}.upload-row{display:grid;grid-template-columns:1fr auto;gap:10px;align-items:end}.session-actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:10px}.selection-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-top:12px}.select-box{border:1px solid #2b3d59;background:#0a1324;border-radius:12px;padding:10px}.select-box strong{display:block;margin-bottom:7px}.thumb{width:100%;aspect-ratio:1/1;object-fit:cover;border-radius:9px;border:1px solid #334563;background:#08101d}.file-name{font-size:11px;color:var(--muted);margin-top:5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.actions{display:flex;gap:10px;flex-wrap:wrap}.status{margin-top:14px;padding:12px 14px;background:#0a1324;border:1px solid #2b3d59;border-radius:12px;white-space:pre-wrap}footer{color:var(--muted);text-align:center;padding:14px 0 28px}
dialog{width:min(92vw,760px);background:#0b1220;color:var(--text);border:1px solid #334563;border-radius:16px;padding:14px}dialog::backdrop{background:rgba(0,0,0,.72)}.dialog-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px}#previewCanvas{width:100%;height:auto;border-radius:12px;background:#050b14}
@media(max-width:900px){.cols-3{grid-template-columns:1fr 1fr}.selection-grid{grid-template-columns:1fr}.hero{flex-direction:column}.badge{white-space:normal}}
@media(max-width:620px){.wrap{padding:12px}.cols-3{grid-template-columns:1fr}.upload-row{grid-template-columns:1fr}.actions button,.session-actions button{width:100%}h1{font-size:24px}}
