@font-face{font-family:Cinzel;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/cinzel-latin-600-normal-Dd5YO2UX.woff2)format("woff2"),url(/assets/cinzel-latin-600-normal-CH_LB4su.woff)format("woff")}@font-face{font-family:Cinzel;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/cinzel-latin-700-normal-Dkw14w9r.woff2)format("woff2"),url(/assets/cinzel-latin-700-normal-C-gK7hA8.woff)format("woff")}:root{--night:#0d1410;--night-2:#142019;--night-3:#1c2a21;--oak:#6b4423;--oak-dark:#3a2616;--oak-deep:#24170d;--parchment:#f1dcaa;--parchment-deep:#e0c38a;--parchment-edge:#a9824a;--cream:#f4e8c8;--cream-muted:#cdb98f;--ink:#2a1b0f;--ink-muted:#654a2e;--brass:#c99a3e;--brass-light:#f1d48a;--brass-dark:#7a5a1c;--heraldic:#2350a8;--heraldic-dark:#142f6b;--teal:#3fbfae;--amber:#f2a93b;--blood:#b8402e;--moss:#4f7a3a;--font-display:"Cinzel", "Iowan Old Style", "Palatino Linotype", Palatino, Georgia, serif;--font-text:system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--font-mono:ui-monospace, SFMono-Regular, Menlo, monospace;--bg:var(--night);--panel:var(--night-2);--panel-raised:#26332a;--line:#3a3324;--line-strong:#6a5530;--text:var(--cream);--muted:var(--cream-muted);--gold:#e8bd5c;--danger:#e0614b;--ok:#7fcf6a;--accent:var(--gold);--crown:#f2c94c;--title-font:var(--font-display);--ease:.14s ease-out;--fade:.2s ease-out;--lift:0 10px 26px #00000080;--gap:12px;--pad:16px;--side-width:300px;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}.panel-wood{color:var(--cream);background:url(/ui/panel-wood.png) 0 0 / 256px repeat, var(--oak-dark);box-shadow:inset 0 0 0 1px #0000008c,inset 0 1px #ffe6b414,inset 0 0 48px #00000080}.panel-parchment{--text:var(--ink);--muted:var(--ink-muted);--line:#c9a970;--line-strong:var(--parchment-edge);--gold:#8a5a12;--accent:#8a5a12;--danger:#a3301f;--ok:#2f5a1f;color:var(--ink);background:url(/ui/panel-parchment.png) 0 0 / 384px repeat, var(--parchment);box-shadow:inset 0 0 0 1px #5a3c1473, inset 0 0 36px #784e1a59, var(--lift)}.ornament-top{position:relative}.ornament-top:before{content:"";pointer-events:none;background:url(/ui/ornament-divider.png) 50%/contain no-repeat;width:min(320px,80%);height:22px;position:absolute;top:-12px;left:50%;transform:translate(-50%)}.ornate{position:relative}.ornament-corner{pointer-events:none;filter:drop-shadow(0 1px 1px #00000059);background:url(/ui/ornament-corner.png) 0 0/contain no-repeat;width:46px;height:46px;position:absolute}.ornament-corner.tl{top:4px;left:4px}.ornament-corner.tr{top:4px;right:4px;transform:scaleX(-1)}.ornament-corner.bl{bottom:4px;left:4px;transform:scaleY(-1)}.ornament-corner.br{bottom:4px;right:4px;transform:scale(-1)}.btn-plate{--plate-edge:12px;border:var(--plate-edge) solid transparent;border-image:url(/ui/button-plate.png) 24 fill / var(--plate-edge) stretch;color:var(--cream);font:600 15px/1.2 var(--font-display);letter-spacing:.06em;text-shadow:0 1px 2px #000c;transition:transform var(--ease), filter var(--ease);background:0 0;border-radius:0;padding:8px 22px;position:relative}.btn-plate,.btn-plate.primary,.btn-plate.danger,.btn-plate:hover:not(:disabled),.btn-plate[aria-pressed=true]{box-shadow:none;background:0 0}.btn-plate:hover:not(:disabled){filter:brightness(1.15);transform:translateY(-2px)}.btn-plate:active:not(:disabled){filter:brightness(.92);transform:translateY(1px)}.btn-plate.primary{color:var(--brass-light);filter:drop-shadow(0 0 6px #f1d48a59)}.btn-plate.primary:hover:not(:disabled){filter:brightness(1.15)drop-shadow(0 0 10px #f1d48a8c)}.btn-plate.danger{color:#ffb3a3}.btn-plate:disabled{filter:grayscale(.7)brightness(.8);opacity:.6}.btn-plate:focus-visible{filter:brightness(1.12) drop-shadow(0 0 2px var(--brass-light)) drop-shadow(0 0 8px #f1d48ab3);outline:none}.btn-plate.small{--plate-edge:8px;padding:2px 10px;font-size:12px}.btn-plate.large{--plate-edge:16px;padding:10px 40px;font-size:20px}.ribbon-heading{--ribbon-h:54px;box-sizing:border-box;min-width:calc(var(--ribbon-h) * 4.5);height:var(--ribbon-h);padding:0 calc(var(--ribbon-h) * 1.05) calc(var(--ribbon-h) * .04);border:0 solid #0000;border-image:url(/ui/banner-ribbon.png) 0 110 fill / 0 calc(var(--ribbon-h) * .917) stretch;color:var(--cream);font:700 calc(var(--ribbon-h) * .38) / 1 var(--font-display);letter-spacing:.06em;white-space:nowrap;text-shadow:0 1px 0 var(--heraldic-dark), 0 2px 4px #0009;background:0 0;justify-content:center;align-items:center;margin:0;display:inline-flex}.ribbon-heading.small{--ribbon-h:40px}.ribbon-heading.large{--ribbon-h:66px}.ribbon-heading.prose{font:600 calc(var(--ribbon-h) * .27) / 1.2 var(--font-text);letter-spacing:.01em;white-space:normal;text-align:center}.frame{--frame-edge:22px;border:calc(var(--frame-edge) - 3px) solid transparent;border-image:url(/ui/map-frame.png) 48 / var(--frame-edge) / 3px stretch;background:var(--oak-deep);display:block}.tag-parchment{color:var(--ink);font:600 12px/1.2 var(--font-text);background:radial-gradient(circle at 9px 50%, #140e08d9 0 2.5px, var(--parchment-edge) 3px 3.6px, transparent 4px), url(/ui/panel-parchment.png) 0 0 / 256px repeat, var(--parchment);clip-path:polygon(8px 0,100% 0,100% 100%,8px 100%,0 50%);filter:drop-shadow(0 2px 3px #00000073);align-items:center;gap:8px;padding:4px 10px 4px 20px;display:inline-flex}.tag-parchment .tag-label{font:700 10px/1 var(--font-display);letter-spacing:.1em;text-transform:uppercase;color:var(--ink-muted)}.wax-seal{--wax:#a8322a;background:radial-gradient(circle at 36% 30%, color-mix(in srgb, var(--wax), white 28%), var(--wax) 45%, color-mix(in srgb, var(--wax), black 40%) 100%);width:56px;height:56px;box-shadow:inset 0 0 0 5px color-mix(in srgb, var(--wax), black 12%), inset 0 0 0 6.5px color-mix(in srgb, var(--wax), black 38%), 0 3px 6px #00000080;color:#fff1dc;font:700 9.5px/1 var(--font-display);letter-spacing:.04em;text-transform:uppercase;text-shadow:0 1px 1px #0009;border-radius:48% 52% 46% 54%/53% 47% 55% 45%;place-items:center;display:inline-grid;transform:rotate(-10deg)}.bezel{background:conic-gradient(from 210deg, var(--brass-dark), var(--brass-light), var(--brass), var(--brass-dark), var(--brass-light), var(--brass-dark));border-radius:50%;flex:none;place-items:center;padding:3px;display:inline-grid;box-shadow:0 2px 6px #00000080,inset 0 0 0 1px #0006}.portrait{background:radial-gradient(circle at 50% 35%, #33503c, var(--night) 75%);border-radius:50%;place-items:center;display:grid;position:relative;overflow:hidden;box-shadow:inset 0 0 0 1px #0009}.portrait img{object-fit:cover;object-position:50% 12%;width:100%;height:100%;display:block}.portrait-initial{font:700 1.6em/1 var(--font-display);color:var(--brass-light)}.class-icon{filter:drop-shadow(0 1px 1px #0000008c);background:url(/ui/class-icons.png) 0 0/400% 100% no-repeat;flex:none;width:28px;height:28px;display:inline-block}.class-icon.none{background:0 0}.brass-rule{background:linear-gradient(var(--brass-dark), var(--brass-light) 50%, var(--brass-dark));flex:none;align-self:stretch;width:2px;margin:2px 0;box-shadow:1px 0 #00000080}.sr-only{clip-path:inset(50%);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}@keyframes fade-in{0%{opacity:0}}@keyframes rise-in{0%{opacity:0;transform:translateY(10px)}}*{box-sizing:border-box}html,body{background:var(--bg);height:100%;color:var(--text);font:14px/1.4 var(--font-text);margin:0}#app{grid-template-columns:minmax(0, 1fr) var(--side-width);grid-template-rows:auto minmax(0,1fr) auto;grid-template-areas:"hud hud""stage side""shop shop";height:100dvh;display:grid;overflow:hidden}button{font:inherit;color:var(--cream);cursor:pointer;transition:background-color var(--ease), border-color var(--ease), box-shadow var(--ease), transform var(--ease), filter var(--ease);background:linear-gradient(#2c2a24,#1d1b17);border:1px solid #5a4626;border-radius:5px;padding:6px 12px;box-shadow:inset 0 1px #ffe6aa14,0 1px 2px #0006}button:hover:not(:disabled){border-color:var(--brass);background:linear-gradient(#36332b,#24211b)}button:active:not(:disabled){transform:translateY(1px)}button:disabled{opacity:.45;cursor:not-allowed}button:focus-visible{outline:2px solid var(--brass-light);outline-offset:1px}button.primary{color:#fff4d6;background:linear-gradient(#4b6a2e,#33491f);border-color:#8fae55;font-weight:600}button.primary:hover:not(:disabled){background:linear-gradient(#56793a,#3c5426);border-color:#b5d17a}button.danger{color:#ffd8cf;background:linear-gradient(#5a2a21,#3e1c16);border-color:#8a4130}button.danger:hover:not(:disabled){background:linear-gradient(#6a3227,#4a221b);border-color:#b5583f}button[aria-pressed=true]{border-color:var(--brass-light);box-shadow:inset 3px 0 0 var(--brass-light);background:linear-gradient(#3a3322,#27221a)}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important;animation-delay:0s!important}}html.reduced-motion *,html.reduced-motion :before,html.reduced-motion :after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important;animation-delay:0s!important}#hud{z-index:16;padding:7px var(--pad);box-shadow:inset 0 0 0 1px #0000008c, inset 0 0 48px #00000080, 0 1px 0 var(--brass-dark), 0 4px 12px #00000080;border-bottom:2px solid #120a04;flex-wrap:wrap;grid-area:hud;align-items:center;gap:8px 16px;display:flex;position:relative}.brand{font:700 18px/1 var(--font-display);letter-spacing:.05em;color:var(--brass-light);text-shadow:0 1px 2px #000c;white-space:nowrap;margin:0}#hud>.brass-rule{align-self:center;height:26px}.stats{align-items:center;gap:16px;display:flex}.stat{align-items:center;gap:6px;display:flex}.stat-icon{filter:drop-shadow(0 1px 1px #0009);line-height:0;display:inline-flex}.stat-value{font-variant-numeric:tabular-nums;text-shadow:0 1px 2px #000000b3;font-size:16px;font-weight:700}.round-tag{padding-top:5px;padding-bottom:5px}.round{font-variant-numeric:tabular-nums;font-weight:700}.phase{color:var(--cream-muted);font-size:13px}.phase[data-phase=running]{color:#a9e08a}.phase[data-phase=lost]{color:var(--danger)}.phase[data-phase=won]{color:var(--gold)}.controls{align-items:center;gap:8px;margin-left:auto;display:flex}#stage{background:radial-gradient(ellipse at 50% 45%, var(--night-3), var(--night) 75%);grid-area:stage;min-width:0;min-height:0;padding:14px;position:relative}#canvas-host{justify-content:center;align-items:center;width:100%;height:100%;display:flex}#canvas-host canvas{box-shadow:0 0 0 2px #120a04, 0 0 0 3px var(--brass-dark), 0 10px 30px #0009;border-radius:3px;display:block}.toast{color:var(--cream);box-shadow:var(--lift);opacity:0;pointer-events:none;background:#3a1812f2;border:1px solid #8a4130;border-radius:4px;padding:8px 14px;transition:opacity .15s,transform .15s;position:absolute;bottom:24px;left:50%;transform:translate(-50%,8px)}.toast.show{opacity:1;transform:translate(-50%)}.banner{z-index:15;background:#06090759;place-items:safe center;padding:56px 16px 24px;display:grid;position:fixed;inset:0;overflow-y:auto}.banner[hidden]{display:none}.banner-art{background:var(--night) 50% 50% / cover no-repeat;animation:.6s ease-out .9s backwards fade-in;position:fixed;inset:0}.banner[data-result=won] .banner-art{background-image:radial-gradient(at 50% 55%,#0000 35%,#050806b3 100%),url(/art/victory.png)}.banner[data-result=lost] .banner-art{background-image:radial-gradient(at 50% 55%,#05080626 30%,#050806cc 100%),url(/art/defeat.png)}.banner-card{text-align:center;border-radius:3px;justify-items:center;width:min(480px,100%);padding:0 38px 22px;animation:.3s ease-out .6s backwards rise-in;display:grid;position:relative}.banner-title{--ribbon-h:60px;max-width:calc(100% + 60px);margin:-30px 0 12px}.banner[data-result=lost] .banner-title{filter:saturate(.55)brightness(.85)}.banner-card p{color:var(--ink-muted);max-width:40ch;margin:0 0 16px}.banner-actions{flex-wrap:wrap;justify-content:center;gap:6px;display:flex}.banner-actions .btn-plate{--plate-edge:10px;padding:4px 14px;font-size:14px}.banner-card p.banner-seed{font-size:11px;font-family:var(--font-mono);margin:12px 0 0}#side{overscroll-behavior:contain;min-height:0;box-shadow:inset 1px 0 0 var(--brass-dark), inset 0 0 0 1px #0000008c, inset 0 0 48px #00000080;border-left:2px solid #120a04;flex-direction:column;grid-area:side;display:flex;overflow:hidden auto}#side>[hidden]{display:none}.panel{padding:12px 14px}#selection:not([hidden])+#preview,#hints{border-top:1px solid #0009;box-shadow:inset 0 1px #c99a3e59}.panel h2{font:700 15px/1.2 var(--font-display);letter-spacing:.05em;color:var(--brass-light);text-shadow:0 1px 2px #000000b3;margin:0 0 8px}.panel h3{font:700 11px/1.2 var(--font-display);color:var(--cream-muted);text-transform:uppercase;letter-spacing:.1em;margin:10px 0 5px}.hint{color:var(--cream-muted);margin:8px 0 0;font-size:12px}.cost{color:var(--gold);font-variant-numeric:tabular-nums;font-weight:600}#hints{margin-top:auto;padding-top:10px;padding-bottom:12px}#hints .hint{margin:0 0 8px}#hints .hint[hidden],#side[data-crowd] #hints,#side[data-crowd="2"] #preview{display:none}.hint-keys{gap:4px;margin:0;font-size:12px;display:grid}.hint-row{grid-template-columns:84px minmax(0,1fr);align-items:center;gap:8px;display:grid}.hint-row[hidden]{display:none}.hint-row dt{color:var(--cream-muted);white-space:nowrap}.hint-row dd{color:var(--cream-muted);margin:0}.hint-row kbd{padding:2px 4px;font-size:10px}#shop{z-index:3;min-width:0;box-shadow:inset 0 1px 0 var(--brass-dark), inset 0 0 0 1px #0000008c, inset 0 0 48px #00000080, 0 -3px 10px #00000073;border-top:2px solid #120a04;grid-area:shop;position:relative}.shop-bar{padding:8px var(--pad);flex-wrap:nowrap;justify-content:center;align-items:stretch;gap:6px;display:flex;overflow:hidden}.shop-sep[hidden]{display:none}.shop-sep{margin:6px 4px}.shop-tile{background:radial-gradient(circle at 50% 40%,#4a3e2a99,#0a0805a6 72%);border-color:#4a3a20;border-radius:6px;flex-direction:column;flex:0 68px;align-items:center;gap:2px;min-width:56px;padding:5px 6px 4px;display:flex;position:relative;box-shadow:inset 0 0 0 1px #0009,inset 0 0 12px #0000008c}.shop-tile[hidden]{display:none}.shop-tile:hover:not([aria-disabled=true]){border-color:var(--brass);background:radial-gradient(circle at 50% 40%,#605034a6,#0e0b07a6 72%);transform:translateY(-2px)}.shop-tile[aria-disabled=true]{cursor:not-allowed}.shop-tile[aria-pressed=true]{border-color:var(--brass-light);box-shadow:0 0 0 1px var(--brass-light), 0 0 14px 3px #f1d48a80, inset 0 0 10px #f1d48a40;background:radial-gradient(circle at 50% 40%,#786032b3,#18120ab3 72%)}.tile-art{aspect-ratio:1;place-items:center;width:100%;display:grid;position:relative}.tower-sprite{width:100%;height:100%;display:block;position:relative}.tower-sprite img{width:var(--w,100%);filter:drop-shadow(1px 2px 1.5px #0000008c);max-width:none;height:auto;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.tower-sprite-initial{height:100%;font:700 22px/1 var(--font-display);color:var(--cream);place-items:center;display:grid}.tile-cost{font-size:12px;line-height:1.1}.tile-key{border-bottom-width:1px;padding:1px 3px;font-size:9px;position:absolute;top:3px;left:3px}.tile-class{width:15px;height:15px;position:absolute;top:3px;right:3px}.shop-tile[data-state=poor]>:not(.tile-cost),.shop-tile[data-state=closed]>*{opacity:.45;filter:grayscale(.5)}.shop-tile[data-state=poor] .tile-cost{color:var(--danger)}.tile-lock{display:none}.shop-tile[data-state=locked] .tile-lock{color:var(--amber);background:radial-gradient(circle,#080604b3 30%,#08060459 70%,#0000 72%);border-radius:50%;place-items:center;display:grid;position:absolute;inset:0}.shop-tile[data-state=locked] .tower-sprite,.shop-tile[data-state=locked] .tile-class{filter:grayscale(.85)brightness(.7)}.shop-tile[data-state=locked] .tile-cost{color:var(--cream-muted)}.tile-lock:before,.tile-lock:after{content:"";position:absolute;top:50%;left:50%}.tile-lock:before{background:currentColor;border-radius:2px;width:16px;height:12px;margin:-2px 0 0 -8px;box-shadow:0 1px 2px #000000b3}.tile-lock:after{border:2.5px solid;border-bottom:0;border-radius:6px 6px 0 0;width:10px;height:10px;margin:-11px 0 0 -5px}.shop-tip{--arrow:50%;border:1px solid var(--brass-dark);width:max-content;max-width:260px;box-shadow:inset 0 1px 0 #ffe6aa14, var(--lift);pointer-events:none;background:linear-gradient(#281c10f7,#160f09f7);border-radius:5px;padding:8px 12px 9px;font-size:12px;position:absolute;bottom:calc(100% + 8px);left:0}.shop-tip[hidden]{display:none}.shop-tip:after{content:"";top:100%;left:var(--arrow);border:solid var(--brass-dark);background:#160f09;border-width:0 1px 1px 0;width:10px;height:10px;margin:-5px 0 0 -5px;position:absolute;transform:rotate(45deg)}.shop-tip-head{justify-content:space-between;align-items:center;gap:12px;display:flex}.shop-tip-name{font:700 14px/1.2 var(--font-display);color:var(--brass-light);letter-spacing:.04em}.shop-tip-head kbd{padding:2px 4px;font-size:10px}.shop-tip-role{color:var(--cream-muted);margin:3px 0 4px;line-height:1.35}.shop-tip-role[hidden],.shop-tip-warning[hidden]{display:none}.shop-tip-warning{color:var(--amber);margin:5px 0 0;font-weight:600}.shop-tip-warning[data-kind=gold]{color:var(--danger)}.selection[hidden]{display:none}.sel-head{align-items:center;gap:10px;display:flex}.sel-titles{min-width:0}.sel-head h2{white-space:nowrap;text-overflow:ellipsis;margin-bottom:1px;overflow:hidden}.sel-face{width:40px;height:40px;box-shadow:0 0 0 1px var(--brass-dark), inset 0 0 6px #000000b3;background:radial-gradient(circle at 50% 40%,#3b3324,#15110b 75%);border-radius:50%;flex:none;place-items:center;display:grid}.sel-face.bezel{background:conic-gradient(from 210deg, var(--brass-dark), var(--brass-light), var(--brass), var(--brass-dark), var(--brass-light), var(--brass-dark));width:46px;height:46px}.sel-portrait{width:40px;height:40px}.sel-figure{width:40px;height:40px;display:block}.subtitle,.tiers{color:var(--cream-muted);white-space:nowrap;text-overflow:ellipsis;margin:0;font-size:12px;line-height:1.3;overflow:hidden}.stat-box{margin-top:8px}.stat-box summary{cursor:pointer;font:700 11px/1.2 var(--font-display);color:var(--cream-muted);text-transform:uppercase;letter-spacing:.1em;align-items:center;gap:6px;list-style:none;display:flex}.stat-box summary::-webkit-details-marker{display:none}.stat-box summary:before{content:"";width:0;height:0;transition:transform var(--ease);border:4px solid #0000;border-left:6px solid;border-right:0}.stat-box[open] summary:before{transform:rotate(90deg)}.stat-box summary:hover{color:var(--brass-light)}.stat-box summary:focus-visible{outline:2px solid var(--brass-light);outline-offset:2px}.stat-list{grid-template-columns:auto 1fr;gap:1px 12px;margin:6px 0 0;font-size:13px;display:grid}.stat-list dt{color:var(--cream-muted)}.stat-list dd{text-align:right;font-variant-numeric:tabular-nums;margin:0}.upgrades{grid-template-columns:minmax(0,1fr);gap:3px;display:grid}.upgrade{text-align:left;border:6px solid #0000;border-image:url(/ui/button-plate.png) 24 fill/7px;border-radius:0;align-items:center;gap:7px;min-width:0;padding:1px 4px;display:flex}.upgrade,.upgrade:hover:not(:disabled){box-shadow:none;background:0 0}.upgrade:hover:not(:disabled){filter:brightness(1.15);transform:translate(2px)}.upgrade:disabled{opacity:1}.upgrade:disabled>:not(.up-body),.upgrade:disabled .up-name,.upgrade:disabled .up-summary,.upgrade:disabled .pips{opacity:.45}.up-path{font:700 15px/1 var(--font-display);text-shadow:0 1px 2px #000c;width:12px}.path-A .up-path{color:var(--path-a)}.path-B .up-path{color:var(--path-b)}.path-C .up-path{color:var(--path-c)}.up-head{align-items:center;gap:6px;min-width:0;display:flex}.up-name{white-space:nowrap;text-overflow:ellipsis;flex:1;min-width:0;font-size:13px;font-weight:600;line-height:1.3;overflow:hidden}.pips{flex:none;gap:3px;display:inline-flex}.pip{background:#241c12;border-radius:50%;width:7px;height:7px;box-shadow:inset 0 0 0 1px #0009}.pip.on{background:radial-gradient(circle at 35% 30%, #fff1c2, var(--brass-light) 35%, var(--brass) 70%, var(--brass-dark));box-shadow:0 0 3px #f1d48a80}.pip-crown{clip-path:polygon(0 100%,0 20%,25% 55%,50% 0,75% 55%,100% 20%,100% 100%);border-radius:0;width:9px}.pips .pip-crown.on{background:linear-gradient(#fff1c2, var(--crown) 50%, var(--brass))}.up-body{flex-direction:column;flex:1;min-width:0;display:flex}.up-summary{-webkit-line-clamp:2;line-clamp:2;color:var(--cream-muted);-webkit-box-orient:vertical;font-size:11px;line-height:1.3;display:-webkit-box;overflow:hidden}.up-summary:empty{display:none}.up-note{color:var(--amber);white-space:nowrap;text-overflow:ellipsis;font-size:11px;line-height:1.3;overflow:hidden}.up-note:empty,.targeting[hidden]{display:none}.segments{grid-template-columns:repeat(4,1fr);gap:4px;display:grid}.segment{padding:4px 0;font-size:12px}.segment[aria-pressed=true]{box-shadow:inset 0 -2px 0 var(--brass-light)}.selection>button.danger{width:100%;margin-top:10px;padding:5px 12px}.selection.enter{animation:.18s ease-out panel-in}@keyframes panel-in{0%{opacity:0;transform:translateY(6px)}}@media (width<=860px){#app{grid-template:"hud""stage"minmax(220px,1fr)"shop""side"/minmax(0,1fr)}#side{border-top:2px solid #120a04;border-left:0;max-height:34vh}.controls{margin-left:0}#hud>.brass-rule{display:none}}@media (width<=720px){.shop-bar{gap:3px;padding:6px 8px}.shop-tile{min-width:46px;padding:3px 1px}.tile-cost,.tile-key,.tile-class{display:none}}:root{--path-a:#6cc4ff;--path-b:#ffa94d;--path-c:#9ad36a;--boss:#8b6cf0;--boss-glow:var(--teal)}.stat{border-radius:4px;padding:0 2px;position:relative}.stat.flash{animation:.6s ease-out lives-flash}@keyframes lives-flash{0%{color:#fff;background:#e0614b8c}to{background:0 0}}.stat.flash .stat-value{color:var(--danger)}.gold-float{color:var(--gold);font-variant-numeric:tabular-nums;text-shadow:0 1px 2px #000c;opacity:0;pointer-events:none;white-space:nowrap;margin-left:4px;font-weight:700;position:absolute;top:-2px;left:100%}.gold-float.show{animation:1.4s ease-out gold-rise}@keyframes gold-rise{0%{opacity:0;transform:translateY(6px)}15%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(-14px)}}.key-hint{color:var(--cream-muted);align-self:center;font-size:12px}kbd{font:600 11px/1 var(--font-mono);color:var(--cream-muted);background:#00000059;border:1px solid #5a4626;border-bottom-width:2px;border-radius:4px;padding:3px 5px}.boss-bar{pointer-events:none;background:#0a1414db;border:1px solid #2b6a63;border-radius:6px;width:min(70%,640px);padding:6px 10px 8px;position:absolute;top:20px;left:50%;transform:translate(-50%);box-shadow:0 0 14px #3fbfae40}.boss-bar[hidden]{display:none}.boss-head{font:700 12px/1 var(--font-display);letter-spacing:.08em;text-transform:uppercase;justify-content:space-between;margin-bottom:5px;display:flex}.boss-name{color:var(--boss-glow)}.boss-value{color:var(--cream-muted);font-family:var(--font-text);font-variant-numeric:tabular-nums}.boss-track{background:#0f2a2a;border-radius:5px;height:10px;position:relative;overflow:hidden}.boss-fill{background:linear-gradient(90deg, var(--boss), var(--boss-glow));height:100%;transition:width .12s linear}.boss-mark{background:#ffffff59;width:2px;margin-left:-1px;position:absolute;top:0;bottom:0}.boss-mark.next{background:var(--amber);width:3px;box-shadow:0 0 6px var(--amber)}.boss-mark.spent{background:#ffffff1f}#preview[hidden]{display:none}.preview-list{gap:4px;margin:0;padding:0;list-style:none;display:grid}.preview-list li{align-items:baseline;gap:8px;display:flex}.preview-count{text-align:right;font-variant-numeric:tabular-nums;width:34px;color:var(--cream-muted)}.preview-name{flex:1}.preview-list li.boss .preview-name{color:var(--boss-glow);font-weight:600}.tag-new{text-transform:uppercase;letter-spacing:.06em;background:var(--amber);color:#2a1606;border-radius:3px;padding:1px 5px;font-size:10px;font-weight:700}.boss .tag-new{background:var(--teal);color:#062420}.banner-stats{text-align:left;border-block:1px solid #7a5a1c66;grid-template-columns:1fr 1fr;gap:6px 24px;width:100%;margin:0 0 18px;padding:10px 0;display:grid}.banner-stat{justify-content:space-between;gap:12px;display:flex}.banner-stat dt{color:var(--ink-muted)}.banner-stat dd{color:var(--ink);font-variant-numeric:tabular-nums;margin:0;font-weight:700}@media (width<=1400px){.key-hint{display:none}}@media (width<=1100px){.brand,.brand+.brass-rule{display:none}}@media (width<=860px){.boss-bar{width:calc(100% - 32px)}}:root{--hero-ring:#f2c94c;--hero-ring-dark:#8a6a1c}.shop-hero{border-color:var(--hero-ring-dark);background:radial-gradient(circle at 50% 40%,#f2c94c38,#0a0805a6 72%)}.shop-hero .tile-cost{color:var(--hero-ring);text-transform:uppercase;letter-spacing:.06em;font-size:10px;font-weight:700}.tile-portrait{width:84%;height:84%;box-shadow:0 0 0 2px var(--hero-ring), 0 0 0 3px #0009, 0 2px 5px #00000080}.shop-hero:hover:not([aria-disabled=true]){border-color:var(--hero-ring)}.hero-badge[hidden]{display:none}.hero-badge{border-color:var(--hero-ring-dark);background:#0a080580;border-radius:999px;align-self:center;align-items:center;gap:8px;padding:2px 12px 2px 2px;display:inline-flex}.hero-badge:disabled{opacity:1;cursor:default}.hero-ring{--charge:0%;background:conic-gradient(var(--hero-ring) var(--charge), #3a3428 0);width:34px;height:34px;transition:box-shadow var(--ease);border-radius:50%;place-items:center;padding:3px;display:grid;position:relative}.hero-badge-portrait{width:28px;height:28px;box-shadow:0 0 0 1px #000000b3}.hero-badge[data-ready=true] .hero-ring{box-shadow:0 0 9px 2px #f2c94ca6}.hero-badge-text{text-align:left;line-height:1.1;display:grid}.hero-badge-name{font-size:12px;font-weight:600}.hero-level{color:var(--hero-ring);font-variant-numeric:tabular-nums;font-size:11px}.hero-ability[hidden],.upgrade-section[hidden]{display:none}.hero-ability{border:1px solid var(--hero-ring-dark);background:#0a080573;border-radius:6px;margin-top:12px;padding:10px 12px;box-shadow:inset 0 0 18px #f2c94c0f}.hero-ability h3{margin-top:0}.ability-head{justify-content:space-between;align-items:baseline;gap:8px;display:flex}.ability-name{font:700 14px/1.2 var(--font-display);color:var(--hero-ring)}.ability-status{color:var(--cream-muted);text-align:right;font-size:12px}.ability-desc{color:var(--cream-muted);margin:4px 0 8px;font-size:12px}.ability-use{width:100%}.shell-layer{z-index:20;place-items:safe center;padding:24px 16px;display:grid;position:fixed;inset:0;overflow-y:auto}html:not([data-screen]) #app{visibility:hidden}#shell [hidden]{display:none!important}.dim-layer{-webkit-backdrop-filter:blur(6px)saturate(.8);backdrop-filter:blur(6px)saturate(.8);animation:fade-in var(--fade);background:#0609078c}.confirm-layer{z-index:40;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);animation:fade-in var(--fade);background:#06090780}.restoring-layer{z-index:50;background:#060907c7}.loading-screen{z-index:60;background:radial-gradient(ellipse at 50% 40%, var(--night-3), var(--night) 70%);place-items:center;transition:opacity .25s ease-out;display:grid;position:fixed;inset:0}.loading-screen.done{opacity:0;pointer-events:none}.loading-card{width:min(340px,100% - 32px);color:var(--ink);background:url(/ui/panel-parchment.png) 0 0 / 256px repeat, var(--parchment);border-radius:3px;justify-items:center;gap:10px;padding:22px 28px 18px;display:grid;box-shadow:inset 0 0 0 1px #5a3c1473,inset 0 0 30px #784e1a59,0 12px 30px #0009}.loading-title{font:700 24px/1.1 var(--font-display);letter-spacing:.06em;color:var(--ink);margin:0}.loading-text{color:var(--ink-muted);letter-spacing:.04em;margin:0;font-size:12px}.loading-bar{width:100%;height:10px;box-shadow:inset 0 1px 2px #0009, 0 0 0 1px var(--brass-dark);background:#3a2616;border-radius:6px;padding:2px}.loading-fill{background:linear-gradient(90deg, var(--brass-dark), var(--brass-light));transform-origin:0;border-radius:4px;width:100%;height:100%;transition:transform .15s ease-out;display:block;transform:scaleX(0)}.shell-card{border-radius:3px;width:min(380px,100%);padding:30px 34px 26px;animation:.22s ease-out rise-in}.shell-card h2{text-align:center;font:700 26px/1.2 var(--font-display);letter-spacing:.04em;color:var(--ink);margin:0}.shell-card h2:after{content:"";background:url(/ui/ornament-divider.png) 50%/contain no-repeat;width:min(240px,90%);height:18px;margin:6px auto 0;display:block}.shell-card p{color:var(--ink-muted)}.shell-sub{text-align:center;margin:6px 0 16px}.shell-stack{gap:6px;display:grid}.shell-stack>.btn-plate{--plate-edge:10px;width:100%;padding:5px 18px;font-size:14px}.shell-actions{flex-wrap:wrap;justify-content:flex-end;gap:8px;margin-top:18px;display:flex}.menu-screen{background:var(--night);align-items:start;padding:clamp(28px,8vh,96px) 16px 64px}.menu-screen>.menu-art,.menu-screen>.menu-vignette{pointer-events:none;position:fixed;inset:0}.menu-art{background:url(/art/title-key-art.png) 50% 40% / cover no-repeat, var(--night)}.menu-vignette{background:radial-gradient(70% 60% at 50% 30%,#0000 40%,#0508068c 100%),linear-gradient(#05080659,#0000 22% 62%,#050806b3)}.menu-body{text-align:center;justify-items:center;display:grid;position:relative}.menu-kicker{color:var(--brass-light);font:700 13px/1 var(--font-display);letter-spacing:.32em;text-transform:uppercase;text-shadow:0 1px 3px #000c;margin:0}.menu-title{font:700 clamp(46px, 8.4vw, 96px)/1 var(--font-display);letter-spacing:.03em;color:#fbe6a6;text-shadow:0 2px #6b4a12,0 4px #3c2808,0 0 26px #ffcd6e8c,0 10px 32px #0000008c;margin:8px 0 clamp(20px,5vh,44px)}.menu-actions{gap:8px;width:min(300px,100%);display:grid}.menu-button{justify-items:center;gap:1px;width:100%;padding:6px 18px;font-size:17px;display:grid}.menu-button-label{font-weight:700}.menu-button-detail{font:500 11px/1.2 var(--font-text);letter-spacing:.01em;color:var(--cream-muted);text-shadow:none}.menu-message{max-width:44ch;color:var(--cream);background:#3a1812eb;border:1px solid #8a4130;border-radius:4px;margin:18px 0 0;padding:8px 12px;font-size:13px}.menu-corner{font-family:var(--font-mono);font-size:11px;position:absolute;bottom:14px;right:16px}.corner-tag{z-index:21;font-family:var(--font-mono);pointer-events:none;font-size:11px;position:fixed;bottom:14px;right:16px}.menu-button:disabled{opacity:.7;cursor:default}.menu-outdated{gap:8px;width:100%;display:grid}.menu-outdated-text{color:var(--cream-muted);text-shadow:0 1px 2px #000c;margin:0;font-size:12px;line-height:1.35}.menu-outdated-actions{grid-template-columns:1fr 1fr;gap:8px;display:grid}.menu-outdated-actions .btn-plate{--plate-edge:10px;padding:4px 12px;font-size:14px}.select-screen{background:linear-gradient(#070b08cc, #070b08e6), url(/art/title-key-art.png) 50% 40% / cover no-repeat, var(--night);padding-block:12px}.select-panel{outline:1px solid var(--brass-dark);outline-offset:-6px;border-radius:4px;width:min(1100px,100%);padding:16px 34px 22px;animation:.25s ease-out rise-in}.select-head{justify-content:center;align-items:center;min-height:56px;margin-bottom:8px;display:flex;position:relative}.select-back{position:absolute;top:50%;left:30px;transform:translateY(-50%)}.select-back:hover:not(:disabled){transform:translateY(calc(-50% - 2px))}.select-back:active:not(:disabled){transform:translateY(calc(1px - 50%))}.select-label{font:700 13px/1 var(--font-display);letter-spacing:.16em;text-transform:uppercase;color:var(--brass-light);align-items:center;gap:12px;margin:16px 0 10px;display:flex}.select-label:after{content:"";background:linear-gradient(90deg, var(--brass-dark), transparent);flex:1;height:1px}.map-card,.hero-card{color:var(--cream)}.map-card,.map-card:hover:not(:disabled),.map-card[aria-pressed=true]{box-shadow:none;background:0 0;border-color:#0000}.map-cards{grid-template-columns:repeat(3,minmax(0,1fr));gap:18px;margin-top:6px;display:grid}.tier-groups{gap:4px;display:grid}.tier-heading{margin-top:10px}.tier-heading .tier-rounds{font:600 12px/1 var(--font-text);letter-spacing:.06em;text-transform:none;color:var(--cream-muted)}.tier-padlock{line-height:0}.tier-group:not(.locked) .tier-padlock{display:none}.tier-rule{color:var(--brass);margin:-4px 0 6px;font-size:13px;font-weight:600}.map-card.locked:disabled{opacity:1;cursor:not-allowed}.map-card.locked .map-frame{filter:grayscale(.9)brightness(.6)drop-shadow(0 6px 10px #00000080)}.map-card.locked .map-name,.map-card.locked .map-results{opacity:.5}.map-card.locked .wax-seal{filter:grayscale(.8);opacity:.7}.map-card{text-align:left;border:0;gap:8px;padding:4px;display:grid}.map-card:hover:not(:disabled),.mode-card:hover:not(:disabled),.hero-card:hover:not(:disabled){transform:translateY(-3px)}.map-art{display:block;position:relative}.map-frame{--frame-edge:24px;transition:filter var(--ease);filter:drop-shadow(0 6px 10px #00000080)}.map-card[aria-pressed=true] .map-frame{filter:drop-shadow(0 0 3px var(--brass-light)) drop-shadow(0 0 12px #f1d48a8c)}.map-thumb{aspect-ratio:9/4;background:var(--moss);overflow:hidden}.map-thumb svg{width:100%;height:100%;display:block}.map-art .wax-seal{position:absolute;top:-10px;right:-8px}.difficulty-easy{--wax:#3f7a35}.difficulty-medium{--wax:#b0761f}.difficulty-hard{--wax:#a3302a}.map-card-head{padding:0 4px}.map-name{font:700 19px/1.2 var(--font-display);letter-spacing:.03em}.map-card[aria-pressed=true] .map-name{color:var(--brass-light)}.map-results{gap:2px;margin:0;padding:0 4px;font-size:12px;display:grid}.map-results div{justify-content:space-between;gap:8px;display:flex}.map-results dt{color:var(--cream-muted)}.map-results dd{font-variant-numeric:tabular-nums;margin:0}.mode-cards{grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;display:grid}.mode-card{text-align:left;color:var(--ink);border:0;border-radius:3px;align-content:start;gap:4px;padding:11px 14px 12px;display:grid;position:relative}.mode-card:hover:not(:disabled){background:url(/ui/panel-parchment.png) 0 0 / 384px repeat, var(--parchment);filter:brightness(1.04)}.mode-card[aria-pressed=true]{background:url(/ui/panel-parchment.png) 0 0 / 384px repeat, var(--parchment);box-shadow:inset 0 0 0 2px var(--brass), inset 0 0 26px #784e1a4d, 0 0 14px #f1d48a73}.mode-name{font:700 15px/1.2 var(--font-display);letter-spacing:.03em;color:var(--ink);padding-right:22px}.mode-desc{color:var(--ink-muted);font-size:12px;line-height:1.35}.mode-lock{color:#8a2f1c;font-size:12px;font-weight:600}.mode-padlock{line-height:0;position:absolute;top:8px;right:10px}.mode-card:not(.locked) .mode-padlock{display:none}.mode-card.locked:disabled{opacity:1}.mode-card.locked .mode-name,.mode-card.locked .mode-desc{opacity:.5}.hero-cards[hidden],.hero-label[hidden]{display:none}.hero-cards{grid-template-columns:minmax(0,.85fr) repeat(2,minmax(0,1fr));gap:12px;display:grid}.hero-card{text-align:left;background:#0a080573;border:1px solid #5a4626;border-radius:6px;align-items:center;gap:14px;padding:8px 14px 8px 8px;display:flex;box-shadow:inset 0 1px #ffe6aa0f}.hero-card:hover:not(:disabled){background:#14100a8c}.hero-card[aria-pressed=true]{border-color:var(--brass-light);box-shadow:0 0 0 1px var(--brass-light), 0 0 14px #f1d48a59;background:#281e0c99}.hero-card-portrait{width:56px;height:56px}.hero-none-icon{opacity:.85;width:36px;height:36px}.hero-text{gap:3px;min-width:0;display:grid}.hero-name{font:700 16px/1.2 var(--font-display);color:var(--brass-light)}.hero-none .hero-name{color:var(--cream)}.hero-title{color:var(--cream-muted);text-transform:uppercase;letter-spacing:.06em;font-size:11px}.hero-desc{color:var(--cream-muted);margin-top:2px;font-size:12px;line-height:1.35}.select-foot{flex-wrap:wrap;align-items:center;gap:12px 16px;margin-top:20px;display:flex}.seed-field{align-items:center;gap:10px;display:flex}.seed-tag{padding-top:6px;padding-bottom:6px}.seed-input{width:8ch;font:700 15px var(--font-mono);color:var(--ink);border:0;border-bottom:1px dashed var(--ink-muted);background:0 0;border-radius:0;padding:1px 2px}.seed-input:focus-visible{background:#ffffff73;border-bottom-style:solid;outline:none}.seed-error{color:#ff9a85;font-size:12px}.start-button{min-width:220px;margin-left:auto}.pause-button{align-items:center;gap:6px;display:inline-flex}.setting-row{text-align:left;color:var(--ink);box-shadow:none;background:#fff8e659;border:1px solid #7a5a1c73;align-items:center;gap:14px;padding:10px 12px;display:flex}.setting-row:hover:not(:disabled){border-color:var(--brass-dark);background:#fff8e699}.setting-text{flex:1;gap:2px;display:grid}.setting-label{align-items:center;gap:8px;font-weight:600;display:flex}.setting-hint{color:var(--ink-muted);font-size:12px}.tag-soon{text-transform:uppercase;letter-spacing:.06em;color:var(--ink-muted);background:#654a2e33;border-radius:3px;padding:1px 5px;font-size:10px;font-weight:700}.switch{border:1px solid var(--parchment-edge);width:36px;height:20px;transition:background-color var(--ease);background:#d8bd85;border-radius:10px;flex:none;position:relative;box-shadow:inset 0 1px 2px #3c280a59}.switch:after{content:"";background:var(--ink-muted);width:14px;height:14px;transition:transform var(--ease), background-color var(--ease);border-radius:50%;position:absolute;top:2px;left:2px}.setting-row[aria-checked=true] .switch{background:var(--brass);border-color:var(--brass-dark)}.setting-row[aria-checked=true] .switch:after{background:#3a2610;transform:translate(16px)}.settings-danger{border-top:1px solid #7a5a1c66;gap:8px;margin-top:18px;padding-top:14px;display:grid}.settings-danger p{margin:0}.settings-card{width:min(440px,100%)}.confirm-card{width:min(420px,100%)}.confirm-card p{text-align:center;color:var(--ink);margin:10px 0 0}.restoring-card{gap:12px;padding:10px 20px 10px 28px;font-size:14px;animation:.2s ease-out rise-in}.restoring-text{margin:0;font-weight:600}.restoring-mark{border:2px solid var(--brass-dark);border-right-color:#0000;border-radius:50%;width:14px;height:14px;animation:.8s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}@media (width<=1000px){.select-panel{padding:20px 20px 24px}.hero-cards{grid-template-columns:repeat(3,minmax(0,1fr))}.hero-card{text-align:center;flex-direction:column;align-items:center}}@media (width<=860px){.map-cards{grid-template-columns:minmax(0,1fr)}.mode-cards{grid-template-columns:repeat(2,minmax(0,1fr))}.hero-cards{grid-template-columns:minmax(0,1fr)}.hero-card{text-align:left;flex-direction:row}.start-button{flex:1;margin-left:0}.select-head{flex-direction:column;gap:8px}.select-back{align-self:flex-start;position:static;transform:none}.select-back:hover:not(:disabled){transform:translateY(-2px)}}.codex-button{color:var(--brass-light);place-items:center;padding:5px 8px;display:inline-grid}.codex-panel{outline:1px solid var(--brass-dark);outline-offset:-5px;border-radius:4px;flex-direction:column;width:min(1180px,100%);height:min(820px,100dvh - 48px);animation:.2s ease-out rise-in;display:flex;overflow:hidden}.codex-head{align-items:center;gap:16px;padding:10px 18px 8px;display:flex}.codex-head h2{flex:none}.codex-hint{color:var(--cream-muted);margin:0;font-size:12px}.codex-head-actions{gap:6px;margin-left:auto;display:flex}.codex-body{flex:1;grid-template-columns:240px minmax(0,1fr);gap:10px;min-height:0;padding:0 12px 12px;display:grid}.codex-nav{flex-direction:column;min-height:0;display:flex}.codex-search{font:inherit;color:var(--ink);background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3E%3Ccircle cx='8.5' cy='8.5' r='5.5' fill='none' stroke='%23654a2e' stroke-width='2'/%3E%3Cpath d='m13 13 4.5 4.5' stroke='%23654a2e' stroke-width='2.2' stroke-linecap='round'/%3E%3C/svg%3E") 9px 50% / 15px no-repeat, url(/ui/panel-parchment.png) 0 0 / 256px repeat, var(--parchment);border:1px solid var(--brass-dark);border-radius:4px;margin:2px 2px 10px;padding:7px 10px 7px 30px;box-shadow:inset 0 1px 3px #3c280a73,0 0 0 1px #00000080}.codex-search::placeholder{color:var(--ink-muted);opacity:.85}.codex-search:focus-visible{outline:2px solid var(--brass-light);outline-offset:1px}.codex-list-nav{flex:1;padding:0 2px 8px;overflow-y:auto}.codex-list-nav .hint{padding:0 6px}.codex-section h3{font:700 11px/1 var(--font-display);color:var(--brass-light);text-transform:uppercase;letter-spacing:.12em;margin:12px 6px 4px}.codex-entry{text-align:left;width:100%;box-shadow:none;background:0 0;border-color:#0000;justify-content:space-between;align-items:center;gap:8px;padding:5px 8px;display:flex}.codex-entry:hover:not(:disabled){background:#0000004d;border-color:#0000}.codex-entry[aria-pressed=true]{box-shadow:inset 3px 0 0 var(--brass-light);color:var(--brass-light);background:#00000061;border-color:#0000}.codex-tick{color:#a9e08a;text-transform:uppercase;letter-spacing:.05em;flex:none;align-items:center;gap:3px;font-size:10px;display:inline-flex}.codex-tick:before{content:"";border:0 solid;border-width:0 0 2px 2px;width:7px;height:4px;transform:translateY(-1px)rotate(-45deg)}.codex-content{border-radius:3px;flex-direction:column;min-height:0;display:flex}.codex-tabs{flex-wrap:wrap;gap:6px;padding:12px 22px 0;display:flex}.codex-tab{padding:4px 10px;font-size:12px}.codex-tab[aria-selected=true]{border-color:var(--brass-light);color:var(--brass-light);box-shadow:inset 0 -2px 0 var(--brass-light)}.codex-main{flex:1;padding:16px 22px 24px;overflow-y:auto}.codex-page h4{font:700 12px/1.2 var(--font-display);color:var(--ink-muted);text-transform:uppercase;letter-spacing:.1em;margin:18px 0 8px}.codex-page-head{align-items:center;gap:18px;display:flex}.codex-page-title h3{font:700 28px/1.15 var(--font-display);letter-spacing:.02em;color:var(--ink);margin:0}.codex-page-title p{margin:4px 0 0}.codex-kicker{color:#7a4f10;letter-spacing:.06em;text-transform:uppercase;align-items:center;gap:6px;font-size:12px;font-weight:600;display:flex}.codex-class-icon{width:22px;height:22px}.codex-role{color:var(--ink-muted);max-width:60ch}.codex-lock{color:#8a2f1c;font-size:12px}.codex-placed-note{color:var(--ok);font-size:12px;font-weight:600}.codex-note{color:var(--ink-muted);margin:10px 0 0;font-size:12px}.codex-footnote{color:var(--ink-muted);max-width:80ch;margin:16px 0 0;font-size:12px}.codex-stats{grid-template-columns:max-content minmax(0,1fr);gap:3px 16px;max-width:640px;margin:12px 0 0;display:grid}.codex-stats dt{color:var(--ink-muted)}.codex-stats dd{font-variant-numeric:tabular-nums;margin:0}.codex-list{margin:0;padding-left:18px}.codex-flags{grid-template-columns:max-content minmax(0,1fr);gap:6px 16px;max-width:760px;margin:0;display:grid}.codex-flags dt{color:#7a4f10;font-weight:700}.codex-flags dd{margin:0}.codex-chip{min-width:160px;min-height:160px;box-shadow:inset 0 0 0 1px #00000080, inset 0 0 24px #0000008c, 0 0 0 2px var(--brass-dark), 0 4px 12px #3c280a73;border-radius:6px;flex:none;place-items:center;padding:8px;display:grid}.codex-chip>*{grid-area:1/1}.codex-chip-stone{background:radial-gradient(circle at 50% 42%,#8d877b,#6f6a60 55%,#4f4b44)}.codex-chip-grass{background:url(/ground/grass-tile.png) 0 0 / 256px 256px repeat, var(--moss)}.codex-chip-wide{max-width:100%}.codex-sprite{filter:drop-shadow(3px 5px 3px #0006);max-width:100%;height:auto;display:block}.codex-initial{font:700 48px/1 var(--font-display);color:var(--cream)}.codex-hero-bezel{padding:5px}.codex-hero-portrait{width:136px;height:136px;font-size:40px}.codex-tagline{color:#5a3d1c;max-width:60ch;font-style:italic}.codex-blurb{max-width:72ch;margin:14px 0 0;line-height:1.55}.codex-roles{grid-template-columns:repeat(3,max-content);gap:4px 18px;margin:10px 0 0;padding:0;list-style:none;display:grid}.codex-roles li{color:var(--ink-muted);justify-content:space-between;align-items:center;gap:8px;font-size:12px;display:flex}.codex-pips{flex:none;gap:3px;display:inline-flex}.codex-pip{background:#654a2e38;border-radius:50%;width:10px;height:10px;box-shadow:inset 0 0 0 1px #654a2e80}.codex-pip.on{background:radial-gradient(circle at 35% 30%, #fff1c2, var(--brass-light) 30%, var(--brass) 65%, var(--brass-dark));box-shadow:inset 0 0 0 1px var(--brass-dark)}.codex-pips.danger .codex-pip.on{background:radial-gradient(circle at 35% 30%,#ffc2b5,#c8402f 55%,#6d1f14);box-shadow:inset 0 0 0 1px #5e1a12}.codex-danger{color:var(--ink-muted);align-items:center;gap:8px;font-size:12px;display:flex}.codex-brief{grid-template-columns:repeat(2,minmax(0,1fr));gap:4px 28px;margin-top:6px;display:grid}.codex-brief-block p{margin:0;line-height:1.45}.codex-brief-block h4{margin-bottom:6px}.codex-bullets{gap:4px;margin:0;padding:0;list-style:none;display:grid}.codex-bullets li{padding-left:16px;line-height:1.4;position:relative}.codex-bullets li:before{content:"";background:var(--parchment-edge);border-radius:50%;width:6px;height:6px;position:absolute;top:.55em;left:2px}.good .codex-bullets li:before{background:var(--ok)}.bad .codex-bullets li:before{background:var(--danger)}.codex-link,.codex-link:hover:not(:disabled){box-shadow:none;color:#7a4f10;text-underline-offset:3px;background:0 0;border:0;padding:0;font-weight:700;text-decoration:underline}.codex-link:hover:not(:disabled){color:var(--ink)}.codex-beat p{max-width:72ch;margin:0;line-height:1.55}.codex-numbers{color:var(--ink-muted);margin-top:6px;font-size:11px}.codex-numbers summary{cursor:pointer;letter-spacing:.04em;width:max-content}.codex-numbers summary:hover{color:var(--ink)}.codex-numbers summary:focus-visible{outline:2px solid var(--brass-dark);outline-offset:1px}.codex-numbers p{font-variant-numeric:tabular-nums;margin:4px 0 0;line-height:1.35}.codex-base-numbers{margin-top:18px;font-size:12px}.codex-base-numbers .codex-stats{margin-top:6px}.codex-sort-row{align-items:baseline;gap:10px;margin-top:14px;display:flex}.codex-sort-label{font:700 11px/1 var(--font-display);color:var(--ink-muted);text-transform:uppercase;letter-spacing:.1em;flex:none}.codex-sorts{flex-wrap:wrap;gap:6px;display:flex}.codex-sort{padding:3px 9px;font-size:12px}.codex-grid{grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:10px;margin-top:14px;display:grid}.codex-card,.codex-tier,.codex-level,.codex-path,.tech-branch,.tech-tier{color:var(--ink);background:#fff9e88c;border:1px solid #7a5a1c73;border-radius:4px;box-shadow:0 1px 2px #3c280a2e}.codex-card{text-align:left;flex-direction:column;gap:8px;padding:10px;display:flex}.codex-card:hover:not(:disabled){border-color:var(--brass-dark);background:#fffbf0d9;transform:translateY(-2px);box-shadow:0 6px 14px #3c280a40}.codex-card-head{align-items:center;gap:10px;display:flex}.codex-card-text{flex-direction:column;gap:2px;min-width:0;display:flex}.codex-card .codex-chip{zoom:.5}.codex-card-name{font:700 17px/1.2 var(--font-display);color:var(--ink)}.codex-card-meta{color:#7a4f10;align-items:center;gap:4px;font-size:12px;font-weight:600;display:flex}.codex-card-lock{color:#8a2f1c;font-size:11px}.codex-card-lock.open{color:var(--ink-muted)}.codex-card-tagline{color:#5a3d1c;font-size:12px;font-style:italic;line-height:1.35}.codex-card-roles{grid-template-columns:repeat(2,minmax(0,1fr));gap:3px 14px;margin:0}.codex-card-roles .codex-pip{width:8px;height:8px}.codex-paths{grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;margin-top:18px;display:grid}.codex-path{background:#78501e14;padding:10px}.codex-path.active{border-color:var(--brass-dark);box-shadow:inset 0 0 0 1px var(--brass-dark)}.codex-path h4{color:var(--ink);text-transform:none;letter-spacing:.02em;margin:0 0 8px;font-size:14px}.codex-path .up-path{text-shadow:0 1px #00000080}.codex-tiers{gap:6px;margin:0;padding:0;list-style:none;display:grid}.codex-tier{padding:7px 9px}.codex-tier.crown{border-color:var(--brass);background:linear-gradient(#ffecb4bf,#fff9e899)}.codex-tier.gated{border-style:dashed}.codex-tier-top,.codex-level-top{justify-content:space-between;align-items:center;font-size:11px;display:flex}.codex-tier-no,.codex-level-no{color:var(--ink-muted);text-transform:uppercase;letter-spacing:.06em;align-items:center;gap:6px;font-weight:700;display:inline-flex}.codex-tier-art{object-fit:contain;filter:drop-shadow(1px 2px 1.5px #00000073);width:48px;height:48px}.codex-numeral{min-width:24px;height:24px;font:700 11px/1 var(--font-display);letter-spacing:0;color:#3a2408;text-shadow:0 1px #fff0c899;background:radial-gradient(circle at 35% 30%, #fff1c2, var(--brass-light) 30%, var(--brass) 70%, var(--brass-dark));box-shadow:inset 0 0 0 1px var(--brass-dark), 0 1px 2px #3c280a66;border-radius:12px;place-items:center;padding:0 4px;display:inline-grid}.codex-tier.crown .codex-tier-no,.codex-level.unlock .codex-level-no{color:#7a4f10}.codex-tier-name{margin:4px 0 0;font-weight:700}.codex-tier .codex-lock{margin:2px 0 0;font-size:11px}.codex-tier-flavour{color:#5a3d1c;margin:2px 0 0;font-size:12px;font-style:italic;line-height:1.35}.codex-tier-effect{margin:4px 0 0;font-size:12px;line-height:1.4}.codex-playstyle{margin:0 0 6px;font-size:12px;line-height:1.4}.codex-bestfor{flex-wrap:wrap;align-items:center;gap:6px;margin:0 0 10px;font-size:12px;display:flex}.codex-bestfor span{text-transform:uppercase;letter-spacing:.06em;color:#1a1208;background:var(--parchment-edge);border-radius:4px;padding:1px 6px;font-size:10px;font-weight:700}.path-A .codex-bestfor span{background:var(--path-a)}.path-B .codex-bestfor span{background:var(--path-b)}.path-C .codex-bestfor span{background:var(--path-c)}.codex-levels{grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:6px;margin:0;padding:0;list-style:none;display:grid}.codex-level{padding:7px 9px}.codex-level.unlock{border-color:var(--brass);background:linear-gradient(#ffecb4bf,#fff9e899)}.codex-level-xp{color:var(--ink-muted);font-variant-numeric:tabular-nums}.codex-ability{border-left:3px solid var(--brass);background:#ffecb459;margin-top:4px;padding:2px 14px 12px}.codex-ability p{max-width:72ch;margin:0;line-height:1.5}.tech-tree{justify-items:center;margin-top:20px;display:grid}.tech-hub{text-align:center;border:2px solid var(--brass);background:linear-gradient(#ffecb4cc,#fff9e899);border-radius:6px;justify-items:center;gap:2px;max-width:340px;padding:10px 18px;display:grid;position:relative}.tech-hub-name{font:700 18px/1.2 var(--font-display);color:var(--ink)}.tech-hub-role{color:var(--ink-muted);font-size:12px}.tech-hub:after{content:"";border-left:2px solid var(--parchment-edge);height:18px;position:absolute;top:100%;left:50%}.tech-branches{grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;width:100%;margin-top:18px;padding-top:18px;display:grid;position:relative}.tech-branches:before{content:"";border-top:2px solid var(--parchment-edge);position:absolute;top:0;left:16.6667%;right:16.6667%}.tech-branch{background:#78501e14;padding:10px;position:relative}.tech-branch:before{content:"";border-left:2px solid var(--parchment-edge);height:18px;position:absolute;bottom:100%;left:50%}.tech-branch h4{color:var(--ink);text-transform:none;letter-spacing:.02em;text-align:center;margin:0 0 8px;font-size:14px}.tech-tiers{gap:6px;margin:0;padding:0;list-style:none;display:grid}.tech-tier{padding:6px 9px}.tech-tier.keyed{border-color:var(--brass-dark)}.tech-tier-head{gap:8px;font-weight:700;display:flex}.tech-tier-no{color:var(--ink-muted);font-variant-numeric:tabular-nums}.tech-tier p{margin:3px 0 0;font-size:12px;line-height:1.35}.tech-unlock{color:var(--ok)}.tech-gate{color:#7a4f10}@media (width<=900px){.codex-paths{grid-template-columns:minmax(0,1fr)}.codex-path:not(.active){display:none}.codex-brief{grid-template-columns:minmax(0,1fr)}.codex-hint{display:none}}@media (width<=760px){.codex-body{grid-template-rows:auto minmax(0,1fr);grid-template-columns:minmax(0,1fr)}.codex-nav{max-height:34dvh}.tech-branches{grid-template-columns:minmax(0,1fr)}.tech-branches:before,.tech-branch:before{display:none}.codex-page-head{flex-wrap:wrap}.codex-roles{grid-template-columns:repeat(2,max-content)}.codex-sort-row{flex-direction:column}}.codex-tier-list{gap:12px;margin-top:14px;display:grid}.codex-tier-row{background:#fffbf073;border:1px solid #7a4f1059;border-radius:4px;padding:10px 12px 12px}.codex-tier-row.locked{background:#503c1e14}.codex-tier-row-head{justify-content:space-between;align-items:baseline;gap:12px;display:flex}.codex-tier-row-head h4{color:var(--ink);margin:0;font-size:15px}.codex-tier-rounds{color:#7a4f10;font-size:12px;font-weight:600}.codex-tier-maps{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin-top:8px;display:grid}.codex-tier-map{text-align:left;flex-direction:column;align-items:flex-start;gap:2px;padding:8px 10px;display:flex}.codex-tier-map .codex-card-name{color:var(--brass-light)}.codex-tier-map .codex-card-meta{color:var(--brass)}.codex-tier-row.locked .codex-tier-map .codex-card-name{opacity:.6}.codex-map-frame{--frame-edge:18px;max-width:520px;margin:14px 0 10px}@media (width<=860px){.codex-tier-maps{grid-template-columns:minmax(0,1fr)}}
