:root{--ink-black:#161310;--paper:#E8E2D4;--paper-dim:#C9C2AE;--blood:#8C2F2F;--blood-bright:#B23A3A;--brass:#A68A5B;--brass-dim:#6E5C3D;--panel:#1F1B16;--panel-raised:#262019;--line:#3A332A;--good:#5C8C5C;--shadow: rgba(0,0,0,.5)}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body,#root{margin:0;padding:0;min-height:100vh}body{background:var(--ink-black);background-image:radial-gradient(ellipse at top,rgba(166,138,91,.06),transparent 60%),repeating-linear-gradient(0deg,rgba(255,255,255,.012) 0px,rgba(255,255,255,.012) 1px,transparent 1px,transparent 2px);color:var(--paper);font-family:IM Fell English,serif}button,input,select,textarea{font-family:Archivo,sans-serif}a{color:var(--brass);text-decoration:none}.app-shell{min-height:100vh;display:flex;flex-direction:column}.sticky-header{position:sticky;top:0;z-index:100;background:var(--ink-black)}.header{padding:10px 20px 4px;position:relative}.header-title-row{display:grid;grid-template-columns:1fr auto 1fr;align-items:baseline;gap:16px}.header-title-row .eyebrow:first-child{text-align:right}.header-title-row .eyebrow:last-child{text-align:left}.eyebrow{font-family:IM Fell English,monospace;font-size:11px;letter-spacing:.25em;color:var(--brass);text-transform:uppercase}.charname{font-family:Uncial Antiqua,cursive;font-size:42px;color:var(--paper);letter-spacing:.01em;line-height:1.3}.header-bottom-row{position:relative;display:flex;align-items:center;justify-content:center;padding:6px 20px 0;border-bottom:1px solid var(--line)}.subline{font-family:IM Fell English,monospace;font-size:12px;color:var(--paper-dim);position:absolute;left:20px}.header-actions{display:flex;flex-direction:column;align-items:flex-end;gap:8px;position:absolute;top:22px;right:20px}.role-badge{font-family:IM Fell English,monospace;font-size:10px;letter-spacing:.15em;text-transform:uppercase;color:var(--brass);border:1px solid var(--brass-dim);padding:3px 8px;border-radius:2px}.tabs{display:flex;justify-content:center;gap:0;overflow-x:auto}.tab{font-family:IM Fell English,monospace;font-size:12px;letter-spacing:.08em;text-transform:uppercase;padding:10px 14px;color:var(--paper-dim);background:none;border:none;cursor:pointer;white-space:nowrap;border-bottom:2px solid transparent;flex-shrink:0}.tab.active{color:var(--brass);border-bottom-color:var(--brass)}.view{padding:20px;flex:1}.parallax-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:-1;background-size:cover;background-position:center 0%;background-repeat:no-repeat}.parallax-scope .panel{background:#1f1b16bf}.parallax-scope .hint{display:inline-block;background:#1f1b16bf;padding:8px 12px;border-radius:2px}[id^=sheet-],[id^=config-],[id^=gear-]{scroll-margin-top:210px}.tooltip-wrap{position:relative;cursor:help;border-bottom:1px dashed var(--brass-dim)}.tooltip-wrap:hover .tooltip-box,.tooltip-box{display:block}.tooltip-box{position:absolute;bottom:calc(100% + 6px);left:50%;transform:translate(-50%);background:var(--panel-raised);border:1px solid var(--brass-dim);color:var(--paper);font-family:IM Fell English,serif;font-size:12px;padding:6px 10px;border-radius:2px;white-space:nowrap;min-width:max-content;z-index:200;pointer-events:none;box-shadow:0 4px 12px var(--shadow)}.tooltip-wrap:hover .tooltip-box{display:block}.panel{background:var(--panel);border:1px solid var(--line);border-radius:2px;padding:16px;margin-bottom:16px;position:relative}.panel-title{font-family:Uncial Antiqua,cursive;font-size:22px;letter-spacing:.18em;text-transform:uppercase;color:var(--brass);margin:0 0 8px;display:flex;justify-content:center;align-items:center;cursor:default;position:relative;min-height:28px}.panel-title>*:not(:first-child){position:absolute;right:0;top:50%;transform:translateY(-50%)}.panel-title.collapsible{cursor:pointer;-webkit-user-select:none;user-select:none}.config-page .panel-title{color:var(--rust, #8b2020)}.panel-title .chevron{font-size:14px;transition:transform .15s ease;color:var(--brass)}.panel-title.collapsed .chevron{transform:rotate(-90deg)}.stat-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.stat-grid.cols-2{grid-template-columns:repeat(2,1fr)}.stat-box{background:var(--panel-raised);border:1px solid var(--line);padding:10px 8px;text-align:center;border-radius:2px}.stat-label{font-family:IM Fell English,monospace;font-size:9px;letter-spacing:.1em;text-transform:uppercase;color:var(--paper-dim)}.stat-value{font-size:22px;font-weight:700;color:var(--paper);margin-top:2px;font-family:Uncial Antiqua,cursive}.stat-value input{width:100%;background:none;border:none;color:var(--paper);font-size:22px;font-weight:700;text-align:center;font-family:Uncial Antiqua,cursive}.stat-value input:focus{outline:1px solid var(--brass)}.subgroup-label{font-family:IM Fell English,monospace;font-size:10px;letter-spacing:.12em;text-transform:uppercase;color:var(--paper-dim);margin:14px 0 8px;border-bottom:1px solid var(--line);padding-bottom:4px}.subgroup-label:first-child{margin-top:0}.subgroup-sort-row{display:flex;align-items:center;gap:12px;flex-wrap:wrap;justify-content:space-between;border-bottom:1px solid var(--line);margin:14px 0 8px;padding-bottom:4px}.subgroup-sort-row:first-child{margin-top:0}.subgroup-sort-row .subgroup-label{margin:0;border-bottom:none;padding-bottom:0;flex-shrink:0;font-size:17px}.subgroup-sort-row>div{margin-bottom:0!important}.skill-row{display:flex;justify-content:space-between;align-items:center;padding:7px 0;border-bottom:1px solid var(--line);font-size:14px}.skill-row:last-child{border-bottom:none}.skill-name{color:var(--paper)}.skill-dots input{width:42px;background:var(--panel-raised);border:1px solid var(--line);color:var(--paper);text-align:center;padding:4px;border-radius:2px;font-size:14px;font-family:Uncial Antiqua,cursive}.skill-value-readonly{font-family:Uncial Antiqua,cursive;font-size:22px;font-weight:700;color:var(--paper);min-width:24px;text-align:center}.btn{font-family:IM Fell English,monospace;font-size:13px;letter-spacing:.08em;text-transform:uppercase;background:var(--panel-raised);color:var(--paper);border:1px solid var(--brass-dim);padding:10px 14px;border-radius:2px;cursor:pointer}.btn:active{transform:translateY(1px)}.btn:disabled{opacity:.4;cursor:not-allowed}.btn-primary{background:var(--blood);border-color:var(--blood-bright);color:var(--paper);font-weight:700}.btn-row{display:flex;gap:10px;margin-top:10px;flex-wrap:wrap}.btn-small{font-size:11px;padding:6px 10px}.btn-full{width:100%}.item-card{background:var(--panel-raised);border:1px solid var(--line);border-radius:2px;padding:12px;margin-bottom:10px}.item-name{font-family:Eagle Lake,cursive;font-size:16px;color:var(--paper);margin-bottom:8px;display:flex;justify-content:space-between;align-items:center}.item-name-actions{display:flex;gap:4px;align-items:center}.item-meta{display:grid;grid-template-columns:repeat(4,1fr) auto;gap:6px;font-family:IM Fell English,monospace;font-size:10px;color:var(--paper-dim)}.item-meta-buttons{grid-column:5;grid-row:1/3;display:flex;flex-direction:column;justify-content:center;gap:6px}.item-meta div span{display:block;color:var(--paper);font-size:14px;font-weight:700;font-family:IM Fell English,monospace}.item-desc{font-size:13px;color:var(--paper-dim);margin-top:8px;line-height:1.5}.edit-x{background:none;border:none;color:var(--brass);font-size:13px;cursor:pointer;padding:0 4px;font-family:IM Fell English,monospace;text-transform:uppercase}.remove-x{background:none;border:none;color:var(--blood-bright);font-size:16px;cursor:pointer;padding:0 4px}.health-track{display:flex;gap:6px;flex-wrap:wrap}.health-box{font-family:Uncial Antiqua,cursive;width:34px;height:34px;border:2px solid var(--brass-dim);border-radius:3px;display:flex;align-items:center;justify-content:center;cursor:pointer;font-family:IM Fell English,monospace;font-size:13px;background:var(--panel-raised);color:var(--paper-dim);-webkit-user-select:none;user-select:none}.health-box[data-state=bruise]{background:var(--brass-dim);color:var(--ink-black)}.health-box[data-state=lethal]{background:var(--blood);color:var(--paper);border-color:var(--blood-bright)}.health-box[data-state=agg]{background:var(--ink-black);color:var(--blood-bright);border-color:var(--blood-bright)}.willpower-track{display:flex;gap:6px;flex-wrap:wrap}.wp-dot{width:24px;height:24px;border:2px solid var(--brass-dim);border-radius:50%;cursor:pointer;background:var(--panel-raised)}.wp-dot.filled{background:var(--brass)}select,input[type=text],input[type=number],textarea{background:var(--panel-raised);color:var(--paper);border:1px solid var(--line);padding:8px;border-radius:2px;width:100%}textarea{resize:vertical;min-height:90px;font-family:Archivo,sans-serif}.identity-compact select,.identity-compact input[type=text],.identity-compact input[type=number]{padding:3px 6px}label{font-family:IM Fell English,monospace;font-size:9px;color:var(--paper-dim);text-transform:uppercase;display:block;margin-bottom:3px}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px}.full-span{grid-column:1 / -1}.hint{font-family:IM Fell English,monospace;font-size:11px;color:var(--paper-dim);margin-top:6px;line-height:1.5}.login-shell{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:20px}.login-card{width:100%;max-width:360px;background:var(--panel);border:1px solid var(--line);padding:32px 24px;border-radius:2px}.login-title{font-family:Uncial Antiqua,cursive;font-size:26px;text-align:center;margin-bottom:4px}.login-sub{font-family:IM Fell English,monospace;font-size:11px;color:var(--paper-dim);text-align:center;margin-bottom:24px;letter-spacing:.1em;text-transform:uppercase}.login-field{margin-bottom:14px}.login-error{color:var(--blood-bright);font-family:IM Fell English,monospace;font-size:12px;margin-top:10px;text-align:center}.loading-screen{min-height:100vh;display:flex;align-items:center;justify-content:center;font-family:IM Fell English,monospace;color:var(--paper-dim);letter-spacing:.1em;text-transform:uppercase}.report-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#000000bf;display:none;align-items:center;justify-content:center;z-index:100;padding:20px}.report-overlay.show{display:flex}.report-slip{background:var(--paper);color:var(--ink-black);width:100%;max-width:340px;padding:24px 20px 28px;position:relative;box-shadow:0 20px 60px var(--shadow);animation:slam .32s cubic-bezier(.2,1.4,.4,1);font-family:IM Fell English,monospace}@keyframes slam{0%{transform:scale(1.4) rotate(-3deg);opacity:0}to{transform:scale(1) rotate(0);opacity:1}}.report-label{font-size:11px;letter-spacing:.2em;text-transform:uppercase;color:#5a5444;border-bottom:1px solid #5a5444;padding-bottom:6px;margin-bottom:14px}.report-pool{font-size:13px;color:#444;margin-bottom:4px}.report-dice{display:flex;flex-wrap:wrap;gap:6px;margin:14px 0}.die{width:30px;height:30px;border:2px solid var(--ink-black);border-radius:50%;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:13px;font-family:Uncial Antiqua,cursive}.die.success{background:var(--good);color:#fff;border-color:#3d6b3d}.die.crit{background:var(--brass);color:var(--ink-black);border-color:#7a6440}.die.fail{background:transparent;color:#888}.report-stamp{font-family:Uncial Antiqua,cursive;font-size:38px;text-align:center;color:var(--blood);border:4px solid var(--blood);border-radius:6px;padding:6px 0;margin-top:10px;transform:rotate(-2deg)}.report-sub{text-align:center;font-size:11px;color:#5a5444;margin-top:8px;letter-spacing:.1em;text-transform:uppercase}.report-close{display:block;width:100%;margin-top:18px;background:var(--ink-black);color:var(--paper);border:none;padding:12px;font-family:IM Fell English,monospace;text-transform:uppercase;letter-spacing:.1em;font-size:12px;border-radius:2px;cursor:pointer}.sheet-eq-inv-row{display:grid;grid-template-columns:1fr 1fr;gap:16px;align-items:start;margin-bottom:16px}.sheet-eq-col>.panel,.sheet-inv-col>.panel{margin-bottom:0}.sheet-eq-col,.sheet-inv-col{min-width:0}@media (max-width:700px){.sheet-eq-inv-row{grid-template-columns:1fr}}.sheet-merits-notes-row{display:grid;grid-template-columns:1fr 1fr;gap:16px;align-items:start;margin-bottom:16px}.sheet-merits-col>.panel,.sheet-notes-col>.panel{margin-bottom:0}.sheet-merits-col,.sheet-notes-col{min-width:0}@media (max-width:700px){.sheet-merits-notes-row{grid-template-columns:1fr}}.inventory-list{list-style:none;padding:0;margin:0}.inventory-item{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:6px 0;border-bottom:1px solid var(--line);font-family:IM Fell English,monospace;font-size:14px;color:var(--paper)}.inventory-item:last-child{border-bottom:none}.inventory-item-bullet{color:var(--brass);margin-right:8px}.char-switcher-row{display:flex;align-items:center;justify-content:space-between;padding:6px 20px 8px;border-bottom:2px solid var(--brass-dim);gap:16px;flex-wrap:wrap}.char-switcher-chars{display:flex;gap:8px;flex-wrap:wrap}.char-switcher-chars button{font-family:IM Fell English,monospace;font-size:11px;letter-spacing:.08em;text-transform:uppercase;background:var(--panel-raised);color:var(--paper-dim);border:1px solid var(--line);padding:8px 12px;border-radius:2px;cursor:pointer}.char-switcher-chars button.active{color:var(--brass);border-color:var(--brass)}.char-subtabs{display:flex;gap:0;align-items:flex-end}.char-subtabs .tab{padding:6px 8px}.user-row{display:flex;justify-content:space-between;align-items:center;padding:10px 0;border-bottom:1px solid var(--line);gap:10px;flex-wrap:wrap}.user-row:last-child{border-bottom:none}.user-email{font-size:13px;color:var(--paper)}.user-controls{display:flex;gap:8px;align-items:center}.user-controls select{width:auto;font-size:12px;padding:6px}.identity-row{display:grid;grid-template-columns:1fr 1fr 1fr 1fr;column-gap:16px;padding-bottom:8px;margin-bottom:8px}.identity-compact .identity-row:not(:last-child){border-bottom:1px solid var(--line)}@media (max-width:480px){.user-row{flex-direction:column;align-items:flex-start;gap:6px}.user-controls{width:100%}.user-controls select{flex:1}.stat-grid,.item-meta{grid-template-columns:repeat(2,1fr)}.header{padding:22px 20px 6px}.header-bottom-row{flex-direction:row;align-items:center;padding:0 20px}.panel{padding:12px}.charname{font-size:22px}.panel-title{font-size:18px}.form-grid,.add-weapon-form{grid-template-columns:1fr}.tab{padding:8px 10px}.tabs{justify-content:flex-start;width:100%;overscroll-behavior-x:contain}.item-name{font-size:13px;flex-wrap:nowrap;gap:6px;align-items:flex-start}.item-name>span:first-child{min-width:0}.item-name>span:last-child{flex-shrink:0}.identity-compact{display:grid;grid-template-columns:1fr 1fr;column-gap:8px}.identity-row{display:contents}.idf-name{order:1;grid-column:span 2}.idf-player{order:2}.idf-groupname{order:3}.idf-faction{order:4}.idf-chronicle{order:5}.idf-concept{order:6}.idf-age{order:9}.idf-vertue{order:8}.idf-appage{order:7}.idf-vice{order:10}.idf-trueage{order:11}.idf-dob{order:12;grid-column:span 2}.idf-dod{order:13;grid-column:span 2}.idf-attrpool{order:14;grid-column:span 2}.idf-skillspool{order:15;grid-column:span 2}.idf-meritspool{order:16;grid-column:span 2}.idf-meritspool-empty{order:16;display:none}.idf-xpspend{order:17}.identity-compact--sheet .idf-xpspend .skill-name{min-width:130px;flex-shrink:0}.idf-vertue .skill-name,.idf-vice .skill-name{min-width:52px;flex-shrink:0}.idf-attrpool .skill-name,.idf-skillspool .skill-name,.idf-meritspool .skill-name{min-width:120px;flex-shrink:0}.identity-compact--sheet .idf-age .skill-name,.identity-compact--sheet .idf-appage .skill-name,.identity-compact--sheet .idf-trueage .skill-name{min-width:108px;flex-shrink:0}.identity-compact--sheet .idf-dob .skill-name,.identity-compact--sheet .idf-dod .skill-name{min-width:100px;flex-shrink:0}.identity-compact--sheet .idf-player{order:2;grid-column:span 2}.identity-compact--sheet .idf-groupname{order:3;grid-column:span 2}.identity-compact--sheet .idf-faction{order:4;grid-column:span 2}.identity-compact--sheet .idf-chronicle{order:5;grid-column:span 2}.identity-compact--sheet .idf-concept{order:6}.identity-compact--sheet .idf-age{order:9}.identity-compact--sheet .idf-vertue{order:8}.identity-compact--sheet .idf-appage{order:7}.identity-compact--sheet .idf-vice{order:10}.identity-compact--sheet .idf-trueage{order:11}.identity-compact--sheet .idf-dob{order:12;grid-column:span 2}.identity-compact--sheet .idf-dod{order:13;grid-column:span 2}.identity-compact--sheet .idf-xpspend{order:14;grid-column:span 2}.identity-compact--sheet .idf-spendxp{order:15;grid-column:span 2}.idf-concept,.idf-appage,.idf-dob{border-top:1px solid var(--line);padding-top:8px;margin-top:8px}}body.mobile-layout .user-row{flex-direction:column;align-items:flex-start;gap:6px}body.mobile-layout .user-controls{width:100%}body.mobile-layout .user-controls select{flex:1}body.mobile-layout .stat-grid,body.mobile-layout .item-meta{grid-template-columns:repeat(2,1fr)}body.mobile-layout .header{padding:22px 20px 6px}body.mobile-layout .header-bottom-row{flex-direction:row;align-items:center;padding:0 20px}body.mobile-layout .panel{padding:12px}body.mobile-layout .charname{font-size:22px}body.mobile-layout .panel-title{font-size:18px;padding-left:40px}body.mobile-layout .form-grid,body.mobile-layout .add-weapon-form{grid-template-columns:1fr}body.mobile-layout .tab{padding:8px 10px}body.mobile-layout .tabs{justify-content:flex-start;width:100%;overscroll-behavior-x:contain}body.mobile-layout .item-name{font-size:13px;flex-wrap:nowrap;gap:6px;align-items:flex-start}body.mobile-layout .item-name>span:first-child{min-width:0}body.mobile-layout .item-name>span:last-child{flex-shrink:0}body.mobile-layout .identity-compact{display:grid;grid-template-columns:1fr 1fr;column-gap:8px}body.mobile-layout .identity-row{display:contents}body.mobile-layout .idf-name{order:1;grid-column:span 2}body.mobile-layout .idf-player{order:2}body.mobile-layout .idf-groupname{order:3}body.mobile-layout .idf-faction{order:4}body.mobile-layout .idf-chronicle{order:5}body.mobile-layout .idf-concept{order:6}body.mobile-layout .idf-age{order:9}body.mobile-layout .idf-vertue{order:8}body.mobile-layout .idf-appage{order:7}body.mobile-layout .idf-vice{order:10}body.mobile-layout .idf-trueage{order:11}body.mobile-layout .idf-dob{order:12;grid-column:span 2}body.mobile-layout .idf-dod{order:13;grid-column:span 2}body.mobile-layout .idf-attrpool{order:14;grid-column:span 2}body.mobile-layout .idf-skillspool{order:15;grid-column:span 2}body.mobile-layout .idf-meritspool{order:16;grid-column:span 2}body.mobile-layout .idf-meritspool-empty{order:16;display:none}body.mobile-layout .idf-xpspend{order:17}body.mobile-layout .identity-compact--sheet .idf-xpspend .skill-name{min-width:130px;flex-shrink:0}body.mobile-layout .idf-vertue .skill-name,body.mobile-layout .idf-vice .skill-name{min-width:52px;flex-shrink:0}body.mobile-layout .idf-attrpool .skill-name,body.mobile-layout .idf-skillspool .skill-name,body.mobile-layout .idf-meritspool .skill-name{min-width:120px;flex-shrink:0}body.mobile-layout .identity-compact--sheet .idf-age .skill-name,body.mobile-layout .identity-compact--sheet .idf-appage .skill-name,body.mobile-layout .identity-compact--sheet .idf-trueage .skill-name{min-width:108px;flex-shrink:0}body.mobile-layout .identity-compact--sheet .idf-dob .skill-name,body.mobile-layout .identity-compact--sheet .idf-dod .skill-name{min-width:100px;flex-shrink:0}body.mobile-layout .identity-compact--sheet .idf-player{order:2;grid-column:span 2}body.mobile-layout .identity-compact--sheet .idf-groupname{order:3;grid-column:span 2}body.mobile-layout .identity-compact--sheet .idf-faction{order:4;grid-column:span 2}body.mobile-layout .identity-compact--sheet .idf-chronicle{order:5;grid-column:span 2}body.mobile-layout .identity-compact--sheet .idf-concept{order:6}body.mobile-layout .identity-compact--sheet .idf-age{order:9}body.mobile-layout .identity-compact--sheet .idf-vertue{order:8}body.mobile-layout .identity-compact--sheet .idf-appage{order:7}body.mobile-layout .identity-compact--sheet .idf-vice{order:10}body.mobile-layout .identity-compact--sheet .idf-trueage{order:11}body.mobile-layout .identity-compact--sheet .idf-dob{order:12;grid-column:span 2}body.mobile-layout .identity-compact--sheet .idf-dod{order:13;grid-column:span 2}body.mobile-layout .identity-compact--sheet .idf-xpspend{order:14;grid-column:span 2}body.mobile-layout .identity-compact--sheet .idf-spendxp{order:15;grid-column:span 2}body.mobile-layout .idf-concept,body.mobile-layout .idf-appage,body.mobile-layout .idf-dob{border-top:1px solid var(--line);padding-top:8px;margin-top:8px}
