html body.kiosk,html body.app{--night: #16120f;--floor: #1d1814;--wall: #b89d7a;--wall-soft: #4a3f34;--text: #f2e8da;--muted: #a39280;--light: #ffc864;--light-hot: #ffe4a8;--on-ink: #2b1a00;--ember: #d9483e;--moon: #a9cbe6;--panel: #1f1914;--raised: #2a221b;--edge: #3a3027;background-color:var(--night);color:var(--text);touch-action:manipulation}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}.lc .icon{fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;flex:none}.lc .btn{font:inherit;color:var(--text);background:var(--raised);border:1.5px solid var(--edge);border-radius:14px;min-height:60px;font-size:16px;font-weight:700;display:flex;align-items:center;justify-content:center;gap:8px;padding:0 10px;white-space:nowrap;transition:background .18s ease-out,border-color .18s ease-out,color .18s ease-out,transform .12s ease-out}.lc .btn:active:not(:disabled),.lc .on-chip:active:not(:disabled){transform:scale(.97)}.lc .btn:focus-visible,.lc .on-chip:focus-visible{outline:2px solid var(--text);outline-offset:2px}.lc .btn:disabled,.lc .on-chip:disabled{opacity:.38}.lc .btn.floor.current{background:var(--text);color:var(--night);border-color:var(--text)}.lc .btn.out.on{background:var(--light);color:var(--on-ink);border-color:var(--light)}.lc .btn.alloff{background:#352b22}.lc .count{min-width:20px;height:20px;border-radius:10px;background:var(--light);color:var(--on-ink);font-size:12px;font-variant-numeric:tabular-nums;display:inline-flex;align-items:center;justify-content:center;padding:0 5px}.lamp-row{display:grid;grid-template-columns:1.2fr 1fr 1fr;gap:8px}.on-head{display:flex;align-items:baseline;gap:8px;margin-top:4px}.on-head h2{font-size:15px;font-weight:700;color:var(--muted)}.on-head .n{font-variant-numeric:tabular-nums;color:var(--light);font-weight:700;font-size:15px}.on-list{display:flex;flex-wrap:wrap;gap:8px;align-content:flex-start}.on-chip{font:inherit;background:#ffc8641a;color:var(--light-hot);text-align:left;border:1.5px solid rgba(255,200,100,.4);border-radius:14px;min-height:52px;padding:5px 8px 5px 12px;display:inline-flex;align-items:center;gap:8px;transition:transform .12s ease-out;max-width:100%}.on-chip>span{display:flex;flex-direction:column;line-height:1.15;min-width:0}.on-chip small{color:#c9b08a;font-size:12px;font-weight:600}.on-chip b{font-size:16px;font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.on-chip .icon{opacity:.7}.on-more{font-size:15px;font-weight:700;color:var(--muted);align-self:center;padding:0 4px}.on-list .empty{color:var(--muted);font-size:15px;line-height:1.4}.floorplan{width:100%;height:100%;display:block}.floorplan path,.floorplan rect,.floorplan ellipse{vector-effect:non-scaling-stroke}.floorplan.disabled{opacity:.45}.fp-floor{fill:var(--floor)}.fp-wall{stroke:var(--wall);stroke-width:3.5;fill:none;stroke-linecap:square;stroke-linejoin:miter}.fp-outer{stroke:var(--wall);stroke-width:5;fill:none;stroke-linejoin:miter}.fp-open{stroke:var(--wall-soft);stroke-width:2;stroke-dasharray:6 5;fill:none}.fp-deco{stroke:var(--wall-soft);stroke-width:1.5;fill:none}.fp-screen .ring{fill:none;stroke:var(--ember);stroke-width:2.5}.fp-screen .core{fill:var(--ember)}.fp-lamp{outline:none;pointer-events:none}.fp-lamp .fx{fill:var(--floor);stroke:#b89d7a80;stroke-width:1.6;transition:fill .22s ease-out,stroke .22s ease-out}.fp-lamp .fx.ring{fill:none;stroke:#b89d7a29;stroke-width:11}.fp-lamp.on .fx{fill:var(--light-hot);stroke:var(--light)}.fp-lamp.on .fx.ring{fill:none;stroke:var(--light);stroke-opacity:.92}.fp-lamp.pressing .fx,.fp-lamp.pending .fx{stroke:var(--text);stroke-width:2.4}.fp-lamp.pressing .fx.ring,.fp-lamp.pending .fx.ring{stroke:var(--text);stroke-opacity:.55;stroke-width:11}.fp-lamp.soon .fx{fill:none;stroke:#b89d7a4d;stroke-dasharray:4 4}.wall{width:100%;height:100%;display:grid;grid-template-columns:1fr 470px;grid-template-rows:100%}.wall>*{min-width:0;min-height:0;height:100%}.wall-side{padding:18px 14px 14px 18px;display:flex;flex-direction:column;gap:10px}.wall-side .on-list{flex:1;min-height:0;overflow:hidden}.wall-top{display:flex;justify-content:space-between;align-items:flex-start;gap:10px}.wall-clock{font-size:64px;font-weight:600;line-height:.9;font-variant-numeric:tabular-nums;letter-spacing:-.02em}.wall-date{color:var(--muted);font-size:16px;font-weight:600;margin-top:8px}.wall-status{color:var(--moon);font-size:14px;font-weight:600;margin-top:-2px}.wall .btn.holiday{min-height:48px;padding:0 14px;font-size:15px}.wall .btn.holiday.armed{background:#a9cbe61f;border-color:var(--moon);color:var(--moon)}.wall-plan{padding:8px 10px 8px 0;transition:opacity .14s ease-out}.wall-plan.fading{opacity:0}@media(prefers-reduced-motion:reduce){.lc .btn,.on-chip,.wall-plan,.fp-lamp .fx{transition:none}}html:has(body.app){height:100%;overflow:hidden}body.app{height:100%;height:100dvh;overflow:hidden;padding:env(safe-area-inset-top) env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left);-webkit-tap-highlight-color:transparent;overscroll-behavior:none}body.app>#root{height:100%}body.app ::selection{background:var(--light);color:var(--on-ink)}.splash{display:grid;place-items:center;height:100dvh;font-size:2rem;font-weight:700;color:var(--light)}.login{display:flex;flex-direction:column;gap:14px;max-width:360px;margin:0 auto;padding:18vh 24px 24px}.login h1{text-align:center;color:var(--light);font-size:2.4rem;font-weight:700;margin-bottom:12px}.login input{font:inherit;font-size:1.1rem;padding:14px 16px;border-radius:12px;border:1.5px solid var(--edge);background:var(--raised);color:var(--text)}.login input::placeholder{color:var(--muted)}.login input:focus{outline:2px solid var(--light);outline-offset:1px}.login button{font:inherit;font-size:1.1rem;padding:14px;border-radius:12px;border:0;background:var(--light);color:var(--on-ink);font-weight:700}.login button:disabled{opacity:.6}.login .error{color:#ef8a7f;text-align:center}.home{height:100%;display:grid;gap:14px;padding:12px 16px 20px;grid-template-columns:minmax(0,1fr);grid-template-areas:"head" "row" "plan" "on" "off" "holiday";align-content:start;overflow-y:auto;scrollbar-width:none}.home-head{grid-area:head;height:44px;display:flex;align-items:center;justify-content:space-between}.home-row{grid-area:row}.home-plan{grid-area:plan;aspect-ratio:967 / 1259;max-height:64dvh;width:100%;justify-self:center}.home-on{grid-area:on;display:flex;flex-direction:column;gap:10px}.home-off{grid-area:off}.home-off .btn{width:100%}.home-holiday{grid-area:holiday;display:flex}.home-holiday .holiday-card{width:100%;min-height:auto}.home-time{font-size:24px;font-weight:600;font-variant-numeric:tabular-nums;letter-spacing:-.01em}.status{display:inline-flex;align-items:center;gap:8px;font-size:14px;font-weight:600;color:var(--muted)}.status:before{content:"";width:8px;height:8px;border-radius:50%;background:#ef8a7f}.status-online:before{background:#8fcf9a}.status-connecting:before{background:var(--light)}.logout{font:inherit;background:none;border:0;color:var(--muted);border-radius:12px;width:44px;height:44px;display:inline-flex;align-items:center;justify-content:center;margin-right:-8px}.logout:focus-visible{outline:2px solid var(--text)}@media(min-width:700px)and (orientation:portrait){.home{max-width:900px;margin:0 auto;gap:18px;padding:20px 28px 28px;grid-template-columns:minmax(0,1fr) 320px;grid-template-areas:"head head" "row row" "plan plan" "on off" "on holiday";grid-template-rows:auto auto auto auto 1fr}.home-plan{max-height:58dvh}.home .btn{min-height:64px;font-size:18px}}@media(min-width:900px)and (orientation:landscape){.home{gap:16px;padding:20px 24px 20px 28px;overflow:hidden;height:100%;grid-template-columns:minmax(300px,1fr) minmax(0,calc((100dvh - 40px) * 967 / 1259));grid-template-areas:"head plan" "on plan" "holiday plan" "row plan" "off plan";grid-template-rows:auto auto 1fr auto auto}.home-on,.home-holiday,.home-holiday .holiday-card{min-height:0}.home-plan{max-height:none;height:100%;aspect-ratio:auto}.home .btn{min-height:64px;font-size:18px}}:root{--card: #1f1914;--on: #ffc864;--ink: #16120f;--holiday: #a9cbe6;--lane-label: 50px}.holiday-card{flex:1;min-height:0;background:var(--card);border-radius:16px;border:1.5px solid #3a3027;padding:14px 16px;color:#fff;font:inherit;text-align:left;display:flex;flex-direction:column;gap:10px;touch-action:manipulation}.holiday-card.armed{box-shadow:0 0 0 1px #a9cbe68c,0 0 24px #a9cbe624}.holiday-card:disabled{opacity:.55}.holiday-head{display:flex;align-items:center;justify-content:space-between}.holiday-title{display:inline-flex;align-items:center;gap:8px;font-size:16px;font-weight:600}.chip{font-size:11px;font-weight:700;letter-spacing:1.5px;padding:4px 8px;border-radius:10px;background:#ffffff1a;color:#fff9}.chip-on{background:var(--holiday);color:var(--ink)}.holiday-sub{font-size:12px;color:#ffffff80}.timeline{display:flex;flex-direction:column;gap:6px}.lanes{position:relative;display:flex;flex-direction:column;gap:5px}.lane{display:flex;align-items:center;gap:6px}.lane-name{width:44px;font-size:10px;color:#ffffff73;text-align:right}.lane-track{position:relative;flex:1;height:8px;border-radius:4px;background:#ffffff14}.lane-seg{position:absolute;top:0;height:8px;border-radius:4px;background:var(--on)}.lane-now{position:absolute;top:-3px;bottom:-3px;width:2px;background:var(--holiday);border-radius:1px;box-shadow:0 0 6px #a9cbe6cc}.ticks{position:relative;height:12px;margin-left:var(--lane-label);font-size:10px;color:#ffffff59}.ticks span{position:absolute;transform:translate(-50%)}.next{display:flex;flex-direction:column;gap:2px;padding-top:6px;border-top:1px solid rgba(255,255,255,.08)}.next-label{font-size:11px;letter-spacing:1.5px;font-weight:600;color:var(--holiday)}.next-main{display:flex;align-items:baseline;gap:10px}.next-time{font-size:30px;font-weight:700;line-height:1.1}.next-text{font-size:15px;font-weight:500;line-height:1.2}.next-list{display:flex;flex-direction:column;gap:4px;margin-top:6px;font-size:13px;color:#fff9}.next-list span{display:flex;gap:10px}.next-list b{width:40px;font-weight:600;color:#fffc}.holiday-arm{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:14px;text-align:center}.holiday-ring{width:84px;height:84px;border-radius:50%;border:2px solid rgba(255,255,255,.14);display:flex;align-items:center;justify-content:center}.holiday-hint{font-size:15px;font-weight:500;color:#fffc;line-height:1.3}.windows{display:flex;flex-direction:column;gap:4px;padding-top:10px;border-top:1px solid rgba(255,255,255,.08);font-size:13px;color:#ffffff8c}.windows>span{display:flex;justify-content:space-between}.windows strong{color:#ffffffd9;font-weight:600}.holiday-card.compact{gap:8px}.holiday-card.compact .next{border-top:0;padding-top:0}.holiday-card.compact .next-time{font-size:28px}.holiday-card.compact .lane-track,.holiday-card.compact .lane-seg{height:6px;border-radius:3px}.holiday-card.compact .holiday-arm{flex-direction:row;gap:14px;text-align:left}.holiday-card.compact .holiday-ring{width:56px;height:56px}.holiday-card.compact .windows{flex-direction:row;justify-content:space-between;padding-top:8px}.holiday-card.compact .windows>span{gap:6px}.rooms-compact .room-name{width:80px}.rooms-compact .pill-soon{font-size:12px;padding:0 10px}.rooms-compact .pills{gap:6px}@font-face{font-family:Quicksand;font-style:normal;font-weight:300 700;src:local("Quicksand Regular"),local("Quicksand-Regular"),url(/assets/Quicksand-vietnamese-BHkeTvmg.woff2) format("woff2");unicode-range:U+0102-0103,U+0110-0111,U+1EA0-1EF9,U+20AB}@font-face{font-family:Quicksand;font-style:normal;font-weight:300 700;src:local("Quicksand Regular"),local("Quicksand-Regular"),url(/assets/Quicksand-latin-ext-C-6CJIFn.woff2) format("woff2");unicode-range:U+0100-024F,U+0259,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Quicksand;font-style:normal;font-weight:300 700;src:local("Quicksand Regular"),local("Quicksand-Regular"),url(/assets/Quicksand-latin-C9TeKmec.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}*{margin:0;padding:0;font-family:Quicksand,sans-serif;box-sizing:border-box}body.kiosk,body.kiosk *{cursor:none!important}html,body.kiosk,body.kiosk>#root{height:100%}body.kiosk{overflow:hidden;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent}
