@font-face{font-family:Barlow Condensed;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/barlow-condensed-vietnamese-600-normal-A5AYRdjN.woff2) format("woff2"),url(/assets/barlow-condensed-vietnamese-600-normal-CNlPk46_.woff) format("woff");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Barlow Condensed;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/barlow-condensed-latin-ext-600-normal-18ESti3H.woff2) format("woff2"),url(/assets/barlow-condensed-latin-ext-600-normal-Clv9cIcR.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Barlow Condensed;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/barlow-condensed-latin-600-normal-DepVgxBB.woff2) format("woff2"),url(/assets/barlow-condensed-latin-600-normal-BFJEwTuo.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Barlow Condensed;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/barlow-condensed-vietnamese-700-normal-DYeBwlKR.woff2) format("woff2"),url(/assets/barlow-condensed-vietnamese-700-normal-DhIzd8Tb.woff) format("woff");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Barlow Condensed;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/barlow-condensed-latin-ext-700-normal-CwuXbfVR.woff2) format("woff2"),url(/assets/barlow-condensed-latin-ext-700-normal-BIHFfxf0.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Barlow Condensed;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/barlow-condensed-latin-700-normal-v1xN8_Wq.woff2) format("woff2"),url(/assets/barlow-condensed-latin-700-normal-Dmwat-ge.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Sora;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/sora-latin-ext-400-normal-Twk1CgKs.woff2) format("woff2"),url(/assets/sora-latin-ext-400-normal-BmhJC382.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Sora;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/sora-latin-400-normal-CRt88UEn.woff2) format("woff2"),url(/assets/sora-latin-400-normal-OW7qkl5a.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Sora;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/sora-latin-ext-600-normal-Cue1zdhl.woff2) format("woff2"),url(/assets/sora-latin-ext-600-normal-DLOJK0Ta.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Sora;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/sora-latin-600-normal-Cdg4DaK0.woff2) format("woff2"),url(/assets/sora-latin-600-normal-1_7fyUAY.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--body-font: Sora, Inter, ui-sans-serif, system-ui, sans-serif;--body-weight: 400;--body-strong-weight: 600;--title-font: "Barlow Condensed", Inter, ui-sans-serif, system-ui, sans-serif;--header-reserved-height: 88px;--sidebar-gap: 18px;--left-sidebar-width: 260px;--right-sidebar-width: 260px;--surface-radius: 28px;--header-action-radius: 20px;--bg: #f4ede0;--panel: rgba(255, 255, 255, .62);--panel-strong: rgba(255, 255, 255, .82);--panel-solid: #f7fbfb;--ink: #2a2722;--muted: #8a847a;--label: #625b50;--placeholder: #6d665c;--line: rgba(255, 255, 255, .55);--control-line: rgba(42, 39, 34, .34);--disabled-bg: #d4d9df;--disabled-ink: #59616b;--control-radius: 14px;--line-warm: #ebe3d2;--accent: #3a72c8;--accent-deep: #14556c;--button-gradient: linear-gradient(135deg, #2f6df6 0%, #a94cc8 100%);--button-gradient-hover: linear-gradient(135deg, #245fe4 0%, #9c40bb 100%);--secondary-button-bg: #2f6df6;--secondary-button-hover: #245fe4;--secondary-button-ink: #ffffff;--tertiary-button-bg: rgba(255, 255, 255, .58);--tertiary-button-hover: rgba(255, 255, 255, .78);--tertiary-button-ink: #3f4d61;--scrollbar-thumb: rgba(47, 109, 246, .42);--scrollbar-thumb-hover: rgba(47, 109, 246, .64);--water: #49a9c7;--valid: #f2c94c;--danger: #d95c45;--scene-vignette: rgba(244, 237, 224, .82);--glass-shadow: 0 18px 38px -18px rgba(40, 50, 80, .38), 0 6px 16px -10px rgba(20, 30, 50, .2)}[data-theme=dark]{--bg: #0f1b2d;--panel: rgba(15, 26, 44, .76);--panel-strong: rgba(22, 36, 58, .86);--panel-solid: #16243a;--ink: #f5f8ff;--muted: #a8b5c8;--label: #c1ccdc;--placeholder: #d2dae8;--line: rgba(255, 255, 255, .16);--control-line: rgba(226, 235, 248, .48);--disabled-bg: #c9d0d8;--disabled-ink: #243142;--control-radius: 14px;--line-warm: rgba(255, 255, 255, .12);--accent: #4f7dff;--accent-deep: #1b5f89;--button-gradient: linear-gradient(135deg, #2869ff 0%, #b04ac6 100%);--button-gradient-hover: linear-gradient(135deg, #3a78ff 0%, #c05bd3 100%);--secondary-button-bg: #2869ff;--secondary-button-hover: #3a78ff;--secondary-button-ink: #ffffff;--tertiary-button-bg: rgba(22, 43, 69, .76);--tertiary-button-hover: rgba(30, 56, 88, .92);--tertiary-button-ink: #c5d0df;--scrollbar-thumb: rgba(79, 125, 255, .44);--scrollbar-thumb-hover: rgba(79, 125, 255, .68);--water: #237ba0;--valid: #ffd36a;--danger: #ff6b58;--scene-vignette: rgba(6, 12, 22, .74);--glass-shadow: 0 22px 44px -18px rgba(0, 0, 0, .58), 0 8px 18px -12px rgba(0, 0, 0, .44)}:root{color:var(--ink);background:var(--bg);font-family:var(--body-font);font-weight:var(--body-weight);font-synthesis:none;text-rendering:optimizeLegibility}.card-title{color:var(--muted);font-family:var(--title-font);font-size:.74rem;font-weight:850;letter-spacing:.08em;text-transform:uppercase}*{box-sizing:border-box;scrollbar-color:var(--scrollbar-thumb) transparent;scrollbar-width:thin}*::-webkit-scrollbar{width:8px;height:8px}*::-webkit-scrollbar-track{background:transparent}*::-webkit-scrollbar-thumb{background:var(--scrollbar-thumb);border:2px solid transparent;border-radius:999px;background-clip:padding-box}*::-webkit-scrollbar-thumb:hover{background:var(--scrollbar-thumb-hover);background-clip:padding-box}html,body,#root{width:100%;min-width:320px;min-height:100vh;margin:0}body{overflow:hidden;background:radial-gradient(ellipse at center,#f4ede000 42%,#f4ede0d1),var(--bg);-webkit-font-smoothing:antialiased}button,input{font:inherit}button{border:0}.shell{position:relative;--drawer-reserved-height: 18px;--dock-reserved-height: 0px;--left-action-reserve: calc(var(--left-sidebar-width) + var(--sidebar-gap) * 2);--right-action-reserve: calc(var(--right-sidebar-width) + var(--sidebar-gap) * 2);--feedback-reserved-height: calc(var(--drawer-reserved-height) + var(--dock-reserved-height));min-height:100vh;overflow:hidden;background:radial-gradient(ellipse at center,rgba(244,237,224,0) 42%,var(--scene-vignette) 100%),var(--bg)}.shell.drawer-open{--drawer-reserved-height: calc(28vh + 86px) }.shell.drawer-collapsed{--drawer-reserved-height: 154px}.shell.action-dock-visible{--dock-reserved-height: 142px}.shell:has(.room-sidebar.closed){--left-action-reserve: var(--sidebar-gap)}.shell:has(.scene-toolbar.closed),.shell:has(.player-panel.closed){--right-action-reserve: var(--sidebar-gap)}.panels-row{position:fixed;top:var(--header-reserved-height);bottom:calc(var(--feedback-reserved-height) + 18px);right:18px;left:18px;z-index:10;display:flex;justify-content:space-between;align-items:center;pointer-events:none}.panels-row>*{pointer-events:auto;position:static;flex-shrink:0}.scene-panel{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1;background:radial-gradient(circle at 58% 20%,#ffdd9675,#ffdd9600 22%),linear-gradient(180deg,#f3c990,#aee2e8 42%,#64bfd0),var(--bg)}.scene-panel canvas{position:relative;z-index:1}.eyebrow,.status{margin:0;color:var(--muted);font-family:var(--title-font);font-size:.72rem;font-weight:850;letter-spacing:.08em;text-transform:uppercase}h1{margin:0;color:var(--ink);font-family:var(--title-font);font-size:1.9rem;font-weight:850;line-height:1.02}.stack{display:grid;gap:12px}.floating-error{position:fixed;right:50%;bottom:calc(var(--feedback-reserved-height) + 18px);left:auto;z-index:8;max-width:min(460px,100vw - 44px);text-align:center;transform:translate(50%)}.scene-action-dock{position:fixed;right:var(--right-action-reserve);bottom:calc(var(--drawer-reserved-height) + 2px);left:var(--left-action-reserve);z-index:7;display:flex;justify-content:center;pointer-events:none}.scene-action-dock>*{pointer-events:auto}.scene-action-dock.drawer-collapsed{bottom:calc(var(--drawer-reserved-height) + 2px)}@media(max-width:880px){.shell.drawer-open{--drawer-reserved-height: calc(34vh + 82px) }.shell.drawer-collapsed{--drawer-reserved-height: 76px}body{overflow:auto}.scene-panel{min-height:100vh}.floating-error{right:50%;bottom:calc(var(--feedback-reserved-height) + 12px);left:auto;max-width:calc(100vw - 24px)}.scene-action-dock{right:12px;bottom:calc(var(--drawer-reserved-height) + 2px);left:12px}.scene-action-dock.drawer-collapsed{bottom:calc(var(--drawer-reserved-height) + 2px)}.shell{--left-action-reserve: var(--sidebar-gap);--right-action-reserve: var(--sidebar-gap)}.panels-row{flex-direction:column;align-items:stretch;justify-content:flex-start;gap:10px;right:12px;left:12px}}.app-header{position:fixed;top:18px;right:18px;left:18px;z-index:6;display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);align-items:start;pointer-events:none}.app-header-actions{display:flex;gap:12px;justify-self:end;pointer-events:auto}.app-header-button,.game-select{color:var(--ink);background:var(--panel-strong);border:1px solid var(--line);box-shadow:var(--glass-shadow);backdrop-filter:blur(20px) saturate(170%);-webkit-backdrop-filter:blur(20px) saturate(170%)}.app-header-button:hover,.game-select:hover{color:#fff;background:var(--secondary-button-bg)}.app-header-button{position:relative;display:grid;place-items:center;width:52px;min-height:52px;padding:0;border-radius:var(--header-action-radius);box-shadow:var(--glass-shadow)}.app-header-button:hover,.app-header-button:focus-visible{box-shadow:var(--glass-shadow)}.header-status-dot{position:absolute;top:-2px;right:-2px;width:11px;height:11px;border:3px solid var(--panel-solid);border-radius:999px}.header-status-dot.connected{background:#52d273}.header-status-dot.disconnected{background:#ff5e50}.header-status-dot.pending{background:#f6b84b}.game-select{display:inline-flex;align-items:center;justify-content:center;gap:18px;min-width:200px;min-height:54px;padding:0 24px;border-radius:999px;box-shadow:var(--glass-shadow);pointer-events:auto}.game-select:hover,.game-select:focus-visible{box-shadow:var(--glass-shadow)}.game-select span{font-family:var(--title-font);font-size:1.08rem;font-weight:700;letter-spacing:.04em;text-transform:uppercase}.brand{grid-column:1;grid-row:1;display:inline-flex;align-items:center;gap:12px;justify-self:start;color:#fff;pointer-events:none;text-align:left}.brand-logo{width:52px;height:52px;object-fit:contain;filter:drop-shadow(0 14px 20px rgba(40,50,80,.22))}.brand-copy{display:grid;gap:5px}.brand-title{font-size:28px;font-weight:850;line-height:1}.brand-subtitle{color:#ffffffb8;font-size:12px;font-weight:800;letter-spacing:.02em}@media(max-width:880px){.app-header{top:12px;right:12px;left:12px;grid-template-columns:auto 1fr auto;gap:10px;align-items:start}.app-header-actions{gap:8px}.app-header-button{width:44px;min-height:44px}.game-select{min-width:0;min-height:44px;padding:0 14px}.game-select span{font-size:.96rem}.brand{display:inline-flex}.brand-logo{width:40px;height:40px}.brand-title{font-size:17px}.brand-subtitle{display:block;font-size:10px}}@media(max-width:768px){.game-select{display:none}.app-header-actions{gap:4px}.app-header-button{width:34px;min-height:34px;padding:0}.app-header-button svg{width:16px;height:16px}}label{display:grid;gap:7px;color:var(--label);font-size:.82rem;font-weight:var(--body-weight)}label abbr{color:var(--danger);text-decoration:none}input{width:100%;min-height:44px;padding:0 14px;color:var(--ink);background:var(--panel-strong);border:0px solid var(--control-line);border-radius:var(--control-radius);outline:none}input::placeholder{color:var(--placeholder);opacity:1}input:focus{border-color:var(--accent);box-shadow:0 0 0 3px #4f7dff38}.button-row{display:grid;grid-template-columns:1fr 1fr;gap:8px}.invite-panel{display:grid;gap:8px}.hud-game>.stack{grid-template-columns:1fr}.hud-game .stack{align-content:start}button{min-height:42px;padding:0 16px;color:#fff;font-family:var(--title-font);font-size:1.08rem;letter-spacing:.04em;text-transform:uppercase;background:var(--button-gradient);border-radius:var(--control-radius);box-shadow:none;cursor:pointer;font-weight:850;transition:background .12s ease,opacity .12s ease,transform 80ms ease}button:hover{background:var(--button-gradient-hover)}button:active{transform:translateY(1px)}button:disabled{cursor:not-allowed;color:var(--disabled-ink);background:var(--disabled-bg);border:1px solid rgba(255,255,255,.16);opacity:1;transform:none}button.disabled{opacity:.5;pointer-events:none;cursor:default;transform:none}button.secondary{color:var(--secondary-button-ink);background:var(--secondary-button-bg);border:0}button.secondary:hover{background:var(--secondary-button-hover)}button.tertiary{color:var(--tertiary-button-ink);background:var(--tertiary-button-bg);border:0}button.tertiary:hover{background:var(--tertiary-button-hover)}button.tertiary:disabled{color:var(--tertiary-button-ink);background:var(--tertiary-button-bg);opacity:1}.ship-edit-controls{display:flex;gap:8px;pointer-events:auto}.ship-edit-controls button{display:grid;place-items:center;width:42px;min-width:42px;height:42px;min-height:42px;padding:0;color:#1a2b2df0;font-family:var(--title-font);font-size:.88rem;font-weight:900;letter-spacing:0;line-height:1;background:#f8feffdb;border:1px solid rgba(255,255,255,.62);border-radius:999px;box-shadow:0 12px 28px -18px #081f26d1;text-transform:uppercase;backdrop-filter:blur(14px) saturate(160%);-webkit-backdrop-filter:blur(14px) saturate(160%)}.ship-edit-controls button:hover{color:#fff;background:#2e8aabeb}.ship-edit-controls button:last-child:hover{background:#c54d48f0}.full-width{width:100%}.room-card,.fleet-progress{display:flex;align-items:center;justify-content:space-between;min-height:46px;padding:0 14px;color:var(--ink);background:var(--panel-strong);border:1px solid var(--line);border-radius:999px}.room-card span{color:var(--muted);font-size:.78rem;font-weight:850}.room-card strong{color:var(--ink);font-size:1rem;font-weight:var(--body-strong-weight);letter-spacing:.12em}.fleet-progress span{color:var(--muted);font-size:.78rem;font-weight:850}.fleet-progress strong{color:var(--ink);font-weight:var(--body-strong-weight)}.facts{display:grid;grid-template-columns:repeat(3,1fr);gap:7px;margin:0}.facts div{display:grid;gap:3px;min-width:0;padding:9px 10px;background:#ffffff75;border:1px solid rgba(255,255,255,.48);border-radius:16px}dt{color:var(--muted);font-family:var(--title-font);font-size:.74rem;font-weight:850;letter-spacing:.08em;text-transform:uppercase}dd{min-width:0;margin:0;overflow:hidden;color:var(--ink);font-size:.82rem;font-weight:var(--body-strong-weight);text-overflow:ellipsis;white-space:nowrap}.ship-dock-timer{display:flex;grid-column:1/-1;align-items:center;gap:10px;padding:0 2px}.ship-dock-timer-track{flex:1;height:3px;background:#0000001a;border-radius:2px;overflow:hidden}.ship-dock-timer-fill{height:100%;border-radius:2px;transition:width .25s linear,background .5s ease}.ship-dock-timer-label{font-size:.72rem;font-weight:800;font-variant-numeric:tabular-nums;letter-spacing:.04em;transition:color .5s ease;min-width:2.4ch;text-align:right}.ship-dock{display:grid;grid-template-columns:50px minmax(250px,1fr) minmax(270px,.86fr) 42px 62px;gap:10px;align-items:center;width:min(100%,840px);min-height:74px;padding:12px;color:var(--ink);background:var(--panel);border:1px solid var(--line);border-radius:26px;box-shadow:var(--glass-shadow);backdrop-filter:blur(24px) saturate(180%);-webkit-backdrop-filter:blur(24px) saturate(180%)}.ship-dock-icon,.ship-dock-ship,.ship-dock-ready{position:relative;display:grid;place-items:center;min-width:0;min-height:0;padding:0}.ship-dock-icon:hover:after,.ship-dock-icon:focus-visible:after,.ship-dock-ship:hover:after,.ship-dock-ship:focus-visible:after,.ship-dock-ready:hover:after,.ship-dock-ready:focus-visible:after{opacity:1;transform:translate(-50%,-8px)}.ship-dock-icon:after,.ship-dock-ship:after,.ship-dock-ready:after{position:absolute;right:auto;bottom:100%;left:50%;z-index:3;padding:5px 8px;color:#fffffff0;background:#20363ec7;border:1px solid rgba(255,255,255,.14);border-radius:999px;box-shadow:0 10px 24px -18px #143642bd;content:attr(data-tooltip);font-family:var(--body-font);font-size:.68rem;font-weight:850;letter-spacing:0;opacity:0;pointer-events:none;text-transform:none;transform:translate(-50%,-4px);transition:opacity .12s ease,transform .12s ease;white-space:nowrap}.ship-dock-icon{width:50px;height:50px;color:var(--accent);background:var(--tertiary-button-bg);border:0;border-radius:10px}.ship-dock-icon:hover{color:#fff;background:var(--accent)}.ship-dock-icon.muted{width:42px;height:42px;color:var(--muted);background:var(--panel-strong)}.ship-dock-icon.muted:hover{color:#fff;background:var(--secondary-button-bg)}.ship-dock-list{display:flex;gap:8px;min-width:0;overflow:visible;scrollbar-width:none}.ship-dock-list::-webkit-scrollbar{display:none}.ship-dock-ship{flex:0 0 48px;width:48px;height:48px;color:var(--muted);background:var(--panel-strong);border:0;border-radius:10px}.ship-dock-ship:hover{color:#fff;background:var(--secondary-button-bg)}.ship-dock-ship.active{color:#fff;background:var(--button-gradient)}.ship-dock-ship.placed{color:#ffffffbd;background:#7d8a9752}.ship-dock-current{display:grid;grid-template-columns:112px 1fr;gap:14px;align-items:center;min-width:0}.ship-dock-current strong,.ship-dock-current span{display:block}.ship-dock-current strong{overflow:hidden;color:var(--ink);font-size:.95rem;font-weight:var(--body-strong-weight);text-overflow:ellipsis;white-space:nowrap}.ship-dock-current span{margin-top:3px;color:var(--muted);font-size:.82rem}.ship-dock-ready{width:58px;height:58px;color:#fff;background:#48ca79;border:0;border-radius:12px}.ship-dock-ready:hover{background:#39b96a}.ship-dock-ready:disabled{color:var(--disabled-ink);background:var(--disabled-bg);border:0}.ship-thumb{display:block;width:34px;height:28px}.ship-thumb img{display:block;width:100%;height:100%;object-fit:contain;filter:saturate(.72) contrast(.94)}.ship-thumb.featured{width:108px;height:54px}.ship-thumb.featured img{filter:drop-shadow(0 12px 14px rgba(58,50,40,.18))}.ship-thumb-featured-wrapper{position:relative;display:block}.ship-thumb-featured-wrapper .ship-thumb-tooltip{position:absolute;bottom:calc(100% + 14px);left:50%;z-index:200;padding:12px 16px 10px;background:var(--panel-solid);border:1px solid var(--line-warm);border-radius:14px;box-shadow:var(--glass-shadow);pointer-events:none;opacity:0;transform:translate(-50%) translateY(6px);transition:opacity .16s ease,transform .16s ease;white-space:nowrap}.ship-thumb-featured-wrapper .ship-thumb-tooltip img{display:block;width:210px;height:105px;object-fit:contain;filter:drop-shadow(0 6px 14px rgba(40,50,80,.22))}.ship-thumb-featured-wrapper .ship-thumb-tooltip:before{content:"";position:absolute;top:100%;left:50%;transform:translate(-50%);border:9px solid transparent;border-top-color:var(--line-warm)}.ship-thumb-featured-wrapper .ship-thumb-tooltip:after{content:"";position:absolute;top:100%;left:50%;transform:translate(-50%);margin-top:-1px;border:8px solid transparent;border-top-color:var(--panel-solid)}.ship-thumb-featured-wrapper:hover .ship-thumb-tooltip{opacity:1;transform:translate(-50%) translateY(0)}@media(max-width:980px){.ship-dock{position:relative;grid-template-columns:46px 1fr 56px}.ship-dock-current,.ship-dock-icon.muted{display:none}.ship-dock-ready{width:56px;height:56px}}.ship-dock-autoplace-float{display:none}@media(max-width:980px){.ship-dock-autoplace-float{position:absolute;bottom:calc(100% + 10px);left:50%;transform:translate(-50%);display:flex;align-items:center;justify-content:center;width:42px;min-height:34px;padding:0;color:var(--ink);background:var(--panel-solid);border:1px solid var(--line);border-radius:999px;box-shadow:var(--glass-shadow);backdrop-filter:blur(14px) saturate(160%);-webkit-backdrop-filter:blur(14px) saturate(160%);cursor:pointer}.ship-dock-autoplace-float:hover{color:#fff;background:var(--accent)}}@media(max-width:540px){.ship-dock{grid-template-columns:38px 1fr 38px;gap:6px;padding:8px;min-height:0;border-radius:20px}.ship-dock-icon{width:38px;height:38px;border-radius:8px}.ship-dock-icon svg{width:17px;height:17px}.ship-dock-ship,.ship-dock-ready{width:38px;height:38px;border-radius:8px}.ship-dock-ready svg{width:20px;height:20px}.ship-dock-list{gap:4px}}.error,.result,.floating-error--error,.floating-error--info,.floating-error--success{margin:0;padding:11px 18px;border-radius:999px;font-weight:var(--body-strong-weight)}.error,.floating-error--error{color:#fff;background:var(--danger);box-shadow:0 14px 30px -20px #781612b8}.floating-error--info{color:#fff;background:#2e87a7;box-shadow:0 14px 30px -20px #1450648f}.floating-error--success{color:#fff;background:#27a060;box-shadow:0 14px 30px -20px #0a503285}.result{color:var(--ink);background:#f2c94cd1}.room-sidebar{z-index:10;display:grid;grid-template-rows:auto minmax(0,1fr);gap:18px;width:var(--left-sidebar-width);padding:18px;overflow:visible;color:var(--ink);background:var(--panel);border:1px solid var(--line);border-radius:var(--surface-radius);box-shadow:var(--glass-shadow);backdrop-filter:blur(24px) saturate(180%);-webkit-backdrop-filter:blur(24px) saturate(180%);transition:width .22s ease,padding .22s ease,background-color .18s ease,border-color .18s ease,box-shadow .18s ease,backdrop-filter .18s ease}.room-sidebar.closed{width:0;padding-right:0;padding-left:0;pointer-events:none;background:transparent;border-color:transparent;box-shadow:none;backdrop-filter:blur(0) saturate(100%);-webkit-backdrop-filter:blur(0) saturate(100%)}.room-sidebar-toggle{position:relative;display:grid;place-items:center;width:58px;min-height:44px;padding:0;color:var(--ink);background:var(--panel-strong);border:1px solid var(--line);border-radius:var(--control-radius);box-shadow:none}.room-sidebar .room-sidebar-toggle{position:absolute;top:50%;right:-18px;width:34px;min-height:42px;color:var(--ink);background:var(--panel-solid);border-color:var(--line);border-radius:999px;margin:0;transform:translateY(-50%);pointer-events:auto}.room-sidebar .room-sidebar-toggle:hover{color:#fff;background:var(--accent)}.room-sidebar .room-sidebar-toggle:active{transform:translateY(-50%)}.room-sidebar-header{display:grid;gap:3px}.room-sidebar-header h1{font-family:var(--title-font);font-size:1.48rem;font-weight:700;letter-spacing:.01em}.room-sidebar-content{display:grid;gap:14px}.room-sidebar-scroll{min-height:0;overflow-y:auto;overflow-x:hidden;padding-right:8px}.room-code-card{display:grid;gap:4px;padding:14px;background:var(--panel-strong);border-radius:18px}.room-code-card strong{font-size:1rem;font-weight:var(--body-strong-weight);letter-spacing:.12em}.sidebar-actions{display:grid;grid-template-columns:1fr 1fr;gap:8px}.sidebar-actions button{display:inline-flex;align-items:center;justify-content:center;gap:7px;min-height:40px;padding:0 10px}.room-state-list{display:grid;grid-template-columns:1fr;gap:8px;margin:0}.room-state-list div{display:grid;gap:4px;padding:12px;background:var(--panel-strong);border-radius:16px}.players-card{display:grid;gap:12px;padding:14px;background:var(--panel-strong);border-radius:20px}.players-card-heading{display:flex;align-items:center;justify-content:space-between;gap:12px}.players-card-heading>strong{color:var(--ink);font-family:var(--title-font);font-size:1.1rem;font-weight:700}.player-list{display:grid;gap:10px}.player-row{display:grid;grid-template-columns:auto minmax(0,1fr);align-items:start;gap:10px;min-height:40px}.player-row strong,.player-row small{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.player-row strong{font-size:.82rem;font-weight:var(--body-strong-weight)}.player-row small{color:var(--muted);font-size:.74rem;font-weight:var(--body-weight)}.player-dot{width:10px;height:10px;margin-top:5px;background:#8a847a8c;border-radius:999px}.player-dot.ready,.player-dot.connected{background:#53d07f;box-shadow:0 0 0 5px #53d07f24}.player-dot.waiting{background:#f6b84b;box-shadow:0 0 0 5px #f6b84b24}.player-dot.offline{background:#ff5e50;box-shadow:0 0 0 5px #ff5e501f}.ai-button,.room-exit-button{display:inline-flex;align-items:center;justify-content:center;gap:8px;width:100%}.room-exit-button{min-height:36px;color:var(--muted);background:transparent;border:1px solid transparent}.room-exit-button:hover{color:var(--danger);background:transparent;border-color:#d95c4559}.player-panel{z-index:10;display:flex;flex-direction:column;gap:16px;width:var(--left-sidebar-width);padding:18px;overflow:visible;color:var(--ink);background:var(--panel);border:1px solid var(--line);border-radius:var(--surface-radius);box-shadow:var(--glass-shadow);backdrop-filter:blur(24px) saturate(180%);-webkit-backdrop-filter:blur(24px) saturate(180%);transition:width .22s ease,padding .22s ease,background-color .18s ease,border-color .18s ease}.player-panel.closed{width:0;padding-right:0;padding-left:0;pointer-events:none;background:transparent;border-color:transparent;box-shadow:none;backdrop-filter:blur(0);-webkit-backdrop-filter:blur(0)}.player-panel-toggle{position:absolute;top:50%;left:-18px;width:34px;min-height:42px;padding:0;color:var(--ink);background:var(--panel-solid);border:1px solid var(--line);border-radius:999px;box-shadow:none;transform:translateY(-50%);pointer-events:auto;cursor:pointer;display:grid;place-items:center}.player-panel-toggle:hover{color:#fff;background:var(--accent)}.player-panel-toggle:active{transform:translateY(-50%)}.player-panel-content{display:flex;flex-direction:column;gap:14px;min-height:0;overflow-y:auto}.player-panel-content .players-card-heading{display:flex;align-items:center;justify-content:space-between}@media(max-width:880px){.room-sidebar{width:auto;max-height:none;padding:10px 24px;border-radius:22px;gap:8px}.player-panel{padding:10px 24px}.player-panel-content{gap:8px}.room-sidebar.closed{width:0;height:38px;padding-right:0;padding-left:0;overflow:visible}.room-sidebar .room-sidebar-toggle{right:auto;left:-8px}.player-panel-toggle{left:-8px}.player-panel-toggle svg{transform:rotate(180deg)}.player-panel{width:auto;border-radius:22px}.player-panel.closed{width:0;height:38px;padding-right:0;padding-left:0;overflow:visible}}.bottom-drawer{position:fixed;right:18px;bottom:18px;left:18px;z-index:10;display:grid;gap:12px;padding:14px;color:var(--ink);background:var(--panel);border:1px solid var(--line);border-radius:26px;box-shadow:var(--glass-shadow);backdrop-filter:blur(24px) saturate(180%);-webkit-backdrop-filter:blur(24px) saturate(180%);transition:background .14s ease}.bottom-drawer.open{gap:12px}.bottom-drawer.collapsed{gap:0;align-items:center;padding-top:14px;padding-bottom:14px}.bottom-drawer-toggle{position:absolute;top:-18px;right:0;left:0;display:grid;place-items:center;width:42px;min-height:34px;padding:0;color:var(--ink);background:var(--panel-solid);border:1px solid var(--line);border-radius:999px;box-shadow:var(--glass-shadow);margin-inline:auto}.bottom-drawer-toggle:hover,.bottom-drawer-toggle:focus-visible{color:#fff;background:var(--accent)}.bottom-drawer-summary{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px}.bottom-drawer-summary.vertical{grid-template-columns:1fr;grid-template-rows:repeat(4,minmax(0,1fr));align-content:start;gap:0;overflow:hidden;background:var(--panel-strong);border-radius:18px}.bottom-drawer-summary.vertical .drawer-metric{position:relative;min-height:0;background:transparent;border:0;border-radius:0}.bottom-drawer-summary.vertical .drawer-metric:not(:last-child):after{position:absolute;right:14px;bottom:0;left:14px;height:1px;background:var(--line);content:""}.bottom-drawer-compact,.bottom-drawer-expanded{max-height:0;min-height:0;overflow:hidden;transition:max-height .26s cubic-bezier(.22,1,.36,1),opacity .18s ease,transform .26s cubic-bezier(.22,1,.36,1)}.bottom-drawer.open .bottom-drawer-compact{pointer-events:none;max-height:0;opacity:0;transform:translateY(8px)}.bottom-drawer.open .bottom-drawer-expanded{max-height:34vh;opacity:1;transform:translateY(0)}.bottom-drawer.collapsed .bottom-drawer-compact{display:grid;align-items:center;max-height:150px;opacity:1;transform:translateY(0)}.bottom-drawer.collapsed .bottom-drawer-expanded{pointer-events:none;max-height:0;opacity:0;transform:translateY(8px)}.drawer-metric{display:grid;grid-template-columns:auto 1fr;align-items:center;gap:2px 6px;min-height:0;padding:8px 10px;color:var(--ink);background:var(--panel-strong);border-radius:16px}.drawer-metric svg{align-self:start;margin-top:2px;color:var(--muted)}.drawer-metric strong{grid-column:2;overflow:hidden;color:var(--ink);font-size:.82rem;font-weight:var(--body-strong-weight);text-overflow:ellipsis;white-space:nowrap}.bottom-drawer-content{display:grid;grid-template-columns:minmax(240px,330px) minmax(320px,1fr) minmax(240px,330px);gap:14px;max-height:28vh;overflow:auto}@media(max-width:1200px){.bottom-drawer-content{grid-template-columns:minmax(200px,280px) minmax(320px,1fr) 120px}}.match-preview-card{display:grid;min-width:0;min-height:100%;padding:0;background:transparent;border-radius:18px}.mode-panel{display:grid;gap:12px;min-width:0;padding:14px;background:var(--panel-strong);border-radius:18px}.mode-panel-header{display:flex;align-items:center;justify-content:space-between}.mode-card-list{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.mode-card{position:relative;min-width:0;overflow:hidden;color:#fff;background:#12324c;border:1px solid rgba(255,255,255,.18);border-radius:14px;aspect-ratio:.66}.mode-card.active{border-color:#2f6df6f2}.mode-card img{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;object-fit:cover}.mode-card:after{position:absolute;inset:auto 0 0;height:58%;background:linear-gradient(180deg,#0c1e3000,#0c1e30d6 62%);content:""}.mode-card div{position:absolute;right:10px;bottom:10px;left:10px;z-index:1;display:grid;gap:3px}.mode-card strong{font-family:var(--title-font);font-size:.9rem;font-weight:700;letter-spacing:.03em;line-height:.95;text-transform:uppercase}.mode-card small{overflow:hidden;font-size:.68rem;font-weight:var(--body-weight);text-overflow:ellipsis;white-space:nowrap}.mode-panel-more{min-height:38px}.drawer-actions{min-width:0}.tactical-view{display:grid;gap:10px;min-width:0;height:100%;min-height:100%;padding:12px;color:#dcefff;background:linear-gradient(180deg,#0c2238f0,#081727f5);border:1px solid rgba(127,184,218,.2);border-radius:18px;box-shadow:inset 0 1px #ffffff14}.tactical-layout{display:grid;grid-template-columns:minmax(0,1fr) minmax(86px,.28fr) minmax(0,1fr);gap:12px;align-items:stretch;min-width:0;min-height:0}.tactical-card{display:grid;grid-template-rows:auto minmax(0,1fr);gap:8px;min-width:0;min-height:0;padding:10px;background:#ffffff0f;border:1px solid rgba(255,255,255,.08);border-radius:8px}.tactical-card-header{display:grid;grid-template-columns:32px minmax(0,auto) minmax(0,1fr) auto;align-items:center;gap:7px;min-width:0}.tactical-card-header strong,.tactical-card-header span{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tactical-card-header strong{color:#f5fbff;font-size:.8rem;font-weight:850}.tactical-card-header span{color:#dcefffad;font-size:.64rem;font-weight:750;text-transform:uppercase;text-align:right}.tactical-card-header svg{color:#5eb7ff}.tactical-card--red .tactical-card-header svg{color:#ff7272}.tactical-avatar{display:flex!important;align-items:center;justify-content:center;width:32px;height:32px;color:#fff;font-family:var(--title-font);font-size:.78rem;font-weight:900;background:#2f8ed9;border-radius:12px}.tactical-avatar svg{display:block;color:#fff!important}.tactical-card--red .tactical-avatar{background:#c94b4b!important}.tactical-center{display:grid;align-content:center;gap:10px;min-width:0}.tactical-turn,.tactical-timer{display:grid;place-items:center;min-width:0;padding:9px 10px;background:#061220b8;border:1px solid rgba(255,255,255,.08);border-radius:8px}.tactical-turn span,.tactical-timer span{color:#dcefff9e;font-family:var(--title-font);font-size:.64rem;font-weight:850;text-transform:uppercase}.tactical-turn em,.tactical-timer em{max-width:110px;margin:1px 0 7px;overflow:hidden;color:#fff;font-size:.75rem;font-style:normal;font-weight:850;text-overflow:ellipsis;white-space:nowrap}.tactical-turn strong,.tactical-timer strong{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tactical-turn strong{margin-top:2px;color:#fff;font-size:.74rem;font-weight:850}.tactical-timer strong{margin-top:1px;color:#fff;font-size:1rem;font-variant-numeric:tabular-nums;font-weight:900}.tactical-toggle{display:flex;justify-content:center;align-items:center;gap:6px;min-height:36px;padding:0 10px;color:#dcefff;background:#ffffff14;border:1px solid rgba(255,255,255,.12);border-radius:8px;font-size:.72rem;letter-spacing:.02em}.tactical-toggle:hover{background:#4e92d26b}[data-theme=light] .tactical-view{color:#1f3142;background:linear-gradient(180deg,#fffffff0,#f8fdffe6);border-color:#bed2e094;box-shadow:inset 0 1px #ffffffdb,0 18px 34px -24px #405b7457}[data-theme=light] .tactical-card{background:#ffffffd6;border-color:#dae5edd1;box-shadow:0 18px 34px -24px #31495e70}[data-theme=light] .tactical-card-header strong{color:#213044}[data-theme=light] .tactical-card-header span{color:#4150609e}[data-theme=light] .tactical-avatar{color:#fff;background:#2f8ed9;border-color:#ffffffc2;box-shadow:0 8px 16px -12px #2f8ed9c2}[data-theme=light] .tactical-avatar svg{color:#fff}.tactical-card--red [data-theme=light] .tactical-avatar{background:#d43535;box-shadow:0 8px 16px -12px #d43535b8}[data-theme=light] .tactical-turn,[data-theme=light] .tactical-timer{background:#ffffffd6;border-color:#d2e0ebc2;box-shadow:0 16px 28px -24px #2a3f524d}[data-theme=light] .tactical-turn span,[data-theme=light] .tactical-timer span{color:#7a8695}[data-theme=light] .tactical-turn strong,[data-theme=light] .tactical-timer strong{color:#1b2838}[data-theme=light] .tactical-toggle{color:#314358;background:#ffffffc2;border-color:#d2e0ebc7}[data-theme=light] .tactical-toggle:hover{color:#fff;background:#2f8ed9}[data-theme=light] .tactical-board{width:min(100%,22vh,200px)}[data-theme=light] .tactical-board-field{background:linear-gradient(to right,rgba(53,146,204,.28) 1px,transparent 1px),linear-gradient(to bottom,rgba(53,146,204,.28) 1px,transparent 1px),radial-gradient(circle at 26% 18%,rgba(255,255,255,.28),transparent 18%),linear-gradient(180deg,#78c8eed1,#5fb4e0db);background-size:10% 10%,10% 10%,auto,auto;border-color:#439cd070;box-shadow:inset 0 0 0 1px #ffffff42}.tactical-board--red [data-theme=light] .tactical-board-field{background:linear-gradient(to right,rgb(206,105,111) 1px,transparent 1px),linear-gradient(to bottom,rgb(206,105,111) 1px,transparent 1px),radial-gradient(circle at 26% 18%,rgba(255,255,255,.28),transparent 18%),linear-gradient(180deg,#f28661,#d89179);background-size:10% 10%,10% 10%,auto,auto;border-color:#ce696f}[data-theme=light] .tactical-cell{border-color:#3592cc47}.tactical-board--red [data-theme=light] .tactical-cell{border-color:#ce696f}[data-theme=light] .tactical-board-labels{color:#213044;text-shadow:0 1px 0 rgba(255,255,255,.82)}[data-theme=light] .tactical-ship{opacity:.94;filter:drop-shadow(0 4px 1px rgba(42,64,80,.4))}[data-theme=light] .tactical-marker--miss{color:transparent;text-shadow:0 2px 5px rgba(39,70,92,.28)}[data-theme=light] .tactical-marker--miss:before{background:#fff;box-shadow:0 2px 5px #27465c47}[data-theme=light] .tactical-marker--hit,[data-theme=light] .tactical-marker--sunk{color:#fff;background:#ff0000c2;box-shadow:0 6px 12px -8px #2837418f}[data-theme=light] .tactical-marker--fire{color:#e64735;background:#ffffff57;box-shadow:0 6px 12px -8px #28374175}[data-theme=light] .tactical-marker--mine{color:#fff;background:#24282d;border-radius:999px;box-shadow:0 4px 10px -7px #141e28b8}[data-theme=light] .tactical-marker--mine svg{display:block;margin:auto}[data-theme=light] .tactical-shot-cell{background:#2d8d87}[data-theme=light] .tactical-shot-cell--hit,[data-theme=light] .tactical-shot-cell--sunk{background:#e03930}.tactical-board--red [data-theme=light] .tactical-shot-cell{background:#2d8d87}.tactical-board--red [data-theme=light] .tactical-shot-cell--hit,.tactical-board--red [data-theme=light] .tactical-shot-cell--sunk{background:#e03930}[data-theme=light] .tactical-fleet{background:transparent;border-color:transparent;box-shadow:none}[data-theme=light] .tactical-fleet header{color:#213044}[data-theme=light] .tactical-fleet-row{background:#5bb7e729}[data-theme=light] .tactical-fleet-row span,[data-theme=light] .tactical-fleet-row strong{color:#213044}[data-theme=light] .tactical-fleet-row meter::-webkit-meter-bar{background:#3650681f}.tactical-board{position:relative;display:grid;grid-template-columns:18px minmax(0,1fr);grid-template-rows:minmax(0,1fr) 18px;gap:4px;justify-self:center;width:min(100%,22vh,208px);min-width:0;max-height:100%;aspect-ratio:1.06}.tactical-board-field{position:relative;display:grid;grid-column:2;grid-row:1;grid-template-columns:repeat(10,minmax(0,1fr));grid-template-rows:repeat(10,minmax(0,1fr));overflow:hidden;background:linear-gradient(to right,rgba(90,180,235,.3) 1px,transparent 1px),linear-gradient(to bottom,rgba(90,180,235,.3) 1px,transparent 1px),#185f8e6b;background-size:10% 10%,10% 10%,auto;border:1px solid rgba(85,166,221,.46);border-radius:4px}.tactical-board--red .tactical-board-field{background:linear-gradient(to right,rgba(237,115,122,.32) 1px,transparent 1px),linear-gradient(to bottom,rgba(237,115,122,.32) 1px,transparent 1px),#7d323a8a;background-size:10% 10%,10% 10%,auto;border-color:#df696f7a}.tactical-cell{position:relative;z-index:0;min-width:0;min-height:0;border:0;pointer-events:none}.tactical-shot-cell{z-index:1;min-width:0;min-height:0;margin:1px;background:#2d8d87;border-radius:2px;pointer-events:none}.tactical-shot-cell--hit,.tactical-shot-cell--sunk{background:#cc302c}.tactical-board--red .tactical-shot-cell{background:#2d8d87}.tactical-board--red .tactical-shot-cell--hit,.tactical-board--red .tactical-shot-cell--sunk{background:#cc302c}.tactical-board-labels{display:grid;color:#e0f1ffdb;font-family:var(--title-font);font-size:.62rem;font-weight:850}.tactical-board-labels span{display:grid;place-items:center}.tactical-board-labels--rows{grid-column:1;grid-row:1;grid-template-rows:repeat(10,minmax(0,1fr))}.tactical-board-labels--cols{grid-column:2;grid-row:2;grid-template-columns:repeat(10,minmax(0,1fr))}.tactical-ship,.tactical-marker{display:grid;place-items:center;min-width:0;min-height:0;pointer-events:none}.tactical-ship{z-index:2;position:relative;padding:0;opacity:.9;background:transparent;filter:drop-shadow(0 4px 1px rgba(2,12,20,.8));transform:translateY(-2px)}.tactical-ship img{display:block;width:100%;height:min(84%,18px);background:transparent;object-fit:contain}.tactical-ship--vertical img{position:absolute;width:calc(100% * var(--ship-size, 3));height:min(84% / var(--ship-size, 3),18px);transform:rotate(90deg)}.tactical-marker{z-index:3}.tactical-marker{align-self:center;justify-self:center;align-items:center;justify-content:center;width:54%;height:54%;color:#fff;font-size:1rem;font-weight:900;line-height:0;border-radius:4px}.tactical-marker--miss{color:transparent;font-size:0;background:transparent}.tactical-marker--miss:before{display:block;width:5px;height:5px;background:#e6f1f9e6;border-radius:999px;content:""}.tactical-marker--hit,.tactical-marker--sunk{color:#fff;background:#e04636b8;box-shadow:0 0 16px #ff604a59}.tactical-marker--fire{color:#ffd27a;background:#ff5c364d;box-shadow:0 0 16px #ff6a3757}.tactical-marker--mine{color:#fff;background:#24282d;border-radius:999px;box-shadow:0 0 10px #080c1266}.tactical-marker--mine svg{display:block;margin:auto}.tactical-fleet{display:grid;gap:8px;min-width:0;padding:0;background:transparent;border:0;border-radius:0}.tactical-fleet header{display:flex;align-items:center;gap:7px;color:#f6fbff;font-family:var(--title-font);font-size:.78rem;font-weight:850;text-transform:uppercase}.tactical-fleet--blue header svg{color:#5eb7ff}.tactical-fleet--red header svg{color:#ff7272}.tactical-fleet-list{display:grid;gap:6px}.tactical-fleet-row{display:grid;grid-template-columns:38px minmax(64px,1fr) minmax(52px,.75fr) 34px;align-items:center;gap:8px;min-width:0;padding:5px 7px;background:#5eb7ff1f;border-radius:6px}.tactical-fleet-row img{width:36px;height:24px;object-fit:contain}.tactical-fleet-row span{overflow:hidden;color:#f6fbffe0;font-size:.72rem;font-weight:760;text-overflow:ellipsis;white-space:nowrap}.tactical-fleet-row strong{color:#dcefff;font-size:.72rem;font-variant-numeric:tabular-nums;text-align:right}.tactical-fleet-row meter{width:100%;height:7px;overflow:hidden;-webkit-appearance:none;-moz-appearance:none;appearance:none}.tactical-fleet-row meter::-webkit-meter-bar{background:#ffffff1f;border:0;border-radius:999px}.tactical-fleet-row meter::-webkit-meter-optimum-value{background:#5eb7ff;border-radius:999px}.tactical-fleet-row--hit meter::-webkit-meter-optimum-value{background:#f2a33a}.tactical-fleet-row--sunk meter::-webkit-meter-optimum-value{background:#e54c42}.shell[data-theme=light] .tactical-board--red .tactical-cell,[data-theme=light] .tactical-board--red .tactical-cell{border-color:#ce696f!important}.shell[data-theme=light] .tactical-board--red .tactical-board-field,[data-theme=light] .tactical-board--red .tactical-board-field{background:linear-gradient(to right,rgb(206,105,111) 1px,transparent 1px),linear-gradient(to bottom,rgb(206,105,111) 1px,transparent 1px),radial-gradient(circle at 26% 18%,rgba(255,255,255,.28),transparent 18%),linear-gradient(180deg,#f28661,#d89179)!important;background-size:10% 10%,10% 10%,auto,auto!important;border-color:#ce696f!important}@media(max-width:880px){.bottom-drawer-toggle{top:-10px}.bottom-drawer{right:12px;bottom:12px;left:12px;border-radius:22px}.bottom-drawer.collapsed{background:transparent;border-color:transparent;box-shadow:none;backdrop-filter:none;-webkit-backdrop-filter:none}.bottom-drawer.collapsed .bottom-drawer-compact{max-height:0!important;opacity:0!important;pointer-events:none}.bottom-drawer.open .bottom-drawer-expanded{max-height:60vh}.bottom-drawer-summary{grid-template-columns:repeat(2,minmax(0,1fr));min-height:100px}.bottom-drawer-summary.vertical{grid-template-columns:repeat(2,minmax(0,1fr));grid-template-rows:auto}.bottom-drawer-content{display:flex;flex-direction:column-reverse;max-height:60vh;overflow-y:auto}.tactical-layout{grid-template-columns:1fr}.tactical-center{grid-template-columns:repeat(3,minmax(0,1fr));align-items:stretch;order:-1}.match-preview-card{min-height:0;flex-shrink:0}.tactical-view{height:auto;min-height:0}.tactical-card{grid-template-rows:auto auto}.tactical-board{width:min(100%,46vh,300px);max-height:none;min-height:180px;align-self:start}.tactical-turn,.tactical-timer,.tactical-toggle{justify-self:stretch}.tactical-toggle{justify-content:center}}.scene-toolbar{position:fixed;top:var(--header-reserved-height);bottom:var(--drawer-reserved-height);right:18px;z-index:7;display:grid;align-content:start;justify-items:center;gap:12px;width:var(--right-sidebar-width);padding:14px;color:var(--ink);background:var(--panel);border:1px solid var(--line);border-radius:var(--surface-radius);box-shadow:var(--glass-shadow);backdrop-filter:blur(24px) saturate(180%);-webkit-backdrop-filter:blur(24px) saturate(180%);overflow:visible;transition:width .22s ease,padding .22s ease,background-color .18s ease,border-color .18s ease,box-shadow .18s ease,backdrop-filter .18s ease}.scene-toolbar.closed{width:0;padding-right:0;padding-left:0;pointer-events:none;background:transparent;border-color:transparent;box-shadow:none;backdrop-filter:blur(0) saturate(100%);-webkit-backdrop-filter:blur(0) saturate(100%)}.scene-toolbar-button{position:relative;display:grid;place-items:center;width:58px;min-height:44px;padding:0;color:var(--ink);background:var(--panel-strong);border:1px solid var(--line);border-radius:var(--control-radius);box-shadow:none}.scene-toolbar-button:hover{color:#fff;background:var(--secondary-button-bg)}.scene-toolbar-button:hover:after,.scene-toolbar-button:focus-visible:after{opacity:1;transform:translate(-8px,-50%)}.scene-toolbar-button:after{position:absolute;top:50%;right:100%;z-index:2;padding:5px 8px;color:#fffffff0;background:#20363ec7;border:1px solid rgba(255,255,255,.14);border-radius:999px;box-shadow:0 10px 24px -18px #143642bd;content:attr(data-tooltip);font-size:.68rem;font-weight:850;opacity:0;pointer-events:none;transform:translate(-4px,-50%);transition:opacity .12s ease,transform .12s ease;white-space:nowrap}.scene-toolbar-button.active{color:#fff;background:var(--button-gradient);border-color:transparent}.scene-toolbar .scene-toolbar-toggle{position:absolute;top:50%;left:-18px;width:34px;min-height:42px;color:var(--ink);background:var(--panel-solid);border-color:var(--line);border-radius:999px;margin:0;transform:translateY(-50%);pointer-events:auto}.scene-toolbar .scene-toolbar-toggle:hover{color:#fff;background:var(--accent)}.scene-toolbar .scene-toolbar-toggle:active{transform:translateY(-50%)}.scene-toolbar-panel{display:grid;gap:12px;justify-items:center;align-content:start;width:100%;height:fit-content;max-height:100%;padding:0;overflow-y:auto;overflow-x:hidden;background:transparent;border:0;border-radius:0;box-shadow:none}.scene-toolbar-group{display:grid;gap:8px;justify-items:center;align-content:start;padding-bottom:12px;border-bottom:1px solid var(--line)}.scene-toolbar-group:last-child{padding-bottom:0;border-bottom:0}.scene-toolbar-pan{display:grid;grid-template-areas:". up ." "left . right" ". down .";grid-template-columns:repeat(3,18px);gap:6px;justify-content:center;justify-items:center;align-content:center;width:fit-content;margin-inline:auto;padding-bottom:12px;border-bottom:1px solid var(--line)}.scene-toolbar-pan .scene-toolbar-button{width:30px;min-height:30px;border-radius:10px}.pan-up{grid-area:up}.pan-left{grid-area:left}.pan-right{grid-area:right}.pan-down{grid-area:down}.scene-toolbar-reset{margin-top:0}@media(max-width:880px){.scene-toolbar{top:var(--header-reserved-height);right:12px;bottom:var(--drawer-reserved-height);width:80px;padding:10px;overflow:visible}.scene-toolbar button{width:48px;min-height:40px}.scene-toolbar.closed{width:0;padding-right:0;padding-left:0;overflow:visible}.scene-toolbar-panel{gap:10px}.scene-toolbar-pan{grid-template-columns:repeat(3,15px)}.scene-toolbar-pan button{width:28px;min-height:28px}}.combat-log{display:grid;gap:9px}.combat-dock{display:grid;grid-template-columns:minmax(160px,.74fr) minmax(260px,1.1fr) 42px 62px;gap:10px;align-items:center;width:min(100%,840px);min-height:74px;padding:12px;color:var(--ink);background:var(--panel);border:1px solid var(--line);border-radius:26px;box-shadow:var(--glass-shadow);backdrop-filter:blur(24px) saturate(180%);-webkit-backdrop-filter:blur(24px) saturate(180%)}.combat-dock-status,.combat-dock-events{min-width:0}.combat-dock-status{display:grid;gap:4px;padding:0 4px}.combat-dock-status span,.combat-dock-status strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.combat-dock-status span{color:var(--muted);font-family:var(--title-font);font-size:.78rem;font-weight:850;letter-spacing:.08em;text-transform:uppercase}.combat-dock-status strong{color:var(--ink);font-size:1rem;font-weight:var(--body-strong-weight)}.combat-dock-events{display:grid;gap:6px}.combat-dock-events p{margin:0;color:var(--muted);font-size:.82rem}.combat-dock-events ol,.combat-dock-history-list{display:grid;gap:6px;margin:0;padding:0;list-style:none}.combat-dock-events li,.combat-dock-history-list li{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px;align-items:center;min-height:28px;padding:0 10px;color:var(--ink);background:var(--panel-strong);border-radius:999px}.combat-dock-events li.empty,.combat-dock-history-list li.empty{display:block;padding:8px 10px;color:var(--muted);font-size:.82rem}.combat-dock-events span,.combat-dock-history-list span,.combat-dock-events small,.combat-dock-history-list small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.combat-dock-events li span,.combat-dock-history-list li span{font-size:.78rem;font-weight:var(--body-strong-weight)}.combat-dock-events li small,.combat-dock-history-list li small{color:var(--muted);font-size:.72rem;font-weight:var(--body-weight)}.combat-dock-history{position:relative}.combat-dock-history summary{position:relative;display:grid;place-items:center;width:42px;min-height:42px;padding:0 12px;color:var(--tertiary-button-ink);font-family:var(--title-font);font-size:.96rem;font-weight:850;letter-spacing:.04em;text-transform:uppercase;list-style:none;background:var(--panel-strong);border-radius:10px;cursor:pointer}.combat-dock-history summary::-webkit-details-marker{display:none}.combat-dock-history summary:hover:after,.combat-dock-history summary:focus-visible:after{opacity:1;transform:translate(-8px,-50%)}.combat-dock-history summary:after{position:absolute;top:50%;right:100%;z-index:3;padding:5px 8px;color:#fffffff0;background:#20363ec7;border:1px solid rgba(255,255,255,.14);border-radius:999px;box-shadow:0 10px 24px -18px #143642bd;content:attr(data-tooltip);font-size:.68rem;font-weight:850;opacity:0;pointer-events:none;transform:translate(-4px,-50%);transition:opacity .12s ease,transform .12s ease;white-space:nowrap}.combat-dock-history[open] summary{color:#fff;background:var(--button-gradient)}.combat-dock-history summary:hover{color:#fff;background:var(--secondary-button-bg)}.combat-dock-history-list{position:absolute;right:0;bottom:calc(100% + 10px);z-index:2;width:min(360px,100vw - 32px);max-height:min(300px,100vh - var(--feedback-reserved-height) - 220px);padding:10px;overflow-y:auto;background:var(--panel);border:1px solid var(--line);border-radius:var(--card-radius);box-shadow:var(--glass-shadow);backdrop-filter:blur(22px) saturate(170%);-webkit-backdrop-filter:blur(22px) saturate(170%);border-radius:26px}.combat-dock-fire{display:grid;place-items:center;width:58px;height:58px;min-width:0;min-height:0;padding:0;color:#fff;background:linear-gradient(135deg,#ff6a3d,#dc3545);border:0;border-radius:12px}.combat-dock-fire:hover{background:linear-gradient(135deg,#ff7b4f,#c92d3b)}.combat-dock-fire:disabled{color:var(--disabled-ink);background:var(--disabled-bg);border:0}@media(max-width:980px){.combat-dock{grid-template-columns:minmax(120px,.8fr) minmax(0,1fr) 56px}.combat-dock-history{display:none}.combat-dock-fire{width:56px;height:56px}}@media(max-width:620px){.combat-dock{position:relative;grid-template-columns:minmax(0,1fr) 38px 38px;gap:6px;padding:8px;min-height:0;border-radius:20px;width:100%}.combat-dock-events{display:none}.combat-dock-history{display:block;position:static}.combat-dock-history summary{width:38px;min-height:38px;padding:0;border-radius:8px}.combat-dock-history summary svg{width:17px;height:17px}.combat-dock-fire{width:38px;height:38px;border-radius:8px}.combat-dock-fire svg{width:20px;height:20px}.combat-dock-history-list{right:0;left:0;width:auto;border-radius:20px}}.last-event{display:grid;gap:4px;padding:12px 14px;background:#ffffff9e;border:1px solid rgba(255,255,255,.5);border-radius:18px}.last-event span,.last-event small{color:var(--muted);font-size:.72rem;font-weight:850;text-transform:uppercase}.last-event strong{color:var(--ink);font-size:1rem;font-weight:var(--body-strong-weight)}.last-event.good{background:#f2c94cb8}.last-event.bad{background:#ffe4dfd1}.event-list{display:grid;gap:6px;margin:0;padding:0;list-style:none}.event-list li{display:flex;align-items:center;justify-content:space-between;gap:10px;min-height:34px;padding:0 12px;color:var(--ink);background:#ffffff6b;border:1px solid rgba(255,255,255,.42);border-radius:999px}.event-list li.good{box-shadow:inset 3px 0 #f2c94ccc}.event-list li.bad{box-shadow:inset 3px 0 #d95c4599}.event-list span,.event-list small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.event-list span{font-size:.78rem;font-weight:var(--body-strong-weight)}.event-list small{color:var(--muted);font-size:.72rem;font-weight:var(--body-weight)}.ship-review-shell{position:relative;min-height:100vh;overflow:hidden;background:#102c3b}.ship-review-scene{position:fixed;top:0;right:0;bottom:0;left:0}.ship-review-panel{position:fixed;top:22px;left:22px;z-index:2;display:grid;width:min(340px,100vw - 44px);gap:16px;padding:18px;border:1px solid rgba(255,255,255,.46);border-radius:8px;background:#f4fbfbc7;box-shadow:0 18px 42px #203e462e;-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px)}.ship-review-panel h1{font-size:2.4rem}.ship-review-panel-toggle{position:fixed;top:22px;right:22px;z-index:3;min-height:38px;padding:0 14px;color:var(--ink);background:#f4fbfbc7;border:1px solid rgba(255,255,255,.46);border-radius:8px;box-shadow:0 14px 30px #203e4629;font:850 .76rem var(--title-font);letter-spacing:.04em;text-transform:uppercase;-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px)}.ship-review-panel-toggle:hover{color:#fff;background:#2e87a7}.ship-review-panel-toggle.collapsed{background:#f4fbfb85}.ship-review-panel.collapsed{pointer-events:none;opacity:0;transform:translate(-18px)}.ship-review-meta{margin:-10px 0 2px;color:var(--muted);font-size:.86rem}.ship-review-picker{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.ship-review-picker button{min-height:38px;padding:0 10px;border:1px solid rgba(52,75,94,.18);border-radius:8px;background:#ffffff8f;color:var(--ink);font:800 .74rem var(--title-font);text-transform:uppercase;cursor:pointer}.ship-review-picker button.active{background:#344b5e;color:#f7ffff;box-shadow:0 8px 18px #344b5e2e}.ship-review-buttons{display:flex;flex-wrap:wrap;gap:8px}.ship-review-buttons button{min-height:38px;padding:0 13px;border:1px solid rgba(52,75,94,.18);border-radius:8px;background:#ffffff8f;color:var(--ink);font:800 .76rem var(--title-font);text-transform:uppercase;cursor:pointer}.ship-review-buttons button.active{background:#2e87a7;color:#f7ffff;box-shadow:0 8px 18px #2e87a738}.ship-review-link{color:#2e718f;font-size:.86rem;font-weight:750;text-decoration:none}@media(max-width:720px){.ship-review-panel{top:auto;right:14px;bottom:14px;left:14px;width:auto}.ship-review-panel-toggle{top:14px;right:14px}}.game-summary-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:20;display:flex;align-items:center;justify-content:center;padding:24px;background:#081820b8;backdrop-filter:blur(12px) saturate(140%);-webkit-backdrop-filter:blur(12px) saturate(140%)}.game-summary-card{display:flex;flex-direction:column;gap:24px;width:min(560px,100%);padding:28px;background:var(--panel);border:1px solid var(--line);border-radius:28px;box-shadow:var(--glass-shadow),0 32px 64px -24px #08182099;backdrop-filter:blur(24px) saturate(180%);-webkit-backdrop-filter:blur(24px) saturate(180%)}.game-summary-header{text-align:center}.game-summary-header h1{font-size:2rem}.game-summary-columns{display:grid;grid-template-columns:1fr 1fr;gap:16px}.fleet-column{display:flex;flex-direction:column;gap:10px;padding:16px;background:var(--panel-strong);border:1px solid var(--line);border-radius:18px;transition:border-color .18s ease}.fleet-column.winner{border-color:#f0be2899;box-shadow:0 0 0 1px #f0be2833}.fleet-column-header{display:flex;align-items:center;gap:6px;font-family:var(--title-font);font-size:.82rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--muted)}.fleet-column-header svg{color:#f0be28}.winner .fleet-column-header{color:var(--ink)}.fleet-column-ships{display:flex;flex-direction:column;gap:8px}.fleet-ship{display:flex;align-items:center;gap:10px;padding:7px 10px;border-radius:10px;transition:background .18s ease}.fleet-ship img{width:36px;height:28px;object-fit:contain;flex-shrink:0}.fleet-ship-name{flex:1;font-size:.78rem;font-weight:600;color:#ffffffd9;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.fleet-ship-score{font-size:.78rem;font-weight:700;font-variant-numeric:tabular-nums;flex-shrink:0}.fleet-ship--intact{background:#5aafe838}.fleet-ship--intact .fleet-ship-score{color:#5aafe8}.fleet-ship--hit{background:#f0a02038}.fleet-ship--hit .fleet-ship-score{color:#f0a020}.fleet-ship--sunk{background:#e0403038}.fleet-ship--sunk .fleet-ship-score{color:#e04030}.game-summary-footer{padding-top:4px}@media(max-width:480px){.game-summary-columns{grid-template-columns:1fr}.fleet-ship img{width:28px;height:22px}}.beach-page{position:relative;width:100vw;height:100dvh;overflow:hidden;background:linear-gradient(180deg,#f4aa73,#f2c487 42%,#0d6b81)}.beach-page canvas{display:block}.beach-hud{position:absolute;left:18px;bottom:18px;display:flex;flex-direction:column;gap:2px;padding:10px 12px;border:1px solid rgba(255,232,190,.32);border-radius:8px;color:#fff6dd;background:#123e4a6b;box-shadow:0 12px 36px #00233240;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);pointer-events:none}.beach-hud strong{font-family:var(--title-font);font-size:1rem;line-height:1}.beach-hud span,.beach-loading{font-size:.72rem;color:#fff6ddb8}.beach-loading{padding:8px 10px;border-radius:8px;background:#123e4a9e}.quality-selector-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:100;display:grid;place-items:center;background:url(/portada.png) center center/cover no-repeat}.quality-selector{display:grid;gap:20px;width:min(100% - 32px,560px);padding:28px;color:var(--ink);background:var(--panel);border:1px solid var(--line);border-radius:26px;box-shadow:var(--glass-shadow);backdrop-filter:blur(24px) saturate(180%);-webkit-backdrop-filter:blur(24px) saturate(180%)}.quality-selector-header{display:grid;gap:6px;text-align:center}.quality-selector-header h2{font-family:var(--title-font);font-size:1.4rem;font-weight:900;letter-spacing:.04em;text-transform:uppercase;color:var(--ink);margin:0}.quality-selector-sub{color:#000;font-size:.84rem;margin:0}.quality-card-list{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.quality-card{display:grid;gap:6px;padding:16px 12px;color:var(--ink);background:var(--panel-strong);border:2px solid transparent;border-radius:16px;cursor:pointer;text-align:left;font-family:var(--body-font);font-size:1rem;text-transform:none;letter-spacing:0;min-height:auto;transition:border-color .12s ease,background .12s ease}.quality-card svg{color:var(--muted)}.quality-card strong{display:block;font-size:.88rem;font-weight:var(--body-strong-weight);color:var(--ink)}.quality-card span{display:block;font-size:.72rem;color:var(--muted);line-height:1.4}.quality-card.active{border-color:var(--accent);background:var(--panel)}.quality-card.active svg{color:var(--accent)}.quality-card:hover:not(.active){background:var(--panel);border-color:var(--line)}.quality-badge{display:inline-block;margin-top:4px;padding:2px 8px;font-size:.64rem;font-style:normal;font-weight:850;color:#fff;background:var(--accent);border-radius:999px;letter-spacing:.04em;text-transform:uppercase}.quality-restore-toast{display:flex;align-items:center;gap:12px}.quality-restore-toast button{min-height:0;padding:4px 12px;font-size:.78rem;background:#ffffff2e;border-radius:999px}.quality-restore-toast button:hover{background:#ffffff4d}@media(max-width:540px){.quality-card-list{grid-template-columns:1fr}}
