/*! tailwindcss v4.2.1 | MIT License | https://tailwindcss.com */
@layer theme{:root,:host{--font-sans:ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--spacing:.25rem;--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,:after,:before{box-sizing:border-box;border:0 solid;margin:0;padding:0}::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab, currentcolor 50%, transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){-webkit-appearance:button;appearance:button}::file-selector-button{-webkit-appearance:button;appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.start{inset-inline-start:var(--spacing)}.hidden{display:none}}:root{--orange:#f3a14d;--orange-deep:#b96922;--ink:#142633;--blue:#235c79;--muted:#687983;--line:#929290;--panel:#ffffffd1}*{box-sizing:border-box}html{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}body{min-height:100vh;color:var(--ink);background:radial-gradient(circle at 9% 2%,#f3a14d2b,#0000 30rem),linear-gradient(#fbf8f2 0%,#eef4f5 100%);margin:0;font-family:Arial,Helvetica,sans-serif}button,input{font:inherit}button{-webkit-tap-highlight-color:transparent}.access-shell{place-items:center;min-height:100vh;padding:24px;display:grid}.access-card{text-align:center;background:#ffffffe6;border:1px solid #14263314;border-radius:28px;width:min(460px,100%);padding:34px;box-shadow:0 24px 70px #1c354126}.access-brand{color:var(--orange-deep);letter-spacing:.18em;margin:0;font-size:12px;font-weight:800}.access-logo{object-fit:contain;width:88px;height:88px;margin:18px auto}.access-card h1{color:var(--muted);margin:0;font-size:18px;line-height:1.3}.access-card h1 strong{color:var(--ink);font-size:1.25em}.access-copy{color:var(--muted);margin:12px 0 24px;font-size:14px}.access-card form{text-align:left}.access-card label{color:var(--ink);margin-bottom:7px;font-size:13px;font-weight:800;display:block}.access-card input{width:100%;color:var(--ink);background:#fff;border:1px solid #235c7938;border-radius:12px;outline:none;padding:13px 14px}.access-card input:focus{border-color:var(--orange);box-shadow:0 0 0 4px #f3a14d26}.access-card form button{color:#fff;background:var(--orange);cursor:pointer;border:0;border-radius:12px;width:100%;margin-top:14px;padding:14px;font-weight:800}.access-card form button:disabled{opacity:.65;cursor:wait}.access-error{color:#a1372c;margin:9px 0 0;font-size:13px}.access-help{color:#7b898f;margin:18px 0 0;font-size:12px}.admin-shell{min-height:100vh;padding:32px 18px}.admin-card{background:#ffffffeb;border:1px solid #14263314;border-radius:26px;width:min(620px,100%);margin:0 auto;padding:30px;box-shadow:0 24px 70px #1c354121}.admin-card h1{color:var(--ink);margin:8px 0 4px;font-size:28px}.admin-intro{color:var(--muted);margin:0 0 24px}.admin-card label{color:var(--ink);margin:10px 0 7px;font-size:13px;font-weight:800;display:block}.admin-card input{border:1px solid #235c7938;border-radius:11px;outline:none;width:100%;padding:12px 13px}.admin-card input:focus{border-color:var(--orange);box-shadow:0 0 0 4px #f3a14d26}.admin-section{border-top:1px solid #1426331a;margin-top:22px;padding-top:20px}.admin-section h2{color:var(--ink);margin:0 0 5px;font-size:18px}.admin-section p{color:var(--muted);margin:0 0 12px;font-size:14px}.admin-section button{color:#fff;background:var(--orange);cursor:pointer;border:0;border-radius:11px;width:100%;margin-top:12px;padding:13px;font-weight:800}.admin-danger button{background:#171717}.admin-section button:disabled{opacity:.6;cursor:wait}.admin-message{color:#285b3b;background:#e9f6ed;border-radius:10px;margin:18px 0 0;padding:11px;font-size:13px}.admin-card>a{color:var(--blue);text-align:center;margin-top:20px;font-size:13px;display:block}.app{width:min(1040px,100% - 30px);margin:0 auto;padding:26px 0 36px}.topbar{justify-content:space-between;align-items:flex-end;gap:20px;margin-bottom:18px;display:flex}.brand{color:var(--orange-deep);letter-spacing:.18em;margin:0 0 4px;font-size:12px;font-weight:800}.topbar h1{color:var(--muted);letter-spacing:.018em;white-space:nowrap;margin:0;font-size:clamp(12px,2vw,24px);font-weight:700;line-height:1.15}.topbar h1 strong{color:var(--ink);letter-spacing:-.02em;font-size:1.34em;font-weight:800}.ghost{color:var(--blue);cursor:pointer;background:#ffffffb3;border:1px solid #235c7938;border-radius:999px;padding:10px 15px;font-size:14px}.stage{background:#fff;border:1px solid #14263314;border-radius:24px;justify-content:center;align-items:center;min-height:clamp(280px,42vw,410px);display:flex;position:relative;overflow:hidden;box-shadow:0 22px 58px #1c354121}.stage-canvas{justify-content:center;align-items:center;display:flex;position:absolute;inset:0;container-type:inline-size}.school-logo{z-index:2;object-fit:contain;width:clamp(82px,14.5%,180px);height:auto;position:absolute;top:5%;right:5.5%}.visual{border:1.5px solid var(--line);border-radius:22px;width:min(88%,860px);padding:clamp(38px,7vw,68px) clamp(24px,5vw,50px);position:relative}.beats{grid-template-columns:repeat(4,1fr);place-items:center;gap:clamp(18px,5vw,76px);display:grid}.beat{aspect-ratio:1;background:#fff;border:2px solid #8d8d8a;border-radius:50%;width:clamp(52px,9.2vw,88px);transition:background-color 70ms,border-color 70ms,transform 90ms,box-shadow 90ms;position:relative}.beat.active{border-color:var(--orange);background:var(--orange);transform:scale(1.06);box-shadow:0 8px 20px #b9692233}.beat.active.pulse{animation:.15s ease-out pulse}.beat.active.offbeat:after{content:"";background:#ffffffdb;border-radius:50%;position:absolute;inset:31%}@keyframes pulse{50%{opacity:.5}}.stage-footer{grid-template-columns:1fr auto 1fr;align-items:end;gap:20px;display:grid;position:absolute;bottom:4.5%;left:5.5%;right:5.5%}.bpm-readout{font-variant-numeric:tabular-nums;justify-self:start;font-size:clamp(18px,2.8vw,28px)}.stage-brand{color:var(--orange);white-space:nowrap;flex-direction:column;justify-content:end;align-items:center;gap:0;font-size:clamp(6px,.85vw,9px);line-height:1;display:flex}.stage-brand img{opacity:.18;width:clamp(32px,4.4vw,46px);height:auto;margin-bottom:-7px}.stage-brand span{z-index:1;position:relative}.mode-readout{color:var(--muted);letter-spacing:.055em;text-align:right;text-transform:uppercase;justify-self:end;font-size:clamp(8px,1.05vw,11px);font-weight:800}.stage:-webkit-full-screen{background:#fff;border:0;border-radius:0;justify-content:center;align-items:center;width:100vw;height:100vh;display:flex}.stage:fullscreen{background:#fff;border:0;border-radius:0;justify-content:center;align-items:center;width:100vw;height:100vh;display:flex}.stage:-webkit-full-screen .stage-canvas{flex:none;width:min(100vw,177.778vh);height:min(100vh,56.25vw);position:relative;inset:auto}.stage:fullscreen .stage-canvas{flex:none;width:min(100vw,177.778vh);height:min(100vh,56.25vw);position:relative;inset:auto}.stage:-webkit-full-screen .visual{width:88%;padding:clamp(46px,6cqw,100px) clamp(32px,5cqw,80px)}.stage:fullscreen .visual{width:88%;padding:clamp(46px,6cqw,100px) clamp(32px,5cqw,80px)}.stage:-webkit-full-screen .beat{width:clamp(68px,8cqw,145px)}.stage:fullscreen .beat{width:clamp(68px,8cqw,145px)}.controls{background:var(--panel);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border:1px solid #14263314;border-radius:21px;width:100%;margin:20px auto 0;padding:21px;box-shadow:0 14px 40px #1c354114}.control-grid{grid-template-columns:1fr;gap:14px;display:grid}.group{min-width:0}.density-panel{background:#f3a14d14;border-radius:15px;padding:14px}.label{color:var(--muted);letter-spacing:.12em;margin:0 0 6px;font-size:11px;font-weight:800;display:block}.segmented{grid-template-columns:repeat(2,1fr);gap:7px;display:grid}.segmented button,.quick button{min-height:42px;color:var(--blue);cursor:pointer;background:#fff;border:1px solid #235c792b;border-radius:11px;padding:8px 10px}.segmented button.selected,.quick button.selected{border-color:var(--orange);color:#9b551b;background:#fff3e7;font-weight:800}.tempo{border-top:1px solid #1426331a;justify-content:space-between;align-items:center;gap:18px;margin-top:20px;padding-top:18px;display:flex}.adjust{align-items:center;gap:8px;display:flex}.adjust button{width:38px;height:38px;color:var(--blue);cursor:pointer;background:#fff;border:1px solid #235c792b;border-radius:11px;font-size:22px}.adjust input{width:84px;color:var(--ink);text-align:center;-moz-appearance:textfield;background:0 0;border:0;border-bottom:2px solid #f3a14da6;outline:none;padding:0 3px;font-size:34px;font-weight:800}.adjust input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.adjust input::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.adjust small{color:var(--muted);letter-spacing:.08em;font-size:13px;font-weight:700}.status{color:var(--muted);align-items:center;gap:8px;font-size:14px;display:flex}.status i{background:#aeb7bb;border-radius:50%;width:9px;height:9px}.status.live i{background:var(--orange);box-shadow:0 0 0 5px #f3a14d29}.tempo-range{width:100%;accent-color:var(--orange);cursor:pointer;margin:18px 0 13px}.quick{grid-template-columns:repeat(8,1fr);gap:7px;display:grid}.quick button{min-height:36px;padding:5px;font-size:13px}.volume{color:var(--muted);align-items:center;gap:13px;margin-top:16px;font-size:13px;display:flex}.volume input{accent-color:var(--orange);flex:1}.play{color:#fff;background:var(--orange);cursor:pointer;border:0;border-radius:14px;justify-content:center;align-items:center;gap:10px;width:100%;margin-top:18px;padding:15px 20px;font-weight:800;display:flex;box-shadow:0 10px 24px #d1762440}.play.running{background:var(--ink);box-shadow:0 10px 24px #1426332e}.play:disabled{opacity:.6;cursor:wait}.error{color:#a1372c;text-align:center;margin:12px 0 0;font-size:13px}.hint{color:#7b898f;text-align:center;margin:13px 0 0;font-size:12px}@media (max-width:640px){.app{width:min(100% - 20px,1040px);padding-top:17px}.topbar{align-items:center}.brand{font-size:10px}.topbar h1{white-space:normal}.ghost{padding:9px 12px}.stage{border-radius:19px;min-height:270px}.school-logo{width:22%;max-width:100px;top:5%;right:4.5%}.visual{width:93%;padding:36px 14px}.beats{gap:12px}.beat{width:clamp(42px,15vw,66px)}.stage-footer{gap:8px;bottom:4%;left:4%;right:4%}.stage-brand{font-size:6px}.stage-brand img{width:28px;margin-bottom:-5px}.bpm-readout{font-size:18px}.mode-readout{max-width:45%;font-size:7px}.controls{padding:16px}.tempo{align-items:flex-end}.quick{grid-template-columns:repeat(4,1fr)}}@media (prefers-reduced-motion:reduce){.beat{transition:none}.beat.active.pulse{animation:none}}
