*,*:before,*:after{box-sizing:border-box}html,body,#root{margin:0;min-height:100%;height:100%;font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;background:#000}button{cursor:pointer;font:inherit}input,select{font:inherit}.display-loading,.display-error,.display-empty{min-height:100vh;min-height:100dvh;display:flex;align-items:center;justify-content:center;background:#000;color:#fff;font-size:1.5rem;padding:2rem;text-align:center}.display-error{color:#f66}.display-empty{flex-direction:column;gap:.5rem}.stage-picker{min-height:100vh;min-height:100dvh;background:#000;color:#fff;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:2rem}.stage-picker__title{font-size:3rem;margin:0 0 2rem;font-weight:600}.stage-picker__grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:1.5rem;width:min(900px,100%)}.stage-picker__button{background:#1a1a1a;border:2px solid #333;color:#fff;padding:2rem 1.5rem;font-size:1.75rem;border-radius:12px;transition:border-color .2s,background .2s}.stage-picker__button:hover{border-color:#666;background:#222}.stage-picker__button--current{border-color:#5a8fd4;background:#1a2535}.timer-display{box-sizing:border-box;width:100%;height:100vh;height:100dvh;min-height:100vh;min-height:100dvh;max-height:100dvh;overflow:hidden;background:#000;color:#fff;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:clamp(.25rem,1.2dvh,.85rem);position:relative;padding:clamp(.5rem,2dvh,1.5rem) clamp(.75rem,2.5vw,1.5rem);padding-top:max(clamp(.5rem,2dvh,1.5rem),env(safe-area-inset-top));padding-bottom:max(clamp(.5rem,2dvh,1.5rem),env(safe-area-inset-bottom));padding-left:max(clamp(.75rem,2.5vw,1.5rem),env(safe-area-inset-left));padding-right:max(clamp(.75rem,2.5vw,1.5rem),env(safe-area-inset-right))}.timer-display:fullscreen,.timer-display:-webkit-full-screen{width:100%;height:100%;max-height:none;border-radius:0}.timer-display__fullscreen{position:absolute;top:max(.5rem,env(safe-area-inset-top));right:max(.5rem,env(safe-area-inset-right));z-index:2;background:#1a1a1a;border:2px solid #444;color:#fff;padding:.55rem .85rem;border-radius:8px;font-size:.9rem;font-weight:500}.timer-display__fullscreen:hover{border-color:#888;background:#222}.timer-display--fullscreen .timer-display__fullscreen{opacity:.35}.timer-display--fullscreen .timer-display__fullscreen:hover,.timer-display--fullscreen .timer-display__fullscreen:focus{opacity:1}html.display-immersive,html.display-immersive body,html.display-immersive #root{height:100%;width:100%;margin:0;overflow:hidden;background:#000;overscroll-behavior:none;touch-action:manipulation}html.display-immersive .timer-display,.timer-display--fullscreen{position:fixed;top:0;right:0;bottom:0;left:0;width:100%;height:100%;height:100dvh;min-height:100%;min-height:100dvh;max-height:none;overflow:hidden;z-index:9999}.timer-display__meta{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:center;gap:.25rem .65rem;max-width:100%;text-align:center;padding-inline:.5rem;flex-shrink:0}.timer-display:has(.timer-display__fullscreen) .timer-display__meta{padding-inline:3.5rem}.timer-display__meta-sep{color:#555;font-size:clamp(.9rem,3vmin,1.5rem);line-height:1}.timer-display__below{display:flex;flex-direction:column;align-items:center;gap:clamp(.2rem,1dvh,.6rem);flex-shrink:0}.timer-display__clock{margin-top:0;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;font-size:clamp(1.5rem,min(9vw,10dvh),5.5rem);font-variant-numeric:tabular-nums;color:#bbb;letter-spacing:.04em;line-height:1.05;font-weight:600}.timer-display__stage{font-size:clamp(.9rem,min(3.5vw,4.5dvh),1.75rem);color:#888;margin:0;text-transform:uppercase;letter-spacing:.1em;line-height:1.15}.timer-display__stage--link{background:none;border:none;padding:.2rem .4rem;border-radius:6px;cursor:pointer;color:inherit;font:inherit;text-transform:inherit;letter-spacing:inherit}.timer-display__stage--link:hover{color:#fff;background:#ffffff0f}.timer-display__slot{font-size:clamp(1rem,min(4vw,5.5dvh),2.5rem);color:#ccc;margin:0;line-height:1.15}.timer-display__countdown{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;font-size:clamp(2.5rem,min(18vw,34dvh),14rem);font-variant-numeric:tabular-nums;line-height:.95;font-weight:700;flex:0 1 auto;min-width:0;align-self:stretch;width:100%;max-width:100%;box-sizing:border-box;display:block;text-align:center;overflow:hidden;white-space:nowrap;padding-inline:.5rem}.fit-text__inner{display:inline-block;white-space:nowrap;max-width:none}.timer-display__countdown--idle{color:#ccc}.timer-display__countdown--waiting{color:#ff9800}.timer-display__countdown--ok{color:#2ecc71}.timer-display__countdown--warn{color:#ff9800}.timer-display__countdown--critical{color:#f33}.timer-display__countdown--overtime{color:#f33;animation:flash-red 1s ease-in-out infinite}.timer-display__range{margin-top:0;font-size:clamp(1rem,min(5vw,6dvh),3.25rem);color:#888;font-variant-numeric:tabular-nums;line-height:1.1}.timer-display--tone-waiting .timer-display__range,.timer-display--tone-warn .timer-display__range{color:#cc7a00}.timer-display--tone-ok .timer-display__range{color:#1f8f4d}.timer-display--tone-critical .timer-display__range,.timer-display--tone-overtime .timer-display__range{color:#f66}.timer-display__hint{margin-top:0;font-size:clamp(.7rem,2.2dvh,1.1rem);color:#666;text-transform:uppercase;letter-spacing:.15em;flex-shrink:0}@media(orientation:landscape)and (max-height:560px){.timer-display{gap:.2rem;padding:.35rem .75rem;padding-top:max(.35rem,env(safe-area-inset-top));padding-bottom:max(.35rem,env(safe-area-inset-bottom));padding-left:max(.75rem,env(safe-area-inset-left));padding-right:max(.75rem,env(safe-area-inset-right))}.timer-display__fullscreen{top:max(.35rem,env(safe-area-inset-top));right:max(.35rem,env(safe-area-inset-right));padding:.3rem .55rem;font-size:.75rem}.timer-display__meta{padding-inline:.35rem;gap:.2rem .45rem}.timer-display:has(.timer-display__fullscreen) .timer-display__meta{padding-inline:4rem}.timer-display__stage{font-size:clamp(.75rem,3.2dvh,1.1rem)}.timer-display__slot{font-size:clamp(.85rem,4dvh,1.35rem)}.timer-display__countdown{font-size:clamp(2.5rem,min(28vw,52dvh),16rem)}.timer-display__below{flex-direction:row;flex-wrap:wrap;justify-content:center;align-items:baseline;gap:.35rem 1.25rem}.timer-display__clock{font-size:clamp(1.1rem,min(8vw,12dvh),2.75rem)}.timer-display__range{font-size:clamp(.95rem,min(6vw,9dvh),2.1rem)}.timer-display__hint{font-size:clamp(.65rem,2.5dvh,.9rem)}}@media(orientation:landscape)and (max-height:420px){.timer-display__countdown{font-size:clamp(2.25rem,min(30vw,58dvh),14rem)}.timer-display__meta{max-height:1.4em;overflow:hidden}}@keyframes flash-red{0%,to{opacity:1}50%{opacity:.35}}.admin-loading,.admin-login{min-height:100vh;display:flex;align-items:center;justify-content:center;background:#111;color:#fff;padding:2rem}.admin-login__form{width:min(400px,100%);display:flex;flex-direction:column;gap:1rem;background:#1a1a1a;padding:2rem;border-radius:12px;border:1px solid #333}.admin-login__form h1{margin:0;font-size:1.5rem}.admin-login__form label{display:flex;flex-direction:column;gap:.35rem;font-size:.875rem;color:#aaa}.admin-login__form input{padding:.6rem .75rem;border:1px solid #444;border-radius:6px;background:#111;color:#fff}.admin-login__form button,.admin-dashboard button{padding:.6rem 1rem;border:1px solid #444;border-radius:6px;background:#2a2a2a;color:#fff}.admin-login__form button:hover,.admin-dashboard button:hover{background:#333}.admin-error{color:#f66;margin:0}.admin-dashboard{min-height:100vh;background:#111;color:#fff}.admin-header{display:flex;justify-content:space-between;align-items:flex-start;padding:1.5rem 2rem;border-bottom:1px solid #333;gap:1rem}.admin-header h1{margin:0}.admin-header p{margin:.25rem 0 0;color:#888}.admin-header__actions{display:flex;gap:.75rem;align-items:center;flex-wrap:wrap}.admin-nav{display:flex;gap:.35rem;margin-right:.5rem}.admin-nav button{background:transparent;border:1px solid transparent;color:#aaa}.admin-nav button.active,.admin-nav button:hover{border-color:#444;background:#222;color:#fff}.admin-header__actions a{color:#8ab4ff}.admin-main--full{padding:1.5rem 2rem}.role-badge{display:inline-block;margin-left:.35rem;padding:.1rem .45rem;border-radius:999px;font-size:.75rem;text-transform:uppercase;letter-spacing:.04em;vertical-align:middle}.role-badge--admin{background:#2a3a1e;color:#b6e08a;border:1px solid #3f5a2a}.role-badge--editor{background:#1e2a3a;color:#8ab4ff;border:1px solid #2a3a55}.user-management h2{margin:0 0 .35rem}.stage-access-field{margin:1rem 0}.stage-access-label{display:block;margin-bottom:.5rem;font-size:.85rem;color:#aaa}.stage-access-list{display:flex;flex-wrap:wrap;gap:.5rem 1rem}.stage-access-item{display:inline-flex;align-items:center;gap:.4rem;font-size:.9rem;cursor:pointer}.stage-access-item input{margin:0}.admin-layout{display:grid;grid-template-columns:280px 1fr;min-height:calc(100vh - 100px)}.admin-sidebar{padding:1.5rem;border-right:1px solid #333}.admin-sidebar h2{margin:0 0 1rem;font-size:1rem;color:#888;text-transform:uppercase;letter-spacing:.05em}.admin-stage-list{list-style:none;padding:0;margin:0 0 1rem}.admin-stage-list li button{width:100%;text-align:left;padding:.75rem;background:transparent;border:1px solid transparent;color:#ccc;border-radius:6px}.admin-stage-list li button.active,.admin-stage-list li button:hover{background:#222;border-color:#444;color:#fff}.admin-create-stage{display:flex;flex-direction:column;gap:.5rem}.admin-create-stage input{padding:.6rem;border:1px solid #444;border-radius:6px;background:#1a1a1a;color:#fff}.admin-main{padding:1.5rem 2rem}.admin-card{background:#1a1a1a;border:1px solid #333;border-radius:12px;padding:1.25rem;margin-bottom:1rem}.admin-card h3{margin:0 0 1rem}.admin-form-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:1rem;margin-bottom:1rem}.admin-form-grid label{display:flex;flex-direction:column;gap:.35rem;font-size:.875rem;color:#aaa}.admin-form-grid input,.admin-form-grid select{padding:.6rem;border:1px solid #444;border-radius:6px;background:#111;color:#fff}.admin-manual-actions{display:flex;gap:.5rem;align-items:flex-end}.stage-editor__header{display:flex;justify-content:space-between;align-items:center;margin-bottom:1rem}.stage-editor__header h2{margin:0}button.danger{border-color:#633;background:#3a1a1a}button.danger:hover{background:#4a2020}.admin-preview__display{background:#000;border-radius:8px;padding:2rem;text-align:center}.admin-preview__display.overtime,.admin-preview__display.tone-overtime,.admin-preview__display.tone-critical{color:#f33}.admin-preview__display.tone-waiting,.admin-preview__display.tone-warn{color:#ff9800}.admin-preview__display.tone-ok{color:#2ecc71}.admin-preview__countdown{font-family:ui-monospace,monospace;font-size:3rem;font-variant-numeric:tabular-nums}.admin-preview__clock{margin-top:.35rem;font-family:ui-monospace,monospace;font-size:1.1rem;color:#aaa;font-variant-numeric:tabular-nums}.admin-preview__range{margin-top:.5rem;font-size:1.25rem;color:#888}.admin-preview__status{margin-top:.75rem;font-size:.875rem;color:#666}.admin-preview__slot{margin-bottom:.5rem;color:#aaa;text-transform:uppercase;letter-spacing:.08em}.admin-muted{color:#888}.admin-hint{margin:1rem 0 0;color:#888;font-size:.875rem;line-height:1.4}.slot-table-wrap{overflow-x:auto}.slot-table{width:100%;border-collapse:collapse;font-size:.9rem}.slot-table th{text-align:left;color:#888;font-weight:500;padding:.5rem;border-bottom:1px solid #333}.slot-table td{padding:.5rem;vertical-align:middle;border-bottom:1px solid #2a2a2a}.slot-table input,.slot-table select{width:100%;min-width:9rem;padding:.45rem .5rem;border:1px solid #444;border-radius:6px;background:#111;color:#fff}.slot-table__row--active{background:#1e2a1e}.slot-table__row--invalid{background:#2a1a1a}.slot-input--invalid{border-color:#a44!important}.slot-actions{display:flex;flex-wrap:wrap;gap:.35rem}@media(max-width:800px){.admin-login{padding:1rem;align-items:flex-start;padding-top:max(1.5rem,env(safe-area-inset-top))}.admin-login__form{padding:1.25rem}.admin-header{flex-direction:column;align-items:stretch;padding:1rem;padding-top:max(1rem,env(safe-area-inset-top))}.admin-header h1{font-size:1.35rem}.admin-header__actions{width:100%;flex-direction:column;align-items:stretch;gap:.5rem}.admin-nav{display:grid;grid-template-columns:1fr 1fr;gap:.35rem;margin-right:0;width:100%}.admin-nav button{min-height:44px}.admin-header__actions>a,.admin-header__actions>button{min-height:44px;display:inline-flex;align-items:center;justify-content:center;text-align:center}.admin-error--banner{margin:0;padding:.75rem 1rem}.admin-layout{grid-template-columns:1fr}.admin-sidebar{border-right:none;border-bottom:1px solid #333;padding:1rem}.admin-stage-list{display:flex;gap:.5rem;overflow-x:auto;-webkit-overflow-scrolling:touch;padding-bottom:.25rem;margin-bottom:.75rem}.admin-stage-list li{flex:0 0 auto}.admin-stage-list li button{width:auto;white-space:nowrap;min-height:44px;padding:.65rem .9rem;border-color:#333;background:#1a1a1a}.admin-create-stage{flex-direction:row;align-items:stretch}.admin-create-stage input{flex:1;min-width:0;min-height:44px}.admin-create-stage button{flex:0 0 auto;min-height:44px}.admin-main,.admin-main--full{padding:1rem;padding-bottom:max(1rem,env(safe-area-inset-bottom))}.admin-card{padding:1rem}.admin-form-grid{grid-template-columns:1fr}.admin-form-grid input,.admin-form-grid select,.admin-login__form input,.admin-login__form button{min-height:44px}.stage-editor__header{flex-direction:column;align-items:stretch;gap:.75rem}.admin-manual-actions{flex-wrap:wrap;width:100%}.admin-manual-actions button,.admin-dashboard .admin-card>button,.slot-actions button{min-height:44px;flex:1 1 auto}.admin-preview__display{padding:1.25rem 1rem}.admin-preview__countdown{font-size:clamp(1.75rem,12vw,3rem)}.slot-table-wrap{overflow:visible}.slot-table,.slot-table tbody,.slot-table tr,.slot-table td{display:block;width:100%}.slot-table thead{display:none}.slot-table tr{border:1px solid #333;border-radius:10px;margin-bottom:.75rem;padding:.75rem;background:#151515}.slot-table__row--active{border-color:#3f5a2a}.slot-table__row--invalid{border-color:#633}.slot-table td{border:none;padding:.4rem 0;display:grid;grid-template-columns:6.5rem minmax(0,1fr);gap:.5rem;align-items:center}.slot-table td:before{content:attr(data-label);color:#888;font-size:.75rem;text-transform:uppercase;letter-spacing:.04em}.slot-table td[data-label=Actions]{grid-template-columns:1fr}.slot-table td[data-label=Actions]:before{margin-bottom:.15rem}.slot-table input,.slot-table select{width:100%;min-width:0;min-height:44px}.slot-actions{width:100%}}
