/* ── AP LANG FORGE · style.css ── */
@import url('https://fonts.googleapis.com/css2?family=Cinzel:wght@400;600;900&family=Crimson+Pro:ital,wght@0,300;0,400;0,600;1,300;1,400&family=JetBrains+Mono:wght@400;500&display=swap');

:root {
  --navy: #080f1a;
  --navy2: #0d1825;
  --navy3: #132035;
  --navy4: #1a2d4a;
  --navy5: rgba(34,56,96,.5);
  --gold: #c8a84b;
  --gold2: #e8cb72;
  --gold3: #8a6e2e;
  --gold-glow: rgba(200,168,75,.18);
  --cream: #f0e8d5;
  --dim: #7a9ab8;
  --red: #e05252;
  --green: #4caf84;
  --purple: #9b6be8;
  --orange: #e8834c;
  --teal: #4cb8b8;
  --hl-thesis: rgba(224,82,82,.2);
  --hl-transition: rgba(155,107,232,.2);
  --hl-passive: rgba(232,203,72,.18);
  --hl-vocab: rgba(76,184,132,.18);
  --hl-grammar: rgba(232,131,76,.2);
  --hl-evidence: rgba(76,184,184,.18);
}

*{box-sizing:border-box;margin:0;padding:0}
html,body{height:100%;overflow:hidden}
body{font-family:'Crimson Pro',Georgia,serif;background:var(--navy);color:var(--cream);display:flex;flex-direction:column}
.screen{display:none;flex-direction:column;height:100%}
.screen.active{display:flex}

/* ── LOGIN ── */
#screen-login{align-items:center;justify-content:center;background:radial-gradient(ellipse at 30% 40%,#0f2040 0%,var(--navy) 60%);position:relative;overflow:hidden}
#screen-login::before{content:'';position:absolute;inset:0;background-image:repeating-linear-gradient(0deg,transparent,transparent 59px,rgba(200,168,75,.04) 60px),repeating-linear-gradient(90deg,transparent,transparent 59px,rgba(200,168,75,.04) 60px);pointer-events:none}
.login-card{background:var(--navy2);border:1px solid var(--navy4);border-top:2px solid var(--gold3);border-radius:4px;padding:48px 44px;width:380px;position:relative;box-shadow:0 24px 80px rgba(0,0,0,.7),0 0 60px rgba(200,168,75,.06);animation:fadeUp .5s ease both}
@keyframes fadeUp{from{opacity:0;transform:translateY(20px)}to{opacity:1;transform:none}}
.login-logo{text-align:center;margin-bottom:32px}
.login-emblem{width:56px;height:56px;background:var(--gold);clip-path:polygon(50% 0%,100% 25%,100% 75%,50% 100%,0% 75%,0% 25%);display:inline-flex;align-items:center;justify-content:center;font-family:'Cinzel',serif;font-size:22px;font-weight:900;color:var(--navy);margin-bottom:14px}
.login-logo h1{font-family:'Cinzel',serif;font-size:24px;font-weight:600;color:var(--gold2);letter-spacing:2px;text-transform:uppercase}
.login-logo p{font-size:12px;color:var(--dim);font-style:italic;margin-top:4px}
.login-tabs{display:flex;border-bottom:1px solid var(--navy4);margin-bottom:24px}
.login-tab{flex:1;padding:8px;font-family:'Cinzel',serif;font-size:11px;text-align:center;color:var(--dim);cursor:pointer;letter-spacing:1px;border-bottom:2px solid transparent;transition:all .2s}
.login-tab.active{color:var(--gold);border-bottom-color:var(--gold)}
.login-form{display:none}
.login-form.active{display:block}
.form-group{margin-bottom:16px}
.form-group label{display:block;font-family:'JetBrains Mono',monospace;font-size:10px;color:var(--gold3);text-transform:uppercase;letter-spacing:1.2px;margin-bottom:6px}
.form-group input{width:100%;background:var(--navy3);border:1px solid var(--navy4);border-radius:3px;color:var(--cream);font-family:'Crimson Pro',serif;font-size:15px;padding:10px 12px;outline:none;transition:border-color .2s}
.form-group input:focus{border-color:var(--gold3)}
.btn-login{width:100%;background:var(--gold);color:var(--navy);border:none;border-radius:3px;font-family:'Cinzel',serif;font-size:13px;font-weight:600;letter-spacing:1.5px;padding:12px;cursor:pointer;text-transform:uppercase;transition:all .2s;margin-top:4px}
.btn-login:hover{background:var(--gold2);transform:translateY(-1px)}
.login-error{color:var(--red);font-size:12px;margin-top:8px;text-align:center;font-style:italic;min-height:18px}

/* ── APP CHROME ── */
#screen-app{display:none;flex-direction:column;height:100%;overflow:hidden}
#screen-app.active{display:flex}
.topbar{background:var(--navy2);border-bottom:1px solid var(--navy4);padding:0 20px;height:54px;display:flex;align-items:center;gap:16px;flex-shrink:0;box-shadow:0 2px 20px rgba(0,0,0,.4)}
.topbar-brand{font-family:'Cinzel',serif;font-size:15px;font-weight:600;color:var(--gold2);letter-spacing:1.5px;white-space:nowrap}
.xp-bar-wrap{flex:1;max-width:240px}
.xp-info{display:flex;justify-content:space-between;font-family:'JetBrains Mono',monospace;font-size:9px;color:var(--dim);margin-bottom:3px}
.xp-info .lvl-badge{color:var(--gold);font-weight:500}
.xp-track{height:5px;background:var(--navy4);border-radius:3px;overflow:hidden}
.xp-fill{height:100%;background:linear-gradient(90deg,var(--gold3),var(--gold));border-radius:3px;transition:width .8s cubic-bezier(.4,0,.2,1)}
.stat-pill{background:var(--navy3);border:1px solid var(--navy4);border-radius:20px;padding:4px 10px;font-family:'JetBrains Mono',monospace;font-size:10px;color:var(--dim);white-space:nowrap}
.stat-pill span{color:var(--gold)}
.topbar-user{margin-left:auto;display:flex;align-items:center;gap:10px}
.avatar{width:32px;height:32px;border-radius:50%;background:var(--gold3);display:flex;align-items:center;justify-content:center;font-family:'Cinzel',serif;font-size:13px;font-weight:600;color:var(--navy);border:2px solid var(--navy4)}
.username-display{font-size:13px;color:var(--dim)}
.btn-logout{background:transparent;border:1px solid var(--navy4);color:var(--dim);font-family:'JetBrains Mono',monospace;font-size:9px;padding:4px 8px;border-radius:3px;cursor:pointer;letter-spacing:.5px;transition:all .2s}
.btn-logout:hover{border-color:var(--red);color:var(--red)}

/* ── LAYOUT ── */
.app-body{flex:1;display:grid;grid-template-columns:1fr 360px;overflow:hidden}

/* ── LEFT PANEL ── */
.left-panel{display:flex;flex-direction:column;border-right:1px solid var(--navy4);overflow:hidden}
.prompt-zone{background:linear-gradient(135deg,#0c1c30 0%,#0f2040 100%);border-bottom:1px solid var(--navy4);padding:14px 22px 12px;display:flex;flex-direction:column;gap:0;flex-shrink:0}
.prompt-header{display:flex;align-items:center;gap:10px;margin-bottom:10px;flex-shrink:0}
.essay-type-badge{font-family:'Cinzel',serif;font-size:10px;font-weight:600;letter-spacing:1.5px;text-transform:uppercase;padding:3px 10px;border-radius:2px;border:1px solid}
.badge-arg{background:rgba(224,82,82,.15);color:#e05252;border-color:rgba(224,82,82,.3)}
.badge-rhet{background:rgba(155,107,232,.15);color:#9b6be8;border-color:rgba(155,107,232,.3)}
.badge-syn{background:rgba(76,184,132,.15);color:#4caf84;border-color:rgba(76,184,132,.3)}
.prompt-timer{margin-left:auto;font-family:'JetBrains Mono',monospace;font-size:13px;color:var(--gold);font-weight:700;letter-spacing:1px;min-width:52px;text-align:right}
.prompt-timer.urgent{color:var(--red);animation:blink 1s step-end infinite}
.prompt-timer.done{color:var(--green)}
@keyframes blink{50%{opacity:.3}}
.timer-phase{font-family:'JetBrains Mono',monospace;font-size:8px;color:var(--dim);letter-spacing:1px;text-transform:uppercase;margin-top:1px;text-align:right}
.prompt-text{font-size:13.5px;line-height:1.75;color:var(--cream);font-style:normal;border-left:3px solid var(--gold3);padding-left:14px;min-height:36px}
.prompt-text.loading{color:var(--dim);animation:pulse 1.4s ease-in-out infinite}
@keyframes pulse{0%,100%{opacity:.5}50%{opacity:1}}
.prompt-actions{display:flex;gap:8px;margin-top:10px;flex-shrink:0}
.btn-sm{font-family:'JetBrains Mono',monospace;font-size:9px;letter-spacing:.8px;text-transform:uppercase;padding:5px 12px;border-radius:3px;cursor:pointer;border:1px solid var(--navy4);background:var(--navy3);color:var(--dim);transition:all .2s}
.btn-sm:hover{border-color:var(--gold3);color:var(--gold)}
.btn-sm:disabled{opacity:.4;cursor:not-allowed}
.sources-box{margin-top:12px;border-top:1px solid var(--navy4);padding-top:10px;display:none;overflow-y:auto;max-height:220px}
.sources-box.visible{display:block}
.sources-label{font-family:'JetBrains Mono',monospace;font-size:9px;color:var(--gold3);text-transform:uppercase;letter-spacing:1.5px;margin-bottom:8px}
.source-item{background:var(--navy3);border-left:3px solid var(--gold3);border-radius:0 3px 3px 0;padding:8px 11px;margin-bottom:6px;font-size:12.5px;line-height:1.65;color:var(--cream)}
.source-item .src-lbl{font-family:'JetBrains Mono',monospace;font-size:9px;color:var(--gold);font-weight:700;display:block;margin-bottom:3px;letter-spacing:.5px;text-transform:uppercase}

/* ── EDITOR ── */
.editor-zone{flex:1;overflow:hidden;position:relative;display:flex;flex-direction:column}
.editor-area{flex:1;overflow-y:auto;padding:20px 28px}
#essay-input{width:100%;height:100%;min-height:200px;background:transparent;border:none;outline:none;color:var(--cream);font-family:'Crimson Pro',serif;font-size:16px;line-height:1.85;resize:none;caret-color:var(--gold)}
#essay-input::placeholder{color:var(--navy4);font-style:italic}
#essay-display{display:none;font-family:'Crimson Pro',serif;font-size:16px;line-height:1.85;color:var(--cream);white-space:pre-wrap;word-wrap:break-word}
.hl{border-radius:2px;cursor:pointer;transition:filter .15s;border-bottom:2px solid}
.hl:hover{filter:brightness(1.4)}
.hl-thesis{background:var(--hl-thesis);border-color:var(--red)}
.hl-transition{background:var(--hl-transition);border-color:var(--purple)}
.hl-passive{background:var(--hl-passive);border-color:var(--gold)}
.hl-vocab{background:var(--hl-vocab);border-color:var(--green)}
.hl-grammar{background:var(--hl-grammar);border-color:var(--orange)}
.hl-evidence{background:var(--hl-evidence);border-color:var(--teal)}
.editor-bottom{background:var(--navy2);border-top:1px solid var(--navy4);padding:8px 28px;display:flex;align-items:center;gap:16px;flex-shrink:0}
.word-count{font-family:'JetBrains Mono',monospace;font-size:9px;color:var(--dim)}
.word-count span{color:var(--gold3)}
.legend-items{display:flex;gap:10px;flex-wrap:wrap}
.leg{display:flex;align-items:center;gap:4px;font-family:'JetBrains Mono',monospace;font-size:8px;color:var(--dim)}
.leg-dot{width:8px;height:8px;border-radius:1px}
.btn-analyze{margin-left:auto;background:var(--gold);color:var(--navy);border:none;border-radius:3px;font-family:'Cinzel',serif;font-size:12px;font-weight:600;letter-spacing:1px;padding:9px 22px;cursor:pointer;transition:all .2s;white-space:nowrap}
.btn-analyze:hover{background:var(--gold2);transform:translateY(-1px);box-shadow:0 4px 16px rgba(200,168,75,.3)}
.btn-analyze:disabled{opacity:.5;cursor:not-allowed;transform:none}
.btn-edit{background:transparent;border:1px solid var(--navy4);color:var(--dim);font-family:'JetBrains Mono',monospace;font-size:9px;padding:5px 12px;border-radius:3px;cursor:pointer;letter-spacing:.5px;transition:all .2s;display:none}
.btn-edit:hover{border-color:var(--gold3);color:var(--gold)}

/* ── RIGHT PANEL / TABS ── */
.right-panel{background:#080f1a;display:flex;flex-direction:column;overflow:hidden}
.tabs{display:flex;border-bottom:1px solid var(--navy4);background:var(--navy2);flex-shrink:0}
.tab{flex:1;padding:12px 4px;font-family:'Cinzel',serif;font-size:10px;text-align:center;cursor:pointer;color:var(--dim);border-bottom:2px solid transparent;letter-spacing:.8px;transition:all .2s}
.tab.active{color:var(--gold);border-bottom-color:var(--gold);background:rgba(200,168,75,.04)}
.tab:hover:not(.active){color:var(--cream)}
.tab-content{flex:1;overflow-y:auto;padding:18px}
.pane{display:none}
.pane.active{display:block}

/* ── OVERVIEW ── */
.score-ring-wrap{text-align:center;padding:20px 0 14px}
.ring-svg-wrap{position:relative;width:120px;height:120px;margin:0 auto 10px}
.ring-svg-wrap svg{transform:rotate(-90deg)}
.ring-center{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center}
.ring-score{font-family:'Cinzel',serif;font-size:28px;font-weight:900;color:var(--gold2);line-height:1}
.ring-denom{font-size:12px;color:var(--dim)}
.ring-label{font-family:'Cinzel',serif;font-size:13px;color:var(--gold);font-style:italic;margin-bottom:3px}
.ring-sub{font-family:'JetBrains Mono',monospace;font-size:9px;color:var(--dim);letter-spacing:1px}
.summary-text{font-size:13px;line-height:1.65;color:#b0c4d8;padding:0 2px 14px}
.xp-awarded{background:rgba(200,168,75,.1);border:1px solid rgba(200,168,75,.2);border-radius:4px;padding:10px 14px;margin-bottom:14px;font-family:'JetBrains Mono',monospace;font-size:11px;color:var(--gold);display:none;animation:fadeUp .4s ease both}

/* ── RUBRIC ── */
.rubric-cat{border:1px solid var(--navy4);border-radius:4px;margin-bottom:14px;overflow:hidden}
.rubric-head{background:var(--navy3);padding:10px 12px;display:flex;align-items:center;justify-content:space-between;cursor:pointer;user-select:none}
.rubric-name{font-family:'Cinzel',serif;font-size:11px;color:var(--gold2);font-weight:600;letter-spacing:.5px}
.pips{display:flex;gap:3px;align-items:center}
.pip{width:12px;height:12px;border-radius:2px;border:1px solid var(--navy4);background:var(--navy);transition:background .4s}
.pip.on{background:var(--gold);border-color:var(--gold)}
.pip.on.hi{background:var(--green);border-color:var(--green)}
.pip.on.lo{background:var(--red);border-color:var(--red)}
.rubric-num{font-family:'JetBrains Mono',monospace;font-size:15px;font-weight:700;color:var(--gold3);margin-left:8px;min-width:24px;text-align:center}
.rubric-body{padding:0 12px;font-size:12px;line-height:1.6;color:#9ab0c8;display:none;border-top:1px solid var(--navy4)}
.rubric-body.open{display:block}
.rubric-summary{padding:10px 0 8px;border-bottom:1px solid var(--navy4);margin-bottom:0;font-size:12.5px;line-height:1.65;color:#b0c8dc}
.rubric-bands{display:flex;flex-direction:column;gap:0}
.rubric-band{display:flex;gap:0;border-bottom:1px solid rgba(26,45,74,.6)}
.rubric-band:last-child{border-bottom:none}
.rubric-band-score{width:28px;flex-shrink:0;display:flex;align-items:flex-start;justify-content:center;padding:8px 0 8px;font-family:'Cinzel',serif;font-size:13px;font-weight:900;color:var(--navy4)}
.rubric-band.earned .rubric-band-score{color:var(--gold2)}
.rubric-band-score-num{font-size:13px;line-height:1.2}
.rubric-band-body{flex:1;padding:8px 8px 8px 4px;font-size:11.5px;line-height:1.55;color:#6a84a0}
.rubric-band.earned .rubric-band-body{color:#b0c8dc;background:rgba(200,168,75,.04)}
.rubric-band-label{font-family:'JetBrains Mono',monospace;font-size:8px;text-transform:uppercase;letter-spacing:.8px;color:var(--navy4);display:block;margin-bottom:2px}
.rubric-band.earned .rubric-band-label{color:var(--gold3)}
.rubric-band.missed .rubric-band-body{background:rgba(224,82,82,.03)}
.rubric-band.missed .rubric-band-label{color:rgba(224,82,82,.5)}
.rubric-band.missed .rubric-band-score{color:rgba(224,82,82,.3)}
.rubric-chevron{font-size:9px;color:var(--dim);margin-left:4px;transition:transform .2s}
.rubric-head.open .rubric-chevron{transform:rotate(180deg)}

/* ── FEEDBACK ── */
.fb-section{margin-bottom:18px}
.fb-title{font-family:'Cinzel',serif;font-size:10px;color:var(--gold);letter-spacing:1.5px;text-transform:uppercase;padding-bottom:6px;margin-bottom:8px;border-bottom:1px solid var(--navy4);display:flex;align-items:center;gap:6px}
.fb-dot{width:7px;height:7px;border-radius:1px}
.fb-item{background:var(--navy3);border-left:3px solid var(--navy4);border-radius:0 3px 3px 0;padding:9px 11px;margin-bottom:7px;font-size:12px;line-height:1.55;color:#9ab0c8;transition:border-color .2s}
.fb-item.t-thesis{border-left-color:var(--red)}
.fb-item.t-transition{border-left-color:var(--purple)}
.fb-item.t-passive{border-left-color:var(--gold)}
.fb-item.t-vocab{border-left-color:var(--green)}
.fb-item.t-grammar{border-left-color:var(--orange)}
.fb-item.t-evidence{border-left-color:var(--teal)}
.fb-quote{font-style:italic;color:var(--dim);font-size:11px;display:block;margin-bottom:3px}

/* ── VOCAB CHIPS ── */
.vocab-swap-section{margin-bottom:18px}
.vocab-swap-title{font-family:'Cinzel',serif;font-size:10px;color:var(--green);letter-spacing:1.5px;text-transform:uppercase;padding-bottom:6px;margin-bottom:10px;border-bottom:1px solid var(--navy4);display:flex;align-items:center;gap:6px}
.vocab-swap-row{display:flex;align-items:flex-start;gap:10px;margin-bottom:8px;background:var(--navy3);border-left:3px solid var(--green);border-radius:0 3px 3px 0;padding:9px 11px}
.vocab-original{font-family:'JetBrains Mono',monospace;font-size:11px;color:var(--dim);text-decoration:line-through;min-width:80px;flex-shrink:0;padding-top:2px}
.vocab-arrow{color:var(--gold3);font-size:14px;flex-shrink:0;padding-top:1px}
.vocab-chips{display:flex;flex-wrap:wrap;gap:5px}
.vocab-chip{background:rgba(76,184,132,.12);border:1px solid rgba(76,184,132,.3);border-radius:3px;padding:3px 9px;font-family:'JetBrains Mono',monospace;font-size:10px;color:var(--green);cursor:pointer;transition:background .15s,border-color .15s,transform .15s}
.vocab-chip:hover{background:rgba(76,184,132,.25);border-color:var(--green);transform:translateY(-1px)}
.vocab-chip-rationale{font-size:11px;color:var(--dim);margin-top:6px;width:100%;font-style:italic;max-height:0;overflow:hidden;opacity:0;transition:max-height .25s ease,opacity .25s ease}
.vocab-swap-row:hover .vocab-chip-rationale{max-height:60px;opacity:1}

/* ── AP TIPS ── */
.tip-card{background:rgba(200,168,75,.06);border:1px solid rgba(200,168,75,.15);border-radius:4px;padding:11px 13px;margin-bottom:9px}
.tip-label{font-family:'Cinzel',serif;font-size:10px;color:var(--gold);letter-spacing:.8px;display:block;margin-bottom:4px;font-weight:600}
.tip-body{font-size:12px;line-height:1.6;color:#9ab0c8}

/* ── COMPLEXITY POINT ── */
.complexity-section{background:rgba(155,107,232,.07);border:1px solid rgba(155,107,232,.2);border-radius:5px;padding:14px 15px;margin-bottom:14px}
.complexity-header{display:flex;align-items:center;gap:8px;margin-bottom:10px}
.complexity-icon{font-size:18px}
.complexity-title{font-family:'Cinzel',serif;font-size:11px;color:var(--purple);font-weight:600;letter-spacing:.8px}
.complexity-score-ring{display:inline-block;width:36px;height:36px;border-radius:50%;border:2px solid var(--purple);display:flex;align-items:center;justify-content:center;font-family:'Cinzel',serif;font-size:13px;font-weight:900;margin-left:auto;flex-shrink:0}
.complexity-score-ring.earned{background:rgba(155,107,232,.2);color:var(--purple)}
.complexity-score-ring.not-earned{border-color:var(--navy4);color:var(--dim)}
.complexity-current{font-size:12px;color:var(--dim);line-height:1.6;margin-bottom:10px}
.complexity-strategies{display:flex;flex-direction:column;gap:6px}
.complexity-strat{background:var(--navy3);border-radius:3px;padding:7px 10px;font-size:12px;color:#9ab0c8;display:flex;align-items:flex-start;gap:7px}
.strat-check{color:var(--purple);font-size:11px;flex-shrink:0;margin-top:1px}
.strat-check.done{color:var(--green)}

/* ── PROGRESS ── */
.progress-section{margin-bottom:24px}
.progress-title{font-family:'Cinzel',serif;font-size:11px;color:var(--gold);letter-spacing:1.5px;margin-bottom:12px;padding-bottom:6px;border-bottom:1px solid var(--navy4)}
.level-display{text-align:center;padding:16px 0 20px}
.level-num{font-family:'Cinzel',serif;font-size:48px;font-weight:900;color:var(--gold2);line-height:1}
.level-title{font-family:'Cinzel',serif;font-size:14px;color:var(--dim);margin-top:4px;font-style:italic}
.xp-display-bar{margin:14px 0}
.xp-display-track{height:8px;background:var(--navy4);border-radius:4px;overflow:hidden;margin-top:4px}
.xp-display-fill{height:100%;background:linear-gradient(90deg,var(--gold3),var(--gold));border-radius:4px;transition:width 1s cubic-bezier(.4,0,.2,1)}
.xp-display-labels{display:flex;justify-content:space-between;font-family:'JetBrains Mono',monospace;font-size:9px;color:var(--dim);margin-top:3px}
.stats-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-bottom:16px}
.stat-card{background:var(--navy3);border:1px solid var(--navy4);border-radius:4px;padding:10px 12px;text-align:center}
.stat-card-num{font-family:'Cinzel',serif;font-size:22px;font-weight:900;color:var(--gold2)}
.stat-card-label{font-family:'JetBrains Mono',monospace;font-size:9px;color:var(--dim);letter-spacing:.5px;margin-top:2px}
.badges-grid{display:flex;flex-wrap:wrap;gap:8px}
.badge{background:var(--navy3);border:1px solid var(--navy4);border-radius:4px;padding:8px 10px;text-align:center;width:70px;transition:all .2s}
.badge.earned{border-color:var(--gold3);background:rgba(200,168,75,.08)}
.badge-icon{font-size:20px;display:block;margin-bottom:3px}
.badge-name{font-family:'JetBrains Mono',monospace;font-size:7px;color:var(--dim);letter-spacing:.3px;line-height:1.3}
.badge.earned .badge-name{color:var(--gold)}
.timing-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-bottom:12px}
.timing-card{background:var(--navy3);border:1px solid var(--navy4);border-radius:4px;padding:9px 11px}
.timing-card-val{font-family:'Cinzel',serif;font-size:18px;font-weight:900;color:var(--teal)}
.timing-card-lbl{font-family:'JetBrains Mono',monospace;font-size:8px;color:var(--dim);letter-spacing:.5px;margin-top:2px;text-transform:uppercase}
.timing-history-row{display:flex;align-items:center;gap:8px;padding:6px 10px;background:var(--navy3);border-radius:3px;margin-bottom:5px;border:1px solid var(--navy4);font-size:11px}
.thr-score{font-family:'Cinzel',serif;font-size:14px;color:var(--gold);min-width:28px;font-weight:900}
.thr-times{flex:1;font-family:'JetBrains Mono',monospace;font-size:8px;color:var(--dim);line-height:1.6}
.thr-date{font-family:'JetBrains Mono',monospace;font-size:8px;color:var(--dim)}

/* ── LEADERBOARD ── */
.lb-wrap{padding:2px 0}
.lb-refresh{font-family:'JetBrains Mono',monospace;font-size:9px;color:var(--dim);letter-spacing:.5px;margin-bottom:12px;display:flex;align-items:center;justify-content:space-between}
.lb-refresh button{background:transparent;border:1px solid var(--navy4);color:var(--dim);font-family:'JetBrains Mono',monospace;font-size:9px;padding:3px 8px;border-radius:3px;cursor:pointer;transition:all .2s}
.lb-refresh button:hover{border-color:var(--gold3);color:var(--gold)}
.lb-row{display:flex;align-items:center;gap:10px;padding:8px 10px;border-radius:4px;margin-bottom:5px;border:1px solid var(--navy4);background:var(--navy3);transition:border-color .2s}
.lb-row.is-me{border-color:var(--gold3);background:rgba(200,168,75,.07)}
.lb-row.top-3{border-color:rgba(200,168,75,.25)}
.lb-rank{font-family:'Cinzel',serif;font-size:15px;font-weight:900;min-width:26px;text-align:center;color:var(--dim)}
.lb-row:nth-child(2) .lb-rank{color:#ffd700}
.lb-row:nth-child(3) .lb-rank{color:#c0c0c0}
.lb-row:nth-child(4) .lb-rank{color:#cd7f32}
.lb-name{flex:1;font-size:13px;color:var(--cream);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.lb-row.is-me .lb-name{color:var(--gold2);font-weight:600}
.lb-xp{font-family:'Cinzel',serif;font-size:14px;font-weight:900;color:var(--gold);min-width:48px;text-align:right}
.lb-essays{font-family:'JetBrains Mono',monospace;font-size:8px;color:var(--dim);min-width:32px;text-align:right}
.lb-empty{text-align:center;padding:28px 10px;font-style:italic;color:var(--dim);font-size:13px}
.lb-loading{text-align:center;padding:24px;color:var(--dim);font-family:'JetBrains Mono',monospace;font-size:10px;animation:pulse 1.4s ease-in-out infinite}
.lb-you-row{background:rgba(200,168,75,.05);border:1px dashed var(--gold3);border-radius:4px;padding:8px 10px;margin-top:10px;font-size:12px;color:var(--dim);text-align:center;font-family:'JetBrains Mono',monospace}

/* ── MODALS ── */
#levelup-modal{position:fixed;inset:0;z-index:2000;display:none;align-items:center;justify-content:center;background:rgba(4,10,20,.92);backdrop-filter:blur(6px)}
#levelup-modal.show{display:flex;animation:modalFadeIn .3s ease both}
@keyframes modalFadeIn{from{opacity:0}to{opacity:1}}
.levelup-card{background:linear-gradient(145deg,#0d1e38,#132040);border:2px solid var(--gold3);border-radius:8px;padding:48px 52px;text-align:center;max-width:400px;width:90%;box-shadow:0 0 80px rgba(200,168,75,.2),0 24px 60px rgba(0,0,0,.8);position:relative;overflow:hidden;animation:cardPop .45s cubic-bezier(0.34,1.56,0.64,1) both}
@keyframes cardPop{from{transform:scale(.7) translateY(30px);opacity:0}to{transform:scale(1) translateY(0);opacity:1}}
.levelup-card::before{content:'';position:absolute;inset:0;background:radial-gradient(ellipse at 50% 0%,rgba(200,168,75,.12),transparent 60%);pointer-events:none}
.levelup-rays{position:absolute;inset:-40px;background:conic-gradient(from 0deg,transparent 0deg,rgba(200,168,75,.04) 10deg,transparent 20deg,transparent 40deg,rgba(200,168,75,.03) 50deg,transparent 60deg,transparent 80deg,rgba(200,168,75,.04) 90deg,transparent 100deg,transparent 140deg,rgba(200,168,75,.03) 150deg,transparent 160deg,transparent 200deg,rgba(200,168,75,.04) 210deg,transparent 220deg,transparent 260deg,rgba(200,168,75,.03) 270deg,transparent 280deg,transparent 320deg,rgba(200,168,75,.04) 330deg,transparent 340deg);animation:raysSpin 8s linear infinite;pointer-events:none}
@keyframes raysSpin{to{transform:rotate(360deg)}}
.levelup-icon{font-size:52px;margin-bottom:14px;display:block;animation:bounce 1s ease infinite alternate}
@keyframes bounce{from{transform:translateY(0)}to{transform:translateY(-8px)}}
.levelup-sub{font-family:'JetBrains Mono',monospace;font-size:10px;color:var(--gold3);text-transform:uppercase;letter-spacing:2px;margin-bottom:8px}
.levelup-num{font-family:'Cinzel',serif;font-size:64px;font-weight:900;color:var(--gold2);line-height:1;margin-bottom:6px;text-shadow:0 0 40px rgba(200,168,75,.5)}
.levelup-title{font-family:'Cinzel',serif;font-size:18px;color:var(--cream);margin-bottom:20px;letter-spacing:1px}
.levelup-desc{font-size:13px;color:var(--dim);margin-bottom:28px;line-height:1.6}
.levelup-btn{background:var(--gold);color:var(--navy);border:none;border-radius:3px;font-family:'Cinzel',serif;font-size:12px;font-weight:600;letter-spacing:1.5px;padding:12px 32px;cursor:pointer;text-transform:uppercase;transition:all .2s}
.levelup-btn:hover{background:var(--gold2);transform:translateY(-1px)}
#badge-modal{position:fixed;inset:0;z-index:2000;display:none;align-items:center;justify-content:center;background:rgba(4,10,20,.88);backdrop-filter:blur(5px)}
#badge-modal.show{display:flex;animation:modalFadeIn .3s ease both}
.badge-card{background:linear-gradient(145deg,#0d1e38,#132040);border:2px solid var(--navy4);border-radius:8px;padding:40px 48px;text-align:center;max-width:360px;width:90%;box-shadow:0 24px 60px rgba(0,0,0,.8);animation:cardPop .45s cubic-bezier(0.34,1.56,0.64,1) both}
.badge-unlocked-icon{font-size:60px;margin-bottom:12px;display:block;animation:spinIn .5s cubic-bezier(0.34,1.56,0.64,1) both}
@keyframes spinIn{from{transform:scale(0) rotate(-180deg);opacity:0}to{transform:scale(1) rotate(0);opacity:1}}
.badge-unlocked-sub{font-family:'JetBrains Mono',monospace;font-size:9px;color:var(--gold3);text-transform:uppercase;letter-spacing:2px;margin-bottom:6px}
.badge-unlocked-name{font-family:'Cinzel',serif;font-size:22px;color:var(--gold2);font-weight:600;margin-bottom:10px;letter-spacing:1px}
.badge-unlocked-desc{font-size:13px;color:var(--dim);line-height:1.6;margin-bottom:24px}
.badge-btn{background:transparent;border:1px solid var(--gold3);color:var(--gold);border-radius:3px;font-family:'Cinzel',serif;font-size:11px;letter-spacing:1.5px;padding:10px 28px;cursor:pointer;transition:all .2s;text-transform:uppercase}
.badge-btn:hover{background:rgba(200,168,75,.1)}

/* ── LOADER / UTILITY ── */
.loader{display:none;position:absolute;inset:0;background:rgba(8,15,26,.88);align-items:center;justify-content:center;flex-direction:column;gap:14px;z-index:50;backdrop-filter:blur(3px)}
.loader.on{display:flex}
.spin{width:44px;height:44px;border:3px solid var(--navy4);border-top-color:var(--gold);border-radius:50%;animation:spin .8s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}
.load-txt{font-family:'Cinzel',serif;font-size:14px;color:var(--gold2);font-style:italic;animation:pulse 1.4s ease-in-out infinite}
.tooltip{position:fixed;background:var(--navy3);border:1px solid var(--navy4);border-radius:4px;padding:9px 12px;font-size:11px;color:var(--cream);max-width:260px;z-index:999;pointer-events:none;display:none;box-shadow:0 8px 24px rgba(0,0,0,.6);line-height:1.5}
.tooltip-ttl{font-family:'Cinzel',serif;font-size:10px;color:var(--gold);display:block;margin-bottom:2px;letter-spacing:.5px}
.empty{padding:28px 12px;text-align:center}
.empty-ico{font-size:32px;opacity:.3;margin-bottom:10px}
.empty p{font-size:12px;color:var(--dim);font-style:italic;line-height:1.6}
::-webkit-scrollbar{width:4px}
::-webkit-scrollbar-track{background:transparent}
::-webkit-scrollbar-thumb{background:var(--navy4);border-radius:2px}
::-webkit-scrollbar-thumb:hover{background:var(--gold3)}
.toast{position:fixed;bottom:24px;left:50%;transform:translateX(-50%) translateY(20px);background:var(--navy3);border:1px solid var(--gold3);border-radius:4px;padding:10px 20px;font-family:'Cinzel',serif;font-size:12px;color:var(--gold2);z-index:1000;opacity:0;transition:all .3s;pointer-events:none;white-space:normal;max-width:90vw;text-align:center}
.toast.show{opacity:1;transform:translateX(-50%) translateY(0)}
