:root{--bg: #0a0a12;--bg-card: #12121e;--bg-panel: #181828;--border: #2a2a3e;--text: #e0e0e8;--text-dim: #8888a0;--accent: #00ff88;--accent-dim: #00aa55;--danger: #ff4444;--warning: #ffaa00;--success: #00ff66}*{margin:0;padding:0;box-sizing:border-box}body{font-family:Space Grotesk,system-ui,sans-serif;background:var(--bg);color:var(--text);min-height:100vh;overflow-x:hidden}pre,code,.battle-ascii,.card-ascii,.detail-ascii,.title-ascii{font-family:JetBrains Mono,Consolas,monospace}button{cursor:pointer;font-family:inherit;border:none;outline:none;transition:all .15s ease}button:disabled{opacity:.4;cursor:not-allowed}.btn-primary{background:var(--accent);color:#000;padding:12px 32px;border-radius:8px;font-size:16px;font-weight:700}.btn-primary:hover:not(:disabled){background:#0fa;transform:translateY(-1px)}.btn-secondary{background:var(--bg-panel);color:var(--text);padding:10px 24px;border:1px solid var(--border);border-radius:8px;font-size:14px;font-weight:600}.btn-secondary:hover:not(:disabled){border-color:var(--accent);color:var(--accent)}.btn-protect{background:var(--bg-panel);color:var(--accent);padding:10px 24px;border:1px solid var(--accent-dim);border-radius:8px;font-size:14px;font-weight:600}.btn-protect:hover:not(:disabled){background:#00ff8814;border-color:var(--accent)}.btn-back{background:transparent;color:var(--text-dim);padding:8px 16px;border-radius:6px;font-size:14px}.btn-back:hover{color:var(--text);background:var(--bg-card)}.btn-icon{background:var(--bg-card);border:1px solid var(--border);border-radius:6px;padding:6px 10px;font-size:16px;color:var(--text)}.btn-icon:hover{border-color:var(--accent)}.title-screen{display:flex;align-items:center;justify-content:center;min-height:100vh;text-align:center}.title-content{display:flex;flex-direction:column;align-items:center;gap:20px}.title-ascii{color:var(--accent);font-size:12px;line-height:1.2;text-shadow:0 0 20px rgba(0,255,136,.3);white-space:pre}.title-sub{font-size:18px;color:var(--text-dim);letter-spacing:2px;text-transform:uppercase}.title-hint{font-size:14px;color:var(--text-dim)}.team-select-screen{display:flex;flex-direction:column;min-height:100vh;max-width:1200px;margin:0 auto;padding:20px}.team-select-header{display:flex;align-items:center;gap:16px;padding-bottom:16px;border-bottom:1px solid var(--border)}.team-select-header h1{flex:1;font-size:24px;color:var(--accent)}.team-count{font-size:18px;font-weight:700;color:var(--text-dim)}.team-select-body{display:flex;gap:24px;flex:1;padding:20px 0;overflow:hidden}.creature-grid{flex:1;display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:12px;overflow-y:auto;align-content:start}.creature-preview{width:300px;flex-shrink:0}.preview-placeholder{display:flex;align-items:center;justify-content:center;height:100%;color:var(--text-dim);font-size:14px;border:1px dashed var(--border);border-radius:12px;padding:20px;text-align:center}.creature-card{background:var(--bg-card);border:2px solid var(--border);border-radius:10px;padding:12px;text-align:center;cursor:pointer;transition:all .15s ease}.creature-card:hover{border-color:var(--accent);transform:translateY(-2px)}.creature-card.selected{border-color:var(--accent);background:#00ff880d;box-shadow:0 0 15px #00ff8826}.card-ascii{font-size:10px;line-height:1.1;color:var(--accent);margin-bottom:8px;white-space:pre}.card-name{font-weight:700;font-size:14px;margin-bottom:6px}.card-types{display:flex;gap:4px;justify-content:center;flex-wrap:wrap;margin-bottom:4px}.type-badge{font-size:10px;padding:2px 6px;border-radius:4px;color:#000;font-weight:700;text-transform:uppercase;letter-spacing:.5px}.type-badge-sm{font-size:12px;padding:1px 4px;border-radius:3px}.card-footer{display:flex;justify-content:space-between;align-items:center;margin-top:4px}.card-rarity{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:1px}.card-role{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.5px}.card-rarity[data-rarity=Common]{color:#888}.card-rarity[data-rarity=Uncommon]{color:#4ecdc4}.card-rarity[data-rarity=Rare]{color:#3b82f6}.card-rarity[data-rarity=Epic]{color:#a855f7}.card-rarity[data-rarity=Legendary]{color:#eab308}.creature-detail{background:var(--bg-card);border:1px solid var(--border);border-radius:12px;padding:20px;text-align:center}.detail-ascii{font-size:16px;line-height:1.2;color:var(--accent);margin-bottom:12px;white-space:pre}.creature-detail h2{font-size:22px;margin-bottom:8px}.detail-types{display:flex;gap:6px;justify-content:center;margin-bottom:8px}.detail-desc{font-size:13px;color:var(--text-dim);margin-bottom:12px;line-height:1.4}.detail-meta{display:flex;justify-content:center;gap:12px;margin-bottom:16px}.detail-rarity,.detail-role{font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:1px}.detail-rarity[data-rarity=Common]{color:#888}.detail-rarity[data-rarity=Uncommon]{color:#4ecdc4}.detail-rarity[data-rarity=Rare]{color:#3b82f6}.detail-rarity[data-rarity=Epic]{color:#a855f7}.detail-rarity[data-rarity=Legendary]{color:#eab308}.stat-bars{text-align:left}.stat-row{display:flex;align-items:center;gap:8px;margin-bottom:4px}.stat-row.bst{margin-top:8px;padding-top:8px;border-top:1px solid var(--border)}.stat-label{width:36px;font-size:11px;font-weight:700;color:var(--text-dim);text-transform:uppercase;font-family:JetBrains Mono,monospace}.stat-bar-bg{flex:1;height:8px;background:var(--bg);border-radius:4px;overflow:hidden}.stat-bar-fill{height:100%;background:var(--accent-dim);border-radius:4px;transition:width .3s ease}.stat-bar-fill[data-high=true]{background:var(--accent)}.stat-value{width:28px;font-size:12px;font-weight:700;text-align:right;font-family:JetBrains Mono,monospace}.detail-selected{margin-top:12px;padding:6px;background:#00ff881a;border:1px solid var(--accent);border-radius:6px;color:var(--accent);font-weight:700;font-size:12px;letter-spacing:2px}.team-select-footer{display:flex;align-items:center;gap:16px;padding-top:16px;border-top:1px solid var(--border)}.selected-team{display:flex;gap:8px;flex:1}.team-slot{background:var(--bg-card);border:1px solid var(--border);border-radius:8px;padding:8px 16px;display:flex;align-items:center;gap:8px;min-width:120px}.team-slot.filled{border-color:var(--accent)}.slot-name{font-weight:600;font-size:14px}.slot-remove{background:transparent;color:var(--danger);font-size:14px;padding:2px 6px;border-radius:4px}.slot-remove:hover{background:#ff44441a}.slot-empty{color:var(--text-dim);font-size:13px}.battle-screen{display:flex;flex-direction:column;height:100vh;max-width:900px;margin:0 auto;padding:12px 16px}.battle-header{display:flex;align-items:center;gap:12px;padding-bottom:8px}.turn-counter{flex:1;text-align:center;font-size:13px;color:var(--text-dim);font-weight:600;font-family:JetBrains Mono,monospace}.battle-field{flex:1;display:flex;flex-direction:column;justify-content:space-between;padding:8px 0;min-height:0;position:relative}.field-opponent{display:flex;flex-direction:row;align-items:flex-start;justify-content:flex-end;gap:24px;padding-right:12%}.field-player{display:flex;flex-direction:row;align-items:flex-end;justify-content:flex-start;gap:24px;padding-left:12%}.team-indicators{display:flex;gap:6px;margin-top:6px}.indicator{width:14px;height:14px;border-radius:50%;border:2px solid var(--border)}.indicator.alive{background:var(--success);border-color:var(--success)}.indicator.fainted{background:var(--danger);border-color:var(--danger);opacity:.5}.indicator.active{box-shadow:0 0 8px var(--success)}.flash-text{position:absolute;top:45%;left:50%;transform:translate(-50%,-50%);font-size:26px;font-weight:700;color:#ffeb3b;text-shadow:2px 2px 8px rgba(0,0,0,.8),0 0 20px rgba(255,235,59,.4);pointer-events:none;z-index:10;white-space:nowrap}.creature-display{background:var(--bg-card);border:1px solid var(--border);border-radius:12px;padding:10px 16px;min-width:300px}.creature-display.opponent{border-color:#ff44444d}.creature-info{display:flex;align-items:center;gap:8px;margin-bottom:4px}.creature-name{font-weight:700;font-size:15px}.creature-types-inline{display:flex;gap:3px}.status-tags{display:flex;gap:4px;margin-left:auto}.status-tag{font-size:10px;padding:2px 6px;border-radius:3px;font-weight:700;text-transform:uppercase;letter-spacing:.5px}.status-tag.burn{background:#f44;color:#fff}.status-tag.paralyze{background:#eab308;color:#000}.status-tag.confuse{background:#a855f7;color:#fff}.status-tag.curse{background:#7c3aed;color:#fff}.hp-bar-container{display:flex;align-items:center;gap:10px;margin-bottom:6px}.hp-bar-bg{flex:1;height:10px;background:#1a1a2e;border-radius:5px;overflow:hidden}.hp-bar-fill{height:100%;border-radius:5px}.hp-text{font-size:12px;font-weight:600;font-family:JetBrains Mono,monospace;min-width:90px;text-align:right}.battle-ascii{font-size:24px;line-height:1.15;color:var(--accent);white-space:pre}@keyframes idle-float{0%,to{transform:translateY(0)}50%{transform:translateY(-4px)}}.status-burn{animation:burn-pulse 1.5s ease-in-out infinite}.status-paralyze{animation:paralysis-jitter .15s linear infinite}.status-confuse{animation:confuse-wobble 1s ease-in-out infinite}.status-curse{animation:curse-pulse 2s ease-in-out infinite}@keyframes burn-pulse{0%,to{filter:brightness(1)}50%{filter:brightness(1.2) sepia(.4)}}@keyframes paralysis-jitter{0%{transform:translate(0)}25%{transform:translate(1px,-1px)}50%{transform:translate(-1px,1px)}75%{transform:translate(1px)}to{transform:translate(0)}}@keyframes confuse-wobble{0%,to{transform:rotate(0)}25%{transform:rotate(2deg)}75%{transform:rotate(-2deg)}}@keyframes curse-pulse{0%,to{filter:brightness(1)}50%{filter:brightness(.7) hue-rotate(60deg)}}.battle-log{background:var(--bg-card);border:1px solid var(--border);border-radius:10px;padding:10px 12px;height:120px;overflow-y:auto;font-family:JetBrains Mono,monospace;font-size:12px;line-height:1.6;margin:6px 0}.log-entry{padding:1px 0}.log-info,.log-damage{color:var(--text)}.log-super{color:#f80;font-weight:700}.log-crit{color:#fc0;font-weight:700}.log-weak{color:var(--text-dim);font-style:italic}.log-faint{color:var(--danger);font-weight:700}.log-buff{color:var(--success)}.log-debuff{color:var(--warning)}.log-switch{color:#3b82f6}.log-victory{color:var(--accent);font-weight:700;font-size:14px}.battle-controls{flex-shrink:0}.action-panel{display:flex;gap:10px;align-items:stretch}.move-grid{display:grid;grid-template-columns:1fr 1fr;gap:6px;flex:1}.btn-move{background:var(--bg-panel);border:2px solid var(--border);border-radius:8px;padding:8px 12px;text-align:left;color:var(--text);display:flex;flex-direction:column;gap:3px}.btn-move:hover:not(:disabled){background:#00ff880d;transform:translateY(-1px)}.btn-move.no-pp{opacity:.35}.move-name-row{display:flex;align-items:center;gap:6px}.move-name{font-weight:700;font-size:13px}.eff-dot{width:10px;height:10px;border-radius:50%;display:inline-block;flex-shrink:0}.eff-dot.super{background:#22c55e;box-shadow:0 0 4px #22c55e}.eff-dot.weak{background:#ef4444;box-shadow:0 0 4px #ef4444}.eff-dot.immune{background:#555}.eff-dot.neutral{display:none}.move-desc{font-size:10px;color:var(--text-dim);line-height:1.3;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.move-meta{display:flex;justify-content:space-between;font-size:10px}.move-type{font-weight:600;text-transform:uppercase}.move-info{color:var(--text-dim);font-family:JetBrains Mono,monospace}.move-pp{color:var(--accent-dim);margin-left:6px}.action-buttons{display:flex;flex-direction:column;gap:6px}.switch-panel{display:flex;flex-direction:column;gap:8px}.switch-prompt{font-weight:600;color:var(--accent);margin-bottom:4px}.btn-switch{background:var(--bg-panel);border:1px solid var(--border);border-radius:8px;padding:10px 16px;color:var(--text);font-size:14px;text-align:left}.btn-switch:hover:not(:disabled){border-color:var(--accent);background:#00ff880d}.gameover-controls{display:flex;flex-direction:column;align-items:center;gap:16px;padding:16px}.gameover-banner{font-size:32px;font-weight:700;letter-spacing:2px}.gameover-banner.player{color:var(--accent);text-shadow:0 0 30px rgba(0,255,136,.4)}.gameover-banner.opponent{color:var(--danger);text-shadow:0 0 30px rgba(255,68,68,.4)}.shells-earned{font-size:20px;font-weight:700;color:var(--accent)}.title-buttons{display:flex;gap:12px;align-items:center;flex-wrap:wrap;justify-content:center}.title-stats{display:flex;gap:12px;align-items:center;margin-bottom:4px}.shell-count{font-size:14px;font-weight:700;color:var(--accent);background:var(--bg-card);padding:4px 12px;border-radius:6px;border:1px solid var(--accent-dim)}.badge-master{font-size:14px;font-weight:700;color:#eab308;background:#eab3081a;padding:4px 12px;border-radius:6px;border:1px solid rgba(234,179,8,.3)}.btn-frontier{background:linear-gradient(135deg,#a855f7,#7c3aed);color:#fff;padding:12px 32px;border-radius:8px;font-size:16px;font-weight:700}.btn-frontier:hover{transform:translateY(-1px);filter:brightness(1.1)}.bot-chat{background:var(--bg-card);border:1px solid var(--border);border-radius:8px;padding:6px 12px;font-size:13px;font-style:italic;color:var(--text-dim);margin:4px 0}.bot-chat-name{font-weight:700;color:var(--accent);font-style:normal}.frontier-screen{display:flex;flex-direction:column;min-height:100vh;max-width:1000px;margin:0 auto;padding:20px}.frontier-header{display:flex;align-items:center;gap:16px;padding-bottom:16px;border-bottom:1px solid var(--border)}.frontier-header h1{flex:1;font-size:24px;color:#a855f7}.frontier-stats{display:flex;gap:10px;align-items:center}.frontier-desc{font-size:14px;color:var(--text-dim);padding:12px 0;line-height:1.5}.bot-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:12px;flex:1;align-content:start;padding:8px 0}.bot-card{background:var(--bg-card);border:2px solid var(--border);border-radius:10px;padding:16px;text-align:center;cursor:pointer;transition:all .15s;position:relative}.bot-card:hover{border-color:#a855f7;transform:translateY(-2px)}.bot-card.beaten{border-color:var(--accent-dim)}.bot-card.beaten:hover{border-color:var(--accent)}.bot-ascii{font-size:24px;margin-bottom:8px}.bot-name{font-weight:700;font-size:16px}.bot-title{font-size:12px;color:var(--text-dim);text-transform:uppercase;letter-spacing:1px;margin-bottom:8px}.bot-intro{font-size:12px;color:var(--text-dim);font-style:italic;line-height:1.3}.bot-beaten-badge{position:absolute;top:8px;right:8px;font-size:10px;font-weight:700;color:var(--accent);background:#00ff881a;padding:2px 8px;border-radius:4px;border:1px solid var(--accent-dim)}.replay-screen{max-width:800px;margin:0 auto;padding:20px;min-height:100vh}.replay-header{display:flex;align-items:center;gap:16px;padding-bottom:16px;border-bottom:1px solid var(--border);margin-bottom:16px}.replay-header h1{flex:1;font-size:24px;color:var(--accent)}.replay-empty{color:var(--text-dim);text-align:center;padding:40px}.replay-list{display:flex;flex-direction:column;gap:8px}.replay-entry{background:var(--bg-card);border:1px solid var(--border);border-radius:8px}.replay-summary{display:flex;align-items:center;gap:12px;padding:12px 16px;cursor:pointer;font-size:13px;list-style:none}.replay-summary::-webkit-details-marker{display:none}.replay-summary::marker{content:""}.replay-entry[open] .replay-summary{border-bottom:1px solid var(--border)}.replay-vs{font-weight:700;min-width:120px}.replay-result{font-weight:700;min-width:40px}.replay-result.player{color:var(--accent)}.replay-result.opponent{color:var(--danger)}.replay-shells{color:var(--accent-dim)}.replay-turns{color:var(--text-dim)}.replay-date{color:var(--text-dim);font-size:11px;margin-left:auto}.replay-log{padding:12px 16px;font-family:JetBrains Mono,monospace;font-size:11px;line-height:1.5;max-height:300px;overflow-y:auto;color:var(--text-dim)}.replay-log-line{padding:1px 0}.chat-form{display:flex;gap:6px;margin-top:6px}.chat-input{flex:1;background:var(--bg-card);border:1px solid var(--border);border-radius:6px;padding:8px 12px;color:var(--text);font-family:inherit;font-size:13px;outline:none}.chat-input:focus{border-color:var(--accent)}.chat-input::placeholder{color:var(--text-dim)}.btn-chat-send{background:var(--accent-dim);color:#000;padding:8px 16px;border-radius:6px;font-size:13px;font-weight:700}.btn-chat-send:hover{background:var(--accent)}.battle-screen{position:relative;overflow:hidden}.battle-screen:before,.battle-screen:after{content:"";position:absolute;top:0;left:0;right:0;bottom:0;pointer-events:none;z-index:0}.battle-screen:before{background:radial-gradient(ellipse 120% 80% at 20% 80%,rgba(0,255,170,.06) 0%,transparent 60%),radial-gradient(ellipse 100% 60% at 80% 20%,rgba(68,136,255,.05) 0%,transparent 50%),radial-gradient(ellipse 80% 100% at 50% 100%,rgba(170,102,255,.04) 0%,transparent 50%);animation:wave-drift 8s ease-in-out infinite alternate}.battle-screen:after{background:radial-gradient(ellipse 100% 80% at 70% 90%,rgba(0,255,136,.05) 0%,transparent 55%),radial-gradient(ellipse 120% 60% at 30% 10%,rgba(68,136,255,.04) 0%,transparent 45%);animation:wave-drift-alt 10s ease-in-out infinite alternate}@keyframes wave-drift{0%{transform:translate(0) scale(1);opacity:.6}50%{transform:translate(20px,-10px) scale(1.05);opacity:1}to{transform:translate(-10px,15px) scale(.98);opacity:.7}}@keyframes wave-drift-alt{0%{transform:translate(0) scale(1.02);opacity:.5}50%{transform:translate(-15px,10px) scale(1);opacity:.9}to{transform:translate(10px,-15px) scale(1.04);opacity:.6}}.battle-header,.battle-field,.bot-chat,.battle-log,.battle-controls,.chat-form{position:relative;z-index:1}::-webkit-scrollbar{width:6px}::-webkit-scrollbar-track{background:var(--bg)}::-webkit-scrollbar-thumb{background:var(--border);border-radius:3px}::-webkit-scrollbar-thumb:hover{background:var(--text-dim)}@media (max-width: 768px){.team-select-body{flex-direction:column}.creature-preview{width:100%}.creature-grid{grid-template-columns:repeat(auto-fill,minmax(140px,1fr))}.title-ascii{font-size:8px}.creature-display{min-width:unset}.title-buttons{flex-direction:column}.bot-grid{grid-template-columns:1fr}}
