:root{color-scheme:light;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;background:#f4f7f2;color:#17201a;--woodland-ink: #14211c;--woodland-deep: #10231c;--woodland-moss: #4f6f52;--woodland-gold: #d5ad55;--woodland-bone: #f4ead4;--woodland-danger: #b94339;--woodland-paper: #f3f5ed;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased}*{box-sizing:border-box}body{margin:0;min-width:320px;min-height:100vh}button,input,select{font:inherit}button{cursor:pointer}.app-shell{min-height:100vh;padding:12px;background:linear-gradient(180deg,#ffffffe6,#f4f7f2fa),#f4f7f2}.storage-warning{max-width:920px;margin:0 auto 14px;border:1px solid #c2410c;border-radius:8px;padding:12px 14px;background:#fff7ed;color:#7c2d12;font-weight:800}.app-header{position:sticky;top:0;z-index:5;display:flex;align-items:center;justify-content:space-between;gap:10px;max-width:920px;margin:0 auto 16px;padding:10px 0;background:#f4f7f2eb;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.brand-button{min-height:44px;border:0;background:transparent;color:#17201a;font-weight:900}.header-actions{display:flex;gap:8px}.icon-button{display:grid;place-items:center;width:44px;height:44px;border:1px solid #c9d7ca;border-radius:8px;background:#fff;color:#17372f}.screen-stack{display:grid;gap:16px;max-width:920px;margin:0 auto}.course-banner{display:block;width:100%;aspect-ratio:720 / 260;border-radius:8px;box-shadow:0 12px 26px #17201a1f}.title-block h1,.screen-stack h1{margin:0;font-size:2rem;line-height:1.05}h2{margin:0;font-size:1.1rem}.eyebrow{margin:0 0 8px;color:#4f6f52;font-size:.82rem;font-weight:700;letter-spacing:0;text-transform:uppercase}.action-grid{display:grid;gap:10px}.primary-action,.secondary-action{min-height:52px;border-radius:8px;padding:0 18px;font-weight:850}.primary-action{border:0;background:#1d6f5f;color:#fff}.secondary-action{border:1px solid #bfd0c0;background:#fff;color:#17372f}.quick-stats{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin:0}.quick-stats div{padding:14px;border:1px solid #d7dfd5;border-radius:8px;background:#fff}.quick-stats dt{color:#5d6d61;font-size:.85rem}.quick-stats dd{margin:4px 0 0;font-size:1.5rem;font-weight:900}.field-label{display:grid;gap:6px;font-weight:800}.field-label input,.field-label select,.player-row select{min-height:48px;width:100%;border:1px solid #bfd0c0;border-radius:8px;padding:0 12px;background:#fff}.player-list,.score-list{display:grid;gap:10px}.boss-preview,.recap-boss{display:flex;align-items:center;gap:12px;min-width:0;padding:12px;border:1px solid #d7dfd5;border-radius:8px;background:#fff}.boss-preview-copy,.recap-boss div,.round-heading div,.score-player div,.history-entry-heading div{display:grid;gap:3px;min-width:0}.boss-preview-copy span,.recap-boss span,.round-boss-name,.round-course-name,.score-player span,.history-entry-heading span{color:#4b5b4f;font-weight:750}.round-course-name{overflow-wrap:anywhere}.boss-emblem{display:block;flex:0 0 auto;width:112px;max-width:34vw;aspect-ratio:4 / 3;border-radius:8px}.boss-emblem.compact{width:82px}.boss-emblem.small{width:74px}.class-crest{display:block;flex:0 0 auto;width:46px;height:46px;border-radius:8px}.player-row,.score-row{display:grid;gap:10px;padding:12px;border:1px solid #d7dfd5;border-radius:8px;background:#fff}.player-main,.score-player,.round-heading,.history-entry-heading{display:flex;align-items:center;gap:10px;min-width:0}.player-row label{display:flex;align-items:center;gap:10px;min-height:44px;font-weight:800}.player-check span,.score-player span,.history-entry-heading h2,.score-player h2{overflow-wrap:anywhere}.round-topline{display:flex;align-items:center;justify-content:space-between;gap:12px}.hp-box{display:grid;gap:2px;min-width:118px;padding:10px;border-radius:8px;background:#17372f;color:#fff}.hp-box span{font-size:.78rem;opacity:.8}.stepper{display:grid;grid-template-columns:52px 1fr 52px;align-items:center;min-height:52px}.stepper button{display:grid;place-items:center;width:52px;height:52px;border:1px solid #bfd0c0;border-radius:8px;background:#eef5ed}.stepper button svg{width:18px;height:18px}.stepper strong{text-align:center;font-size:1.4rem}.last-damage{color:#4b5b4f;font-weight:750}.adjust-holes-panel{display:grid;gap:10px;padding:12px;border:1px solid #d7dfd5;border-radius:8px;background:#fff}.adjust-holes-note{margin:0;color:#4b5b4f;font-size:.92rem;line-height:1.35}.stat-cluster{display:flex;flex-wrap:wrap;align-items:center;justify-content:flex-start;gap:8px 12px;min-width:0}.stat-cluster span,.stat-cluster strong{white-space:nowrap}.history-entry{grid-template-columns:1fr}.history-lines{display:grid;gap:7px;color:#4b5b4f;font-size:.92rem;line-height:1.35}.result-banner{padding:16px;border-radius:8px;background:#1d6f5f;color:#fff;font-size:1.4rem;font-weight:900;text-align:center}.mission-list{display:grid;gap:12px}.mission-row{display:grid;grid-template-columns:auto 1fr;gap:12px;align-items:center;padding:12px;border:1px solid #d7dfd5;border-radius:8px;background:#fff}.mission-row button{grid-column:1 / -1}.campaign-recap{display:grid;gap:6px;padding:12px;border:1px solid #d7dfd5;border-radius:8px;background:#fff}.mission-meta{display:grid;gap:6px;margin:8px 0 0;color:#4b5b4f;font-size:.92rem;line-height:1.35}.mission-meta div{display:grid;grid-template-columns:max-content 1fr;gap:8px}.mission-meta dt{font-weight:800}.mission-meta dd{margin:0}.visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}@media(min-width:720px){.action-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.player-row,.score-row{grid-template-columns:1fr auto;align-items:center}.history-entry{grid-template-columns:1fr}.stat-cluster{justify-content:flex-end}}@media(max-width:420px){.app-shell{padding:10px}.round-topline{align-items:stretch;flex-direction:column}.hp-box{width:100%}.boss-preview,.recap-boss,.history-entry-heading{align-items:flex-start}.boss-emblem{width:92px;max-width:32vw}.boss-emblem.compact,.boss-emblem.small{width:66px}.class-crest{width:42px;height:42px}.title-block h1,.screen-stack>h1{font-size:1.65rem}}button:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid #d4af37;outline-offset:2px}button:disabled{cursor:not-allowed;opacity:.55}.game-art-image{display:block;width:100%;height:100%;object-fit:cover}.game-art-image.class-crest{width:46px;height:46px;flex:0 0 46px}.game-art-fallback{display:grid;place-items:center;width:100%;height:100%;background:#17372f}.home-hero{position:relative;min-height:clamp(420px,72vh,620px);overflow:hidden;border-radius:8px;background:#10231c;color:#f4ead4}.home-hero-art{position:absolute;inset:0}.home-hero:after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,#08110ef0,#08110e5c 68%)}.home-hero-content{position:relative;z-index:1;display:grid;align-content:end;gap:22px;width:min(520px,100%);min-height:inherit;padding:clamp(24px,6vw,56px)}.home-hero-content h1{color:#fff4d8}.home-actions{max-width:360px}.home-secondary-actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.mission-row{position:relative;overflow:hidden}.mission-boss-art{width:132px;min-height:132px;border-radius:6px}.mission-status-locked .mission-boss-art{filter:grayscale(.9) brightness(.48)}.mission-status-completed{border-color:#8b733f}.mission-status-label{display:inline-flex;align-items:center;gap:6px}.character-panel{display:grid;grid-template-columns:minmax(180px,300px) minmax(0,1fr);min-height:300px;overflow:hidden;border:1px solid #c9d2ca;border-radius:8px;background:#f3f5ed}.character-portrait-frame{min-height:300px;background:#10231c}.character-portrait{aspect-ratio:3 / 4}.character-details{display:grid;align-content:center;gap:14px;padding:22px}.setup-boss-art{width:180px;min-height:150px}.player-class-art{width:58px;height:58px;flex:0 0 58px;border-radius:6px}.battle-scene{position:relative;min-height:250px;overflow:hidden;border-radius:8px;background:#10231c;color:#f4ead4}.battle-scene .round-boss-name,.battle-scene .round-course-name{display:block;color:#f4ead4}.battle-scene-art,.battle-scene-shade{position:absolute;inset:0}.battle-scene-shade{background:linear-gradient(180deg,#050c0a33,#050c0ae6)}.battle-scene-content{position:relative;z-index:1;display:grid;grid-template-columns:minmax(0,1fr) minmax(150px,220px);align-items:end;gap:16px;min-height:250px;padding:22px}.battle-health-track{height:12px;overflow:hidden;border:1px solid #6b755d;background:#25332d}.battle-health-value{height:100%;background:#b94339;transition:width .22s ease}.round-boss-abilities{display:block;margin-top:7px;color:#f4ead4}.battle-impact{position:absolute;inset:0;z-index:2;pointer-events:none;animation:boss-impact .28s ease-out both}@keyframes boss-impact{0%{background:#d5ad556b}to{background:transparent}}@media(prefers-reduced-motion:reduce){.battle-health-value{transition:none}.battle-impact{animation:none}}@media(max-width:620px){.mission-row{grid-template-columns:96px minmax(0,1fr);align-items:start}.mission-boss-art{width:96px;min-height:120px}.mission-meta div{grid-template-columns:1fr;gap:1px}.battle-scene,.battle-scene-content{min-height:300px}.battle-scene-content{grid-template-columns:1fr;align-content:end;align-items:stretch;gap:12px;padding:18px}.battle-health{width:100%}.character-panel{grid-template-columns:1fr}.character-portrait-frame,.character-portrait{min-height:340px}.history-entry-heading{flex-wrap:wrap;align-items:flex-start}.history-boss-art{flex:0 0 96px}.history-entry-heading>div:not(.history-party-art){flex:1 1 0}.history-entry-heading .history-party-art{flex:0 0 100%;flex-wrap:wrap}.history-class-art{width:40px;height:40px;flex:0 0 40px}}@media(max-width:420px){.game-art-image.class-crest{width:42px;height:42px;flex-basis:42px}}.recap-scene{position:relative;min-height:300px;overflow:hidden;border-radius:8px;color:#f4ead4}.recap-scene-art,.recap-scene-shade{position:absolute;inset:0}.recap-scene-shade{background:linear-gradient(180deg,#050c0a2e,#050c0aeb)}.recap-scene[data-result=victory] .recap-scene-shade{background:linear-gradient(180deg,#d5ad551f,#10231ce0)}.recap-scene[data-result=defeat] .recap-scene-art{filter:saturate(.55) brightness(.64)}.recap-scene-content{position:relative;z-index:1;display:grid;align-content:end;gap:7px;min-height:300px;padding:22px}.history-boss-art{width:96px;height:74px;border-radius:6px}.history-entry-heading .history-party-art{display:flex;gap:6px}.history-class-art{width:42px;height:42px;border-radius:5px}
