@font-face{font-family:Liberation;src:url('assets/LiberationSans-Regular.ttf')}@font-face{font-family:Liberation;src:url('assets/LiberationSans-Bold.ttf');font-weight:700}@font-face{font-family:Gismonda;src:local('Gismonda FG'),local('GismondaFG')}
:root{--ink:#262c2b;--muted:#737972;--paper:#faf8f1;--line:#dedfd4;--green:#263e36;--gold:#ab7840;--danger:#9c4732;--serif:Gismonda,Georgia,serif}*{box-sizing:border-box}body{margin:0;color:var(--ink);font-family:Liberation,Arial,sans-serif;background:var(--paper);font-size:14px}button,input,select,textarea{font:inherit}button{cursor:pointer;border:1px solid var(--line);border-radius:5px;background:transparent;color:inherit;padding:10px 15px;transition:background .15s,border .15s}button:hover{background:#e9ebe2;border-color:#9aa99b}button:disabled{opacity:.45;cursor:not-allowed}button.primary{background:var(--green);color:#fff;border-color:var(--green)}button.primary:hover{background:#3d564a}a{color:var(--green)}header{height:90px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line);padding:0 34px;background:#fffefa;gap:20px}.brand{display:flex;gap:14px;align-items:center;text-decoration:none;font-family:Georgia,serif;letter-spacing:3px;font-size:23px}.brand small{display:block;font:9px Liberation,Arial,sans-serif;letter-spacing:2.1px;margin-top:7px}.sigil{font-size:43px;color:var(--gold)}.header-actions{display:flex;align-items:center;gap:8px}.header-actions button{font-size:12px;padding:9px 11px}.offline{font-size:11px;color:var(--muted);margin-right:15px;white-space:nowrap}.offline i{display:inline-block;width:6px;height:6px;background:#64846b;border-radius:50%;margin-right:6px}.app-shell{display:grid;grid-template-columns:250px minmax(450px,1fr) 290px;min-height:calc(100vh - 90px)}aside{padding:38px 26px;border-right:1px solid var(--line);background:#eeeee5;display:flex;flex-direction:column}.eyebrow{font-size:10px;letter-spacing:1.9px;color:var(--gold);font-weight:700}h1{font-family:var(--serif);font-weight:400;font-size:36px;line-height:1.15;margin:20px 0 14px}.aside-copy{line-height:1.65;color:var(--muted);font-size:12px;margin:0 0 27px}nav{display:grid;gap:6px}nav button{border:none;text-align:left;padding:12px 8px;display:flex;gap:13px;align-items:center;font-size:12px;color:var(--muted)}nav button.active{background:#dee3d8;color:var(--green);font-weight:700}nav b{border:1px solid #c8cebf;border-radius:50%;width:25px;height:25px;display:grid;place-items:center;font-size:11px}nav .active b{background:var(--green);color:#fff;border-color:var(--green)}.aside-bottom{margin-top:auto;padding-top:45px;display:grid;gap:8px}.aside-bottom span{font-size:10px;color:var(--muted);margin-bottom:4px}.aside-bottom button{text-align:left;font-size:12px}main{padding:32px 38px;min-width:0}.page-top{display:flex;justify-content:space-between;align-items:center;margin:3px 0 18px}.page-top>span:last-child{font-size:10px;color:var(--muted)}h2{font-family:var(--serif);font-weight:400;font-size:33px;margin:0 0 12px}h3{font-family:var(--serif);font-weight:400;font-size:23px;margin:22px 0 12px}p.lead{line-height:1.65;color:var(--muted);max-width:650px;margin:0 0 24px}.step-footer{display:flex;justify-content:space-between;align-items:center;border-top:1px solid var(--line);padding-top:22px;margin-top:30px}.step-footer span{font-size:11px;color:var(--muted)}.summary{padding:38px 23px;border-left:1px solid var(--line);background:#f3f2e9}.summary h2{font-size:25px;margin-top:16px}.summary>p:not(.eyebrow){color:var(--muted);line-height:1.6;font-size:12px}.mini-sheet{position:relative;aspect-ratio:1787/2309;background:url('assets/character-sheet.jpg') center/cover;box-shadow:0 7px 18px #38382b20;margin:22px 0}.mini-sheet .mini-name{position:absolute;top:15%;left:16%;width:23%;font-size:9px;text-align:center;font-family:var(--serif)}.mini-sheet img{position:absolute;left:40%;top:14%;width:21%;height:25%;object-fit:cover}.stats-strip{display:grid;grid-template-columns:repeat(4,1fr);gap:4px;margin:16px 0}.stats-strip div{text-align:center;padding:10px 0;background:#e7e9df;border-radius:3px}.stats-strip b{display:block;font-size:17px;font-weight:400}.stats-strip small{font-size:9px;color:var(--muted)}.full{width:100%}.tiny{font-size:11px}.muted{color:var(--muted)}input,select,textarea{border:1px solid #cfd3c7;border-radius:4px;background:#fffefa;color:var(--ink);padding:11px;max-width:100%}input[type=number]{width:85px}input[type=checkbox]{width:auto;accent-color:var(--green)}textarea{resize:vertical;min-height:100px;line-height:1.5;width:100%}.field{display:grid;gap:7px;font-size:11px;font-weight:700;margin-bottom:17px}.field>input,.field>select{width:100%}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:0 18px}.search{width:100%;margin-bottom:18px}.cards{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.card{border:1px solid var(--line);border-radius:6px;background:#fffdf6;padding:19px;text-align:left;position:relative;min-height:114px}.card:hover{border-color:#8eab94;background:#f2f5ec}.card.selected{border-color:var(--green);box-shadow:inset 0 0 0 1px var(--green);background:#eaf0e5}.card .card-mark{color:var(--gold);font-size:26px;display:block;margin-bottom:10px}.card strong{font-family:var(--serif);font-size:21px;font-weight:400;display:block}.card p{font-size:11px;color:var(--muted);line-height:1.55;margin:9px 0 0}.card.selected:after{content:'✓';position:absolute;right:13px;top:13px;color:var(--green)}.tag{display:inline-block;background:#eee4ce;color:#775b2e;border-radius:3px;padding:3px 7px;font-size:10px;margin:7px 5px 0 0}.tag.npc{background:#f2e1d8;color:#87503a}.notice{border-left:3px solid var(--gold);background:#f2ead9;padding:12px 15px;font-size:12px;line-height:1.65;margin:16px 0}.notice.error{border-color:var(--danger);background:#f7e9e1}.notice.success{border-color:#6d9071;background:#e7eee1}.attribute-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin:16px 0}.attribute{border:1px solid var(--line);border-radius:5px;text-align:center;padding:14px 5px;background:#fffdf6}.attribute label{font-size:11px;font-weight:700}.attribute input{display:block;text-align:center;width:65px;margin:10px auto;font-family:var(--serif);font-size:24px;padding:6px}.attribute small{font-size:10px;color:var(--muted)}details{border:1px solid var(--line);border-radius:5px;padding:13px 15px;background:#fffdf7;margin:12px 0}summary{cursor:pointer;font-weight:700;font-size:12px}details p,details pre{font:12px/1.65 Liberation,Arial,sans-serif;white-space:pre-wrap}table{border-collapse:collapse;width:100%;font-size:12px}th{text-align:left;font-size:10px;color:var(--muted);padding:9px 6px;border-bottom:1px solid var(--line)}td{padding:9px 6px;border-bottom:1px solid #e6e5db;vertical-align:middle}td input{padding:6px;width:60px!important}td button{padding:5px 9px;font-size:11px}td small{display:block;color:var(--muted);font-size:10px;line-height:1.5}.table-wrap{overflow:auto}.category-title{font-size:14px;margin:23px 0 5px;color:var(--green);font-weight:700}.xp-bar{display:flex;gap:18px;align-items:center;flex-wrap:wrap;border:1px solid #c6d0be;background:#e9eee2;padding:17px;border-radius:5px;margin-bottom:18px}.xp-bar b{font-size:25px;font-weight:400}.xp-bar small{display:block;font-size:10px;color:var(--muted)}.toggle{display:flex;align-items:center;gap:9px;font-size:12px;line-height:1.6;margin:15px 0}.choice{padding:13px;background:#eeeee4;border-radius:4px;margin:10px 0}.choice label{display:block;font-size:12px;margin-bottom:8px}.choice select{width:100%;margin-bottom:6px}.portrait-editor{background:#e8e9df;padding:20px;border-radius:6px}.portrait-stage{width:220px;height:340px;max-width:100%;overflow:hidden;position:relative;margin:auto;background:#d9dbcf;touch-action:none;cursor:grab}.portrait-stage canvas{width:100%;height:100%;display:block}.range-label{display:grid;grid-template-columns:70px 1fr;align-items:center;gap:10px;margin:13px 0;font-size:12px}.range-label input{width:100%}.toolbar{display:flex;flex-wrap:wrap;gap:8px;margin:15px 0}.spell-card{padding:14px;border:1px solid var(--line);border-radius:4px;background:#fffdf7;margin:10px 0}.spell-card summary{display:flex;justify-content:space-between;gap:8px}.spell-card textarea{margin-top:10px;font-size:12px}.sheet-preview{width:100%;display:block;margin:0 auto 20px;box-shadow:0 4px 18px #0002}.sheet-viewer{max-height:70vh;overflow:auto;padding:10px;background:#e6e5dc}dialog{width:min(850px,94vw);max-height:92vh;border:1px solid var(--line);border-radius:9px;padding:25px;background:var(--paper);color:var(--ink)}dialog::backdrop{background:#1a2925a6;backdrop-filter:blur(3px)}.dialog-head{display:flex;justify-content:space-between;gap:15px;align-items:center;margin-bottom:15px}.dialog-head h2{font-size:27px;margin:0}.dialog-head button{padding:6px 11px}#toast{position:fixed;bottom:25px;left:50%;transform:translateX(-50%);background:var(--green);color:white;padding:12px 20px;border-radius:5px;display:none;z-index:20;max-width:90vw}.library-row{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:14px 0;border-bottom:1px solid var(--line)}.library-row p{margin:5px 0;font-size:11px;color:var(--muted)}.library-row .toolbar{margin:0}.help{line-height:1.7;font-size:13px}.empty{text-align:center;padding:40px;color:var(--muted)}.checklist{padding-left:20px;font-size:12px;line-height:1.8}.row{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.rule-link{font-size:11px;color:var(--muted)}button.text{border:0;padding:4px;text-decoration:underline}.loading{padding:40px;text-align:center}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0)}
@media(min-width:1500px){main{padding-left:65px;padding-right:65px}.app-shell{grid-template-columns:280px 1fr 330px}}@media(max-width:1150px){.summary{display:none}.app-shell{grid-template-columns:230px minmax(0,1fr)}.offline{display:none}header{padding:0 22px}.header-actions{gap:5px}.header-actions button{padding:8px}}@media(max-width:720px){header{height:auto;min-height:95px;flex-wrap:wrap;padding:16px;gap:12px}.brand{font-size:19px}.brand small{font-size:8px}.header-actions{flex-wrap:wrap}.app-shell{display:block}aside{padding:14px;border-right:none;border-bottom:1px solid var(--line)}aside>.eyebrow,aside h1,.aside-copy,.aside-bottom{display:none}nav{display:flex;overflow:auto;gap:4px}nav button{flex-shrink:0;font-size:10px;padding:8px}nav b{display:none}main{padding:23px 18px}.cards{grid-template-columns:1fr 1fr}.card{padding:14px}.card strong{font-size:19px}h2{font-size:28px}.form-grid{grid-template-columns:1fr}.attribute-grid{grid-template-columns:repeat(4,1fr);gap:5px}.attribute input{width:50px}.step-footer{gap:10px}.step-footer button{padding:10px}dialog{padding:18px}.library-row{align-items:flex-start}.xp-bar{gap:12px}}
@media print{header,aside,.summary,.step-footer{display:none}}
/* Keep long catalogues easy to browse without pushing navigation out of reach. */
#peopleCards{max-height:60vh;overflow:auto;padding:2px 5px 5px 2px;scrollbar-color:#a9b7a4 #eeeee5}aside{position:sticky;top:0;height:calc(100vh - 90px);align-self:start}.summary{position:sticky;top:0;max-height:100vh;overflow:auto;align-self:start}input:focus-visible,textarea:focus-visible,select:focus-visible,button:focus-visible,a:focus-visible{outline:2px solid #7c9b7b;outline-offset:3px}#customSkills{min-height:160px}#content details .field input{min-width:55px}#modalBody .toolbar a{padding:10px 15px;border:1px solid var(--line);border-radius:5px;text-decoration:none;background:var(--green);color:white}
@media(max-width:720px){aside{position:static;height:auto}#peopleCards{max-height:57vh}.summary{position:static}}
.field-help{display:block;color:#858a80;font-size:11px;font-weight:400;line-height:1.55;letter-spacing:0}
/* Race illustrations: original book art beneath readable parchment text. */
.race-card{overflow:hidden}.race-copy{position:relative;z-index:2;display:block}.race-card-detail{display:block;font-size:11px;color:var(--muted);line-height:1.55;margin:9px 0 0}.race-card.illustrated{min-height:210px;display:flex;align-items:flex-end;background:#e2e0d0;padding:23px}.race-art{position:absolute;right:-2%;top:0;width:84%;height:100%;object-fit:cover;object-position:50% 21%;pointer-events:none;transition:transform .3s}.race-art-wash{position:absolute;inset:0;pointer-events:none;background:linear-gradient(90deg,rgba(250,248,239,.97) 0%,rgba(250,248,239,.91) 27%,rgba(250,248,239,.36) 61%,rgba(250,248,239,.02) 100%),linear-gradient(0deg,rgba(250,248,239,.84),transparent 65%)}.illustrated .race-copy{width:78%;text-shadow:0 1px 6px #faf8ef}.illustrated strong{font-size:25px;color:#253c32;line-height:1.15}.illustrated .race-card-detail{color:#4e5b50;max-width:250px}.race-card.illustrated:hover{background:#dbe2cf}.illustrated:hover .race-art{transform:scale(1.025)}.race-card.selected:after{z-index:3;background:#faf8efde;border-radius:50%;width:22px;height:22px;text-align:center;line-height:22px}@media(max-width:720px){.race-card.illustrated{min-height:190px;padding:16px}.illustrated strong{font-size:22px}.illustrated .race-copy{width:92%}.illustrated .race-card-detail{font-size:10px}}

.sidebar-emblem{display:block;width:120px;height:130px;object-fit:contain;margin:0 auto 8px}aside{padding-top:18px;overflow-y:auto}.sidebar-emblem+.eyebrow{text-align:center;margin:0}aside h1{margin-top:15px}.aside-bottom{padding-top:24px}@media(max-width:720px){.sidebar-emblem{display:none}}

.mini-sheet .summary-sheet-image{position:static;display:block;width:100%;height:100%;object-fit:contain}#summaryContinue{margin-top:10px}

.summary{max-height:calc(100vh - 90px);padding-top:24px;padding-bottom:16px}.summary .mini-sheet{width:min(100%,calc(28vh * .774));margin:12px auto}.summary h2{margin-top:8px}

.portrait-stage{height:300px}
