:root{color-scheme:light;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;line-height:1.5;font-weight:400;color:#17202a;background:#f6f1e8;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;--paper: #fffdf8;--panel: #ffffff;--ink: #17202a;--muted: #6a6f77;--line: #ded6c8;--dark: #111821;--dark-2: #172331;--green: #16a66a;--red: #d94c43;--purple: #7a4fd6;--yellow: #d8a229;--blue: #2f6f9f}*{box-sizing:border-box}body{margin:0;min-width:320px;min-height:100vh}button,textarea,select{font:inherit}button{border:0}textarea,select{width:100%;border:1px solid var(--line);border-radius:8px;background:#fffefa;color:var(--ink)}textarea{min-height:52px;padding:12px;resize:vertical}select{padding:10px 12px}.app-shell{width:min(1180px,calc(100vw - 32px));min-height:100vh;margin:0 auto;padding:28px 0}.setup-grid{display:grid;grid-template-columns:minmax(260px,.8fr) minmax(320px,1.2fr);gap:24px;align-items:start}.setup-copy{position:sticky;top:24px;padding:28px 0}.phase-label{margin:0 0 8px;color:var(--purple);font-size:.78rem;font-weight:800;letter-spacing:0;text-transform:uppercase}h1,h2{margin:0;line-height:1.05;letter-spacing:0}h1{max-width:720px;font-size:clamp(2.4rem,7vw,5.8rem)}h2{font-size:1.45rem}.subtitle{max-width:520px;margin:18px 0 0;color:#354052;font-size:1.2rem}.challenge-badge,.challenge-inline{display:inline-flex;width:fit-content;border:1px solid var(--line);border-radius:999px;padding:6px 11px;background:#fff9ed;color:#3d4956;font-size:.86rem;font-weight:800}.challenge-badge{margin:20px 0 0}.challenge-inline{margin:10px 0 0;border-color:#ffffff29;background:#ffffff0f;color:#d6e0ea}.mascot{width:160px;height:140px;margin-top:34px;position:relative}.mascot span{position:absolute;top:12px;right:18px;bottom:0;left:18px;border:2px solid #d5d0c5;border-radius:44% 44% 24% 24%;background:radial-gradient(circle at 38% 40%,#17202a 0 5px,transparent 6px),radial-gradient(circle at 62% 40%,#17202a 0 5px,transparent 6px),linear-gradient(#fff,#eee8dd);box-shadow:0 18px 35px #2f2a221f}.control-panel,.log-panel,.result-actions{border:1px solid var(--line);border-radius:8px;background:var(--panel);box-shadow:0 18px 60px #2d25161a}.control-panel{display:grid;gap:18px;padding:22px}.privacy-note{margin:-8px 0 0;color:var(--muted);font-size:.86rem;font-weight:700}.top-controls{display:grid;grid-template-columns:170px 1fr;gap:14px;align-items:stretch}.spell-input-layout{display:grid;grid-template-columns:minmax(0,1fr) 150px;gap:14px;align-items:stretch}.spell-avatar-card,.battle-avatar-inline,.result-avatar-row{border:1px solid var(--line);border-radius:8px;background:#fff9ed}.spell-avatar-card{display:grid;justify-items:center;align-content:center;gap:8px;padding:12px;text-align:center}.spell-avatar-card p{margin:0;color:var(--muted);font-size:.82rem;font-weight:800}.spell-avatar{display:block;width:118px;height:118px;max-width:100%}.spell-avatar--small{width:78px;height:78px}.spell-avatar--ghost{opacity:.58;filter:grayscale(.9)}.spell-avatar--egg{opacity:.82}.battle-avatar-inline,.battle-spell-with-avatar{display:flex;gap:12px;align-items:center}.battle-avatar-inline{width:fit-content;padding:8px 12px 8px 8px;color:#d6e0ea;font-weight:800}.battle-spell-with-avatar>.field,.battle-spell-with-avatar>div{flex:1;min-width:0}.field{display:grid;gap:8px}.field>span,.field-label{color:#293340;font-size:.88rem;font-weight:800}.compact-field{align-content:start}.webgpu-status{min-height:72px;border:1px solid var(--line);border-radius:8px;padding:12px;background:#fbf6ed}.status-line{display:flex;gap:8px;align-items:center;justify-content:space-between;color:#253040;font-weight:800}.status-dot{width:10px;height:10px;border-radius:50%;background:var(--yellow);flex:0 0 auto}.webgpu-status--ready .status-dot{background:var(--green)}.webgpu-status--unavailable .status-dot{background:var(--red)}.status-line strong{border-radius:999px;padding:3px 8px;background:#251943;color:#fff;font-size:.72rem}.fine-print,.field-footer small{margin:6px 0 0;color:var(--muted);font-size:.82rem}.model-row{display:flex;gap:14px;align-items:center;justify-content:space-between;border:1px solid var(--line);border-radius:8px;padding:14px}.model-row div{display:grid;gap:3px}.model-row small{color:var(--muted)}.load-progress{display:grid;gap:5px;margin-top:6px}.load-progress-track{height:8px;overflow:hidden;border-radius:999px;background:#e4ded3}.load-progress-track span{display:block;height:100%;min-width:8%;border-radius:inherit;background:linear-gradient(90deg,var(--purple),var(--green))}.error-text,.setup-warning{color:var(--red);font-weight:800}.setup-warning{margin:-4px 0 0}.primary-button,.secondary-button{display:inline-flex;align-items:center;justify-content:center;min-height:44px;border-radius:8px;padding:11px 16px;font-weight:800;text-decoration:none;cursor:pointer;transition:transform .16s ease,opacity .16s ease,background .16s ease}.primary-button{background:#17202a;color:#fff}.secondary-button{border:1px solid var(--line);background:#fffefa;color:#1f2b37}.primary-button:hover,.secondary-button:hover{transform:translateY(-1px)}.primary-button:disabled,.secondary-button:disabled,.secondary-button[aria-disabled=true]{cursor:not-allowed;opacity:.55;transform:none}.full-width{width:100%}.hp-block{display:grid;gap:8px}.hp-meta{display:flex;align-items:center;justify-content:space-between;color:#26313d}.hp-track{position:relative;height:18px;overflow:hidden;border:1px solid #0f5a3d;border-radius:999px;background:#dce7d9}.hp-fill{position:absolute;inset:0 auto 0 0;background:linear-gradient(90deg,#17aa70,#7fd06d)}.hp-segments{position:absolute;top:0;right:0;bottom:0;left:0;background-image:repeating-linear-gradient(90deg,transparent 0 9.2%,rgb(255 255 255 / 55%) 9.2% 9.8%,transparent 9.8% 10%)}.field-footer{display:flex;gap:12px;align-items:start;justify-content:space-between}.counter{flex:0 0 auto;color:var(--muted);font-size:.82rem;font-weight:800}.counter.over{color:var(--red)}.tips{border-left:4px solid var(--yellow);padding:10px 0 10px 14px;color:#354052}.tips p{margin:6px 0 0}.battle-layout{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(280px,.65fr);gap:18px}.battle-main{display:grid;gap:16px;border-radius:8px;padding:20px;background:var(--dark);color:#f8fbff;box-shadow:0 26px 70px #0b111847}.battle-header{display:flex;gap:18px;align-items:start;justify-content:space-between}.battle-header h1{font-size:clamp(2rem,6vw,4.2rem)}.battle-main .phase-label{color:#bca5ff}.score-box{min-width:116px;border:1px solid rgb(255 255 255 / 14%);border-radius:8px;padding:12px;text-align:right;background:#ffffff0d}.score-box span{display:block;color:#b6c0cd;font-size:.8rem}.score-box strong{font-size:1.5rem}.battle-main .hp-meta{color:#e8f0f8}.room-progress{display:grid;grid-template-columns:repeat(6,minmax(86px,1fr));gap:8px;margin:0;padding:0;list-style:none}.progress-chip{display:grid;gap:2px;min-height:56px;border:1px solid rgb(255 255 255 / 13%);border-radius:8px;padding:9px;background:#ffffff0d}.progress-chip span{font-weight:800}.progress-chip small{color:#aeb8c4}.progress-chip--active{border-color:#74b7e4;background:#2f6f9f47}.progress-chip--defeated{border-color:#4dcc8d;background:#16a66a33}.progress-chip--failed{border-color:#ec766c;background:#d94c432e}.progress-chip--fled{border-color:#e7ba4f;background:#d8a2292e}.boss-chip{border-color:#bea0ff66}.enemy-panel{display:grid;gap:14px;border:1px solid rgb(255 255 255 / 12%);border-radius:8px;padding:18px;background:var(--dark-2)}.enemy-panel--boss{border-color:#b991ff73;background:#1c1930}.enemy-kicker,.boss-persona-line{display:flex;gap:12px;align-items:center;justify-content:space-between;color:#cad4df}.enemy-kicker span,.boss-persona-line strong{color:#fff;font-weight:900}.taunt{margin:0;color:#fff;font-size:1.35rem;font-weight:800}.problem-hidden{margin:0;color:#aeb8c4}.problem-card,.locked-spell{display:grid;gap:8px;border:1px solid rgb(255 255 255 / 14%);border-radius:8px;padding:12px;background:#040a1247}.problem-card span,.locked-spell span{color:#cbd6e2;font-size:.86rem;font-weight:900}.problem-card pre{max-width:100%;margin:0;overflow:auto;white-space:pre-wrap;color:#fff;font-family:SFMono-Regular,Consolas,Liberation Mono,monospace}.locked-spell p{margin:0;color:#cbd6e2}.locked-spell code{background:#ffffff1a;color:#f8fbff}.orb-cost{width:fit-content;margin:0;border:1px solid rgb(158 228 191 / 38%);border-radius:999px;padding:7px 11px;background:#16a66a29;color:#d8f8e7;font-weight:900}.orb-cost--danger,.warning-text{border-color:#d94c437a;background:#d94c432e;color:#ffd1cc}.warning-text{margin:0;border-radius:8px;padding:10px 12px;font-weight:800}.dark-field>span,.dark-field .field-footer small{color:#c7d2df}.dark-field textarea{border-color:#ffffff29;background:#0d131b;color:#f7fafc}.action-row,.share-actions{display:flex;flex-wrap:wrap;gap:10px;align-items:center}.thinking-indicator{display:inline-flex;align-items:center;width:fit-content;margin:-2px 0 0;border:1px solid rgb(255 255 255 / 12%);border-radius:999px;padding:7px 10px;background:#ffffff14;color:#dce7ef;font-size:.9rem;font-weight:800}.thinking-indicator span span{display:inline-block;animation:thinking-dot 1.2s infinite ease-in-out}.thinking-indicator span span:nth-child(2){animation-delay:.16s}.thinking-indicator span span:nth-child(3){animation-delay:.32s}@keyframes thinking-dot{0%,80%,to{opacity:.25;transform:translateY(0)}40%{opacity:1;transform:translateY(-2px)}}.log-panel{align-self:start;max-height:calc(100vh - 56px);overflow:auto;padding:18px}.log-panel h2{font-size:1rem}.empty-log{color:var(--muted)}.log-list{display:grid;gap:10px;margin:14px 0 0;padding:0;list-style:none}.log-entry{display:grid;gap:6px;border-left:4px solid var(--blue);padding:10px 12px;background:#f7f4ee}.log-entry--success{border-color:var(--green)}.log-entry--danger{border-color:var(--red)}.log-entry--warning{border-color:var(--yellow)}.log-entry--live{background:#eef7ff}.log-entry span{color:#344050;font-weight:800}.log-entry small{color:var(--muted);font-weight:800}.log-entry p{margin:0;color:#4b5663;white-space:pre-wrap}code{border-radius:6px;padding:2px 5px;background:#141a2214;font-family:SFMono-Regular,Consolas,Liberation Mono,monospace;white-space:pre-wrap;overflow-wrap:anywhere}.result-layout{display:grid;gap:18px;max-width:860px;margin:0 auto}.result-card{border-radius:8px;padding:30px;color:#f9fbff;box-shadow:0 26px 80px #0b111838;overflow:hidden}.result-card--victory{background:linear-gradient(135deg,rgb(59 139 112 / 28%),transparent 42%),#12251f}.result-card--grave{background:linear-gradient(135deg,rgb(116 106 122 / 24%),transparent 42%),#17161a}.result-card .phase-label{color:#9ee4bf}.result-card h1{font-size:clamp(2.4rem,8vw,5.2rem)}.result-note{max-width:620px;margin:14px 0 0;color:#dce7ef;font-size:1.04rem;font-weight:700}.result-avatar-row{width:fit-content;margin-top:18px;padding:10px;background:#ffffff14;border-color:#ffffff24}.result-stats{display:grid;gap:10px;margin:22px 0 0}.result-stats--run{grid-template-columns:repeat(3,minmax(130px,1fr))}.result-stats--grave{grid-template-columns:repeat(2,minmax(130px,1fr))}.result-stats div{border:1px solid rgb(255 255 255 / 14%);border-radius:8px;padding:12px;background:#ffffff0f}.result-stats dt{color:#b9c4ce;font-size:.82rem}.result-stats dd{margin:4px 0 0;font-size:1.22rem;font-weight:900;overflow-wrap:anywhere}.core-readout,.last-words{display:grid;gap:8px;margin-top:18px}.core-readout span,.last-words span{color:#cbd4df;font-weight:800}.core-readout code,.last-words code{background:#ffffff1a}.result-subcopy{margin:22px 0 0;color:#dce7ef;font-weight:800}.grave-layout{display:grid;grid-template-columns:120px 1fr;gap:22px;align-items:start;margin-top:18px}.grave-visual{display:grid;gap:10px;justify-items:center}.grave-marker{height:150px;width:120px;border:2px solid rgb(255 255 255 / 18%);border-radius:60px 60px 8px 8px;background:linear-gradient(#55525c,#2b2930)}.grave-marker span{display:block;width:46px;height:46px;margin:32px auto 0;border-radius:50%;border:2px solid rgb(255 255 255 / 26%)}.grave-place{margin:0;color:#f8f1e7;font-size:1.25rem;font-weight:900}.spell-age{margin:8px 0 0;color:#d8cfc9;font-weight:800}.epitaph{margin:16px 0 0;color:#f4efe7;font-weight:800}.last-words code{display:block;max-height:128px;overflow:hidden;line-height:1.55}.result-actions{display:flex;gap:14px;align-items:center;justify-content:space-between;padding:16px}.copy-note{color:var(--green);font-weight:800}.copy-note--error{color:var(--red)}.manual-copy-box{display:grid;flex-basis:100%;gap:6px;color:var(--muted);font-size:.86rem;font-weight:800}.manual-copy-box textarea{min-height:120px;font-family:SFMono-Regular,Consolas,Liberation Mono,monospace;font-size:.86rem}@media (max-width: 920px){.app-shell{width:min(100% - 24px,720px);padding:18px 0}.setup-grid,.battle-layout{grid-template-columns:1fr}.setup-copy{position:static;padding:0}.top-controls,.spell-input-layout,.room-progress,.result-stats,.grave-layout{grid-template-columns:1fr}.spell-avatar-card{min-height:140px}.battle-spell-with-avatar{align-items:flex-start}.battle-header,.model-row,.result-actions{align-items:stretch;flex-direction:column}.score-box{text-align:left}.log-panel{max-height:none}}@media (max-width: 520px){h1,.battle-header h1,.result-card h1{font-size:2.1rem}.control-panel,.battle-main,.result-card{padding:16px}.field-footer{display:grid}.primary-button,.secondary-button{width:100%}.battle-spell-with-avatar,.battle-avatar-inline{display:grid;justify-items:start}.spell-avatar--small{width:68px;height:68px}}
