:root{--color-bg:#2a0f3d;--color-bg-accent:#4a1a5e;--color-text:#fff6fb;--color-text-muted:#e3c6dc;--color-primary:#ff5fa2;--color-gold:#ffd36b;--font-main:"Rubik", system-ui, -apple-system, "Segoe UI", Arial, sans-serif;--radius:16px;--gutter:16px;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;font-family:var(--font-main);color:var(--color-text);background:var(--color-bg);-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent}*,:before,:after{box-sizing:border-box}html,body{min-height:100%;margin:0}body{background:radial-gradient(circle at 50% 0%, var(--color-bg-accent), var(--color-bg) 70%);min-height:100dvh;overflow-x:hidden}#root{min-height:100dvh;padding-block:max(var(--gutter), env(safe-area-inset-top)) max(var(--gutter), env(safe-area-inset-bottom));padding-inline:var(--gutter)}.home{min-height:calc(100dvh - 2 * var(--gutter));text-align:center;flex-direction:column;justify-content:center;align-items:center;gap:12px;display:flex}.home-emoji{font-size:64px;line-height:1}.home h1{color:var(--color-gold);margin:0;font-size:clamp(32px,9vw,48px);font-weight:800}.home-tagline{margin:0;font-size:20px;font-weight:500}.home-note{margin:0;color:var(--color-text-muted);margin-block-start:24px;font-size:16px}.home-create{margin-block-start:32px}.page{flex-direction:column;gap:16px;max-width:480px;margin-inline:auto;padding-block-end:96px;display:flex}.title{text-align:center;color:var(--color-gold);margin:8px 0 0;font-size:clamp(26px,7vw,34px);font-weight:800}.center{text-align:center}.muted{color:var(--color-text-muted);margin:0}.stack{flex-direction:column;gap:12px;display:flex}.panel{border-radius:var(--radius);background:#ffffff12;border:1px solid #ffffff1f;padding:16px}.panel-title{margin:0 0 8px;font-size:20px;font-weight:700}.panel-subtitle{color:var(--color-text-muted);margin:0 0 8px;font-size:16px;font-weight:500}.bottom-bar{padding:12px var(--gutter) max(12px, env(safe-area-inset-bottom));background:linear-gradient(to top, var(--color-bg) 70%, transparent);justify-content:center;display:flex;position:fixed;inset-block-end:0;inset-inline:0}.bottom-bar .btn{width:100%;max-width:480px}.btn{font:inherit;cursor:pointer;min-height:52px;color:inherit;border:0;border-radius:999px;padding:12px 20px;font-size:18px;font-weight:700}.btn:disabled{opacity:.55;cursor:default}.btn-primary{background:var(--color-primary);color:#fff;box-shadow:0 6px 20px #ff5fa259}.btn-secondary{background:#ffffff1f;border:1px solid #fff3}.btn-danger{color:#fff;background:#c8324b}.btn-big{min-height:64px;font-size:22px}.btn-small{min-height:40px;padding:6px 16px;font-size:15px}.btn-link{min-height:44px;color:var(--color-text-muted);background:0 0;align-self:center;font-size:16px;font-weight:500;text-decoration:underline}.btn-player{text-align:start;font-size:20px}.field{flex-direction:column;gap:6px;display:flex}.field-label{font-weight:500}.input{font:inherit;min-height:52px;color:var(--color-text);background:#00000040;border:1px solid #ffffff40;border-radius:12px;padding:10px 14px;font-size:20px}.input:focus{outline:2px solid var(--color-primary);outline-offset:1px}.input-code{text-align:center;letter-spacing:.15em;font-size:24px}.range{width:100%;accent-color:var(--color-primary)}.error{background:#c8324b40;border:1px solid #ff788c80;border-radius:12px;flex-direction:column;align-items:flex-start;gap:8px;padding:10px 14px;display:flex}.error p{margin:0}.notice{background:#ffd36b26;border:1px solid #ffd36b80;border-radius:12px;flex-direction:column;align-items:flex-start;gap:8px;padding:10px 14px;display:flex}.notice p{margin:0}.emoji-grid{grid-template-columns:repeat(6,1fr);gap:8px;display:grid}.emoji-option{aspect-ratio:1;cursor:pointer;background:#ffffff14;border:2px solid #0000;border-radius:12px;font-size:28px}.emoji-option[aria-checked=true]{border-color:var(--color-primary);background:#ff5fa240}.player-list{flex-direction:column;gap:8px;margin:0;padding:0;list-style:none;display:flex}.player-row{background:#ffffff0d;border-radius:12px;align-items:center;gap:12px;padding:8px 12px;display:flex}.player-row.is-me{background:#ff5fa22e}.player-emoji{font-size:28px}.player-main{flex-direction:column;flex:1;min-width:0;display:flex}.player-name{flex-wrap:wrap;align-items:center;gap:6px;font-weight:700;display:flex}.player-sub{color:var(--color-text-muted);text-overflow:ellipsis;white-space:nowrap;font-size:14px;overflow:hidden}.player-score{color:var(--color-gold);font-size:20px;font-weight:800}.badge{color:var(--color-gold);background:#ffd36b33;border-radius:999px;padding:2px 8px;font-size:12px;font-weight:500}.badge-me{color:var(--color-text);background:#ffffff26}.qr-grid{gap:16px;display:grid}.qr-card{text-align:center;flex-direction:column;align-items:center;gap:8px;display:flex}.qr{aspect-ratio:1;background:#fff;border-radius:12px;width:min(240px,70vw)}.qr-note{color:var(--color-gold);margin:0;font-size:14px}.qr-url{color:var(--color-text-muted);word-break:break-all;margin:0;font-size:12px}.print-only{display:none}@media print{:root,body{color:#000!important;background:#fff!important}.no-print,.qr-card:not(.is-printing),.bottom-bar{display:none!important}.panel{background:0 0;border:0;padding:0}.qr-card.is-printing{padding-block-start:15vh}.qr-card.is-printing .print-only{display:block}.print-title{margin:0 0 16px;font-size:32px;font-weight:800}.qr{width:12cm}.qr-url{color:#000;font-size:14px}}.scanner{z-index:100;background:#000;flex-direction:column;display:flex;position:fixed;inset:0}.scanner-top{padding:max(12px, env(safe-area-inset-top)) var(--gutter) 12px;background:#0009;justify-content:space-between;align-items:center;gap:12px;display:flex}.scanner-title{margin:0;font-size:18px;font-weight:700}.scanner-view{flex:1;justify-content:center;align-items:center;min-height:0;display:flex;position:relative;overflow:hidden}.scanner-video{object-fit:cover;width:100%;height:100%;position:absolute;inset:0}.scanner-frame{aspect-ratio:1;border:4px solid #ffffffe6;border-radius:24px;width:min(70vw,300px);transition:border-color .2s;position:relative;box-shadow:0 0 0 100vmax #00000073}.scanner-frame.is-busy{border-color:var(--color-gold)}.scanner-hint,.scanner-problem{text-align:center;max-width:340px;margin:0;padding:16px;position:relative}.scanner-problem{background:#c8324b59;border-radius:12px}.scanner-bottom{padding:12px var(--gutter) max(16px, env(safe-area-inset-bottom));background:#0009;flex-direction:column;gap:10px;display:flex}.scanner-message{text-align:center;min-height:1.5em;margin:0}.scanner-actions{flex-wrap:wrap;justify-content:center;gap:8px;display:flex}.scanner-manual{gap:8px;display:flex}.scanner-manual .input{flex:1;min-width:0}.waiting{border-radius:var(--radius);color:var(--color-gold);background:#ffd36b1f;margin:0;padding:14px;font-weight:500}.small{font-size:14px}.panel-head{justify-content:space-between;align-items:baseline;gap:8px;margin-block-end:8px;display:flex}.panel-head .panel-title{margin:0}.status-bar{z-index:10;border-radius:var(--radius);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);text-align:center;background:#2a0f3deb;border:1px solid #ffffff2e;padding:14px 16px;font-size:20px;font-weight:700;position:sticky;inset-block-start:8px}.status-bar.is-highlight{background:var(--color-primary);color:#fff;border-color:#0000}.scoreboard{flex-direction:column;gap:6px;margin:0;padding:0;list-style:none;display:flex}.score-row.is-me .score-button{background:#ff5fa22e}.score-button{width:100%;color:inherit;font:inherit;text-align:start;background:#ffffff0d;border:0;border-radius:12px;align-items:center;gap:12px;min-height:56px;padding:8px 12px;display:flex}button.score-button{cursor:pointer}.score-emoji{font-size:28px}.score-main{flex-direction:column;flex:1;gap:6px;min-width:0;display:flex}.score-points{color:var(--color-gold);text-align:center;min-inline-size:2ch;font-size:24px;font-weight:800}.progress{background:#ffffff1f;border-radius:999px;block-size:8px;display:block;overflow:hidden}.progress-fill{border-radius:inherit;background:linear-gradient(to left, var(--color-gold), var(--color-primary));block-size:100%;transition:inline-size .4s;display:block}.badge-turn{color:var(--color-text);background:#ff5fa240}.badge-starter{color:var(--color-text-muted);white-space:nowrap;background:#ffffff1f}.timeline{flex-direction:column;gap:6px;margin:0;padding:0;list-style:none;display:flex;position:relative}.timeline-card{border-inline-start:4px solid var(--color-gold);background:#ffffff0f;border-radius:12px;align-items:center;gap:12px;padding:8px 12px;display:flex}.timeline-year{color:var(--color-gold);min-inline-size:4ch;font-size:22px;font-weight:800}.timeline-song{flex-direction:column;flex:1;min-width:0;display:flex}.timeline-title,.timeline-artist{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.timeline-title{font-weight:700}.timeline-artist{color:var(--color-text-muted);font-size:14px}.sheet-backdrop{z-index:50;background:#0000008c;justify-content:center;align-items:flex-end;display:flex;position:fixed;inset:0}.sheet{max-block-size:85dvh;inline-size:100%;max-inline-size:520px;padding:16px var(--gutter) max(16px, env(safe-area-inset-bottom));background:var(--color-bg-accent);border-start-start-radius:20px;border-start-end-radius:20px;flex-direction:column;gap:8px;display:flex;overflow-y:auto}.bride-banner{border-radius:var(--radius);background:linear-gradient(135deg, var(--color-gold), var(--color-primary));color:#2a0f3d;text-align:center;flex-direction:column;align-items:center;gap:4px;padding:18px 16px;animation:.5s ease-out pop-in;display:flex}.bride-banner-title{font-size:32px;font-weight:800}.bride-banner-note{font-weight:500}.song-card{border-radius:var(--radius);color:#2a0f3d;text-align:center;background:#fff;flex-direction:column;align-items:center;gap:4px;padding:20px 16px;display:flex;box-shadow:0 10px 30px #00000059}.song-card-label{color:#7a5a8c;font-size:14px;font-weight:500}.song-card-year{color:var(--color-primary);font-size:56px;font-weight:800;line-height:1.1}.song-card-title{font-size:22px;font-weight:700}.song-card-artist{color:#5a3a6c;font-size:17px}.position-text{color:var(--color-gold);margin:4px 0 0;font-size:24px;font-weight:800}.question{margin:0;font-size:20px;font-weight:700}.report-buttons{grid-template-columns:1fr 1fr;gap:12px;display:grid}.btn-right{color:#fff;background:#2fb36d}.btn-wrong{color:#fff;background:#c8324b}.result{border-radius:var(--radius);text-align:center;padding:18px 16px;animation:.4s ease-out pop-in}.result p{margin:4px 0}.result-right{background:#2fb36d38;border:1px solid #2fb36d99}.result-wrong{background:#ffffff14;border:1px solid #fff3}.result-title{font-size:28px;font-weight:800}.timeline-card.is-new{border-inline-start-color:var(--color-primary);background:#ff5fa24d;animation:.6s ease-out slide-in}@keyframes pop-in{0%{opacity:0;transform:scale(.85)}to{opacity:1;transform:scale(1)}}@keyframes slide-in{0%{opacity:0;transform:translateY(-12px)}to{opacity:1;transform:translateY(0)}}@media (prefers-reduced-motion:reduce){.bride-banner,.result,.timeline-card.is-new{animation:none}}
