:root{--bg:#0e3a44;--bg2:#145566;--ink:#17323b;--card:#fffaf0;--mus:#ffbe0b;--mus2:#d99a00;--mint:#2ec4b6;--coral:#ff5a5f;--mut:#6a7d84;--soft:#d7ecef}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html,body{margin:0;height:100%;background:var(--bg);color:#fff;font-family:"Segoe UI",Roboto,system-ui,sans-serif;overscroll-behavior:none;user-select:none;-webkit-user-select:none}
#app{position:fixed;inset:0;overflow:hidden;background:linear-gradient(165deg,#13505e 0%,#0e3a44 55%,#0a2c35 100%)}
#app:before{content:"";position:absolute;inset:0;opacity:.06;pointer-events:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='48' height='48'%3E%3Cpath d='M0 18h48M0 30h48' stroke='%23fff' stroke-width='2'/%3E%3Cpath d='M6 14v20M18 14v20M30 14v20M42 14v20' stroke='%23fff' stroke-width='3'/%3E%3C/svg%3E");background-size:48px 48px}
.screen{position:absolute;inset:0;display:none;flex-direction:column;overflow-y:auto;padding:calc(env(safe-area-inset-top,0px) + 14px) 16px calc(env(safe-area-inset-bottom,0px) + 18px)}
.screen.on{display:flex;animation:in .25s ease}
.screen>*{flex-shrink:0}
@keyframes in{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
h1,h2,h3{margin:0}
button{font:inherit;border:0;cursor:pointer;color:inherit;background:none}
.top{display:flex;align-items:center;gap:10px;margin-bottom:12px}
.top h2{flex:1;font-size:21px}
.back{width:44px;height:44px;border-radius:14px;background:var(--card);color:var(--ink);box-shadow:0 3px 0 #0003;font-size:22px;flex:none}
.muted{color:#b9d6dc;font-size:14px;line-height:1.45}
.muted.small{font-size:13px;margin-top:16px}
/* Logo: eigene Marke SBX mit Schnecke */
.sbx{display:inline-flex;align-items:center;gap:4px;background:var(--mus);color:var(--ink);border-radius:999px;padding:3px 12px 3px 8px;font-size:20px;line-height:1;box-shadow:0 3px 0 var(--mus2)}
.sbx b{font-weight:900;letter-spacing:.5px;font-style:normal}
.sbx i{font-style:normal;font-size:18px}
.hero{background:var(--card);color:var(--ink);border-radius:24px;padding:18px;position:relative;overflow:hidden;box-shadow:0 10px 30px #0005}
.hero:after{content:"";position:absolute;left:0;right:0;bottom:0;height:40px;background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 400 40' preserveAspectRatio='none'%3E%3Cpath d='M0 40V26l40-16 30 12 50-22 40 20 30-8 50 20 40-18 40 16 40-12 40 18v4z' fill='%230e3a44' opacity='.10'/%3E%3Cpath d='M0 40v-4h400v4z' fill='%230e3a44' opacity='.25'/%3E%3C/svg%3E") bottom/100% 100% no-repeat;pointer-events:none}
.logo{display:flex;align-items:center;gap:10px;font-weight:900;font-size:32px;letter-spacing:-.5px}
.sub{margin:10px 0 12px;font-size:15px;line-height:1.4;color:#34525b}
.rank{display:flex;justify-content:space-between;align-items:baseline;gap:8px;flex-wrap:wrap}
.rk{font-weight:800;font-size:17px}
.muted2{font-size:13px;color:var(--mut)}
.bar{height:9px;background:#e6ece6;border-radius:9px;margin-top:6px;overflow:hidden}
.bar i{display:block;height:100%;background:linear-gradient(90deg,var(--mint),var(--mus));border-radius:9px;transition:width .6s}
.stats{display:flex;gap:6px;margin-top:12px;flex-wrap:wrap;position:relative;z-index:1}
.pill{background:#e3f1f2;color:#0e3a44;border-radius:999px;padding:5px 11px;font-weight:700;font-size:13px;white-space:nowrap}
.grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:14px}
.tile{background:var(--card);color:var(--ink);border-radius:20px;padding:14px;text-align:left;box-shadow:0 4px 0 #0003,0 6px 16px #0002;display:flex;flex-direction:column;gap:4px;min-height:104px;position:relative;transition:transform .1s}
.tile:active{transform:scale(.97)}
.tile .ic{width:46px;height:46px;border-radius:14px;background:#e3f1f2;display:flex;align-items:center;justify-content:center;font-size:26px}
.tile b{font-size:16px}
.tile small{color:var(--mut);font-size:12.5px;line-height:1.3}
.tile.big{grid-column:span 2;flex-direction:row;align-items:center;gap:14px;min-height:88px;border:3px solid var(--mus)}
.tile.big .ic{width:62px;height:62px;font-size:36px;background:var(--bg);flex:none}
.tile.big b{font-size:19px;display:block}
.tile .tag{position:absolute;right:10px;top:10px;background:var(--mus);color:#3a2a00;font-weight:800;font-size:11px;border-radius:8px;padding:3px 7px}
.tile .tag.done{background:var(--mint);color:#fff}
.btn{background:var(--mus);color:var(--ink);font-weight:800;font-size:18px;border-radius:16px;padding:15px 18px;box-shadow:0 4px 0 var(--mus2);width:100%;margin-top:10px}
.btn:active{transform:translateY(3px);box-shadow:0 1px 0 var(--mus2)}
.btn.sec{background:#ffffff1f;color:#fff;box-shadow:0 4px 0 #0003}
.ds{background:#0a2c35;border:2px dashed #ffbe0b88;border-radius:18px;padding:12px 14px;margin-top:14px;font-size:14.5px;line-height:1.45;color:#fdf3d0}
.dsh{font-weight:800;color:var(--mus);font-size:13px;margin-bottom:4px;text-transform:uppercase;letter-spacing:.5px}
/* Level-Auswahl */
.lvgrid{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}
.lv{background:var(--card);color:var(--ink);border-radius:16px;padding:10px 4px 8px;display:flex;flex-direction:column;align-items:center;gap:3px;box-shadow:0 3px 0 #0003;min-height:92px}
.lv .n{font-size:22px;font-weight:900;width:38px;height:38px;border-radius:12px;background:var(--bg);color:#fff;display:flex;align-items:center;justify-content:center}
.lv.done .n{background:var(--mint)}
.lv .nm{font-size:10.5px;font-weight:700;line-height:1.15;text-align:center;min-height:24px;display:flex;align-items:center}
.lv .st{font-size:13px;color:var(--mus2);letter-spacing:1px}
.lv.lock{opacity:.55}
.lv.lock .n{background:#9fb1b5;font-size:18px}
.lv.paid{opacity:.8}.lv.paid .n{background:var(--mus)}.lv .vv{font-size:9.5px;font-weight:800;color:#3a2a00;background:var(--mus);border-radius:6px;padding:1px 5px;letter-spacing:0}
.off{color:#cfd6d4}
/* Spiel */
#s-game{padding:0;background:#0a2c35}
#s-game.on{animation:none}
.hud{padding:calc(env(safe-area-inset-top,0px) + 8px) 10px 6px;background:var(--bg);box-shadow:0 2px 10px #0005;position:relative;z-index:2}
.hrow{display:flex;align-items:center;gap:8px}
.hb{width:40px;height:40px;border-radius:12px;background:#ffffff1f;color:#fff;font-size:17px;font-weight:800;flex:none}
.hname{flex:1;min-width:0;display:flex;flex-direction:column;line-height:1.15}
.hname b{font-size:15px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.hname span{font-size:13px;color:var(--mus);font-weight:800;font-variant-numeric:tabular-nums;letter-spacing:.5px}
.stats2{margin-top:6px;gap:5px}
.stats2 .m{background:#ffffff14;border-radius:10px;padding:4px 6px;display:flex;flex-direction:column;align-items:center;min-width:0;flex:1}
.stats2 .m.wut{flex:1.9;align-items:stretch}
.stats2 .k{font-size:10px;color:#b9d6dc;white-space:nowrap;font-weight:700}
.stats2 .v{font-size:15px;font-weight:900;font-variant-numeric:tabular-nums}
.stats2 .v.good{color:#7dffb0}.stats2 .v.bad{color:#ffb3a8}
.wbar{display:block;height:8px;background:#ffffff26;border-radius:8px;overflow:hidden;margin-top:5px}
.wbar i{display:block;height:100%;width:0;background:var(--mint);transition:width .4s,background .4s}
#cvwrap{flex:1;position:relative;min-height:0;touch-action:none}
#cv{position:absolute;left:0;top:0;display:block;touch-action:none}
.ticker{display:flex;gap:8px;align-items:flex-start;background:#0a2c35;border-top:2px solid #ffbe0b55;padding:8px 12px calc(env(safe-area-inset-bottom,0px) + 8px);font-size:13px;line-height:1.35;color:#fdf3d0;min-height:52px}
.ticker .mic{font-size:16px}
.ticker .tx{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.ticker.flash{animation:flash .8s ease}
.ticker.notb,.ticker.wrong,.ticker.miss{color:#ffd9d4}
@keyframes flash{0%{background:#ffbe0b55}100%{background:#0a2c35}}
#ov{position:absolute;inset:0;display:none;align-items:center;justify-content:center;padding:14px;background:#0a2c35aa;z-index:3;overflow-y:auto}
#ov .card{background:var(--card);color:var(--ink);border-radius:22px;padding:18px;width:100%;max-width:440px;box-shadow:0 14px 40px #0007;max-height:100%;overflow-y:auto}
#ov h3{font-size:22px;margin:2px 0 8px}
#ov p{margin:0 0 10px;font-size:15px;line-height:1.45;color:#34525b}
.kicker{font-size:12px;font-weight:800;text-transform:uppercase;letter-spacing:.6px;color:var(--mus2)}
.goal{background:#e3f1f2;border-radius:12px;padding:9px 11px;font-size:14px;margin-bottom:10px}
.legend{display:flex;flex-wrap:wrap;gap:6px 10px;margin:4px 0 4px}
.legend span{display:flex;align-items:center;gap:5px;font-size:13px;font-weight:700}
.legend i{width:20px;height:20px;border-radius:50%;color:#fff;font-style:normal;font-size:10px;font-weight:900;display:flex;align-items:center;justify-content:center;box-shadow:0 0 0 2px #fff,0 1px 3px #0005}
#ov .btn.sec{background:#e3f1f2;color:var(--ink);box-shadow:0 4px 0 #c3d6d8}
.help p{margin:0 0 9px;font-size:14.5px;line-height:1.45}
.helpbox{color:var(--ink)}
.info.helpbox .help{display:block;padding:10px 0 2px;border:0}
/* Ergebnis */
.medal{font-size:78px;text-align:center;margin-top:6px;filter:drop-shadow(0 6px 10px #0005)}
.rt{text-align:center;font-size:24px;margin-top:4px}
.bigstars{text-align:center;font-size:34px;color:var(--mus);letter-spacing:4px;margin-top:4px}
.bigstars .off{color:#ffffff30}
.big-score{font-size:54px;font-weight:900;text-align:center;margin:8px 0 0;line-height:1}
.big-score small{display:block;font-size:14px;font-weight:700;color:#b9d6dc;margin-top:6px}
.rec{text-align:center;margin-top:8px;font-weight:900;color:var(--mus)}
.quip{text-align:center;font-size:15px;line-height:1.45;color:#d7ecef;margin:10px 4px 0}
.reslist,.info{background:var(--card);color:var(--ink);border-radius:18px;padding:6px 14px;margin-top:12px}
.reslist div,.info div{display:flex;justify-content:space-between;gap:10px;padding:8px 0;border-bottom:1px solid #ece4d3;font-size:14.5px}
.reslist div:last-child,.info div:last-child{border:0}
.info div span:last-child{font-weight:700;text-align:right}
.info .dim{opacity:.45}
.info .stx{color:var(--mus2);letter-spacing:1px}
.sec-h{font-size:16px;margin:16px 2px 0;color:var(--mus)}
#toast{position:fixed;left:50%;bottom:calc(env(safe-area-inset-bottom,0px) + 70px);transform:translateX(-50%);background:var(--card);color:var(--ink);padding:11px 18px;border-radius:14px;font-weight:700;font-size:15px;display:none;z-index:20;max-width:90%;text-align:center;box-shadow:0 6px 20px #0006}
#fx{position:fixed;inset:0;pointer-events:none;z-index:15}
.conf{position:absolute;width:9px;height:13px;border-radius:2px}
@media (min-width:700px){.screen{padding-left:calc(50% - 320px);padding-right:calc(50% - 320px)}#s-game{padding:0}}
