:root{color:#172033;font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;--ink:#172033;--muted:#667085;--line:#d7deea;--panel:#fff;--ocean:#176b87;--ocean-dark:#104e65;--ocean-soft:#e3f3f7;--enemy:#a84c3d;--enemy-soft:#f8ebe8;--danger:#b42318;background:#eef2f7;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}*{box-sizing:border-box}body{background:radial-gradient(circle at 15% 0,#3f9ab824,#0000 31rem),#eef2f7;min-width:320px;min-height:100vh;margin:0}button,input{font:inherit}button:focus-visible{outline-offset:2px;outline:3px solid #176b8759}#root{min-height:100vh}.battle-app{width:min(1180px,100% - 40px);margin:0 auto;padding:32px 0 48px}.flow-app{width:min(760px,100% - 40px);min-height:100vh;margin:0 auto;padding:72px 0}.flow-page{border:1px solid var(--line);background:var(--panel);border-radius:18px;gap:20px;padding:34px;display:grid;box-shadow:0 14px 38px #24304a14}.flow-page--title{text-align:center;align-content:center;min-height:410px}.flow-page>p:not(.eyebrow),.team-option p{color:var(--muted);line-height:1.6}.flow-actions{flex-wrap:wrap;gap:12px;display:flex}.flow-page--title .flow-actions{justify-content:center}.flow-actions button,.team-option button{color:#fff;background:var(--ocean);min-height:44px;font:inherit;cursor:pointer;border:0;border-radius:10px;padding:10px 18px;font-weight:700}.flow-actions button:hover:not(:disabled),.team-option button:hover:not(:disabled){background:var(--ocean-dark)}.flow-actions button:disabled,.team-option button:disabled{opacity:.48;cursor:not-allowed}.flow-button--quiet{color:#344054!important;background:#f9fafb!important;border:1px solid #d0d5dd!important}.flow-button--quiet:hover:not(:disabled){background:#f2f4f7!important}.flow-button--danger{background:var(--danger)!important}.flow-button--danger:hover:not(:disabled){background:#b42318!important}.flow-dialog{text-align:left;background:#fff8f7;border:1px solid #fecdca;border-radius:12px;gap:14px;margin-top:8px;padding:22px;display:grid}.flow-dialog p{color:#7a271a}.flow-toast{z-index:10;color:var(--ocean-dark);background:#effbff;border:1px solid #b7d8e2;border-radius:999px;padding:10px 16px;font-weight:700;position:fixed;top:16px;left:50%;transform:translate(-50%);box-shadow:0 8px 24px #176b8729}.team-list,.boss-list{gap:12px;display:grid}.team-option{border:1px solid var(--line);background:#fbfcfe;border-radius:12px;grid-template-columns:minmax(120px,1fr) auto auto;align-items:center;gap:16px;padding:18px;display:grid}.team-option h2{font-size:19px}.position-select{color:var(--muted);gap:5px;font-size:12px;font-weight:700;display:grid}.position-select select{min-width:92px;min-height:40px;color:var(--ink);font:inherit;background:#fff;border:1px solid #d0d5dd;border-radius:8px;padding:0 9px}.boss-option{border:1px solid var(--line);cursor:pointer;background:#fbfcfe;border-radius:12px;align-items:center;gap:10px;padding:16px 18px;font-weight:700;display:flex}.flow-error{background:#fef3f2;border:1px solid #fecdca;border-radius:8px;padding:11px 13px;color:var(--danger)!important}.full-log{border:1px solid var(--line);background:#fbfcfe;border-radius:12px;min-width:0;padding:20px}.statistics-section{border:1px solid var(--line);background:#fbfcfe;border-radius:12px;gap:16px;padding:20px;display:grid}.statistics-table-wrap{overflow-x:auto}.statistics-table{border-collapse:collapse;text-align:left;width:100%;min-width:440px}.statistics-table th,.statistics-table td{white-space:nowrap;border-bottom:1px solid #e4e7ec;padding:11px 12px}.statistics-table th{color:var(--muted);font-size:12px}.statistics-table td{font-weight:700}.topbar,.panel-heading,.unit-heading{justify-content:space-between;align-items:center;gap:20px;display:flex}h1,h2,p{margin:0}h1{letter-spacing:-.04em;margin-top:4px;font-size:clamp(28px,4vw,44px);line-height:1.15}h2{font-size:22px}.eyebrow,.unit-side{color:var(--muted);letter-spacing:.12em;text-transform:uppercase;font-size:12px;font-weight:700}.reset-button{color:#fff;background:var(--ocean);cursor:pointer;border:0;border-radius:10px;flex:none;min-width:126px;padding:12px 20px;font-weight:700;box-shadow:0 8px 20px #176b8733}.reset-button:hover{background:var(--ocean-dark)}.battle-status{border:1px solid var(--line);background:#ffffffd1;border-radius:12px;grid-template-columns:repeat(4,1fr);margin-top:26px;display:grid;overflow:hidden}.battle-status>div{border-right:1px solid var(--line);min-width:0;padding:10px 14px}.battle-status>div:last-child{border-right:0}.battle-status span,.stat span{color:var(--muted);margin-bottom:3px;font-size:12px;display:block}.battle-status strong{text-overflow:ellipsis;white-space:nowrap;font-size:15px;display:block;overflow:hidden}.combatants{grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);align-items:center;gap:14px;margin-top:16px;display:grid}.combatant-group{grid-template-columns:repeat(auto-fit,minmax(165px,1fr));gap:10px;display:grid}.player-formation{grid-template-columns:repeat(2,minmax(145px,1fr));grid-template-areas:"back1 front1""back2 front2"}.player-formation>:first-child{grid-area:front1}.player-formation>:nth-child(2){grid-area:front2}.player-formation>:nth-child(3){grid-area:back1}.player-formation>:nth-child(4){grid-area:back2}.unit-card,.unit-placeholder,.panel{border:1px solid var(--line);background:var(--panel);border-radius:14px;box-shadow:0 10px 30px #24304a0f}.unit-card{border-top:4px solid var(--ocean);min-height:0;padding:13px;position:relative}.unit-card--hit{animation:.9s ease-out unit-hit-feedback}@keyframes unit-hit-feedback{0%,to{background:var(--panel);transform:translate(0)}10%,30%,50%,70%{transform:translate(-5px)}20%,40%,60%{transform:translate(5px)}12%,78%{background:#ffe5e5}}.unit-card--enemy{border-top-color:var(--enemy)}.unit-heading h2{margin-top:3px;font-size:20px}.life-state{color:#067647;background:#ecfdf3;border-radius:999px;padding:5px 9px;font-size:12px;font-weight:700}.life-state--down{color:var(--danger);background:#fef3f2}.health-track{background:#e8edf4;border-radius:99px;height:7px;margin:12px 0;position:relative}.health-fill{z-index:1;border-radius:inherit;background:var(--ocean);height:100%;transition:width .18s;display:block;position:relative}.unit-card--enemy .health-fill{background:var(--enemy)}.shield-shell{clip-path:polygon(0 50%,8% 10%,19% 0,31% 18%,46% 0,57% 22%,72% 2%,86% 22%,100% 50%,86% 78%,72% 98%,57% 78%,46% 100%,31% 82%,19% 100%,8% 90%);background:linear-gradient(135deg,#d8fafff5,#48b1d361);border:1px solid #7fd4eb;border-radius:99px;min-width:0;display:block;position:absolute;top:-4px;bottom:-4px;left:0;box-shadow:0 0 0 1px #d9fbffa6,0 0 8px #38bdf870}.health-text{color:var(--muted);text-align:right;margin-top:-5px;font-size:11px;display:block}.stats-grid{grid-template-columns:repeat(4,1fr);gap:6px;display:grid}.unit-detail{opacity:0;max-height:0;transition:max-height .18s,margin-top .18s,opacity .14s;overflow:hidden}.unit-card:hover .unit-detail,.unit-card:focus-within .unit-detail{opacity:1;max-height:320px;margin-top:10px}.unit-detail-scroll{overscroll-behavior:contain;max-height:118px;padding-right:4px;overflow-y:auto}.unit-statuses{color:#475467;margin:8px 0 0;font-size:12px;line-height:1.4}.stat{background:#f6f8fb;border-radius:8px;min-width:0;padding:6px 7px}.stat strong{text-overflow:ellipsis;white-space:nowrap;font-size:14px;display:block;overflow:hidden}.versus{color:#98a2b3;letter-spacing:.1em;font-size:18px;font-weight:900}.unit-placeholder{min-height:122px;box-shadow:none;background:0 0;border-style:dashed;display:grid}.lower-grid{grid-template-columns:minmax(0,1.55fr) minmax(300px,.85fr);gap:16px;margin-top:16px;display:grid}.panel{padding:16px}.panel-heading>span{color:var(--muted);text-align:right;font-size:12px}.panel-heading h2{margin-top:3px}.action-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;margin-top:20px;display:grid}.action-option{min-width:0;position:relative}.action-button{width:100%;min-height:76px;color:var(--ocean-dark);background:var(--ocean-soft);text-align:left;cursor:pointer;border:1px solid #b7d8e2;border-radius:10px;flex-direction:column;justify-content:center;align-items:flex-start;padding:13px 15px;transition:transform .16s,border-color .16s,box-shadow .16s;display:flex}.action-button--secondary{color:#344054;background:#f9fafb;border-color:#d0d5dd}.action-button:not(:disabled):hover{border-color:var(--ocean);transform:scale(1.025);box-shadow:0 8px 18px #176b8729}.action-option:focus-within,.action-option:hover{z-index:1}.action-detail{color:#475467;opacity:0;background:#f8fbfc;border:1px solid #0000;border-top:0;border-radius:0 0 9px 9px;gap:3px;max-height:0;padding:0 10px;font-size:12px;line-height:1.4;transition:max-height .18s,padding .18s,opacity .14s,transform .18s,border-color .18s;display:grid;overflow:hidden;transform:translateY(-4px)}.action-detail p{margin:3px 0 0}.action-detail ul{margin:3px 0 0;padding-left:16px}.action-detail li+li{margin-top:2px}.action-option:hover .action-detail,.action-option:focus-within .action-detail{opacity:1;border-color:#b7d8e2;max-height:260px;padding:9px 10px;transform:translateY(0)}.action-button:disabled{color:#98a2b3;cursor:not-allowed;background:#f5f6f7;border-color:#e4e7ec}.action-button strong{font-size:17px}.action-button span{color:inherit;opacity:.82;margin-top:4px;font-size:12px}.action-option small{min-height:18px;margin:5px 3px 0;font-size:11px;display:block}.available{color:#067647}.unavailable{color:var(--danger)}.error-message{color:var(--danger);background:#fef3f2;border:1px solid #fecdca;border-radius:8px;gap:10px;margin-top:14px;padding:11px 13px;font-size:13px;display:flex}.event-panel{min-height:330px}.empty-events{color:var(--muted);margin-top:28px;font-size:14px}.event-list{max-height:300px;margin:12px 0 0;padding:0;list-style:none;overflow-y:auto}.event-list--full{max-height:460px}.event-list li{color:#475467;border-bottom:1px solid #eef1f5;padding:7px 2px;font-size:13px;line-height:1.4}.event-list li:first-child{color:var(--ink);font-weight:650}@media (width<=820px){.flow-app{width:min(100% - 24px,680px);padding:36px 0}.battle-app{width:min(100% - 24px,680px);padding-top:20px}.topbar{align-items:flex-end}.battle-status{grid-template-columns:repeat(2,1fr)}.battle-status>div:nth-child(2){border-right:0}.battle-status>div:nth-child(-n+2){border-bottom:1px solid var(--line)}.combatants,.lower-grid{grid-template-columns:1fr}.versus{text-align:center}.team-option{grid-template-columns:1fr auto}.position-select{grid-column:1/-1}}@media (width<=520px){.topbar{flex-direction:column;align-items:stretch}.reset-button{width:100%}.action-grid{grid-template-columns:1fr}.stats-grid{grid-template-columns:repeat(2,1fr)}.flow-page{padding:24px}}
