:root { --bg:#0b111b; --surface:#111a28; --surface-2:#162133; --line:#27364b; --ink:#e8eef8; --muted:#91a1b8; --blue:#4da3ff; --blue-soft:#1b3d62; --green:#50d19a; --amber:#f3b34c; --red:#fb7171; --font:"Inter","Segoe UI",sans-serif; --mono:"Cascadia Mono","SFMono-Regular",Consolas,monospace; }
* { box-sizing:border-box; } [hidden] { display:none !important; }
body { margin:0; min-height:100vh; background:radial-gradient(900px 500px at 78% -120px,#16365b 0%,transparent 62%),var(--bg); color:var(--ink); font-family:var(--font); font-size:15px; }
body.test-environment::before { content:""; position:fixed; inset:0; z-index:1000; border:5px solid #ff4fb3; box-shadow:inset 0 0 24px rgba(255,79,179,.28); pointer-events:none; }
body.test-environment::after { content:"TEST"; position:fixed; right:14px; bottom:14px; z-index:1001; padding:6px 10px; border:1px solid #ff8dcc; border-radius:6px; color:#fff; background:#d81b7d; box-shadow:0 5px 18px rgba(0,0,0,.35); font-family:var(--mono); font-size:11px; font-weight:800; letter-spacing:.12em; pointer-events:none; }
body.closed-beta-locked { overflow:hidden; }
body.closed-beta-locked > .topbar,body.closed-beta-locked > .app-shell { filter:grayscale(1) blur(3px); opacity:.3; pointer-events:none; user-select:none; }
.closed-beta-gate { position:fixed; inset:0; z-index:900; display:grid; place-items:center; padding:24px; background:rgba(4,8,14,.7); backdrop-filter:blur(5px); }
.closed-beta-card { width:min(520px,100%); padding:34px; border:1px solid #3b5069; border-radius:14px; background:linear-gradient(145deg,#152235,#0d1521 70%); box-shadow:0 28px 90px rgba(0,0,0,.62); text-align:center; }
.closed-beta-logo { width:92px; height:92px; object-fit:contain; filter:drop-shadow(0 12px 24px rgba(0,0,0,.4)); }
.closed-beta-card h1 { margin:9px 0 14px; font-size:clamp(28px,6vw,40px); }
.closed-beta-lead,.closed-beta-contact,.closed-beta-existing { color:var(--muted); line-height:1.6; }
.closed-beta-contact a { color:var(--blue); font-weight:700; }
.closed-beta-login { display:grid; gap:10px; margin-top:24px; text-align:left; }
.closed-beta-login label { color:#c8d5e5; font-size:12px; font-weight:700; }
.closed-beta-login label span { color:var(--muted); font-weight:400; }
.closed-beta-login input { width:100%; padding:11px 12px; border:1px solid var(--line); border-radius:7px; color:var(--ink); background:#080e17; }
.closed-beta-login .button { margin-top:2px; }
.closed-beta-existing { margin:14px 0 0; font-size:12px; }
button,input,select,textarea { font:inherit; } button { cursor:pointer; } button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,a:focus-visible { outline:2px solid var(--blue); outline-offset:2px; }
.topbar { height:68px; display:flex; align-items:center; gap:22px; padding:0 28px; border-bottom:1px solid var(--line); background:rgba(11,17,27,.88); backdrop-filter:blur(14px); position:sticky; top:0; z-index:10; }
.brand { display:flex; align-items:center; gap:10px; color:var(--ink); font-size:20px; font-weight:760; letter-spacing:-.04em; text-decoration:none; }.brand-logo { width:34px; height:34px; object-fit:contain; }.topbar-copy { display:flex; gap:14px; color:var(--muted); font-size:13px; }.live-dot { border-left:1px solid var(--line); padding-left:14px; color:#b8c7d9; }.live-dot::before { content:""; display:inline-block; width:6px; height:6px; margin:0 6px 1px 0; border-radius:50%; background:var(--green); }.topbar .primary { margin-left:auto; }
.account-bar { display:flex; align-items:center; gap:10px; margin-left:auto; }
.title-edit-row { display:flex; align-items:center; gap:10px; }
.title-edit-row h1 { margin-right:2px; }
.parse-edit-button { padding:5px 9px; font-size:12px; }
.run-tags { display:flex; justify-content:flex-end; align-items:center; gap:7px; min-height:26px; }
.run-tag { display:inline-flex; align-items:center; padding:5px 9px; border:1px solid var(--line); border-radius:4px; color:#b9c8d9; background:var(--surface); font-family:var(--mono); font-size:11px; font-weight:700; letter-spacing:.04em; text-transform:uppercase; }
.run-tag.sortie { border-color:#9c5149; color:#ffaca0; background:rgba(140,60,52,.14); }
.run-tag.limbus { border-color:#6a589a; color:#c8b5ff; background:rgba(91,70,145,.16); }
.run-tag.sheol { border-color:#5c7e45; color:#b7e58d; background:rgba(76,116,50,.16); }
.run-tag.besieged { border-color:#9a7040; color:#ffd08a; background:rgba(151,101,39,.16); }
.run-tag.public { border-color:#31745d; color:var(--green); background:rgba(50,140,103,.13); }
.run-tag.private { color:#93a6bd; }
.account-bar .avatar { width:28px; height:28px; border-radius:50%; object-fit:cover; border:1px solid var(--line); }
.account-bar .account-name { color:var(--ink); font-size:13px; font-weight:650; }
.account-bar .button { padding:7px 11px; }
.topbar:has(.account-bar:not([hidden])) .primary { margin-left:12px; }
.login-invite { width:160px; padding:7px 9px; border:1px solid var(--line); border-radius:6px; color:var(--ink); background:#0a111b; font-size:12px; }
.cloud-parse-row { display:grid; grid-template-columns:minmax(0,1fr) auto; align-items:center; gap:12px; width:100%; padding:0 12px 0 0; border-bottom:1px solid var(--line); color:var(--ink); background:transparent; }
.cloud-parse-row:hover { background:var(--surface-2); }
.cloud-parse-main { display:grid; grid-template-columns:minmax(0,1fr) auto; gap:12px; width:100%; padding:14px 20px; border:0; color:var(--ink); background:transparent; text-align:left; }
.parse-row-edit { flex:0 0 auto; padding:6px 9px; font-size:11px; }
.parse-name-line { display:flex; align-items:center; gap:7px; min-width:0; }
.cloud-parse-row .name { min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; font-weight:680; }
.cloud-parse-row .meta-line { display:flex; flex-wrap:wrap; align-items:center; gap:6px; margin-top:6px; color:var(--muted); font-size:12px; }
.cloud-parses-empty { margin:0; padding:20px; }
.parse-list-tags { display:inline-flex; gap:5px; margin-left:3px; }
.parse-list-tag { padding:2px 5px; border:1px solid var(--line); border-radius:4px; color:#aebed1; font-family:var(--mono); font-size:9px; font-weight:700; text-transform:uppercase; }
.parse-list-tag.sortie { border-color:#9c5149; color:#ffaca0; }
.parse-list-tag.limbus { border-color:#6a589a; color:#c8b5ff; }
.parse-list-tag.sheol { border-color:#5c7e45; color:#b7e58d; }
.parse-list-tag.besieged { border-color:#9a7040; color:#ffd08a; }
.parse-list-tag.public { border-color:#31745d; color:var(--green); }
.parse-list-state { display:inline-flex; align-items:center; gap:5px; padding:2px 6px; border:1px solid #3f678c; border-radius:99px; color:#a9d5ff; background:rgba(52,111,163,.12); font-size:9px; font-weight:720; text-transform:uppercase; }
.parse-list-state i { width:5px; height:5px; border-radius:50%; background:var(--blue); box-shadow:0 0 0 3px rgba(77,163,255,.12); animation:processing-pulse 1.4s ease-in-out infinite; }
.parse-list-state.queued { border-color:#796331; color:#e7c476; background:rgba(121,91,36,.12); }.parse-list-state.queued i { background:var(--amber); box-shadow:0 0 0 3px rgba(243,179,76,.12); }.parse-list-state.failed { border-color:#75414b; color:#ff9eac; background:rgba(141,54,70,.12); }.parse-list-state.failed i { background:var(--red); box-shadow:none; animation:none; }
@keyframes processing-pulse { 50% { opacity:.45; transform:scale(.8); } }
.parse-filters { display:flex; flex-wrap:wrap; align-items:end; gap:9px; padding:0 20px 16px; border-bottom:1px solid var(--line); }
.parse-filters input,.parse-filters select { min-height:36px; padding:7px 9px; border:1px solid var(--line); border-radius:6px; color:var(--ink); background:#0a111b; }
.parse-filters input[type="search"] { min-width:220px; }
.parse-filters input[type="date"] { min-width:142px; color-scheme:dark; cursor:pointer; }
.parse-filters input[type="date"]::-webkit-calendar-picker-indicator { cursor:pointer; filter:invert(.8); }
.parse-filters label { display:grid; gap:3px; color:var(--muted); font-size:10px; text-transform:uppercase; }
.profile-empty-note { padding:28px 20px !important; text-align:center; line-height:1.6; }
.processing-status { position:relative; margin:-6px 0 24px; padding:22px; overflow:hidden; border:1px solid #315f8a; border-radius:11px; background:linear-gradient(135deg,rgba(25,61,96,.7),rgba(15,27,43,.94) 58%); box-shadow:0 14px 36px rgba(0,0,0,.18),inset 3px 0 0 var(--blue); }
.processing-status::after { content:""; position:absolute; top:-100px; right:-70px; width:220px; height:220px; border-radius:50%; background:rgba(77,163,255,.07); pointer-events:none; }
.processing-status-copy { position:relative; z-index:1; display:flex; align-items:flex-start; gap:15px; max-width:820px; }
.processing-status-icon { flex:0 0 auto; display:grid; place-items:center; width:42px; height:42px; border:1px solid #4b82b4; border-radius:50%; background:#102b46; }
.processing-status-icon span { width:18px; height:18px; border:2px solid rgba(154,207,255,.3); border-top-color:#9ecfff; border-radius:50%; animation:processing-spin .9s linear infinite; }
.processing-status h2 { margin:3px 0 6px; font-size:20px; letter-spacing:-.025em; }
.processing-status-copy p:last-child { max-width:760px; margin:0; color:#adbed2; line-height:1.55; }
.processing-progress { position:relative; z-index:1; height:7px; margin-top:20px; overflow:hidden; border:1px solid #294967; border-radius:99px; background:#091522; }
.processing-progress span { display:block; width:42%; height:100%; border-radius:inherit; background:linear-gradient(90deg,#317ac0,#70b9ff,#317ac0); background-size:200% 100%; box-shadow:0 0 12px rgba(77,163,255,.55); animation:processing-bar 1.35s ease-in-out infinite; }
.processing-steps { position:relative; z-index:1; display:grid; grid-template-columns:repeat(4,1fr); gap:8px; margin:14px 0 0; padding:0; list-style:none; }
.processing-steps li { display:flex; align-items:center; gap:7px; color:#71869e; font-size:11px; font-weight:650; }
.processing-steps li::before { content:""; flex:0 0 auto; width:7px; height:7px; border:1px solid #40536a; border-radius:50%; background:#111d2c; }
.processing-steps li.complete { color:#8fbaa8; }.processing-steps li.complete::before { border-color:#3d9d76; background:var(--green); box-shadow:0 0 7px rgba(80,209,154,.35); }
.processing-steps li.current { color:#cae5ff; }.processing-steps li.current::before { border-color:#8bc8ff; background:var(--blue); box-shadow:0 0 0 3px rgba(77,163,255,.14); }
.processing-status-footer { position:relative; z-index:1; display:flex; justify-content:space-between; align-items:center; gap:14px; margin-top:18px; padding-top:14px; border-top:1px solid rgba(75,111,148,.45); color:#8298b1; font-size:11px; }
.processing-status-footer .button { padding:7px 10px; font-size:11px; }
.processing-status[data-state="queued"] { border-color:#766032; background:linear-gradient(135deg,rgba(89,67,27,.45),rgba(15,27,43,.94) 58%); box-shadow:0 14px 36px rgba(0,0,0,.18),inset 3px 0 0 var(--amber); }
.processing-status[data-state="queued"] .eyebrow { color:#f0be60; }.processing-status[data-state="queued"] .processing-status-icon { border-color:#8b6d34; background:#342819; }.processing-status[data-state="queued"] .processing-status-icon span { border-color:rgba(243,179,76,.25); border-top-color:#f3c46f; }
.processing-status[data-state="failed"] { border-color:#75414b; background:linear-gradient(135deg,rgba(103,38,50,.4),rgba(15,27,43,.94) 58%); box-shadow:0 14px 36px rgba(0,0,0,.18),inset 3px 0 0 var(--red); }
.processing-status[data-state="failed"] .eyebrow { color:#ff909e; }.processing-status[data-state="failed"] .processing-status-icon { border-color:#8a4955; background:#3b1c24; }.processing-status[data-state="failed"] .processing-status-icon span { width:16px; height:2px; border:0; border-radius:2px; background:#ff8998; transform:rotate(-45deg); animation:none; }.processing-status[data-state="failed"] .processing-status-icon span::after { content:""; display:block; width:16px; height:2px; border-radius:2px; background:#ff8998; transform:rotate(90deg); }.processing-status[data-state="failed"] .processing-progress { border-color:#5b303a; }.processing-status[data-state="failed"] .processing-progress span { width:100%; background:#a44052; box-shadow:none; animation:none; }.processing-status[data-state="failed"] .processing-steps li.current { color:#ffabb7; }.processing-status[data-state="failed"] .processing-steps li.current::before { border-color:#ff8998; background:var(--red); box-shadow:0 0 0 3px rgba(251,113,113,.13); }
@keyframes processing-spin { to { transform:rotate(360deg); } }
@keyframes processing-bar { 0% { transform:translateX(-105%); background-position:0 0; } 100% { transform:translateX(245%); background-position:200% 0; } }
@media (prefers-reduced-motion:reduce) { .processing-status-icon span,.processing-progress span { animation-duration:3s; } }
.app-shell { display:grid; grid-template-columns:300px minmax(0,1fr); min-height:calc(100vh - 68px); }.sidebar { padding:26px 18px; border-right:1px solid var(--line); background:rgba(10,17,27,.45); }.sidebar-heading,.section-heading,.dialog-heading { display:flex; justify-content:space-between; align-items:flex-start; gap:12px; }.sidebar h2,.section-heading h2,.dialog-heading h2 { margin:2px 0 0; font-size:17px; letter-spacing:-.02em; }.eyebrow { margin:0; color:var(--blue); font-size:11px; font-weight:750; letter-spacing:.1em; text-transform:uppercase; }.icon-button { display:grid; place-items:center; width:30px; height:30px; padding:0; border:1px solid var(--line); border-radius:7px; color:var(--muted); background:transparent; font-size:19px; }.icon-button:hover { color:var(--ink); border-color:#476382; }.players-nav { width:100%; margin-top:16px; padding:9px 11px; border:1px solid var(--line); border-radius:7px; color:var(--ink); background:var(--surface); text-align:left; font-size:13px; font-weight:680; }.players-nav:hover { border-color:#527192; background:var(--surface-2); }.guide-nav { border-color:#3c719e; color:#bdddff; background:linear-gradient(135deg,rgba(38,105,164,.22),rgba(22,64,105,.14)); box-shadow:inset 3px 0 0 var(--blue); }.guide-nav:hover { border-color:var(--blue); color:#e5f2ff; background:rgba(50,125,190,.25); }.admin-nav { border-color:#76529d; color:#e2c8ff; background:linear-gradient(135deg,rgba(126,68,171,.25),rgba(67,35,101,.16)); box-shadow:inset 3px 0 0 #b777ef; }.admin-nav:hover { border-color:#b777ef; color:#f2e5ff; background:rgba(126,68,171,.3); }.run-filter { width:100%; margin-top:10px; }.run-list { display:grid; gap:7px; margin-top:14px; }.run-row { width:100%; padding:12px; border:1px solid transparent; border-radius:8px; color:var(--ink); background:transparent; text-align:left; }.run-row:hover,.run-row.active { background:var(--surface); border-color:var(--line); }.run-row.active { box-shadow:inset 3px 0 0 var(--blue); }.run-name { display:flex; align-items:center; min-width:0; gap:7px; font-weight:680; }.run-name-text { min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }.run-meta { display:flex; align-items:center; gap:7px; margin-top:5px; color:var(--muted); font-size:12px; }.run-date { margin-top:4px; color:#70839b; font-size:11px; }.run-type { flex:0 0 auto; display:inline-block; padding:2px 5px; border:1px solid var(--line); border-radius:4px; color:#93a6bd; font-family:var(--mono); font-size:9px; font-weight:650; letter-spacing:.04em; text-transform:uppercase; }.run-type.sortie { border-color:#9c5149; color:#ffaca0; background:rgba(140,60,52,.14); }.run-type.limbus { border-color:#6a589a; color:#c8b5ff; background:rgba(91,70,145,.16); }.run-type.sheol { border-color:#5c7e45; color:#b7e58d; background:rgba(76,116,50,.16); }.sidebar-footer { margin:28px 8px 0; color:var(--muted); font-size:12px; line-height:1.5; }
.workspace { width:min(1440px,100%); padding:36px clamp(24px,4vw,64px) 64px; }.home-view { max-width:1080px; margin:0 auto; padding:6vh 0 40px; }.home-hero { max-width:720px; margin:0 auto; text-align:center; }.home-logo { display:block; width:180px; height:180px; margin:0 auto 24px; object-fit:contain; filter:drop-shadow(0 18px 34px rgba(0,0,0,.35)); }.home-hero h1 { margin:8px 0 16px; font-size:clamp(40px,6vw,68px); line-height:1; letter-spacing:-.055em; }.home-lead { max-width:660px; margin:0 auto; color:var(--muted); font-size:18px; line-height:1.65; }.home-actions { display:flex; justify-content:center; gap:10px; margin-top:28px; }.home-features { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:14px; margin-top:70px; }.home-features article { padding:22px; border:1px solid var(--line); border-radius:10px; background:var(--surface); }.home-features h2 { margin:7px 0 9px; font-size:17px; }.home-features article > p:last-child { margin:0; color:var(--muted); line-height:1.6; }.parse-guide-view { padding-bottom:60px; }.parse-guide-view > .run-hero { margin-bottom:20px; }.guide-steps { display:grid; gap:12px; }.guide-steps article { display:grid; grid-template-columns:42px minmax(0,1fr); gap:16px; padding:22px; border:1px solid var(--line); border-radius:10px; background:var(--surface); }.guide-number { display:grid; place-items:center; width:34px; height:34px; border:1px solid #3d658b; border-radius:7px; color:var(--blue); background:#10243a; font-family:var(--mono); font-weight:800; }.guide-steps h2,.guide-tip h2 { margin:3px 0 9px; font-size:18px; }.guide-steps p,.guide-tip p:last-child { margin:7px 0; color:var(--muted); line-height:1.6; }.guide-steps pre { margin:10px 0; padding:11px 13px; overflow:auto; border:1px solid var(--line); border-radius:7px; color:#cfe5ff; background:#09101a; font-family:var(--mono); }.guide-steps code,.guide-tip code { color:#a9d4ff; font-family:var(--mono); }.guide-steps .button { margin-top:9px; }.guide-downloads { display:flex; flex-wrap:wrap; gap:9px; margin:12px 0; }.guide-downloads .button { display:inline-flex; align-items:center; text-decoration:none; }.guide-tip { margin-top:16px; padding:22px; border:1px solid #6f5a2c; border-radius:10px; background:rgba(132,94,28,.1); }.admin-breakdowns { margin-top:16px; }.admin-breakdown-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:14px; padding:0 20px 20px; }.admin-breakdown { padding:16px; border:1px solid var(--line); background:var(--surface-2); }.admin-breakdown h3 { margin:0 0 10px; font-size:14px; }.admin-breakdown > div { display:flex; justify-content:space-between; gap:20px; padding:7px 0; border-top:1px solid var(--line); color:var(--muted); }.admin-breakdown strong { color:var(--text); }.clickable-row { cursor:pointer; }.clickable-row:hover { background:var(--surface-2); }.empty-state { max-width:500px; margin:12vh auto; text-align:center; }.empty-logo { display:block; width:112px; height:112px; margin:0 auto 22px; object-fit:contain; }.empty-state h1 { margin:7px 0 12px; font-size:32px; letter-spacing:-.045em; }.empty-state > p:not(.eyebrow) { margin:0 auto 22px; max-width:390px; color:var(--muted); line-height:1.6; }
h1 { margin:5px 0 8px; font-size:30px; letter-spacing:-.045em; }.with-page-logo { display:flex; align-items:center; gap:16px; min-width:0; flex:1; }.page-heading-logo { flex:0 0 auto; width:68px; height:68px; object-fit:contain; }.page-heading-copy { min-width:0; }.meta { margin:0; color:var(--muted); line-height:1.5; }.run-hero,.encounter-hero { display:flex; justify-content:space-between; align-items:flex-start; gap:24px; margin-bottom:26px; }.run-controls { display:grid; justify-items:end; gap:12px; }.run-actions { display:flex; align-items:center; gap:8px; }.warnings { max-width:420px; color:var(--amber); font-size:12px; text-align:right; }.warning { margin-bottom:5px; }.metric-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:12px; margin-bottom:28px; }.metric { padding:17px 18px; border:1px solid var(--line); border-radius:9px; background:var(--surface); }.metric-label { display:block; color:var(--muted); font-size:12px; }.metric-value { display:block; margin-top:6px; font-size:23px; font-weight:730; letter-spacing:-.03em; }.content-card { border:1px solid var(--line); border-radius:10px; background:rgba(17,26,40,.83); }.content-card > .section-heading { padding:19px 20px 15px; }.quiet { color:var(--muted); font-size:12px; }.profile-link { display:inline-block; margin-top:5px; color:var(--blue); font-size:12px; font-weight:650; text-decoration:none; }.encounter-timeline-card { margin-bottom:28px; }.encounter-timeline { padding:0 20px 20px; overflow-x:auto; cursor:grab; scrollbar-width:none; -ms-overflow-style:none; }.encounter-timeline::-webkit-scrollbar { display:none; }.encounter-timeline.dragging { cursor:grabbing; user-select:none; }.timeline-scroll-content { display:table; min-width:100%; }.timeline-content { display:flex; align-items:stretch; gap:8px; }.timeline-encounter { flex:0 0 168px; min-height:82px; padding:12px; border:1px solid #3d658b; border-radius:7px; color:#dcecff; background:#163a5d; text-align:left; }.timeline-encounter:hover { border-color:#8ac5ff; background:#1d4d79; }.timeline-encounter.boss { border-color:#9c5149; color:#ffd0ca; background:#542c2a; }.timeline-encounter.nm { border-color:#b87833; color:#ffe0a6; background:#52391f; }.timeline-encounter.naakual { border-color:#8062c7; color:#dfd2ff; background:#332751; }.timeline-encounter-name { display:block; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; font-weight:720; }.timeline-encounter-meta { display:block; margin-top:7px; color:#9db2ca; font-size:11px; }.timeline-encounter-time { display:block; margin-top:4px; color:#7790ab; font-family:var(--mono); font-size:10px; }.timeline-encounter.boss .timeline-encounter-meta { color:#e5aaa1; }.timeline-encounter.nm .timeline-encounter-meta { color:#edbf78; }.timeline-encounter.naakual .timeline-encounter-meta { color:#bfabea; }.timeline-gap { flex:0 0 var(--gap-width); align-self:center; height:1px; background:#31465e; }.timeline-axis { display:flex; justify-content:space-between; margin-top:14px; padding-top:8px; border-top:1px solid var(--line); color:var(--muted); font-family:var(--mono); font-size:10px; }.timeline-axis span { position:relative; }.timeline-axis span::before { content:""; position:absolute; top:-11px; left:0; width:1px; height:4px; background:#51657c; }.timeline-axis span:last-child { text-align:right; }.encounter-tools { display:flex; align-items:center; gap:10px; }.encounter-tools input { width:190px; padding:7px 9px; border:1px solid var(--line); border-radius:6px; color:var(--ink); background:#0a111b; font-size:12px; }.encounter-tools input::placeholder { color:#6e8098; }.encounter-list { display:grid; border-top:1px solid var(--line); }.encounter-row { display:grid; grid-template-columns:minmax(0,1fr) auto auto; align-items:center; gap:18px; width:100%; padding:16px 20px; border:0; border-bottom:1px solid var(--line); color:var(--ink); background:transparent; text-align:left; }.encounter-row:last-child { border-bottom:0; }.encounter-row:hover { background:var(--surface-2); }.encounter-name { font-weight:680; }.encounter-meta { margin-top:4px; color:var(--muted); font-size:12px; }.badge { padding:4px 7px; border:1px solid var(--line); border-radius:4px; color:#b9c8d9; font-family:var(--mono); font-size:11px; text-transform:uppercase; }.badge.complete { color:var(--green); }.badge.partial,.badge.recovered { color:var(--amber); }.badge.boss { border-color:#8d4a42; color:#ff9b8e; background:rgba(164,65,51,.14); }.badge.nm { border-color:#9a6328; color:#ffd18b; background:rgba(176,112,42,.15); }.badge.naakual { border-color:#7055b2; color:#d5c4ff; background:rgba(112,85,178,.17); }.back-button { padding:0; margin:0 0 24px; border:0; color:var(--muted); background:transparent; font-size:13px; }.back-button:hover { color:var(--blue); }.toggle { display:flex; align-items:center; gap:9px; padding:9px 11px; border:1px solid var(--line); border-radius:7px; color:var(--muted); font-size:12px; }.toggle input,.check-row input { accent-color:var(--blue); }
.players-card,.player-profile,.overall-card { margin-bottom:28px; }.run-player-breakdown { margin-bottom:28px; }.analysis-grid { display:grid; grid-template-columns:minmax(0,1.7fr) minmax(260px,.8fr); gap:16px; }.chart-card { margin-top:16px; }.chart-wrap { height:245px; padding:0 14px 14px; }.lower-stack { display:grid; grid-template-columns:minmax(0,1fr); gap:16px; margin-top:16px; }.player-heading { align-items:center !important; } select { min-width:145px; padding:8px 28px 8px 9px; border:1px solid var(--line); border-radius:6px; color:var(--ink); background:var(--surface-2); }.classify-controls { display:flex; flex-wrap:wrap; align-items:center; gap:9px; padding:12px 20px; border-top:1px solid var(--line); color:var(--muted); font-size:12px; }.classify-controls > span { margin-right:auto; color:var(--ink); font-weight:650; }.classify-controls label { display:flex; align-items:center; gap:5px; }.classify-controls select { min-width:100px; padding:6px 23px 6px 7px; font-size:12px; }.classify-controls .button { padding:7px 10px; }.player-metrics { display:grid; grid-template-columns:repeat(4,1fr); border-top:1px solid var(--line); }.player-metrics .metric { padding:13px; border:0; border-right:1px solid var(--line); border-bottom:1px solid var(--line); border-radius:0; background:transparent; }.player-metrics .metric-value { font-size:17px; }.detail-tabs { display:flex; gap:0; border-top:1px solid var(--line); }.detail-tab { flex:1; padding:10px 12px; border:0; border-bottom:2px solid transparent; color:var(--muted); background:transparent; font-size:12px; font-weight:650; }.detail-tab:hover { color:var(--ink); }.detail-tab.active { color:var(--blue); border-bottom-color:var(--blue); }.detail-tab-panel .section-heading { padding:14px 16px 8px; }.unverified-badge { display:inline-block; margin-left:4px; padding:1px 5px; border:1px solid #8d6b2f; border-radius:3px; color:#e6c27a; font-size:10px; font-weight:650; letter-spacing:.02em; text-transform:uppercase; vertical-align:middle; }.inferred-badge { display:inline-block; margin-left:4px; padding:1px 5px; border:1px solid #416f8c; border-radius:3px; color:#91cae8; font-size:10px; font-weight:650; letter-spacing:.02em; text-transform:uppercase; vertical-align:middle; }.ambiguous-badge { display:inline-block; margin-left:4px; padding:1px 5px; border:1px solid #6b7f8d; border-radius:3px; color:#a8bdd0; font-size:10px; font-weight:650; letter-spacing:.02em; text-transform:uppercase; vertical-align:middle; }.melee-rounds-block { border-top:1px solid var(--line); margin-bottom:16px; }.melee-rounds-block > .section-heading { padding:19px 20px 15px; }.table-scroll { overflow:auto; }.table-scroll table { width:100%; border-collapse:collapse; font-size:13px; white-space:nowrap; }.sortable { cursor:pointer; user-select:none; }.sortable::after { content:"↕"; margin-left:6px; color:#60758d; font-size:10px; }.sortable[data-active-sort="asc"]::after { content:"↑"; color:var(--blue); }.sortable[data-active-sort="desc"]::after { content:"↓"; color:var(--blue); }.status-audit { border-bottom:1px dotted #60758d; cursor:help; }.status-audit:hover { border-bottom-color:var(--blue); }
tr.selected td { background:rgba(77,163,255,.08); } th,td { padding:11px 14px; border-bottom:1px solid var(--line); text-align:right; } th:first-child,td:first-child { text-align:left; } th { color:var(--muted); font-size:11px; font-weight:700; letter-spacing:.055em; text-transform:uppercase; } tr:last-child td { border-bottom:0; } td { color:#cdd8e7; } td a { color:var(--blue); text-decoration:none; font-weight:650; } .player-swatch { display:inline-block; width:8px; height:8px; margin:0 8px 1px 0; border-radius:50%; background:var(--player-color); box-shadow:0 0 0 2px color-mix(in srgb, var(--player-color) 18%, transparent); }.timeline { height:342px; overflow:auto; border-top:1px solid var(--line); padding:6px 0; font-family:var(--mono); font-size:11px; }.timeline div { padding:9px 16px; border-bottom:1px solid rgba(39,54,75,.62); color:#b4c3d5; }.timeline div:last-child { border:0; }.result { margin:16px 0 0; padding:12px; overflow:auto; border:1px solid var(--line); border-radius:7px; color:#c9d5e5; background:#09101a; font-family:var(--mono); font-size:12px; white-space:pre-wrap; }
.button { padding:9px 14px; border:1px solid transparent; border-radius:7px; font-weight:680; font-size:13px; }.primary { color:#06101c; background:var(--blue); }.primary:hover { background:#77b8ff; }.secondary,.ghost { border-color:var(--line); color:var(--ink); background:transparent; }.secondary:hover,.ghost:hover { border-color:#527192; background:var(--surface-2); }.danger { border-color:#743e4a; color:#ff9cac; background:rgba(149,53,70,.12); }.danger:hover { border-color:#c85c70; background:rgba(149,53,70,.24); }
.modal { position:fixed; inset:0; z-index:20; }.modal-backdrop { position:absolute; inset:0; background:rgba(3,8,14,.72); backdrop-filter:blur(3px); }.import-dialog { position:relative; width:min(600px,calc(100% - 32px)); margin:10vh auto; padding:23px; border:1px solid #38506e; border-radius:11px; background:#111c2b; box-shadow:0 24px 80px #000a; }.hint { color:var(--muted); line-height:1.5; }.import-dialog form { display:grid; gap:10px; margin-top:20px; }.import-dialog label:not(.check-row) { color:#c7d4e5; font-size:12px; font-weight:650; }.path-row { display:flex; gap:8px; } input[type="text"] { min-width:0; flex:1; padding:10px; border:1px solid var(--line); border-radius:7px; color:var(--ink); background:#0a111b; }.check-row { display:flex; align-items:center; gap:8px; margin-top:4px; color:var(--muted); font-size:12px; }.dialog-actions { display:flex; justify-content:flex-end; gap:8px; margin-top:11px; }
.admin-reports-card { margin-bottom:16px; overflow:hidden; }
.admin-reports-heading { align-items:center; border-bottom:1px solid var(--line); }
.admin-report-controls { display:flex; align-items:center; gap:8px; }
.admin-report-controls label { color:var(--muted); font-size:10px; font-weight:750; letter-spacing:.06em; text-transform:uppercase; }
.admin-report-controls select { min-width:112px; padding:7px 28px 7px 9px; font-size:12px; }
.admin-report-controls .button { padding:8px 11px; }
.admin-reports-feedback { display:none; margin:12px 20px 0; padding:10px 12px; border:1px solid var(--line); border-radius:7px; color:#b8c8db; background:#0d1724; font-size:12px; }
.admin-reports-feedback:not(:empty) { display:block; }
.admin-reports-feedback[data-state="success"] { border-color:#326c58; color:#9be6c3; background:rgba(42,123,91,.12); }
.admin-reports-feedback[data-state="error"] { border-color:#75414b; color:#ffabb7; background:rgba(141,54,70,.12); }
.admin-reports-list { display:grid; }
.admin-reports-empty { padding:34px 20px; color:var(--muted); text-align:center; }
.admin-report { padding:18px 20px; border-bottom:1px solid var(--line); }
.admin-report:last-child { border-bottom:0; }
.admin-report:hover { background:rgba(22,33,51,.38); }
.admin-report-top { display:flex; justify-content:space-between; align-items:flex-start; gap:16px; }
.admin-report-meta { display:flex; flex-wrap:wrap; align-items:center; gap:7px; }
.admin-report-kind,.admin-report-state { display:inline-flex; padding:3px 6px; border:1px solid var(--line); border-radius:4px; color:#b6c7da; font-family:var(--mono); font-size:9px; font-weight:750; letter-spacing:.04em; text-transform:uppercase; }
.admin-report-kind.parse { border-color:#3d658b; color:#9dcfff; }.admin-report-kind.profile { border-color:#715a94; color:#d7bcff; }.admin-report-kind.other { border-color:#6c6250; color:#d8c49e; }
.admin-report-state.open { border-color:#8a672c; color:#f0c66e; }.admin-report-state.resolved { border-color:#33715b; color:#83deb5; }.admin-report-state.dismissed { color:#899bb1; }
.admin-report-date { color:#71849b; font-size:11px; }
.admin-report-message { margin:13px 0; color:#d2dcea; line-height:1.6; white-space:pre-wrap; }
.admin-report-target { display:flex; justify-content:space-between; align-items:center; gap:14px; padding:12px 13px; border:1px solid var(--line); border-radius:8px; background:#0c1521; }
.admin-report-target-main { min-width:0; }
.admin-report-target-link { display:block; overflow:hidden; color:#9dceff; font-size:13px; font-weight:720; text-decoration:none; text-overflow:ellipsis; white-space:nowrap; }
.admin-report-target-link:hover { color:#d7ebff; text-decoration:underline; }
.admin-report-target-meta { margin-top:4px; color:var(--muted); font-size:11px; }
.admin-report-target-tags { display:flex; flex-wrap:wrap; justify-content:flex-end; gap:5px; }
.admin-report-actions { display:flex; flex-wrap:wrap; gap:7px; margin-top:13px; }
.admin-report-actions .button { padding:7px 10px; font-size:11px; }
.admin-report-actions .button:disabled { cursor:wait; opacity:.55; }
.admin-report-edit { margin-top:12px; border:1px solid var(--line); border-radius:8px; background:rgba(9,17,28,.55); }
.admin-report-edit summary { padding:10px 12px; color:#aebed1; cursor:pointer; font-size:11px; font-weight:700; }
.admin-report-edit[open] summary { border-bottom:1px solid var(--line); }
.admin-report-edit-form { display:grid; grid-template-columns:minmax(180px,1fr) 140px auto; gap:10px; align-items:end; padding:12px; }
.admin-report-edit-form label { display:grid; gap:5px; min-width:0; color:#91a3ba; font-size:9px; font-weight:750; letter-spacing:.06em; text-transform:uppercase; }
.admin-report-edit-form label:first-child { grid-column:1 / 2; }
.admin-report-edit-form label.admin-report-description { grid-column:1 / -1; }
.admin-report-edit-form input,.admin-report-edit-form select,.admin-report-edit-form textarea { width:100%; min-width:0; padding:8px 9px; border:1px solid #31445d; border-radius:6px; color:var(--ink); background:#09111c; }
.admin-report-edit-form textarea { min-height:70px; line-height:1.45; resize:vertical; text-transform:none; }
.admin-report-edit-form .button { min-height:36px; }
.admin-report-closed-note { margin:11px 0 0; color:#8295ad; font-size:11px; }
.privacy-view { max-width:1120px; margin:0 auto; padding-bottom:56px; }
.privacy-hero { position:relative; align-items:center; margin-bottom:20px; padding:26px 28px; overflow:hidden; border:1px solid #315276; border-radius:12px; background:linear-gradient(120deg,rgba(24,67,108,.72),rgba(17,28,44,.92) 58%,rgba(22,43,67,.8)); }
.privacy-hero::after { content:""; position:absolute; right:-70px; top:-105px; width:270px; height:270px; border-radius:50%; background:radial-gradient(circle,rgba(77,163,255,.2),transparent 68%); pointer-events:none; }
.privacy-hero .meta { max-width:720px; color:#aec0d5; }
.privacy-hero-badge { position:relative; z-index:1; flex:0 0 auto; padding:7px 10px; border:1px solid #4777a5; border-radius:999px; color:#cbe5ff; background:rgba(13,39,64,.72); font-family:var(--mono); font-size:10px; font-weight:750; letter-spacing:.06em; text-transform:uppercase; }
.privacy-grid { display:grid; grid-template-columns:minmax(320px,.88fr) minmax(440px,1.12fr); gap:18px; align-items:start; }
.privacy-card { overflow:hidden; box-shadow:0 18px 50px rgba(0,0,0,.12); }
.privacy-card > .section-heading { align-items:center; border-bottom:1px solid var(--line); background:rgba(20,32,49,.62); }
.privacy-card-body { padding:20px; }
.privacy-lead,.privacy-report-intro p { margin:0; color:#c0ccdc; line-height:1.7; }
.privacy-facts { display:grid; gap:0; margin-top:19px; border-top:1px solid var(--line); }
.privacy-facts article { display:grid; grid-template-columns:34px minmax(0,1fr); gap:12px; padding:17px 0; border-bottom:1px solid var(--line); }
.privacy-fact-icon { display:grid; place-items:center; width:32px; height:32px; border:1px solid #3e678f; border-radius:8px; color:#8ec6ff; background:#10263d; font-family:var(--mono); font-size:10px; font-weight:800; }
.privacy-facts h3 { margin:1px 0 5px; font-size:13px; letter-spacing:-.01em; }
.privacy-facts p { margin:0; color:var(--muted); font-size:12px; line-height:1.6; }
.privacy-retention-note { display:grid; gap:4px; margin-top:18px; padding:13px 14px; border:1px solid #66552f; border-radius:8px; color:#d9c69b; background:rgba(127,91,28,.1); font-size:12px; line-height:1.55; }
.privacy-retention-note strong { color:#f1d18c; font-size:11px; letter-spacing:.06em; text-transform:uppercase; }
.privacy-policy-link { display:flex; justify-content:space-between; align-items:center; gap:12px; margin-top:16px; padding:11px 13px; border:1px solid var(--line); border-radius:8px; color:#bdddff; background:#0d1724; font-size:12px; font-weight:680; text-decoration:none; }
.privacy-policy-link:hover { border-color:#4c7198; background:#132238; }
.privacy-response-label { color:#8fa4bd; font-size:10px; font-weight:700; letter-spacing:.05em; text-transform:uppercase; }
.privacy-report-intro { padding-bottom:4px; }
.privacy-report-form { display:grid; gap:18px; padding:0 20px 20px; }
.privacy-report-fields { display:grid; grid-template-columns:minmax(150px,.65fr) minmax(0,1fr) minmax(0,1fr); gap:12px; }
.privacy-field { display:grid; align-content:start; gap:7px; min-width:0; color:var(--muted); }
.privacy-field > span { color:#aebed1; font-size:10px; font-weight:750; letter-spacing:.07em; text-transform:uppercase; }
.privacy-field input,.privacy-field select,.privacy-field textarea { width:100%; min-width:0; border:1px solid #31445d; border-radius:8px; color:var(--ink); background:#09111c; transition:border-color .15s ease,box-shadow .15s ease,background .15s ease; }
.privacy-field input,.privacy-field select { min-height:42px; padding:9px 11px; }
.privacy-field select { min-width:0; }
.privacy-field textarea { min-height:136px; padding:12px; line-height:1.55; resize:vertical; }
.privacy-field input:hover,.privacy-field select:hover,.privacy-field textarea:hover { border-color:#45617f; }
.privacy-field input:focus,.privacy-field select:focus,.privacy-field textarea:focus { border-color:var(--blue); background:#0c1725; box-shadow:0 0 0 3px rgba(77,163,255,.1); }
.privacy-field input::placeholder,.privacy-field textarea::placeholder { color:#62758e; }
.privacy-field small { color:#70839a; font-size:10px; line-height:1.45; }
.privacy-parse-field { grid-column:span 2; }
.privacy-message-field { padding-top:2px; }
.privacy-form-footer { display:flex; justify-content:space-between; align-items:center; gap:18px; padding-top:17px; border-top:1px solid var(--line); }
.privacy-submit-copy { display:grid; gap:3px; color:#73869e; font-size:10px; line-height:1.4; }
.privacy-submit-copy strong { color:#9eb0c5; font-size:11px; }
.privacy-form-footer .button { flex:0 0 auto; min-width:145px; min-height:40px; }
.privacy-form-footer .button:disabled { cursor:wait; opacity:.62; }
.privacy-report-status { display:none; margin:0; padding:11px 13px; border:1px solid var(--line); border-radius:8px; color:#b8c8db; background:#0d1724; font-size:12px; line-height:1.5; }
.privacy-report-status:not(:empty) { display:block; }
.privacy-report-status[data-state="success"] { border-color:#326c58; color:#9be6c3; background:rgba(42,123,91,.12); }
.privacy-report-status[data-state="duplicate"] { border-color:#725c2e; color:#e8c780; background:rgba(139,98,29,.12); }
.privacy-report-status[data-state="error"] { border-color:#75414b; color:#ffabb7; background:rgba(141,54,70,.12); }
@media (max-width:1050px) { .privacy-grid { grid-template-columns:1fr; }.privacy-summary-card .privacy-facts { grid-template-columns:repeat(3,minmax(0,1fr)); gap:14px; border-top:0; }.privacy-summary-card .privacy-facts article { grid-template-columns:1fr; align-content:start; padding:15px; border:1px solid var(--line); border-radius:8px; }.privacy-summary-card .privacy-fact-icon { margin-bottom:2px; } }
@media (max-width:700px) { .processing-status { padding:18px; }.processing-status-copy { gap:11px; }.processing-status-icon { width:36px; height:36px; }.processing-status h2 { font-size:18px; }.processing-steps { grid-template-columns:repeat(2,1fr); gap:10px; }.processing-status-footer { align-items:flex-start; flex-direction:column; }.processing-status-footer .button { width:100%; }.admin-reports-heading { align-items:flex-start; flex-direction:column; }.admin-report-controls { width:100%; flex-wrap:wrap; }.admin-report-controls select { flex:1; }.admin-report-top,.admin-report-target { align-items:flex-start; flex-direction:column; }.admin-report-target-tags { justify-content:flex-start; }.admin-report-edit-form { grid-template-columns:1fr; }.admin-report-edit-form label,.admin-report-edit-form label:first-child,.admin-report-edit-form label.admin-report-description { grid-column:auto; }.privacy-hero { align-items:flex-start; padding:22px; }.privacy-hero-badge { margin-top:4px; }.privacy-summary-card .privacy-facts { grid-template-columns:1fr; }.privacy-summary-card .privacy-facts article { grid-template-columns:34px minmax(0,1fr); }.privacy-report-fields { grid-template-columns:1fr 1fr; }.privacy-kind-field,.privacy-parse-field { grid-column:1 / -1; }.privacy-form-footer { align-items:stretch; flex-direction:column; }.privacy-form-footer .button { width:100%; }.privacy-response-label { display:none; } }
@media (max-width:850px) { .home-features { grid-template-columns:1fr; margin-top:42px; }.home-view { padding-top:2vh; }.home-logo { width:140px; height:140px; }.app-shell { grid-template-columns:1fr; }.sidebar { border-right:0; border-bottom:1px solid var(--line); padding:17px; }.sidebar-footer { display:none; }.run-list { grid-auto-flow:column; grid-auto-columns:minmax(190px,230px); overflow:auto; padding-bottom:3px; }.workspace { padding:27px 18px 48px; }.analysis-grid { grid-template-columns:1fr; }.timeline { height:250px; }.topbar { padding:0 18px; }.topbar-copy { display:none; } }
@media (max-width:540px) { .privacy-hero { display:grid; gap:14px; }.privacy-hero-badge { width:max-content; }.privacy-card-body { padding:17px; }.privacy-report-form { padding:0 17px 17px; }.privacy-report-fields { grid-template-columns:1fr; }.privacy-kind-field,.privacy-parse-field { grid-column:auto; }.page-heading-logo { width:54px; height:54px; }.with-page-logo { gap:11px; }.home-actions { flex-direction:column; }.admin-breakdown-grid { grid-template-columns:1fr; }.guide-steps article { grid-template-columns:1fr; }.encounter-tools input { width:130px; }.metric-grid { grid-template-columns:1fr; }.run-hero,.encounter-hero { display:block; }.run-controls { justify-items:start; margin-top:16px; }.warnings { margin-top:0; text-align:left; }.toggle { margin-top:16px; width:max-content; max-width:100%; }.encounter-row { grid-template-columns:minmax(0,1fr) auto; }.encounter-row .encounter-meta:last-child { display:none; }.player-metrics { grid-template-columns:repeat(2,1fr); }.path-row { display:grid; grid-template-columns:1fr; }.topbar .primary { padding:8px 10px; }.brand { font-size:18px; } }
.lifecycle-heading { border-top:1px solid var(--line); padding-top:14px; padding-bottom:8px; }.lifecycle-heading h3 { margin:0; font-size:14px; }.lifecycle-legend { display:flex; flex-wrap:wrap; justify-content:flex-end; gap:6px; text-align:right; }.lifecycle-chart-viewport { height:72px; max-height:240px; overflow-y:auto; overflow-x:hidden; }.lifecycle-chart-inner { position:relative; min-width:0; height:72px; padding:0 14px 14px; }
.error-banner { position:fixed; top:14px; left:50%; z-index:60; display:flex; align-items:center; gap:12px; max-width:min(680px,calc(100vw - 28px)); padding:12px 12px 12px 16px; transform:translateX(-50%); border:1px solid #8d4a42; border-radius:9px; color:#ffd6cf; background:#3d1f1c; box-shadow:0 12px 32px rgba(0,0,0,.45); font-size:13px; line-height:1.45; }
#error-banner-text { min-width:0; overflow-wrap:anywhere; }
.error-banner .icon-button { flex:0 0 auto; border-color:#8d4a42; color:#ffd6cf; }
.error-banner .icon-button:hover { border-color:#ff9b8e; color:#fff; }
