:root{color:#1a1a1a;font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background:#f3efe3;font-family:Segoe UI,Tahoma,Geneva,Verdana,sans-serif}*{box-sizing:border-box}body{min-height:100vh;margin:0}#root{min-height:100vh}:root{--space-1:.25rem;--space-2:.5rem;--space-3:.75rem;--print-card-font-family:"Aptos Narrow", "Bahnschrift SemiCondensed", "Arial Narrow", "Roboto Condensed", "Liberation Sans Narrow", "Segoe UI", Tahoma, Geneva, Verdana, sans-serif;--icon-card-sm:.82rem;--icon-card-md:.9rem;--ability-cost-justify:flex-end;--ability-dice-x-offset:3px;--fighter-card-web-height:27.5rem;--card-heading-top-gap:.4rem;--card-heading-content-gap:.18rem;--card-back-list-gap:.16rem;--card-back-item-pad:.14rem;--card-back-name-size:.63rem;--card-back-cost-size:.5rem;--card-back-dice-size:.56rem;--card-back-desc-size:.5rem}.app-shell{gap:var(--space-3);flex-direction:column;width:min(1100px,100%);margin:0 auto;padding:1.25rem;display:flex}.app-header{background:#ece6d6;border:1px solid #d2c8b2;border-radius:12px;padding:1rem}.app-header-top{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:.75rem 1rem;display:flex}.app-header-copy{flex-direction:column;flex:24rem;align-items:flex-start;gap:.4rem;min-width:0;display:flex}.app-header h1,.app-header p{margin:0}.app-header-link{color:#163f4f;background:#f7f3e8;border:1px solid #1d495a;border-radius:999px;align-items:center;padding:.38rem .75rem;font-size:.82rem;font-weight:700;text-decoration:none;transition:background .14s,color .14s,border-color .14s;display:inline-flex}.app-header-link:hover{color:#fff;background:#163f4f;border-color:#163f4f}.app-header-actions{flex:none;align-items:center;gap:.55rem;display:flex}.app-github-link{color:#163f4f;background:#f7f3e8;border:1px solid #1d495a;border-radius:999px;align-items:center;gap:.35rem;padding:.38rem .75rem;font-size:.82rem;font-weight:700;text-decoration:none;transition:background .14s,color .14s,border-color .14s;display:inline-flex}.app-github-link:hover{color:#fff;background:#163f4f;border-color:#163f4f}.app-credits{color:#5a5040;border-top:1px solid #d2c8b2;flex-wrap:wrap;gap:.25rem 1.5rem;padding-top:.75rem;font-size:.78rem;display:flex}.app-credits a{color:#163f4f;text-decoration:underline}.app-credits a:hover{color:#0f2a35}.language-picker{flex:none;align-items:center;gap:.55rem;display:flex}.language-picker-label{color:#22343b;margin:0;font-size:.82rem;font-weight:700}.language-picker-select-wrap{min-width:9rem;position:relative}.language-picker-select{appearance:none;color:#0f2a35;cursor:pointer;background:#f7f3e8;border:1px solid #0f2a35;border-radius:999px;width:100%;padding:.45rem 2rem .45rem .85rem;font-size:.84rem;line-height:1.1}.language-picker-select-wrap:after{content:"";pointer-events:none;border-bottom:2px solid #163f4f;border-right:2px solid #163f4f;width:.45rem;height:.45rem;position:absolute;top:50%;right:.78rem;transform:translateY(-65%)rotate(45deg)}.roster-import{gap:var(--space-2);background:#f7f3e8;border:1px solid #d2c8b2;border-radius:12px;flex-direction:column;padding:1rem;display:flex}.roster-title{margin:0;font-weight:700}.roster-input-shell{position:relative}.roster-import textarea{resize:vertical;border:1px solid #bfb39b;border-radius:8px;width:100%;min-height:10rem;padding:.6rem .6rem 3.15rem;font-family:Consolas,Courier New,monospace;font-size:.95rem}.roster-input-actions{pointer-events:none;flex-wrap:wrap;justify-content:flex-end;gap:.35rem;display:flex;position:absolute;bottom:.55rem;right:.55rem}.roster-action-button{color:#fff;cursor:pointer;pointer-events:auto;background:#163f4f;border:1px solid #0f2a35;border-radius:8px;width:fit-content;padding:.42rem .72rem}.roster-action-button-secondary{color:#0f2a35;background:#f2ebd8}.status{margin:0}.print-controls{flex-wrap:wrap;align-items:center;gap:.45rem;display:flex}.print-controls-label{color:#22343b;font-size:.85rem;font-weight:700}.print-mode-toggle,.print-now-button{cursor:pointer;border:1px solid #0f2a35;border-radius:999px;padding:.32rem .62rem;font-size:.82rem;line-height:1}.print-mode-toggle{color:#0f2a35;background:#f2ebd8}.print-mode-toggle.is-active{color:#fff;background:#163f4f}.print-now-button{color:#fff;background:#0f2f3b}.cards-grid{gap:var(--space-3);grid-template-columns:repeat(auto-fill,minmax(260px,1fr));align-items:stretch;display:grid}.warband-header-card{background:linear-gradient(#e8f0eb 0%,#dbe8e0 100%);border:1px solid #2f3f45;border-radius:12px;grid-column:1/-1;padding:.85rem}.warband-header-card h2{margin:0;font-size:1.05rem}.warband-header-card p{color:#30444d;margin:.25rem 0 0;font-size:.9rem}.warband-header-top{justify-content:space-between;align-items:center;gap:.75rem;display:flex}.faction-runemark{object-fit:contain;flex:none;width:3rem;height:3rem}.warband-traits{margin-top:.55rem}.fighter-card{padding:var(--space-3);height:var(--fighter-card-web-height);background:linear-gradient(#fefcf6 0%,#f2ebd8 100%);border:1px solid #2f3f45;border-radius:12px;flex-direction:column;display:flex;overflow:hidden}.fighter-card-back{justify-content:stretch}.cards-grid-backs{align-items:start}.cards-grid-backs .fighter-card{height:auto;min-height:var(--fighter-card-web-height)}.card-back-frame{box-sizing:border-box;text-align:left;background:0 0;border:none;border-radius:0;flex-direction:column;align-items:stretch;gap:0;width:100%;height:100%;padding:0;display:flex;overflow:hidden}.card-back-overline{text-transform:uppercase;letter-spacing:.09em;color:#284049;margin:0;font-size:.58rem}.card-back-frame h2{text-transform:uppercase;letter-spacing:.01em;margin:0;font-size:.88rem;line-height:1.05}.card-back-warband{color:#2c3e44;margin:0;font-size:.68rem}.card-back-divider{opacity:.5;background:#2f3f45;width:100%;height:1px}.card-back-note{color:#2c3e44;margin:0;font-size:.62rem;line-height:1.15}.card-back-ability-list{gap:var(--card-back-list-gap);flex-direction:column;min-height:0;margin:0;padding:0;list-style:none;display:flex;overflow:visible}.card-back-ability-item{padding-top:var(--card-back-item-pad);border-top:1px dotted #8f8a7c}.card-back-ability-list>:first-child{border-top:none;padding-top:0}.card-back-ability-heading{justify-content:space-between;align-items:baseline;gap:.35rem;margin:0;display:flex}.card-back-ability-name{font-size:var(--card-back-name-size);color:#172f38;font-weight:700;line-height:1.1}.card-back-ability-cost{justify-content:flex-end;align-items:center;min-width:1.8rem;display:inline-flex}.card-back-dice-group{color:#1a3f4f;align-items:center;gap:.02rem;display:inline-flex}.card-back-dice-icon{font-size:var(--card-back-dice-size)}.card-back-cost-text{font-size:var(--card-back-cost-size);text-transform:uppercase;letter-spacing:.03em;color:#284049;font-weight:700}.card-back-passive-badge{border:1px solid #36515b;border-radius:999px;justify-content:center;align-items:center;width:.9rem;height:.9rem;display:inline-flex}.card-back-passive-icon{color:#284049;font-size:.48rem}.card-back-ability-description{font-size:var(--card-back-desc-size);color:#22353c;margin:.08rem 0 0;line-height:1.22}.fighter-card-back.density-compact{--card-back-list-gap:.14rem;--card-back-item-pad:.1rem;--card-back-name-size:.62rem;--card-back-cost-size:.52rem;--card-back-dice-size:.58rem;--card-back-desc-size:.5rem}.fighter-card-back.density-medium{--card-back-list-gap:.18rem;--card-back-item-pad:.12rem;--card-back-name-size:.68rem;--card-back-cost-size:.58rem;--card-back-dice-size:.64rem;--card-back-desc-size:.56rem}.fighter-card-back.density-roomy{--card-back-list-gap:.22rem;--card-back-item-pad:.15rem;--card-back-name-size:.74rem;--card-back-cost-size:.64rem;--card-back-dice-size:.7rem;--card-back-desc-size:.62rem}.fighter-card-header{grid-template-columns:minmax(0,1fr) auto;align-items:start;column-gap:.5rem;min-height:2.7rem;display:grid}.fighter-card h2{overflow-wrap:anywhere;line-clamp:2;-webkit-line-clamp:2;-webkit-box-orient:vertical;flex:auto;min-width:0;margin:0;font-size:1.05rem;line-height:1.15;display:-webkit-box;overflow:hidden}.points-pill{color:#fff;white-space:nowrap;background:linear-gradient(#173f4f 0%,#0f2f3b 100%);border:1px solid #25353b;border-radius:8px;flex:none;align-self:flex-start;align-items:baseline;gap:.22rem;padding:.22rem .4rem;line-height:1;display:inline-flex}.points-value{font-size:.94rem;font-weight:800}.points-unit{letter-spacing:.07em;text-transform:uppercase;font-size:.58rem;font-weight:700}.fighter-card:not(.fighter-card-back) p{color:#334247;margin:.35rem 0 0;font-size:.88rem}.stats-grid{margin:var(--card-heading-content-gap) 0 0;grid-template-columns:repeat(3,minmax(0,1fr));gap:.3rem;display:grid}.stats-grid div{background:linear-gradient(#f8f4e8 0%,#efe8d7 100%);border:1px solid #c3baa6;border-radius:8px;justify-content:center;align-items:center;gap:.3rem;min-height:2.15rem;padding:.22rem .35rem;display:flex}.stats-grid dt{align-items:center;margin:0;line-height:1;display:inline-flex}.stats-grid dd{text-align:center;margin:0;font-size:1.22rem;font-weight:700;line-height:1}.stat-icon{object-fit:contain;opacity:.82;width:.74rem;height:.74rem;display:block}.fighter-card section{margin-top:var(--card-heading-top-gap)}.fighter-card-body{flex-direction:column;flex:auto;display:flex}.fighter-card-body>:first-child{margin-top:var(--space-2)}.fighter-card .reactions-section{padding-top:var(--card-heading-content-gap);margin-top:auto}.runemarks-under-name{margin-top:var(--space-1)}.runemarks-bottom{margin-top:var(--space-2)}.fighter-card h3{text-transform:uppercase;letter-spacing:.07em;color:#30444d;margin:0;font-size:.76rem}.fighter-card-body>h3{margin-top:var(--card-heading-top-gap)}.fighter-card section>h3{margin-top:0}.weapons-showcase-list{margin:var(--card-heading-content-gap) 0 0;gap:var(--space-1);flex-direction:column;max-width:100%;min-height:5.15rem;max-height:5.15rem;padding-left:0;padding-right:.1rem;list-style:none;display:flex;overflow:hidden auto}.weapon-showcase-row{background:linear-gradient(#f3efe5 0%,#e9e2d0 100%);border:1px solid #b5ab95;border-radius:8px;grid-template-columns:1.15fr repeat(4,minmax(2.35rem,1fr));width:100%;max-width:100%;display:grid;overflow:hidden}.weapon-showcase-empty{color:#24353c;border:1px solid #c3baa6;border-radius:8px;padding:.35rem .45rem;font-size:.8rem}.weapon-cell{border-right:1px solid #b9af99;flex-direction:column;justify-content:center;align-items:center;gap:.15rem;min-height:2.45rem;padding:.2rem;display:flex}.weapon-cell:last-child{border-right:none}.weapon-cell-type{padding:.2rem .3rem}.weapon-type-icon{width:var(--icon-card-md);height:var(--icon-card-md);object-fit:contain;display:block}.weapon-type-label{text-align:center;color:#1f3238;font-size:.58rem;line-height:1.1}.weapon-stat-icon{width:var(--icon-card-md);height:var(--icon-card-md);object-fit:contain;display:block}.weapon-stat-value{color:#111;font-size:.92rem;font-weight:700;line-height:1}.runemarks-list{margin:var(--space-1) 0 0;flex-wrap:wrap;gap:.35rem;max-width:100%;padding-left:0;list-style:none;display:flex}.fighter-runemark-badge{color:#24353c;background:#f8f4ea;border:1px solid #c3baa6;border-radius:999px;align-items:center;gap:.3rem;padding:.2rem .45rem;font-size:.74rem;display:inline-flex}.fighter-runemark-icon{width:var(--icon-card-md);height:var(--icon-card-md);object-fit:contain;flex:none;display:block}.abilities-list{margin:var(--card-heading-content-gap) 0 0;flex-direction:column;gap:.08rem;max-width:100%;padding-left:0;font-size:.9rem;list-style:none;display:flex}.ability-line{grid-template-columns:3.5rem minmax(0,1fr);align-items:center;gap:.52rem;width:100%;min-width:0;max-width:100%;line-height:1.25;display:grid}.ability-cost-slot{align-items:center;justify-content:var(--ability-cost-justify);width:100%;min-width:0;min-height:1rem;display:inline-flex}.ability-name{white-space:normal;word-break:break-word;overflow-wrap:anywhere;min-width:0;display:block}.dice-group{white-space:nowrap;color:#17465a;transform:translateX(var(--ability-dice-x-offset));flex-wrap:nowrap;align-items:center;gap:0;display:inline-flex}.dice-icon{filter:drop-shadow(0 0 .02rem #0f2a35);font-size:.7rem}.passive-badge{background:#e7eef0;border:1px solid #36515b;border-radius:999px;justify-content:center;align-items:center;width:1.25rem;height:1.25rem;display:inline-flex}.passive-icon{color:#36515b;font-size:.68rem}.unmatched{color:#7f1d1d}@media (width<=720px){.app-shell{padding:1rem}.app-header-top{align-items:stretch}.app-header-actions{flex-wrap:wrap;justify-content:space-between;width:100%}.language-picker{flex:14rem;justify-content:space-between;width:auto}.roster-input-actions{justify-content:space-between;left:.55rem;right:.55rem}.roster-action-button{flex:auto;min-height:2rem}}@media print{:root{--ability-dice-x-offset:2px;--card-heading-top-gap:1.1mm;--card-heading-content-gap:.55mm}@page{size:auto;margin:5mm}body{color:#000;-webkit-print-color-adjust:exact;print-color-adjust:exact;background:#fff}.app-shell{gap:0;width:100%;padding:0}.app-header,.roster-import,.warband-header-card{display:none}.cards-grid{gap:1.2mm;justify-content:initial;grid-template-columns:repeat(3,63.5mm);grid-auto-rows:89mm;align-content:start;width:max-content;margin:0 auto}.fighter-card{box-sizing:border-box;border-radius:2.5mm;gap:0;width:63.5mm;max-width:63.5mm;height:89mm;min-height:89mm;max-height:89mm;padding:1.7mm;overflow:hidden}.cards-grid-backs .fighter-card{height:89mm;min-height:89mm;max-height:89mm}.fighter-card-back{--card-back-list-gap:.45mm;--card-back-item-pad:.35mm;--card-back-name-size:6.6pt;--card-back-cost-size:5.9pt;--card-back-dice-size:6.5pt;--card-back-desc-size:6.2pt}.fighter-card-back.density-compact{--card-back-list-gap:.32mm!important;--card-back-item-pad:.24mm!important;--card-back-name-size:6.2pt!important;--card-back-cost-size:5.1pt!important;--card-back-dice-size:5.6pt!important;--card-back-desc-size:5.4pt!important}.fighter-card-back.density-medium{--card-back-list-gap:.4mm!important;--card-back-item-pad:.28mm!important;--card-back-name-size:6.5pt!important;--card-back-cost-size:5.4pt!important;--card-back-dice-size:5.9pt!important;--card-back-desc-size:5.8pt!important}.fighter-card-back.density-roomy{--card-back-list-gap:.48mm!important;--card-back-item-pad:.32mm!important;--card-back-name-size:6.9pt!important;--card-back-cost-size:5.8pt!important;--card-back-dice-size:6.3pt!important;--card-back-desc-size:6.1pt!important}.fighter-card-header{column-gap:1mm;min-height:0;margin-bottom:.35mm}.fighter-card h2{letter-spacing:-.01em;font-size:8.4pt;line-height:1.02}.fighter-card h3{letter-spacing:.04em;font-size:5.8pt}.runemarks-under-name{margin-top:.35mm}.fighter-card-body>:first-child{margin-top:1.1mm}.stats-grid{gap:.6mm}.stats-grid div{gap:.55mm;min-height:7.4mm;padding:.35mm .7mm}.stats-grid dd{font-size:9pt}.stat-icon{width:2.35mm;height:2.35mm}.weapons-showcase-list{gap:.5mm;min-height:16.2mm;max-height:none;padding-right:0;overflow:visible}.weapon-cell{min-height:7.7mm;padding:.3mm}.weapon-stat-value{font-size:7.15pt}.abilities-list{gap:.45mm;font-size:6.7pt}.ability-line{grid-template-columns:12.2mm minmax(0,1fr);gap:.95mm;line-height:1.08}.dice-icon{font-size:.62rem}.runemarks-list{margin-top:var(--card-heading-content-gap);gap:.45mm}.fighter-runemark-badge{gap:.35mm;padding:.25mm .85mm;font-size:6.2pt}.fighter-runemark-icon{width:2.7mm;height:2.7mm}.warband-header-card,.fighter-card,.stats-grid div,.weapon-showcase-row,.fighter-runemark-badge,.points-pill,.passive-badge,.card-back-frame{color:#000!important;box-shadow:none!important;background:#fff!important;border-color:#000!important}.warband-header-card,.fighter-card,.weapon-showcase-empty,.fighter-runemark-badge,.points-pill,.card-back-frame{letter-spacing:-.01em;font-family:var(--print-card-font-family)!important}.faction-runemark,.fighter-runemark-icon{filter:grayscale()contrast(1.25)}.dice-group,.dice-icon,.weapon-stat-value,.fighter-card h3,.warband-header-card p,.card-back-note,.card-back-ability-name,.card-back-cost-text,.card-back-dice-group,.card-back-dice-icon,.card-back-passive-icon,.card-back-ability-description{color:#000!important}.card-back-ability-item{border-top:.18mm solid #6f6f6f!important}.card-back-ability-list>:first-child{border-top:none!important}.stats-grid div,.weapon-showcase-row,.weapon-showcase-empty,.fighter-runemark-badge{border-width:.18mm!important}.weapon-cell{border-right-width:.15mm!important;border-right-color:#5f5f5f!important}.card-back-frame{gap:0;padding:0}.card-back-ability-list{gap:var(--card-back-list-gap);padding:0;overflow:hidden}.card-back-ability-item{padding-top:var(--card-back-item-pad)}.card-back-ability-name{font-size:var(--card-back-name-size)}.card-back-cost-text{font-size:var(--card-back-cost-size)}.card-back-dice-icon{font-size:var(--card-back-dice-size)}.card-back-passive-badge{width:2.3mm;height:2.3mm}.card-back-ability-description{font-size:var(--card-back-desc-size);margin-top:.2mm;line-height:1.1}.fighter-card,.warband-header-card{break-inside:avoid;page-break-inside:avoid}.fighter-card .reactions-section{margin-top:auto;padding-top:0}.points-pill{border-radius:2mm;grid-template-columns:1fr;place-items:center;gap:.5mm;min-width:10.5mm;min-height:6.8mm;padding:.7mm 1.1mm;display:inline-grid;background:#fff!important}.points-value{font-size:8pt;font-weight:800;line-height:1}.points-unit{letter-spacing:.14em;font-size:5pt;line-height:1}}
