/* Shared interaction rhythm and readable working surfaces. */
:root{--ease-out:cubic-bezier(.2,.75,.25,1);--header-offset:190px}
html{scroll-padding-top:var(--header-offset);scroll-behavior:smooth}
.editor-panel h2,.editor-panel,.article-content section,.lore-article{scroll-margin-top:var(--header-offset)}
.main-content{animation:page-settle .35s var(--ease-out) both}
@keyframes page-settle{from{opacity:.6;transform:translateY(6px)}to{opacity:1;transform:none}}
body{line-height:1.6}button,input,select,textarea{font:inherit}
.control{min-height:44px;font-size:14px;transition:border-color .18s,box-shadow .18s,background .18s}
.control:focus{outline:2px solid var(--green);outline-offset:3px}
.field>span,.field>label,.checkbox-line,.nav-link{font-size:14px}
.field small,.field-help,.muted.small{font-size:12px;line-height:1.55}
.btn{min-height:44px;transition:transform .18s var(--ease-out),box-shadow .18s,background .18s,border-color .18s}
.btn:active{transform:translateY(1px)}
.btn-primary:hover{box-shadow:0 7px 20px color-mix(in srgb,var(--green) 20%,transparent)}
.icon-btn,.context-help-button,.menu-btn{min-width:40px;min-height:40px}
:where(a,button,summary):focus-visible{outline:2px solid var(--green);outline-offset:4px;border-radius:4px}
.rule-card,.category-card,.lore-card,.edition-card,.dossier-card{transition:transform .22s var(--ease-out),border-color .22s,box-shadow .22s}
@media(hover:hover){.rule-card:hover,.category-card:hover,.lore-card:hover{transform:translateY(-3px);box-shadow:0 12px 28px #00000012;border-color:var(--green)}}
.rule-card p,.panel>p,.article-content p,.detail-body p{font-size:15px;line-height:1.75}
.page-heading p{max-width:70ch;font-size:16px}.article-content{max-width:920px}
.game-tab{transition:background .22s,filter .22s}.game-tab:hover{filter:brightness(1.12)}
.game-title strong{letter-spacing:0}.portal-hero-hint{font-size:12px}
.portal-hero{min-height:410px}.portal-hero-copy{padding:34px;gap:24px}.portal-hero h1{min-height:0;margin:0;font-size:clamp(30px,3vw,44px)!important}.portal-stage{min-height:410px}.portal-shortcuts{display:flex;flex-wrap:wrap;gap:12px 20px;font-size:15px}.portal-shortcuts a{text-underline-offset:5px}.portal-hero .btn{font-size:14px;min-height:44px}.portal-label{font-size:13px;text-transform:none;letter-spacing:0}
@media(max-width:650px){.portal-hero{display:flex;flex-direction:column;min-height:0}.portal-stage{order:0;min-height:0;height:240px}.portal-mascot{height:240px;width:240px}.portal-stage-halo{height:220px;width:220px}.portal-stage:after{bottom:20px}.portal-hero-copy{order:1;padding:20px;gap:18px}.portal-hero h1{font-size:28px!important;line-height:1.2}.portal-hero .button-row{display:grid;grid-template-columns:1fr}.portal-hero .btn{font-size:14px}.portal-shortcuts{font-size:14px;gap:12px}}
.portal-stage-halo{transition:filter .6s}.portal-hero:hover .portal-stage-halo{filter:brightness(1.07)}
.editor-bottom{position:relative}.stepper button{min-height:50px}.stepper li{min-width:0}
.vtm-checklist{line-height:2}.play-event time{font-variant-numeric:tabular-nums}
.play-die{touch-action:manipulation;transition:transform .16s,border-color .16s,box-shadow .16s}.play-die.selected{transform:translateY(-4px)}
.play-local{font-size:12px}.site-footer{font-size:12px}.site-footer .footer-links{flex-wrap:wrap}
.lore-card h2{line-height:1.3}.lore-article dd{white-space:pre-line}
.clean-sheet-stack{max-width:850px;color:#17232b}.clean-sheet{background:#fff;color:#17232b;padding:5.5%;margin-bottom:24px;border:1px solid #d8dde0;box-shadow:0 8px 30px #0001;font-family:Georgia,'Times New Roman',serif;container-type:inline-size}
.clean-header{display:flex;justify-content:space-between;gap:22px;border-top:4px solid currentColor;border-bottom:1px solid;padding:18px 0;margin-bottom:22px}.clean-header h2{font-size:30px;margin:8px 0;line-height:1.2}.clean-header p{font-size:13px;margin:0}.clean-brand{font-size:12px;letter-spacing:.13em;text-transform:uppercase;font-weight:700}.clean-portrait{width:95px;height:110px;flex:0 0 95px;overflow:hidden;border:1px solid #9ca9af}.clean-portrait img{width:100%;height:100%;object-fit:contain}.blank-portrait{display:grid;place-items:center;color:#98a0a5;font:12px 'Segoe UI',sans-serif}
.clean-columns{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px 22px;margin:15px 0}.clean-stat{display:flex;align-items:center;justify-content:space-between;gap:5px;font-size:12px;margin:3px 0;line-height:1.5}.clean-stat>span:first-child{overflow-wrap:anywhere}.clean-stat b{white-space:nowrap}.clean-dots{display:flex;gap:2px;flex-shrink:0}.clean-dots i{display:block;width:7px;height:7px;border:1px solid currentColor;border-radius:50%}.clean-dots i.filled{background:currentColor}.clean-block{break-inside:avoid;margin-bottom:12px}.clean-block h3{font-size:13px;border-bottom:1px solid #afbac0;margin:0 0 6px;padding-bottom:3px;letter-spacing:.01em}.clean-block p{font:12px/1.5 'Segoe UI',sans-serif;white-space:pre-wrap;overflow-wrap:anywhere;min-height:22px;margin:0}.clean-continuation .clean-block p{min-height:45px}.clean-section{text-align:center;letter-spacing:.09em;text-transform:uppercase;font-size:15px;margin:18px 0 10px;border-bottom:1px solid #97a0a5;padding-bottom:6px}.clean-bs-stats{display:grid;grid-template-columns:1fr 1fr;gap:14px}.clean-bs-stats section{border-bottom:1px solid #9aa3a8;padding-bottom:10px}.clean-bs-stats p{font-size:12px;margin:5px 0}.clean-bs-stats .clean-stat{font-size:20px}.clean-kitties .clean-sheet{border-radius:16px;color:#254b41}.clean-kitties .clean-columns .clean-stat{background:#f2f7f4;padding:12px;border-radius:8px;font-size:15px}.clean-v5 .clean-sheet,.clean-v20 .clean-sheet{border-top:4px solid #733342}.clean-blacksad .clean-sheet{border-top:4px solid #4a443b}
@media(max-width:650px){.field>span,.field>label,.checkbox-line{font-size:14px}.editor-panel{padding:22px 16px}.btn{font-size:13px}.page-heading h1{font-size:28px}.stepper{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:4px}.stepper button{font-size:12px}.game-title strong{font-size:11px}.main-content{animation:none}.clean-sheet{min-width:520px}.clean-sheet-stack{overflow-x:auto}.clean-header h2{font-size:25px}}
@media print{.clean-sheet-stack{overflow:visible;width:100%;max-width:none}.clean-sheet{box-shadow:none;border:0!important;border-radius:0!important;width:190mm;min-width:0;margin:0;padding:2mm 0 0;break-after:page;color:#111!important;print-color-adjust:exact}.clean-sheet:last-child{break-after:auto}.clean-header{margin-bottom:12px;padding:12px 0}.clean-header h2{font-size:25px}.clean-columns{gap:8px 16px;margin:10px 0}.clean-section{margin:12px 0 8px}.clean-block{break-inside:auto}.clean-block h3{break-after:avoid}.clean-block p{orphans:3;widows:3}.clean-stat{font-size:11px}.clean-kitties .clean-columns .clean-stat{background:white}.clean-continuation .clean-block{margin-bottom:15px}.clean-portrait{height:90px;width:80px;flex-basis:80px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*::before,*::after{animation:none!important;transition:none!important}.main-content{animation:none!important}}

.dark-pack-credit{display:flex;align-items:center;gap:14px;max-width:620px;margin-top:16px}.dark-pack-credit img{object-fit:contain;width:60px;height:60px}.dark-pack-credit p{font-size:11px;line-height:1.55;margin:0}.dark-pack-credit>a{flex:0 0 60px}@media print{.dark-pack-credit{display:none}}

.empty-character-portrait{display:grid;place-items:center;min-height:150px;padding:24px;border:1px dashed var(--line);color:var(--muted);font-size:13px;background:var(--surface);text-align:center}
