:root{color-scheme:dark;--bg:#0b0d12;--panel:#131720;--panel2:#181e29;--text:#f5f1e8;--muted:#aeb6c4;--border:#2b3342;--accent:#d7a84b;--accent2:#f2cc78;--green:#68d391;--danger:#ef8c78}
*{box-sizing:border-box}body{margin:0;background:radial-gradient(circle at top,#171c27 0,#0b0d12 42rem);color:var(--text);font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif}.forge-shell{width:min(1120px,calc(100% - 30px));margin:0 auto;padding:28px 0 80px}.topbar{display:flex;justify-content:space-between;align-items:center;padding:10px 0 38px;border-bottom:1px solid var(--border)}.back{color:var(--text);text-decoration:none;font-weight:800}.back:hover{text-decoration:underline}.route{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;color:var(--muted);font-size:.82rem}.hero{max-width:860px;padding:52px 0 30px}.eyebrow{letter-spacing:.2em;font-size:.75rem;font-weight:900;color:var(--accent);margin:0 0 12px}.hero h1{font-size:clamp(2.5rem,7vw,5.5rem);line-height:.95;letter-spacing:-.055em;margin:0}.hero>p:last-child{color:var(--muted);font-size:1.08rem;line-height:1.7;max-width:760px;margin-top:22px}.mode-switch{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin:8px 0 20px}.mode-btn{border:1px solid var(--border);background:var(--panel);color:var(--text);border-radius:16px;padding:18px 20px;display:flex;gap:14px;align-items:center;text-align:left;cursor:pointer;min-height:82px}.mode-btn:hover{border-color:#556176}.mode-btn.active{border-color:var(--accent);background:linear-gradient(145deg,#1c1b1a,var(--panel2))}.mode-icon{font-size:1.8rem}.mode-btn span:last-child{display:grid;gap:4px}.mode-btn strong{font-size:1rem}.mode-btn small,.section-title small,label small,.stat-header small,.points small{color:var(--muted)}.mode-panel.hidden{display:none}.workspace,.character-grid{display:grid;grid-template-columns:minmax(280px,.82fr) minmax(0,1.45fr);gap:18px;align-items:start}.card{background:linear-gradient(145deg,var(--panel),var(--panel2));border:1px solid var(--border);border-radius:18px}.controls{padding:24px;display:grid;gap:17px;position:sticky;top:18px}.section-title{display:grid;gap:3px;padding-bottom:4px}.section-title span{font-weight:900;font-size:1.15rem}.controls label{display:grid;gap:7px;font-weight:800;font-size:.9rem}.controls select,.controls input[type=text],.controls input[type=number]{width:100%;border:1px solid #394354;background:#0d1118;color:var(--text);border-radius:10px;padding:12px 13px;font:inherit;min-height:44px}.controls select:focus,.controls input:focus,.mode-btn:focus-visible,button:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.check-row{grid-template-columns:auto 1fr!important;align-items:flex-start;gap:10px!important;padding:10px 0}.check-row input{width:19px;height:19px;margin-top:2px}.check-row span{display:grid;gap:3px}.primary,.secondary,.tiny,.stat-btn{border-radius:10px;font:inherit;font-weight:900;cursor:pointer}.primary{border:0;background:var(--accent);color:#17120a;padding:13px 16px;min-height:46px}.primary:hover{background:var(--accent2)}.secondary{border:1px solid #465064;background:#10151d;color:var(--text);padding:11px 13px}.secondary:hover,.tiny:hover,.stat-btn:hover{border-color:#69778f}.result-card{padding:28px;min-height:560px}.result-empty{height:100%;min-height:500px;display:grid;place-items:center;text-align:center;color:var(--muted);padding:40px}.result-empty .big{font-size:4rem;display:block;margin-bottom:12px}.character-name{display:flex;justify-content:space-between;gap:20px;align-items:flex-start;border-bottom:1px solid var(--border);padding-bottom:20px;margin-bottom:22px}.character-name h2{font-size:clamp(2rem,5vw,3.4rem);line-height:1;margin:4px 0 7px;letter-spacing:-.04em}.character-name p{margin:0;color:var(--muted)}.badge{white-space:nowrap;background:#0d1118;border:1px solid var(--border);border-radius:999px;padding:7px 10px;color:var(--accent2);font-size:.8rem;font-weight:900}.detail-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.detail{padding:16px;background:#0d1118;border:1px solid #252d3a;border-radius:12px}.detail.full{grid-column:1/-1}.detail .label{font-size:.68rem;letter-spacing:.12em;font-weight:900;color:var(--accent);text-transform:uppercase}.detail p{margin:7px 0 0;line-height:1.55}.quick-stats{display:grid;grid-template-columns:repeat(6,1fr);gap:8px;margin:18px 0}.quick-stat{background:#0d1118;border:1px solid #2d3644;border-radius:10px;padding:11px 6px;text-align:center}.quick-stat small{display:block;color:var(--muted);font-size:.65rem;font-weight:900}.quick-stat strong{font-size:1.35rem}.input-with-button{display:grid;grid-template-columns:1fr 44px;gap:7px}.tiny{border:1px solid #465064;background:#10151d;color:var(--text);padding:8px}.stat-header{display:flex;justify-content:space-between;align-items:end;gap:10px;padding-top:4px}.stat-header>div:first-child{display:grid;gap:3px}.points{display:grid;text-align:right}.points span{font-size:1.9rem;line-height:1;color:var(--accent2);font-weight:900}.stats-editor{display:grid;gap:8px}.stat-row{display:grid;grid-template-columns:1fr 42px 56px 42px;gap:7px;align-items:center;background:#0d1118;border:1px solid #28303e;border-radius:10px;padding:8px 9px}.stat-row .stat-name{font-weight:900}.stat-row .stat-abbr{font-size:.7rem;color:var(--muted);margin-left:5px}.stat-score{text-align:center;font-size:1.15rem;font-weight:900}.stat-btn{height:36px;border:1px solid #465064;background:#151b25;color:var(--text);font-size:1.2rem}.stat-btn:disabled{opacity:.25;cursor:not-allowed}.stat-actions{display:grid;grid-template-columns:1fr 1fr;gap:8px}.sheet-top{display:grid;grid-template-columns:1fr auto;gap:20px;align-items:start;border-bottom:1px solid var(--border);padding-bottom:20px}.sheet-top h2{font-size:clamp(2rem,5vw,3.4rem);margin:2px 0 6px;line-height:1;letter-spacing:-.04em}.sheet-top p{margin:0;color:var(--muted)}.level-orb{width:68px;height:68px;border-radius:50%;display:grid;place-items:center;background:#0d1118;border:2px solid var(--accent);text-align:center}.level-orb strong{font-size:1.5rem;line-height:1}.level-orb small{display:block;color:var(--muted);font-size:.6rem}.derived{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin:18px 0}.derived>div{text-align:center;padding:13px;background:#0d1118;border:1px solid #2c3543;border-radius:10px}.derived small{display:block;color:var(--muted);font-size:.68rem;font-weight:900;text-transform:uppercase}.derived strong{font-size:1.45rem}.stat-sheet{display:grid;grid-template-columns:repeat(6,1fr);gap:8px;margin:18px 0}.stat-box{text-align:center;border:1px solid #303948;background:#0d1118;border-radius:12px;padding:12px 6px}.stat-box small{display:block;color:var(--muted);font-weight:900}.stat-box strong{font-size:1.6rem}.stat-box em{display:block;color:var(--accent2);font-style:normal;font-size:.8rem}.story{display:grid;gap:12px;margin-top:16px}.story-block{padding:16px;border-left:3px solid var(--accent);background:#0d1118;border-radius:0 10px 10px 0}.story-block strong{display:block;margin-bottom:5px}.story-block p{margin:0;color:#d9dde4;line-height:1.55}.why{margin-top:20px;padding:25px 28px}.why h2{margin:0 0 8px}.why p:last-child{color:var(--muted);line-height:1.65;margin-bottom:0}@media(max-width:800px){.mode-switch,.workspace,.character-grid{grid-template-columns:1fr}.controls{position:static}.detail-grid{grid-template-columns:1fr}.detail.full{grid-column:auto}.quick-stats,.stat-sheet{grid-template-columns:repeat(3,1fr)}.topbar{padding-bottom:24px}.hero{padding-top:38px}}@media(max-width:440px){.forge-shell{width:min(100% - 20px,1120px)}.mode-switch{grid-template-columns:1fr}.quick-stats,.stat-sheet{grid-template-columns:repeat(2,1fr)}.stat-row{grid-template-columns:1fr 40px 50px 40px}.stat-actions{grid-template-columns:1fr}.character-name,.sheet-top{grid-template-columns:1fr;display:grid}.badge{justify-self:start}.level-orb{justify-self:start}}

/* v7 full character sheet */
.character-builder{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(360px,.85fr);gap:18px;align-items:start}.builder{padding:0;overflow:hidden}.builder-section{padding:24px;border-bottom:1px solid var(--border)}.builder-section:last-child{border-bottom:0}.form-grid{display:grid;gap:14px}.form-grid.three{grid-template-columns:repeat(3,minmax(0,1fr))}.builder label{display:grid;gap:7px;font-weight:800;font-size:.9rem}.builder select,.builder input[type=text],.builder input[type=number]{width:100%;border:1px solid #394354;background:#0d1118;color:var(--text);border-radius:10px;padding:12px 13px;font:inherit;min-height:44px}.selection-count{text-align:right;color:var(--muted);font-size:.8rem;margin-top:8px}.skills-editor{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.skill-chip{display:grid!important;grid-template-columns:auto 1fr;align-items:start;gap:9px!important;padding:10px;border:1px solid #2d3644;border-radius:10px;background:#0d1118;cursor:pointer}.skill-chip.recommended{border-color:#695c36}.skill-chip input{margin-top:3px}.skill-chip span{display:grid;gap:2px}.skill-chip small{font-size:.68rem}.ability-editor{display:grid;gap:12px}.signature{padding:15px;background:#0d1118;border:1px solid #333d4b;border-radius:12px}.signature strong{display:block;font-size:1.05rem;margin:5px 0}.signature p{margin:0;color:var(--muted);line-height:1.55}.talent-list{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.talent{display:grid!important;grid-template-columns:auto 1fr;gap:8px!important;align-items:center;padding:11px;border:1px solid #2e3745;border-radius:10px;background:#10151d;cursor:pointer}.inventory-tools{display:grid;grid-template-columns:1.35fr .65fr;gap:10px}.input-with-button.wide{grid-template-columns:1fr 70px}.wide-btn{width:70px}.loot-controls{display:grid;grid-template-columns:1fr auto;gap:8px}.inventory-editor{display:grid;gap:7px;margin-top:12px}.inventory-row{display:flex;justify-content:space-between;gap:10px;align-items:center;padding:9px 11px;border:1px solid #2b3441;border-radius:9px;background:#0d1118}.remove-item{border:0;background:transparent;color:var(--muted);font-size:1.2rem;cursor:pointer}.empty-inline{color:var(--muted);font-size:.85rem;margin:4px 0}.final-actions{display:grid;grid-template-columns:1.3fr .7fr;gap:10px}.sheet-card{position:sticky;top:18px;max-height:calc(100vh - 36px);overflow:auto}.derived.four{grid-template-columns:repeat(4,1fr)}.sheet-section{margin-top:22px}.sheet-section h3{margin:0 0 10px;font-size:.95rem;text-transform:uppercase;letter-spacing:.1em;color:var(--accent2)}.gear-sheet{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.gear-sheet>div{display:grid;gap:4px;background:#0d1118;border:1px solid #2c3543;border-radius:10px;padding:12px}.gear-sheet .label{font-size:.65rem;letter-spacing:.1em;color:var(--accent);text-transform:uppercase}.gear-sheet small{color:var(--muted);line-height:1.4}.skill-sheet{display:grid;grid-template-columns:1fr 1fr;gap:6px 10px}.skill-line{display:flex;justify-content:space-between;gap:10px;padding:8px 10px;background:#0d1118;border:1px solid #252e3a;border-radius:8px;color:var(--muted)}.skill-line.trained{color:var(--text);border-color:#655834}.skill-line small{color:var(--muted)}.inventory-sheet{display:flex;flex-wrap:wrap;gap:7px}.inventory-sheet span{padding:7px 9px;border:1px solid #303948;border-radius:999px;background:#0d1118;font-size:.8rem}.sheet-footer{display:flex;gap:8px;flex-wrap:wrap;margin-top:24px;padding-top:18px;border-top:1px solid var(--border)}.json-output{margin-top:12px;padding:14px;background:#080b10;border:1px solid #2d3644;border-radius:10px;white-space:pre-wrap;overflow:auto;font-size:.72rem;color:#cbd5e1}.json-output.hidden{display:none}
@media(max-width:980px){.character-builder{grid-template-columns:1fr}.sheet-card{position:static;max-height:none}.form-grid.three,.skills-editor,.talent-list{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:620px){.form-grid.three,.skills-editor,.talent-list,.inventory-tools,.final-actions,.gear-sheet{grid-template-columns:1fr}.derived.four{grid-template-columns:repeat(2,1fr)}.skill-sheet{grid-template-columns:1fr}}
@media print{body{background:white;color:#111}.topbar,.hero,.mode-switch,.builder,.why{display:none!important}.forge-shell{width:100%;padding:0}.character-builder{display:block}.sheet-card{position:static;max-height:none;overflow:visible;border:0;background:white;color:#111}.sheet-card *{color:#111!important}.sheet-footer{display:none}.stat-box,.derived>div,.gear-sheet>div,.skill-line,.story-block,.inventory-sheet span{background:white!important;border-color:#bbb!important}}
.final-hint{display:block;color:var(--accent2);font-size:.67rem;margin-top:2px}.origin-boosts,.advancement-box{display:grid;gap:10px;padding:13px;background:#0d1118;border:1px solid #2d3644;border-radius:12px}.origin-boosts>div:first-child,.advancement-box>div:first-child{display:grid;gap:3px}.origin-boosts label{display:grid;grid-template-columns:95px 1fr;align-items:center;gap:10px;font-size:.82rem}.origin-boosts select{min-height:38px!important;padding:7px 10px!important}.asi-editor{display:grid;gap:6px}.asi-row{display:grid;grid-template-columns:1fr 38px 38px;gap:6px;align-items:center}.asi-row span{display:grid}.asi-row small{color:var(--muted);font-size:.7rem}.asi-row .tiny:disabled{opacity:.3;cursor:not-allowed}.rules-note{color:var(--muted);line-height:1.45}

/* v9 ability-score builder: separate point buy, background bonus, level ASIs, and final totals */
.ability-builder{gap:14px}.ability-step{display:grid;gap:12px;padding:15px;background:#0d1118;border:1px solid #2d3644;border-radius:13px}.ability-step-head{display:flex;justify-content:space-between;gap:14px;align-items:flex-start}.ability-step-head>div:first-child{display:grid;gap:4px}.ability-step-head strong{font-size:.98rem}.ability-step-head small{color:var(--muted);line-height:1.45}.point-buy-box .points{min-width:72px}.stat-row{grid-template-columns:minmax(0,1fr) 42px 56px 42px;padding:10px}.stat-label{display:grid;grid-template-columns:auto auto 1fr;align-items:baseline;gap:6px;min-width:0}.stat-label small{grid-column:1/-1;color:var(--muted);font-size:.68rem;margin-top:1px}.point-cost-key{display:flex;flex-wrap:wrap;gap:6px}.point-cost-key span{border:1px solid #303949;background:#111722;color:var(--muted);border-radius:999px;padding:5px 8px;font:700 .68rem ui-monospace,SFMono-Regular,Menlo,monospace}.origin-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}.origin-grid label{display:grid;gap:6px;font-size:.82rem}.origin-grid select,.asi-choice-grid select{width:100%;border:1px solid #394354;background:#0b1017;color:var(--text);border-radius:9px;padding:9px 10px;min-height:40px;font:inherit}.asi-editor{display:grid;gap:9px}.locked-asi{padding:12px;border:1px dashed #3a4557;border-radius:10px;color:var(--muted);line-height:1.45}.asi-milestone{display:grid;grid-template-columns:minmax(170px,.7fr) minmax(0,1.3fr);gap:14px;align-items:center;padding:12px;border:1px solid #2c3544;background:#0a0f16;border-radius:10px}.asi-milestone>div:first-child{display:grid;gap:3px}.asi-milestone small{color:var(--muted);line-height:1.35}.asi-choice-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px}.asi-choice-grid label{display:grid;gap:5px;color:var(--muted);font-size:.7rem;font-weight:800}.final-stat-summary{display:grid;gap:7px}.final-stat-card{display:grid;grid-template-columns:minmax(115px,1fr) 58px 16px 68px 16px 58px 16px 68px;gap:5px;align-items:center;padding:8px 10px;border:1px solid #283140;border-radius:10px;background:#0a0f16}.final-stat-card>div:first-child{display:grid}.final-stat-card>div:first-child strong{font-size:.92rem}.final-stat-card>div:first-child small{color:var(--muted);font-size:.68rem}.final-stat-card>b{text-align:center;color:#657185}.score-formula{display:grid;text-align:center}.score-formula span{font-weight:900}.score-formula small{font-size:.58rem;color:var(--muted)}.score-formula.final{background:#151b24;border:1px solid #46536a;border-radius:8px;padding:5px}.score-formula.final span{color:var(--accent2);font-size:1.1rem}.rules-note{display:block;color:var(--muted);line-height:1.45}
@media(max-width:700px){.ability-step-head{align-items:flex-start}.origin-grid,.asi-choice-grid{grid-template-columns:1fr}.asi-milestone{grid-template-columns:1fr}.final-stat-card{grid-template-columns:1fr repeat(7,auto)}.score-formula{min-width:42px}}
@media(max-width:500px){.final-stat-card{grid-template-columns:1fr 48px 12px 52px 12px 48px 12px 56px;padding:8px 6px;gap:2px}.final-stat-card>div:first-child small{display:none}.score-formula small{font-size:.5rem}.stat-label{grid-template-columns:auto auto}.ability-step{padding:12px}}
