/* Glass Bloom — stained glass rose window (ruby / cobalt / amber glass, dark lead, cathedral dusk) */
@font-face{font-family:"Cinzel Decorative";src:url("fonts/cinzel.woff") format("woff");font-weight:700;font-display:swap}
@font-face{font-family:"Alegreya Sans";src:url("fonts/alegreya.woff") format("woff");font-weight:800;font-display:swap}
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
:root{
  --night:#16122a;--plum:#2c1a38;--stone:#3b3548;--stone-l:#8d8499;--lead:#120f18;--cream:#f6ead2;--muted:#c9bcd8;
  --ruby:#d0213e;--ruby-l:#ff6f80;--cobalt:#2456d8;--cobalt-l:#6f9bff;--amber:#eb9a1f;--amber-l:#ffd777;--emerald:#17a463;--gold:#f0c060;
  --head:"Cinzel Decorative",Georgia,serif;--body:"Alegreya Sans",system-ui,-apple-system,"Segoe UI",sans-serif;
  --safe-top:env(safe-area-inset-top,0px);--safe-bottom:env(safe-area-inset-bottom,0px);
}
html,body{height:100%;overflow:hidden;background:var(--night);color:var(--cream);font-family:var(--body);font-weight:800;
  -webkit-tap-highlight-color:transparent;touch-action:manipulation;user-select:none;-webkit-user-select:none}
#app{position:relative;width:100%;height:100%;height:100dvh;overflow:hidden;background:radial-gradient(ellipse at 50% 30%,#3a2246,#16122a 70%)}
#game{display:block;width:100%;height:100%;touch-action:none;cursor:pointer}
button{font-family:inherit}
.hidden{display:none!important}
.screen{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;
  padding:calc(12px + var(--safe-top)) 12px calc(12px + var(--safe-bottom));
  background:rgba(10,7,20,.42);opacity:0;pointer-events:none;transition:opacity .25s ease;z-index:10;overflow-y:auto}
.screen.active{opacity:1;pointer-events:auto}
.panel{position:relative;width:min(396px,100%);margin:auto;padding:16px 18px 14px;text-align:center;
  background:linear-gradient(180deg,rgba(34,26,52,.95),rgba(22,17,36,.96));border:3px solid var(--lead);border-radius:20px;
  box-shadow:0 0 0 2px rgba(240,192,96,.55),0 0 0 6px var(--lead),0 0 40px rgba(208,33,62,.25),0 16px 40px rgba(0,0,0,.55)}
.panel::before{content:"";position:absolute;inset:0;border-radius:18px;pointer-events:none;opacity:.55;
  background:radial-gradient(circle at 10% 6%,rgba(208,33,62,.45),transparent 28%),radial-gradient(circle at 92% 10%,rgba(36,86,216,.5),transparent 30%),radial-gradient(circle at 88% 94%,rgba(235,154,31,.45),transparent 30%),radial-gradient(circle at 6% 92%,rgba(23,164,99,.32),transparent 26%)}
.panel>*{position:relative}
.panel.small{width:min(300px,100%)}
.panel.wide{width:min(540px,100%)}
.lang-picker{display:flex;gap:8px;justify-content:center;margin-bottom:4px}
.lang-btn{min-width:48px;min-height:34px;border:2px solid var(--lead);border-radius:10px;background:rgba(255,255,255,.08);color:var(--muted);font-family:var(--body);font-size:15px;cursor:pointer;box-shadow:inset 0 0 0 1px rgba(240,192,96,.35)}
.lang-btn.active{background:linear-gradient(160deg,var(--cobalt-l),var(--cobalt));color:#fff}
.badge{font-size:12.5px;letter-spacing:.16em;color:var(--amber-l);margin-top:4px}
h1{font-family:var(--head);font-weight:700;font-size:50px;line-height:.98;margin:4px 0 4px;color:var(--ruby-l);
  text-shadow:0 0 18px rgba(255,90,110,.55),0 3px 0 var(--lead)}
h1 span{color:var(--cobalt-l);text-shadow:0 0 18px rgba(111,155,255,.6),0 3px 0 var(--lead)}
h2{font-family:var(--head);font-weight:700;font-size:30px;color:var(--amber-l);margin-bottom:4px;line-height:1.05;text-shadow:0 0 14px rgba(255,200,90,.45),0 2px 0 var(--lead)}
.tagline{color:var(--cream);font-size:16px;margin-bottom:4px;line-height:1.2}
.ver{display:inline-block;font-size:11px;color:var(--gold);border:1.5px solid var(--gold);border-radius:8px;padding:0 8px;margin-bottom:4px}
.howto{text-align:left;font-size:14.5px;line-height:1.25;color:var(--muted);margin:4px 0 8px 20px}
.howto li{margin:3px 0}
.btn{display:block;width:100%;min-height:48px;margin:8px 0;border:3px solid var(--lead);border-radius:14px;cursor:pointer;font-family:var(--body);font-size:22px;letter-spacing:.02em;
  text-decoration:none;line-height:42px;transition:transform .08s,filter .15s;color:#fff;text-shadow:0 2px 0 rgba(0,0,0,.35);
  box-shadow:inset 0 0 0 1.5px rgba(255,236,190,.45),inset 0 -6px 12px rgba(0,0,0,.25),0 4px 0 var(--lead)}
.btn:hover{filter:brightness(1.12)}
.btn:active{transform:translateY(2px)}
.btn-play{background:radial-gradient(circle at 30% 25%,#ff9aa6,var(--ruby) 55%,#7a0a1d)}
.btn-alt{background:radial-gradient(circle at 30% 25%,#a8c2ff,var(--cobalt) 60%,#0f2a7c);font-size:19px}
.btn-daily{background:radial-gradient(circle at 30% 25%,#ffe3a0,var(--amber) 58%,#8a4a05)}
.btn-endless{background:radial-gradient(circle at 30% 25%,#97f0c4,var(--emerald) 58%,#075a33)}
.btn-ghost{background:rgba(255,255,255,.07);color:var(--cream);font-size:18px;min-height:40px;line-height:34px;box-shadow:inset 0 0 0 1.5px rgba(240,192,96,.3)}
.btn-tip{background:rgba(255,111,128,.12);color:#ffb3bd;font-size:17px;min-height:38px;line-height:32px;box-shadow:inset 0 0 0 1.5px rgba(255,111,128,.4)}
.btn-pair{display:flex;gap:8px}
.btn-pair .btn{flex:1;font-size:17px}
.hint{font-size:13.5px;color:var(--muted);margin-top:6px;line-height:1.25}
.keys{font-size:11.5px;opacity:.85}
.studio{font-family:var(--head);font-size:14px;color:var(--gold);margin-top:4px;letter-spacing:.08em}
.level-grid{display:grid;grid-template-columns:repeat(6,1fr);gap:6px;margin:6px 0 4px}
.level-grid h3{grid-column:1/-1;font-family:var(--head);font-weight:700;font-size:16px;text-align:left;margin-top:4px;color:var(--amber-l)}
.lv-btn{min-height:50px;border:2.5px solid var(--lead);border-radius:12px;color:#fff;font-family:var(--body);font-size:18px;cursor:pointer;
  display:flex;flex-direction:column;align-items:center;justify-content:center;line-height:1;padding:0;box-shadow:inset 0 0 0 1px rgba(255,236,190,.35),inset 0 -5px 10px rgba(0,0,0,.25)}
.lv-btn small{font-size:10.5px;color:#ffe08a;margin-top:3px;letter-spacing:.5px}
.lv-btn.c0{background:radial-gradient(circle at 30% 25%,#ff8d9b,#a3142c)}.lv-btn.c1{background:radial-gradient(circle at 30% 25%,#8fb0ff,#1c3fa8)}
.lv-btn.c2{background:radial-gradient(circle at 30% 25%,#ffd880,#b26a0b)}.lv-btn.c3{background:radial-gradient(circle at 30% 25%,#86e8b8,#0b7a46)}.lv-btn.c4{background:radial-gradient(circle at 30% 25%,#cfa3ff,#5a1e9a)}
.lv-btn.cur{outline:3px solid var(--gold);outline-offset:1px}
.lv-btn:disabled{opacity:.35;cursor:default;filter:grayscale(.6)}
.stars-big{display:flex;justify-content:center;gap:8px;min-height:62px;margin:2px 0;font-size:54px;line-height:1}
.stars-big span{display:inline-block;transform:scale(0);animation:pop .45s cubic-bezier(.3,1.6,.5,1) forwards;color:var(--gold);text-shadow:0 0 16px rgba(255,210,110,.8),0 3px 0 var(--lead)}
.stars-big span.off{color:#4a4258;text-shadow:0 3px 0 var(--lead)}
.stars-big span:nth-child(2){animation-delay:.18s}.stars-big span:nth-child(3){animation-delay:.36s}
@keyframes pop{to{transform:scale(1)}}
.result{font-family:var(--head);font-size:40px;color:var(--amber-l);line-height:1.1;text-shadow:0 0 14px rgba(255,200,90,.5)}
.result-sub{font-size:15px;color:var(--cream)}
.result-sub.small{font-size:13.5px;color:var(--muted)}
.new-record{font-family:var(--head);color:var(--ruby-l);font-size:20px;animation:pulse .8s ease-in-out infinite alternate}
@keyframes pulse{to{transform:scale(1.07)}}
.hud{position:absolute;left:0;right:0;top:0;z-index:5;padding:calc(6px + var(--safe-top)) 8px 0;pointer-events:none}
.hud-row{display:flex;align-items:center;gap:6px;max-width:660px;margin:0 auto}
.hud-block{flex:1;min-width:0;background:rgba(20,15,32,.82);border:2px solid var(--lead);border-radius:10px;padding:1px 4px 2px;text-align:center;box-shadow:inset 0 0 0 1px rgba(240,192,96,.35)}
.hud-label{display:block;font-size:10px;letter-spacing:.06em;color:var(--muted);text-transform:uppercase;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.hud-block span:last-child{font-size:18px;color:var(--cream);white-space:nowrap;line-height:1.1}
.hud-block.goal span:last-child{color:var(--gold);letter-spacing:1px;font-size:15px}
.hud-block.score span:last-child{color:var(--amber-l)}
.hud-block.bump{animation:bump .35s ease}
@keyframes bump{50%{transform:scale(1.14)}}
.icon-btn{pointer-events:auto;width:44px;height:44px;flex:0 0 44px;border:2px solid var(--lead);border-radius:12px;background:rgba(20,15,32,.85);color:var(--amber-l);font-size:16px;cursor:pointer;box-shadow:inset 0 0 0 1px rgba(240,192,96,.4)}
.icon-btn.off{color:#6d6480}
.coach{position:absolute;left:50%;transform:translateX(-50%);top:calc(60px + var(--safe-top));z-index:6;width:min(560px,calc(100% - 20px));
  background:rgba(24,18,38,.92);border:2px solid var(--lead);box-shadow:0 0 0 1.5px rgba(240,192,96,.6),0 8px 24px rgba(0,0,0,.45);border-radius:14px;
  padding:8px 12px;font-size:15.5px;line-height:1.25;color:var(--cream);display:flex;gap:8px;align-items:center;pointer-events:none;animation:coachIn .35s ease}
.coach-ico{font-size:20px;color:var(--gold)}
@keyframes coachIn{from{opacity:0;transform:translate(-50%,-6px)}}
.toast{position:absolute;left:50%;transform:translateX(-50%);bottom:calc(16px + var(--safe-bottom));z-index:7;background:rgba(24,18,38,.94);border:2px solid var(--lead);
  box-shadow:0 0 0 1.5px rgba(255,111,128,.5);border-radius:12px;padding:6px 14px;font-size:15px;color:var(--cream);pointer-events:none;white-space:nowrap}
.tray{position:absolute;inset:0;z-index:4;pointer-events:none}
.rot-btn{position:absolute;pointer-events:auto;width:54px;height:54px;border:3px solid var(--lead);border-radius:50%;cursor:pointer;color:#fff;font-size:28px;line-height:1;
  background:radial-gradient(circle at 30% 25%,#a8c2ff,var(--cobalt) 60%,#0f2a7c);box-shadow:inset 0 0 0 1.5px rgba(255,236,190,.45),0 3px 0 var(--lead);transform:translate(-50%,-50%)}
.rot-btn:active{transform:translate(-50%,-46%)}
.place-btn{position:absolute;pointer-events:auto;min-width:118px;height:46px;border:3px solid var(--lead);border-radius:14px;cursor:pointer;color:#fff;font-size:19px;
  background:radial-gradient(circle at 30% 25%,#97f0c4,var(--emerald) 58%,#075a33);box-shadow:inset 0 0 0 1.5px rgba(255,236,190,.45),0 3px 0 var(--lead);transform:translate(-50%,-50%);animation:pulse .7s ease-in-out infinite alternate}
.tray-lbl{position:absolute;font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);transform:translate(-50%,0);white-space:nowrap}
@media (max-height:700px){.howto{display:none}h1{font-size:42px}.btn{min-height:44px;line-height:38px;margin:6px 0}}
@media (max-width:360px){h1{font-size:40px}}
