:root{--bg:#f4ecd6;--lightning:#f5d000;--dark:#8b1fb4;--ice:#4dd6ff;--plant:#3fb547;--white-cell:#faf5e3}*{box-sizing:border-box;margin:0;padding:0}html,body{letter-spacing:.04em;color:#1a1a1a;-webkit-tap-highlight-color:transparent;background:radial-gradient(60% 50% at 50% 35%,#f5d00014,#0000 70%),radial-gradient(80% 60% at 50% 110%,#8b1fb41a,#0000 70%),#0d0d10;min-height:100%;font-family:Bangers,Impact,Arial Black,sans-serif}#app{place-items:center;min-height:100dvh;padding:12px;display:grid}.site{justify-content:center;align-items:flex-start;gap:18px;width:100%;display:flex}.side-panel{background:linear-gradient(180deg, #ffffff59, transparent 40%), var(--bg);border:3px solid #1a1a1a;border-radius:18px;flex-direction:column;flex-shrink:0;gap:10px;width:290px;max-height:calc(100dvh - 36px);padding:16px 14px 18px;display:flex;position:relative;overflow-y:auto;box-shadow:0 10px #1a1a1a,0 14px 30px #0000008c}.side-panel:before{content:"";pointer-events:none;z-index:0;border:1px dashed #1a1a1a40;border-radius:14px;position:absolute;inset:4px}.side-panel:after{content:"";pointer-events:none;mix-blend-mode:multiply;opacity:.55;z-index:0;background-image:radial-gradient(circle at 1px 1px,#1a1a1a14 1px,#0000 1.5px);background-size:6px 6px;border-radius:18px;position:absolute;inset:0}.lore-panel{width:310px}.panel-title{text-align:center;-webkit-text-stroke:2px #1a1a1a;text-shadow:3px 3px #1a1a1a;letter-spacing:.14em;color:#f5d000;z-index:1;margin-top:2px;font-size:28px;position:relative}.panel-subtitle{text-align:center;letter-spacing:.22em;color:#5a5a5a;-webkit-text-stroke:0;text-shadow:none;text-transform:uppercase;z-index:1;font-family:ui-monospace,Menlo,monospace;font-size:10px;font-weight:700;position:relative}.panel-subtitle:before,.panel-subtitle:after{content:"─";color:#1a1a1a;opacity:.4;margin:0 6px}.codex-list{flex-direction:column;gap:6px;display:flex}.codex-item{flex-direction:column;gap:4px;display:flex}.codex-list{z-index:1;position:relative}.codex-card{cursor:pointer;font:inherit;letter-spacing:.06em;color:#1a1a1a;text-align:left;-webkit-text-stroke:0;width:100%;text-shadow:none;background:repeating-linear-gradient(45deg,#ffffffd9 0 6px,#ffffffb3 6px 12px);border:2px solid #1a1a1a;border-radius:10px;align-items:center;gap:10px;min-height:56px;padding:8px 12px 8px 16px;font-size:15px;transition:transform 80ms,background .12s,box-shadow .12s;display:flex;position:relative;overflow:hidden;box-shadow:0 2px #1a1a1a66}.codex-card:before{content:"";background:repeating-linear-gradient(135deg, var(--el) 0 4px, #00000040 4px 6px);border-right:1.5px solid #1a1a1a;width:6px;position:absolute;top:0;bottom:0;left:0}.codex-card:hover{background:#fff;transform:translateY(-1px);box-shadow:0 3px #1a1a1a8c}.codex-card:active{transform:translateY(1px);box-shadow:0 1px #1a1a1a66}.codex-card .codex-face{background-color:var(--el);width:44px;height:44px;box-shadow:0 0 0 1.5px var(--el), 0 0 10px #00000040, inset 0 -3px 0 #0003;background-position:50%;background-repeat:no-repeat;background-size:contain;border:2px solid #1a1a1a;border-radius:8px;flex-shrink:0;position:relative;overflow:hidden}.codex-card .codex-face:before{content:"";pointer-events:none;background:radial-gradient(circle at 30% 25%,#ffffff59,#0000 55%);position:absolute;inset:0}.codex-card .codex-face.has-thumb{background-color:#0000}.codex-card.open .codex-face{box-shadow:0 0 0 2px #fff,0 0 16px #fff,inset 0 -3px #00000040}.codex-card .el-name{flex:1;font-weight:700}.codex-card .el-arch{letter-spacing:.06em;opacity:.55;font-family:ui-monospace,Menlo,monospace;font-size:10px;font-weight:700}.codex-card.open{background:linear-gradient(135deg, var(--el), #0000002e), var(--el);color:#fff;-webkit-text-stroke:.5px #1a1a1a;box-shadow:0 4px #1a1a1a,inset 0 0 0 1px #fff6}.codex-card.open:before{background:#1a1a1a;width:5px}.codex-card.open .el-dot{box-shadow:0 0 12px #fff, 0 0 4px var(--el);background:#fff!important}.codex-card.open .el-arch{color:#fff;opacity:1}.codex-detail{background:linear-gradient(180deg, #fffffff7, #ffffffe0), var(--el);border:2px solid #1a1a1a;border-top:5px solid var(--el);letter-spacing:.02em;-webkit-text-stroke:0;text-shadow:none;color:#111;border-radius:10px;padding:13px 14px 14px;font-family:ui-monospace,Menlo,monospace;font-size:12.5px;animation:.18s ease-out detail-pop;display:none;box-shadow:0 3px #1a1a1a80}@keyframes detail-pop{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}.codex-detail.open{display:block}.codex-arch{text-align:center;color:#1a1a1a;letter-spacing:.04em;background:#1a1a1a14;border:1.5px solid #1a1a1a;border-radius:6px;margin-bottom:12px;padding:5px 8px;font-size:11.5px;font-style:normal;font-weight:800;line-height:1.35}.codex-detail .stats{grid-template-columns:1fr 1fr;gap:5px 7px;margin-bottom:12px;display:grid}.codex-detail .stat-row{background:#fff9;border:1.5px solid #1a1a1a;border-radius:6px;justify-content:space-between;align-items:center;padding:4px 8px;font-size:11px;display:flex;box-shadow:0 1.5px #1a1a1a59}.codex-detail .stat-row span{opacity:.7;letter-spacing:.1em;font-size:9.5px;font-weight:800}.codex-detail .stat-row b{color:#1a1a1a;font-size:14px;font-weight:900}.codex-detail .ab-title{letter-spacing:.1em;color:#1a1a1a;margin-top:10px;margin-bottom:4px;padding-left:14px;font-family:Bangers,Impact,Arial Black,sans-serif;font-size:16px;position:relative}.codex-detail .ab-title:before{content:"";background:var(--el);border:1.5px solid #1a1a1a;width:8px;height:8px;position:absolute;top:50%;left:0;transform:translateY(-50%)rotate(45deg)}.codex-detail .ab-desc{color:#2a2a2a;margin-bottom:8px;padding-left:14px;font-size:12px;line-height:1.55}.codex-detail .ab-desc:last-child{margin-bottom:0}.lore-body{letter-spacing:.03em;color:#1a1a1a;-webkit-text-stroke:0;text-shadow:none;z-index:1;font-family:ui-monospace,Menlo,monospace;font-size:12px;line-height:1.6;position:relative}.lore-body p{margin-bottom:10px}.lore-body p:last-child{margin-bottom:0}.lore-body strong{background:linear-gradient(#0000 60%,#f5d00073 60%);padding:0 2px;font-weight:800}.lore-body p:first-child:first-letter{float:left;color:#f5d000;-webkit-text-stroke:1.5px #1a1a1a;text-shadow:2px 2px #1a1a1a;margin:4px 6px 0 0;font-family:Bangers,Impact,Arial Black,sans-serif;font-size:38px;line-height:.9}.lore-body .lore-section-title{letter-spacing:.14em;text-transform:uppercase;color:#1a1a1a;align-items:center;gap:8px;margin:14px 0 5px;font-family:Bangers,Impact,Arial Black,sans-serif;font-size:15px;display:flex}.lore-body .lore-section-title:after{content:"";background:repeating-linear-gradient(90deg,#1a1a1a 0 6px,#0000 6px 10px);flex:1;height:2px}.mobile-tabs{display:none}@media (width<=1180px){#app{place-items:start center}.site{flex-direction:column;align-items:center;gap:14px}.stage{order:0}.mobile-tabs{order:1}.codex-panel,.lore-panel{order:2}.side-panel{width:min(420px,100vw - 24px);max-height:none}.side-panel .panel-title,.site[data-mobile-tab=codex] .lore-panel,.site[data-mobile-tab=lore] .codex-panel{display:none}.mobile-tabs{gap:8px;width:min(420px,100vw - 24px);display:flex}.mobile-tab{font:inherit;letter-spacing:.16em;background:var(--bg);color:#1a1a1a;cursor:pointer;-webkit-text-stroke:0;text-shadow:none;border:3px solid #1a1a1a;border-radius:12px;flex:1;padding:12px 8px;font-size:17px;transition:transform 80ms,background .12s,box-shadow .12s;box-shadow:0 4px #1a1a1a}.mobile-tab:active{transform:translateY(2px);box-shadow:0 2px #1a1a1a}.mobile-tab.is-active{background:#f5d000;box-shadow:0 4px #1a1a1a,inset 0 0 0 2px #1a1a1a40}}.stage{aspect-ratio:9/16;background:var(--bg);border-radius:24px;grid-template-rows:1fr auto 1fr;row-gap:10px;width:min(480px,100vw - 16px,56.25dvh - 13.5px);padding:14px;display:grid;position:relative;overflow:hidden;box-shadow:0 24px 60px #00000073}.log{-webkit-text-stroke:0;width:100%;max-height:100%;text-shadow:none;letter-spacing:0;background:#0000000f;border:2px solid #1a1a1a;border-radius:8px;flex-direction:column;align-self:end;gap:2px;padding:4px 6px;font-family:ui-monospace,Menlo,monospace;font-size:11px;display:flex;overflow-y:auto}.log::-webkit-scrollbar{width:4px}.log::-webkit-scrollbar-thumb{background:#0000004d;border-radius:2px}.log-line{color:#1a1a1a;background:#ffffff8c;border-left:3px solid #888;border-radius:2px;padding:2px 6px;line-height:1.3;animation:.2s ease-out log-pop}.log-line.log-kill{background:#ffc8c8b3;font-weight:700}.log-line.log-crit{background:#ffeb96bf;font-weight:700}.log-line.log-charge{background:#dcb4ffa6}.log-line.log-chain{background:#fff5b4b3}.log-line.log-burn{background:#ffaa82bf}.log-line.log-win{background:#ffffffe6;border-left-width:5px;font-size:12px;font-weight:800}@keyframes log-pop{0%{opacity:0;transform:translate(-6px)}to{opacity:1;transform:translate(0)}}.arena{aspect-ratio:1;background:var(--white-cell);border:4px solid #1a1a1a;border-radius:3px;width:100%;position:relative;overflow:hidden}#game{width:100%;height:100%;image-rendering:pixelated;touch-action:none;display:block}.sound-toggle{cursor:pointer;z-index:5;background:#ffffffd9;border:2px solid #1a1a1a;border-radius:6px;justify-content:center;align-items:center;width:36px;height:36px;padding:0;font-size:18px;line-height:1;display:flex;position:absolute;top:8px;right:8px}.sound-toggle:hover{background:#fff}.sound-toggle:active{transform:translateY(1px)}.record-toggle{letter-spacing:.08em;color:#1a1a1a;cursor:pointer;z-index:5;-webkit-text-stroke:0;height:36px;text-shadow:none;background:#ffffffd9;border:2px solid #1a1a1a;border-radius:6px;align-items:center;gap:6px;padding:0 10px 0 8px;font:700 12px ui-monospace,Menlo,monospace;display:inline-flex;position:absolute;top:8px;left:8px}.record-toggle:hover{background:#fff}.record-toggle:active{transform:translateY(1px)}.record-toggle .rec-dot{background:#c33;border:1.5px solid #1a1a1a;border-radius:50%;flex-shrink:0;width:10px;height:10px}.record-toggle.is-off{opacity:.55;color:#555}.record-toggle.is-off .rec-dot{background:#888}.record-toggle.is-recording .rec-dot{animation:1s steps(2,end) infinite rec-blink}@keyframes rec-blink{50%{opacity:.25}}#hud{-webkit-text-stroke:0;width:100%;text-shadow:none;letter-spacing:0;grid-template-columns:1fr 1fr;align-self:end;gap:4px 12px;font-family:ui-monospace,Menlo,monospace;font-size:11px;display:grid}.hp-row{align-items:center;gap:6px;transition:opacity .2s;display:flex}.hp-row.dead{opacity:.55}.hp-row .swatch{border:1px solid #1a1a1a;border-radius:2px;flex-shrink:0;width:10px;height:10px}.hp-row .el-label{min-width:46px;font-weight:700}.hp-row .bar{background:#0000001f;border:1px solid #1a1a1a;border-radius:3px;flex:1;height:7px;overflow:hidden}.hp-row .fill{height:100%;transition:width 80ms linear}.hp-row .pct{text-align:right;width:32px;font-size:10px;font-weight:700}#winner{z-index:10;background:#0009;border-radius:24px;place-items:center;display:grid;position:absolute;inset:0}#winner.hidden,#start-screen.hidden{display:none!important}.winner-card{background:var(--bg);text-align:center;border:3px solid #1a1a1a;border-radius:16px;flex-direction:column;align-items:center;gap:10px;padding:20px 28px;display:flex;box-shadow:0 10px #1a1a1a}.winner-title{letter-spacing:.2em;color:#555;font-size:14px}.winner-name{-webkit-text-stroke:2px #1a1a1a;text-shadow:3px 3px #1a1a1a;margin:4px 0 8px;font-size:38px}.winner-card button{font:inherit;color:#fff;cursor:pointer;letter-spacing:.08em;background:#1a1a1a;border:none;border-radius:8px;min-width:160px;padding:8px 22px;font-size:15px}.winner-card button:hover,.winner-card button:active{background:#333}#start-screen{z-index:20;background:#000000c7;border-radius:24px;place-items:center;padding:14px;display:grid;position:absolute;inset:0}.start-card{background:var(--bg);border:3px solid #1a1a1a;border-radius:16px;flex-direction:column;gap:12px;width:100%;max-width:420px;padding:18px 18px 16px;display:flex;box-shadow:0 10px #1a1a1a}.start-title{text-align:center;-webkit-text-stroke:2px #1a1a1a;text-shadow:3px 3px #1a1a1a;letter-spacing:.12em;color:#f5d000;font-size:30px}.start-subtitle{text-align:center;letter-spacing:.16em;color:#1a1a1a;-webkit-text-stroke:0;text-shadow:none;font-family:ui-monospace,Menlo,monospace;font-size:13px}.element-grid{grid-template-columns:1fr 1fr;gap:8px;display:grid}.el-card{cursor:pointer;font:inherit;letter-spacing:.06em;color:#1a1a1a;text-align:left;-webkit-text-stroke:0;text-shadow:none;background:#ffffffb3;border:2px solid #1a1a1a;border-radius:10px;align-items:center;gap:8px;padding:10px 12px;font-size:16px;transition:transform 80ms,background .12s,box-shadow .12s;display:flex;position:relative}.el-card:hover{transform:translateY(-1px)}.el-card:active{transform:translateY(1px)}.el-card .el-dot{border:1.5px solid #1a1a1a;border-radius:50%;flex-shrink:0;width:14px;height:14px}.el-card .el-name{flex:1;font-weight:700}.el-card .el-check{opacity:0;color:#1a7a1a;font-size:18px;font-weight:900;transition:opacity .1s}.el-card.selected{background:var(--el);color:#fff;box-shadow:0 3px #1a1a1a}.el-card.selected .el-check{opacity:1;color:#fff;text-shadow:1px 1px #1a1a1a}.select-info{text-align:center;letter-spacing:.1em;-webkit-text-stroke:0;text-shadow:none;font-family:ui-monospace,Menlo,monospace;font-size:12px;font-weight:700}.speed-select{align-items:center;gap:10px;display:flex}.speed-label{letter-spacing:.16em;color:#1a1a1a;-webkit-text-stroke:0;text-shadow:none;font-family:ui-monospace,Menlo,monospace;font-size:12px;font-weight:700}.speed-options{flex:1;gap:4px;display:flex}.speed-opt{font:inherit;color:#1a1a1a;cursor:pointer;letter-spacing:.04em;background:#fff;border:2px solid #1a1a1a;border-radius:8px;flex:1;padding:8px 4px;font-size:13px;transition:transform 80ms,background .12s}.speed-opt:hover{background:#eee}.speed-opt:active{transform:translateY(1px)}.speed-opt.is-active{color:#fff;background:#1a1a1a;box-shadow:0 3px #555}.start-actions{flex-wrap:wrap;gap:6px;display:flex}.start-actions button{min-width:90px;font:inherit;color:#1a1a1a;cursor:pointer;letter-spacing:.08em;background:#fff;border:2px solid #1a1a1a;border-radius:8px;flex:1;padding:10px 8px;font-size:13px;transition:transform 80ms,background .12s}.start-actions button:hover{background:#eee}.start-actions button:active{transform:translateY(1px)}.start-actions button.primary{color:#fff;background:#1a1a1a;flex:2}.start-actions button.primary:hover{background:#333}.start-actions button:disabled{color:#777;cursor:not-allowed;background:#ccc;border-color:#999}@media (width<=520px){#app{padding:6px}.stage{border-radius:18px;gap:8px;width:min(100vw - 12px,56.25dvh - 9px);padding:10px}.log{font-size:10px}.start-title{font-size:26px}.start-subtitle{font-size:11px}.el-card{padding:8px 10px;font-size:14px}.winner-name{font-size:30px}}@media (width<=360px){.element-grid{grid-template-columns:1fr}}
