:root{--bg: #14110c;--panel: #221c14;--panel2: #2d261b;--line: #4a3f2c;--text: #ece2c8;--muted: #a3967a;--gold: #d9b24c;--accent: #b8412f;--ok: #6da35a;--fam-infantry: #c2453a;--fam-spear: #5c9e4c;--fam-cavalry: #d98a2e;--fam-ranged: #d6c24b;--fam-magic: #8e5bc9;--fam-support: #4a8fd1;--fam-beast: #8a8a8a}*{box-sizing:border-box}html,body{margin:0;background:var(--bg);color:var(--text);font-family:Hiragino Sans,Yu Gothic,Noto Sans JP,system-ui,sans-serif;font-size:15px;line-height:1.5}button{font:inherit;color:inherit;background:var(--panel2);border:1px solid var(--line);border-radius:6px;padding:8px 12px;cursor:pointer}button:disabled{opacity:.45;cursor:default}button.primary{background:var(--accent);border-color:#d7604c}button.small{padding:4px 8px;font-size:13px}select{font:inherit;color:var(--text);background:var(--panel2);border:1px solid var(--line);border-radius:6px;padding:6px 8px}h1,h2,h3{margin:0 0 8px;font-weight:700}h2{font-size:18px;color:var(--gold)}h3{font-size:15px;color:var(--muted)}p{margin:0 0 8px}.app{max-width:520px;margin:0 auto;min-height:100vh;padding:12px 16px 80px}.topbar{display:flex;justify-content:space-between;align-items:center;gap:8px;padding:8px 0 12px;border-bottom:1px solid var(--line);margin-bottom:12px}.topbar .month{font-weight:700;color:var(--gold)}.res{display:flex;gap:12px;font-size:14px;color:var(--muted)}.res b{color:var(--text)}.panel{background:var(--panel);border:1px solid var(--line);border-radius:8px;padding:12px;margin-bottom:12px}.row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.row.between{justify-content:space-between}.nav{display:grid;grid-template-columns:1fr 1fr;gap:8px}.nav button{padding:14px;font-size:16px}.list{display:flex;flex-direction:column;gap:8px}.muted{color:var(--muted);font-size:13px}.log{font-size:13px;line-height:1.6;white-space:pre-wrap}.log .r{color:var(--gold);margin-top:6px;font-weight:700}.log .ally{color:#cfe3ff}.log .enemy{color:#f3c2b8}.ucard{display:flex;gap:10px;align-items:center;background:var(--panel2);border:1px solid var(--line);border-radius:8px;padding:8px}.ucard.sel{outline:2px solid var(--gold)}.ucard.injured{opacity:.55}.portrait{width:44px;height:56px;border-radius:6px;border:3px solid var(--fam);background:linear-gradient(160deg,color-mix(in srgb,var(--fam) 50%,#000),#000);display:flex;align-items:center;justify-content:center;font-weight:800;font-size:20px;color:#fff;flex:none;position:relative}.portrait .rank{position:absolute;bottom:-2px;right:-2px;background:var(--fam);color:#000;font-size:10px;padding:0 4px;border-radius:4px}.portrait.star:before{content:"★";position:absolute;top:-8px;left:-8px;color:var(--gold);font-size:14px}.uinfo{flex:1;min-width:0}.uinfo .name{font-weight:700}.uinfo .sub{color:var(--muted);font-size:12px}.bar{height:6px;background:#000;border-radius:3px;overflow:hidden;margin-top:4px}.bar i{display:block;height:100%;background:var(--ok)}.bar.hp i{background:var(--accent)}.bar.exp i{background:var(--fam-support)}.grid3{display:grid;grid-template-columns:repeat(3,1fr);gap:6px}.cell{min-height:72px;border:1px dashed var(--line);border-radius:8px;background:#0e0b07;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:4px;font-size:12px;text-align:center;cursor:pointer}.cell.sel{border:2px solid var(--gold)}.cell.dead{opacity:.35}.cell .mini{width:30px;height:38px;border-radius:4px;border:2px solid var(--fam);background:color-mix(in srgb,var(--fam) 35%,#000);display:flex;align-items:center;justify-content:center;font-weight:800;color:#fff}.cell .nm{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}.cell .bar{width:100%}.linelabel{font-size:11px;color:var(--muted);text-align:center;margin:2px 0}.vs{text-align:center;color:var(--accent);font-weight:800;margin:6px 0}.genres{display:grid;grid-template-columns:repeat(3,1fr);gap:4px 12px;font-size:13px}.stat{display:grid;grid-template-columns:repeat(3,1fr);gap:4px 12px;font-size:14px}.stat b{color:var(--gold)}.cards{display:flex;flex-direction:column;gap:6px}.cards button{text-align:left}.cards button.sel{border-color:var(--gold);background:#3a2f18}.title{text-align:center;padding-top:80px}.title h1{font-size:34px;color:var(--gold);letter-spacing:.1em}.title .sub{color:var(--muted);margin-bottom:40px}.title button{display:block;width:100%;margin:10px 0;padding:14px;font-size:17px}.footer{position:fixed;bottom:0;left:0;right:0;background:var(--panel);border-top:1px solid var(--line);padding:10px 16px}.footer .inner{max-width:520px;margin:0 auto;display:flex;gap:8px}.footer button{flex:1;padding:12px}.badge{display:inline-block;font-size:11px;padding:1px 6px;border-radius:4px;background:var(--line);color:var(--text);margin-left:4px}.badge.royal{background:var(--accent)}.badge.star{background:var(--gold);color:#000}.bar.susp i{background:linear-gradient(90deg,var(--ok),var(--gold),var(--accent))}.noble{background:var(--panel2);border:1px solid var(--line);border-radius:8px;padding:8px}.event{border-color:var(--gold)}.event h2{color:var(--gold)}.ending{text-align:center;padding:24px 12px}.ending h1{font-size:40px;letter-spacing:.2em;margin:8px 0 16px}.nav button:nth-child(5):last-child{grid-column:1 / -1}.portrait.img,.cell .mini.img{background:#000;overflow:hidden;padding:0}.portrait img,.mini img{width:100%;height:100%;object-fit:cover;object-position:top;display:block}.portrait.large{width:96px;height:120px;font-size:40px}.portrait .cmd{position:absolute;top:-6px;right:-6px;background:var(--accent);color:#fff;font-size:10px;padding:0 4px;border-radius:4px}.cell{position:relative;transition:transform .15s,box-shadow .15s}.cell.act{transform:translateY(-3px) scale(1.04);box-shadow:0 0 0 2px var(--gold);z-index:1}.cell.tgt.hit{animation:shake .35s;box-shadow:inset 0 0 0 999px #b8412f40}.cell.tgt.crit{animation:shake .45s;box-shadow:inset 0 0 0 999px #d9b24c59}.cell.tgt.dead{animation:shake .45s}.cell.tgt.heal{box-shadow:inset 0 0 0 999px #6da35a4d}.cell .pop{position:absolute;top:4px;left:50%;transform:translate(-50%);font-weight:800;font-size:15px;color:#fff;text-shadow:0 1px 2px #000,0 0 6px #000;animation:pop .6s ease-out forwards;pointer-events:none;white-space:nowrap;z-index:2}.cell .pop.crit{color:var(--gold);font-size:17px}.cell .pop.heal{color:#9fe08a}.cell .pop.dead{color:#f3c2b8}@keyframes shake{0%,to{translate:0 0}20%{translate:-4px 0}40%{translate:4px 0}60%{translate:-3px 0}80%{translate:3px 0}}@keyframes pop{0%{opacity:0;translate:0 8px}20%{opacity:1}to{opacity:0;translate:0 -18px}}.battle .field .bar.hp i{transition:width .35s}button.small.sel{border-color:var(--gold);background:#3a2f18}.swatch{width:44px;height:32px;color:#fff;text-shadow:0 1px 2px #000;border:2px solid transparent}.swatch.sel{border-color:var(--gold)}.crest{vertical-align:middle;flex:none}.face{width:36px;height:36px;border-radius:50%;object-fit:cover;border:2px solid var(--line)}.ending .scene{width:100%;max-height:220px;object-fit:cover;border-radius:8px;margin-bottom:10px}.title{background-size:cover;background-position:center top}.cards button.withimg{background-size:cover;background-position:left center;min-height:56px}.tabs{position:fixed;bottom:0;left:0;right:0;background:var(--panel);border-top:1px solid var(--line);z-index:20;padding-bottom:env(safe-area-inset-bottom)}.tabs .inner{max-width:520px;margin:0 auto;display:grid;grid-template-columns:repeat(6,1fr)}.tabs button{background:none;border:none;border-radius:0;padding:9px 0 10px;font-size:12px;color:var(--muted)}.tabs button.sel{color:var(--gold);font-weight:700;box-shadow:inset 0 2px 0 var(--gold)}.has-tabs .app{padding-bottom:140px}.has-tabs .footer{bottom:44px}.toasts{position:fixed;top:10px;left:0;right:0;display:flex;flex-direction:column;align-items:center;gap:6px;z-index:50;pointer-events:none}.toast{background:#3a2f18;border:1px solid var(--gold);color:var(--gold);border-radius:8px;padding:6px 14px;font-size:13px;font-weight:700;box-shadow:0 4px 12px #00000080;animation:toastin .3s ease-out}@keyframes toastin{0%{opacity:0;translate:0 -8px}to{opacity:1;translate:0 0}}.codex-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}.codex-item{text-align:center;display:flex;flex-direction:column;align-items:center}input[type=checkbox]{width:20px;height:20px;accent-color:var(--gold)}.sfield{position:relative;padding:4px 0;background:radial-gradient(ellipse at center,#1e2516,#14110c 75%);border-radius:8px;overflow:hidden}.sside{display:flex;flex-direction:column;gap:4px;padding:4px}.srow{display:grid;grid-template-columns:repeat(3,1fr);gap:6px}.sline{height:2px;margin:4px 10px;background:linear-gradient(90deg,transparent,var(--line),transparent)}.scell{position:relative;min-height:86px;border-radius:8px;display:flex;flex-direction:column;align-items:center;justify-content:flex-end;padding:4px;font-size:11px;text-align:center;transition:transform .15s,box-shadow .15s}.scell.enemy{background:#2b3a6b14}.scell.ally{background:#b8412f14;cursor:pointer}.scell.sel{box-shadow:inset 0 0 0 2px var(--gold)}.scell.dead{opacity:.35}.scell.dead .sprite{filter:grayscale(1);transform:rotate(90deg) translate(6px)}.scell .nm{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%;line-height:1.2}.scell .bar{width:100%}.scell .sprite{width:48px;height:60px;image-rendering:pixelated;object-fit:contain;display:block;filter:drop-shadow(0 3px 1px rgba(0,0,0,.5))}.scell .sprite.unknown{display:flex;align-items:center;justify-content:center;color:var(--muted);font-size:24px}.scell.ally .sprite{animation:idle 1.6s ease-in-out infinite}.scell.enemy .sprite{animation:idle 1.6s ease-in-out infinite .8s}@keyframes idle{0%,to{translate:0 0}50%{translate:0 -2px}}.scell.act{z-index:2}.scell.ally.act .sprite{animation:lunge-up .45s ease-out}.scell.enemy.act .sprite{animation:lunge-down .45s ease-out}@keyframes lunge-up{0%{translate:0 0}35%{translate:0 -14px;scale:1.1}to{translate:0 0}}@keyframes lunge-down{0%{translate:0 0}35%{translate:0 14px;scale:1.1}to{translate:0 0}}.scell.ally.act-ranged .sprite,.scell.enemy.act-ranged .sprite{animation:draw .4s ease-out}@keyframes draw{0%{translate:0 0}40%{translate:0 2px;scale:.95 1.05}to{translate:0 0}}.scell.act-magic .sprite,.scell.act-heal .sprite{animation:cast .5s ease-out}@keyframes cast{0%{filter:drop-shadow(0 3px 1px rgba(0,0,0,.5))}40%{filter:drop-shadow(0 0 6px #c9a6ff) brightness(1.4)}to{filter:drop-shadow(0 3px 1px rgba(0,0,0,.5))}}.scell.tgt.hit .sprite,.scell.tgt.dead .sprite,.scell.tgt.crit .sprite{animation:hurt .4s ease-out .15s}@keyframes hurt{0%{translate:0 0;filter:brightness(1)}20%{translate:-4px 0;filter:brightness(3)}40%{translate:4px 0}60%{translate:-3px 0;filter:brightness(1)}80%{translate:3px 0}to{translate:0 0}}.scell.tgt.heal .sprite{animation:glow .5s ease-out}@keyframes glow{0%{filter:brightness(1)}50%{filter:drop-shadow(0 0 6px #9fe08a) brightness(1.3)}to{filter:brightness(1)}}.scell .pop{position:absolute;top:2px;left:50%;transform:translate(-50%);font-weight:800;font-size:15px;color:#fff;text-shadow:0 1px 2px #000,0 0 6px #000;animation:pop .6s ease-out .15s forwards;opacity:0;pointer-events:none;white-space:nowrap;z-index:3}.scell .pop.crit{color:var(--gold);font-size:17px}.scell .pop.heal{color:#9fe08a}.scell .pop.dead{color:#f3c2b8}.scell .slash{position:absolute;left:50%;top:26px;width:34px;height:34px;margin-left:-17px;border-radius:50%;border:3px solid transparent;border-top-color:#fff;border-right-color:#fff;opacity:0;animation:slash .3s ease-out .1s forwards;pointer-events:none;z-index:3;filter:drop-shadow(0 0 3px #fff)}@keyframes slash{0%{opacity:0;transform:rotate(-120deg) scale(.6)}30%{opacity:1}to{opacity:0;transform:rotate(60deg) scale(1.2)}}.scell .burstfx{position:absolute;left:50%;top:34px;width:12px;height:12px;margin:-6px 0 0 -6px;border-radius:50%;background:radial-gradient(circle,#fff,#c9a6ff 40%,#8e5bc900 70%);opacity:0;animation:burst .4s ease-out .2s forwards;pointer-events:none;z-index:3}@keyframes burst{0%{opacity:0;scale:.3}30%{opacity:1}to{opacity:0;scale:4}}.scell .healfx{position:absolute;left:50%;top:40px;width:40px;height:40px;margin:-20px 0 0 -20px;background:radial-gradient(circle at 30% 30%,#9fe08a 0 2px,transparent 3px),radial-gradient(circle at 70% 40%,#9fe08a 0 2px,transparent 3px),radial-gradient(circle at 50% 75%,#9fe08a 0 2px,transparent 3px),radial-gradient(circle at 20% 70%,#fff 0 1.5px,transparent 2.5px);opacity:0;animation:rise .6s ease-out .15s forwards;pointer-events:none;z-index:3}@keyframes rise{0%{opacity:0;translate:0 6px}30%{opacity:1}to{opacity:0;translate:0 -14px}}.proj{position:absolute;left:0;top:0;z-index:4;pointer-events:none;animation:fly .25s linear .12s forwards;opacity:0}.proj.ranged{width:18px;height:3px;margin:-1px 0 0 -9px;background:linear-gradient(90deg,#f4f1e8 0,#f4f1e8 60%,#c2453a 60%,#c2453a);border-radius:2px;box-shadow:0 0 2px #000}.proj.magic{width:10px;height:10px;margin:-5px 0 0 -5px;border-radius:50%;background:radial-gradient(circle,#fff,#c9a6ff 50%,#8e5bc933);box-shadow:0 0 8px #8e5bc9}.proj.heal{width:8px;height:8px;margin:-4px 0 0 -4px;border-radius:50%;background:#9fe08a;box-shadow:0 0 8px #6da35a}@keyframes fly{0%{opacity:1;translate:var(--x0) var(--y0);rotate:var(--rot)}to{opacity:1;translate:var(--x1) var(--y1);rotate:var(--rot)}}
