:root{--navy: #1e3a5f;--teal: #2bbfb3;--teal-dark: #1f9a90;--text: #2d3f52;--paper: #fafaf8;--mist: #dde2e7;--slate: #3f5776;--accent: #2bbfb3;--heading: "Ubuntu", system-ui, sans-serif;--body: "Open Sans", system-ui, sans-serif;--shadow: 0 10px 30px rgba(10, 25, 45, .28)}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body{margin:0;height:100%;overflow:hidden;background:var(--navy);color:var(--paper);font-family:var(--body);font-size:15px}#bg{position:fixed;top:0;right:0;bottom:0;left:0;z-index:0}#app{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1}.screen{position:absolute;top:0;right:0;bottom:0;left:0;display:none;flex-direction:column;align-items:center;padding:max(14px,env(safe-area-inset-top)) 14px max(14px,env(safe-area-inset-bottom));overflow-y:auto}.screen.on{display:flex}.center{justify-content:center}h1,h2,h3{margin:0;font-family:var(--heading);font-weight:700;line-height:1.15}.logo{font-size:clamp(38px,9vw,84px);color:#fff;text-align:center;letter-spacing:-.5px;text-shadow:0 4px 24px rgba(10,25,45,.45)}.logo em{font-style:normal;color:var(--teal)}.logo small{display:block;font-family:var(--body);font-weight:600;font-size:clamp(13px,2.4vw,19px);color:#e7f7f5;margin-top:14px;letter-spacing:3px;text-transform:uppercase}.brandline{margin-top:10px;font-size:13px;letter-spacing:1px;color:#d3eeee;text-shadow:0 1px 8px rgba(10,25,45,.6)}.sub{text-align:center;line-height:1.6;max-width:520px;text-shadow:0 1px 8px rgba(10,25,45,.55);margin:10px 0 0}.btn{font-family:var(--heading);font-weight:700;font-size:16px;color:var(--navy);background:var(--teal);border:0;border-radius:12px;padding:14px 22px;cursor:pointer;min-height:50px;box-shadow:0 4px 0 var(--teal-dark),0 8px 18px #0a192d40;transition:transform .08s,box-shadow .08s,filter .15s}.btn:hover{filter:brightness(1.06)}.btn:active{transform:translateY(3px);box-shadow:0 1px 0 var(--teal-dark),0 3px 8px #0a192d40}.btn:focus-visible,.lv:focus-visible,.marker:focus-visible{outline:3px solid #fff;outline-offset:3px}.btn.alt{background:var(--paper);box-shadow:0 4px #b9c2cc,0 8px 18px #0a192d40}.btn.dark{background:var(--navy);color:#fff;box-shadow:0 4px #13263f,0 8px 18px #0a192d4d}.btn:disabled{opacity:.5;cursor:not-allowed}.btn.small{font-size:13px;padding:8px 12px;min-height:40px;border-radius:10px}.stack{display:flex;flex-direction:column;gap:14px;width:min(340px,100%);margin-top:28px}.row{display:flex;gap:10px;flex-wrap:wrap;justify-content:center}.toggles{margin-top:26px}.panel{background:var(--paper);color:var(--text);border-radius:18px;box-shadow:var(--shadow);padding:22px}.mapwrap{position:relative;width:min(100%,calc((100vh - 200px) * 4 / 3),920px);aspect-ratio:4 / 3;border-radius:22px;overflow:hidden;box-shadow:0 0 0 5px var(--paper),var(--shadow);margin-top:12px}.mapwrap canvas{width:100%;height:100%;display:block}.marker{position:absolute;transform:translate(-50%,-50%);background:none;border:0;cursor:pointer;font-family:var(--heading);color:var(--navy);display:flex;flex-direction:column;align-items:center;gap:6px;padding:10px;min-width:48px;min-height:48px}.marker .dot{position:relative;width:20px;height:20px;border-radius:50%;background:var(--teal);border:4px solid #fff;box-shadow:0 2px 8px #0a192d66}.marker .dot:after{content:"";position:absolute;top:-10px;right:-10px;bottom:-10px;left:-10px;border-radius:50%;border:3px solid var(--teal);animation:ring 1.6s ease-out infinite}.marker .label{font-size:clamp(11px,1.8vw,15px);font-weight:700;background:#fff;padding:4px 11px;border-radius:999px;box-shadow:0 2px 10px #0a192d4d;white-space:nowrap}.marker .stars{font-size:11px;font-weight:700;color:#fff;background:var(--navy);padding:1px 8px;border-radius:999px}@keyframes ring{0%{transform:scale(.6);opacity:.9}to{transform:scale(1.8);opacity:0}}.levelgrid{display:grid;grid-template-columns:repeat(5,1fr);gap:12px;width:min(560px,100%);margin-top:20px}.lv{aspect-ratio:1;font-family:var(--heading);font-weight:700;background:var(--paper);color:var(--navy);border:0;border-radius:16px;box-shadow:0 4px #b9c2cc,var(--shadow);cursor:pointer;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;font-size:24px;min-height:64px;transition:transform .1s}.lv .st{font-size:13px;color:#e0a800;letter-spacing:1px}.lv:not(.locked):hover{transform:translateY(-3px)}.lv.locked{background:#fafaf88c;color:#6d7d90;cursor:not-allowed;box-shadow:none}.lv.locked .st{color:#6d7d90}#game{padding:max(8px,env(safe-area-inset-top)) 8px max(8px,env(safe-area-inset-bottom));gap:8px}.hud{width:min(100%,720px);background:var(--paper);color:var(--text);border-radius:16px;padding:8px 12px 10px;display:grid;gap:6px;box-shadow:var(--shadow)}.hud .top{display:flex;align-items:center;justify-content:space-between;gap:8px}.hud .title{font-family:var(--heading);font-weight:700;font-size:14px;line-height:1.25;text-align:center;flex:1;color:var(--navy);white-space:pre-line}.stats{display:grid;grid-template-columns:repeat(5,1fr);gap:6px}.stat{text-align:center}.stat b{display:block;font-weight:700;font-size:10px;letter-spacing:.8px;color:var(--slate);text-transform:uppercase}.stat span{font-family:var(--heading);font-weight:700;font-size:clamp(16px,4vw,22px);color:var(--navy)}.obj{font-size:12px;font-weight:700;color:var(--text);letter-spacing:.3px}.bar{height:10px;background:var(--mist);border-radius:999px;overflow:hidden}.bar i{display:block;height:100%;width:0;background:linear-gradient(90deg,var(--teal),#5fd8ce);border-radius:999px;transition:width .3s ease}.goals{display:flex;flex-wrap:wrap;gap:2px 14px;font-size:11px;font-weight:700;color:var(--slate)}.goals .ok{color:var(--teal-dark)}.goals .miss{color:#b07a1f}.bar.meter i{background:linear-gradient(90deg,#f2b33d,#e8604c)}.callout{width:min(100%,720px);min-height:52px;border-radius:14px;background:linear-gradient(90deg,var(--navy),var(--slate));color:#fff;padding:7px 14px;text-align:center;box-shadow:var(--shadow);opacity:0;transform:translateY(-6px);transition:opacity .25s,transform .25s;display:flex;flex-direction:column;justify-content:center;border-bottom:4px solid var(--teal)}.callout.on{opacity:1;transform:none}.callout b{font-family:var(--heading);font-size:clamp(16px,4.4vw,22px);line-height:1.15;color:#fff}.callout span{font-size:12px;color:#bfeeea;margin-top:2px}.callout.pop{animation:pop .35s ease-out}@keyframes pop{0%{transform:scale(.94)}60%{transform:scale(1.03)}to{transform:scale(1)}}.tip{width:min(100%,720px);font-size:13px;line-height:1.5;text-align:center;background:#fff;color:var(--navy);font-weight:600;padding:8px 12px;border-radius:12px;border-left:5px solid var(--teal);box-shadow:var(--shadow)}.tip:empty{display:none}#boardwrap{flex:1;width:100%;min-height:0;display:flex;align-items:center;justify-content:center}#boardwrap canvas{touch-action:none;border-radius:16px;box-shadow:0 0 0 4px var(--paper),var(--shadow)}.overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:#0a192da8;display:none;align-items:center;justify-content:center;padding:14px;z-index:5;overflow-y:auto;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px)}.overlay.on{display:flex}.card{width:min(440px,100%);text-align:center;display:flex;flex-direction:column;gap:16px}.card h2{font-size:clamp(24px,6vw,32px);color:var(--navy)}.bigstars{font-size:44px;letter-spacing:8px;color:#f2b33d}.bigstars .off{color:var(--mist)}.lines{display:grid;gap:9px;font-size:14px;text-align:left}.lines div{display:flex;justify-content:space-between;gap:10px;border-bottom:1px solid var(--mist);padding-bottom:6px}.lines b{font-family:var(--heading);color:var(--navy)}.lines .hi{color:var(--teal-dark)}.field{width:100%;font-family:var(--body);font-size:16px;padding:14px 12px;background:#fff;color:var(--text);border:2px solid var(--mist);border-radius:12px}.field:focus{outline:none;border-color:var(--teal)}.check{display:flex;gap:10px;align-items:flex-start;text-align:left;font-size:13px;line-height:1.5;cursor:pointer}.check input{width:22px;height:22px;flex:none;accent-color:var(--teal)}.err{color:#c0392b;font-size:13px;min-height:16px;font-weight:600}.panel .sub{color:var(--text);text-shadow:none}@media(max-width:520px){body{font-size:14px}.levelgrid{gap:8px}.lv{font-size:19px;min-height:52px}.btn{font-size:15px}}@media(max-height:560px)and (orientation:landscape){.hud{padding:4px 10px;gap:3px}.callout{min-height:40px;padding:3px 10px}}@media(prefers-reduced-motion:reduce){.marker .dot:after{animation:none}.callout{transition:none}}
