:root{--bg:#f4f1ea;--card:#fffdf9;--ink:#1d2a2e;--mut:#566668;--line:#e4dfd3;--sage:#3f7561;--sage-t:#dcebe3;--clay:#b8532c;--clay-t:#f8e2d6;--sky:#3a6694;--sky-t:#dde8f4;--gold:#e5b44c;--gold-t:#fbefcf;--deep:#1f3a35;--serif:"Iowan Old Style","Palatino Linotype",Georgia,serif;--sans:system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;--ease:cubic-bezier(.22,1,.36,1)}*{box-sizing:border-box;margin:0;padding:0}html,body{width:1440px;height:900px;overflow:hidden;background:var(--bg);color:var(--ink);font:14px/1.35 var(--sans)}.defs{position:absolute}.i{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round;flex:none}a{color:inherit;text-decoration:none}button{font:inherit;color:inherit;border:0;background:none}.app{display:grid;grid-template-columns:232px 1fr;height:900px}.side{background:var(--deep);color:#e8efe9;padding:26px 18px;display:flex;flex-direction:column;gap:22px}.brand{display:flex;gap:11px;align-items:center;padding:0 8px}.logo{width:34px;height:34px;fill:none;stroke:var(--gold);stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}.brand b{display:block;font:600 22px/1 var(--serif);letter-spacing:.2px}.brand span{font-size:11px;color:#a9c0b6;letter-spacing:.6px;text-transform:uppercase}nav{display:flex;flex-direction:column;gap:3px}nav a{display:flex;align-items:center;gap:12px;padding:10px 12px;border-radius:10px;color:#c5d6cd;font-weight:500}nav a.on{background:#2d524a;color:#fff;box-shadow:inset 3px 0 0 var(--gold)}nav em{margin-left:auto;font-style:normal;font-size:11px;background:#2d524a;border-radius:20px;padding:2px 8px;color:#d6e5dd}.rooms{margin-top:6px;padding:16px 12px 0;border-top:1px solid #36574f;display:flex;flex-direction:column;gap:11px}.rooms h3{font-size:11px;letter-spacing:.9px;text-transform:uppercase;color:#8fa89e;font-weight:600}.rooms p{display:flex;align-items:center;gap:9px;color:#dbe8e1}.rooms span{margin-left:auto;font-size:11px;color:#8fa89e}.d{display:inline-block;width:9px;height:9px;border-radius:50%;background:var(--sage)}.d.clay{background:var(--clay)}.d.sky{background:var(--sky)}.me{margin-top:auto;display:flex;gap:11px;align-items:center;padding:12px;border-radius:12px;background:#27463f}.me b{display:block;font-size:13px}.me span:not(.av){font-size:11px;color:#a9c0b6}.av{display:grid;place-items:center;width:34px;height:34px;border-radius:50%;background:var(--gold);color:var(--deep);font-weight:700;font-size:12px;flex:none}.main{padding:24px 28px;position:relative;display:flex;flex-direction:column}.top{display:flex;align-items:center;justify-content:space-between;height:64px}.eyebrow{font-size:11px;letter-spacing:.9px;text-transform:uppercase;color:var(--mut);font-weight:600}h1{font:500 32px/1.1 var(--serif);letter-spacing:-.2px}.week{display:flex;align-items:center;gap:10px}.week b{font:600 15px var(--sans);min-width:176px;text-align:center}.sq{width:34px;height:34px;display:grid;place-items:center;border:1px solid var(--line);border-radius:10px;background:var(--card)}.ghostbtn{padding:8px 14px;border:1px solid var(--line);border-radius:10px;background:var(--card);font-weight:600}.tools{display:flex;align-items:center;gap:10px}.search{display:flex;align-items:center;gap:8px;width:230px;height:40px;padding:0 12px;border:1px solid var(--line);border-radius:12px;background:var(--card);color:var(--mut)}.bell{width:40px;height:40px;display:grid;place-items:center;border:1px solid var(--line);border-radius:12px;background:var(--card)}.cta{display:flex;align-items:center;gap:8px;height:40px;padding:0 18px;border-radius:12px;background:var(--clay);color:#fff;font-weight:600;box-shadow:0 6px 14px -6px rgba(184,83,44,.6)}.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-top:16px;height:92px}.stat{background:var(--card);border:1px solid var(--line);border-radius:16px;padding:14px 18px;display:flex;flex-direction:column;gap:3px}.stat p{font-size:12px;color:var(--mut);font-weight:600}.num{display:grid}.num b{grid-area:1/1;font:500 30px/1.15 var(--serif)}.num .b{opacity:0}.stat>span{font-size:12px;color:var(--mut)}.stat .up{color:var(--sage);font-weight:600}.meter{height:7px;border-radius:7px;background:var(--sage-t);margin-top:6px;overflow:hidden}.meter i{display:block;width:78%;height:100%;background:var(--sage);border-radius:7px;transform-origin:left}.work{display:grid;grid-template-columns:1fr 288px;gap:16px;margin-top:16px;flex:1;min-height:0}.cal{position:relative;background:var(--card);border:1px solid var(--line);border-radius:18px;overflow:hidden}.cal-bar{height:48px;display:flex;align-items:center;justify-content:space-between;padding:0 16px;border-bottom:1px solid var(--line)}.seg{display:flex;background:var(--bg);border-radius:10px;padding:3px}.seg span{padding:5px 14px;border-radius:8px;font-size:12px;font-weight:600;color:var(--mut)}.seg .on{background:var(--card);color:var(--ink);box-shadow:0 1px 3px rgba(0,0,0,.12)}.legend{display:flex;gap:16px;font-size:12px;color:var(--mut)}.legend span{display:flex;align-items:center;gap:6px}.cal-head{display:grid;grid-template-columns:56px repeat(6,1fr);height:52px;border-bottom:1px solid var(--line)}.gh{display:grid;place-items:center;font-size:10px;color:var(--mut)}.dh{display:flex;align-items:center;justify-content:center;gap:8px;border-left:1px solid var(--line);color:var(--mut);font-weight:600;font-size:12px;text-transform:uppercase;letter-spacing:.6px}.dh b{font:500 18px var(--serif);color:var(--ink);width:30px;height:30px;display:grid;place-items:center;border-radius:50%}.dh.today b{background:var(--clay);color:#fff}.view{height:562px;overflow:hidden;position:relative}.track{display:grid;grid-template-columns:56px 1fr;height:792px}.gut{display:flex;flex-direction:column}.gut span{height:72px;font-size:10px;color:var(--mut);text-align:right;padding:0 8px 0 0;transform:translateY(-6px)}.gut span:first-child{transform:translateY(4px)}.cols{display:grid;grid-template-columns:repeat(6,1fr)}.col{position:relative;border-left:1px solid var(--line);background:repeating-linear-gradient(to bottom,transparent 0 71px,var(--line) 71px 72px)}.ev,.nw,.ghost{position:absolute;left:5px;right:5px;top:calc(var(--s)*36px + 2px);height:calc(var(--h)*36px - 4px);border-radius:10px;padding:7px 9px;overflow:hidden;border-left:4px solid var(--sage);background:var(--sage-t);transform-origin:top}.ev h4,.nw h4{font:600 12px/1.25 var(--sans)}.ev p,.nw p{font-size:11px;color:var(--mut);margin-top:2px}.ev.clay{background:var(--clay-t);border-color:var(--clay)}.ev.sky{background:var(--sky-t);border-color:var(--sky)}.nw{background:var(--gold-t);border-color:var(--gold);box-shadow:0 8px 18px -8px rgba(160,110,20,.55);opacity:0}.nw h4{display:flex;align-items:center;gap:5px}.nw .i{width:14px;height:14px;stroke-width:2.4;color:#8a5e0c}.ghost{background:transparent;border:2px dashed var(--gold);opacity:0}.pop{position:absolute;left:150px;top:236px;width:290px;padding:18px;background:var(--card);border:1px solid var(--line);border-radius:16px;box-shadow:0 24px 48px -16px rgba(20,40,35,.45);opacity:0}.pop h3{font:500 20px/1 var(--serif);height:36px}.row{height:44px;border-top:1px solid var(--line);display:flex;flex-direction:column;justify-content:center}.row>span{font-size:10px;letter-spacing:.7px;text-transform:uppercase;color:var(--mut);font-weight:600}.val{font-weight:600;font-size:13px;height:18px;overflow:hidden}.type{font-style:normal;display:block}.btns{display:flex;justify-content:flex-end;align-items:center;gap:14px;margin-top:16px;height:40px}.cancel{font-weight:600;color:var(--mut)}.confirm{display:grid;place-items:center;width:150px;height:40px;border-radius:11px;background:var(--sage);color:#fff;font-weight:600}.cursor{position:absolute;left:0;top:0;width:30px;height:30px;fill:#1d2a2e;stroke:#fff;stroke-width:1.5;stroke-linejoin:round;opacity:0;translate:790px 70px}.panel{display:flex;flex-direction:column;gap:16px}.card{background:var(--card);border:1px solid var(--line);border-radius:18px;padding:18px}.card h3{display:flex;justify-content:space-between;align-items:baseline;font:500 20px var(--serif);margin-bottom:6px}.card h3 span{font:600 11px var(--sans);color:var(--mut);letter-spacing:.5px}.card ul{list-style:none}.card li{display:flex;align-items:center;gap:12px;padding:10px 0;border-top:1px solid var(--line);position:relative}.card li:first-child{border-top:0}.card li div{display:flex;flex-direction:column;min-width:0}.card li b{font-size:13px}.card li div span{font-size:11px;color:var(--mut)}time{font:600 12px var(--sans);width:42px;color:var(--sage)}.wait .av{width:34px;height:34px;background:var(--sky-t);color:var(--sky)}.wait .a2{background:var(--clay-t);color:var(--clay)}.wait .a3{background:var(--sage-t);color:var(--sage)}.card em{margin-left:auto;font-style:normal;font-size:10px;font-weight:700;letter-spacing:.4px;text-transform:uppercase;padding:3px 8px;border-radius:20px;background:var(--bg);color:var(--mut)}.hit .c2{position:absolute;right:0;opacity:0;background:var(--sage);color:#fff}.toast{position:absolute;right:28px;bottom:24px;width:340px;display:flex;gap:12px;align-items:center;padding:14px 16px;border-radius:16px;background:var(--deep);color:#fff;box-shadow:0 20px 40px -12px rgba(10,30,25,.6);opacity:0;translate:0 24px}.toast b{display:block;font-size:14px}.toast div span{font-size:12px;color:#b9d0c6}.ok{display:grid;place-items:center;width:34px;height:34px;border-radius:50%;background:var(--sage);flex:none}.ok .i{stroke:#fff;stroke-width:2.6}.tick{stroke-dasharray:24;stroke-dashoffset:0}.s0{--s:0}.s1{--s:1}.s2{--s:2}.s3{--s:3}.s4{--s:4}.s5{--s:5}.s6{--s:6}.s7{--s:7}.s8{--s:8}.s9{--s:9}.s10{--s:10}.s11{--s:11}.s12{--s:12}.s13{--s:13}.s14{--s:14}.s15{--s:15}.s16{--s:16}.s17{--s:17}.s18{--s:18}.s19{--s:19}.s20{--s:20}.s21{--s:21}.s22{--s:22}.h2{--h:2}.h3{--h:3}html.is-done .track{transform:translateY(-216px)}html.is-done .nw{opacity:1}html.is-done .toast{opacity:1;translate:0 0}html.is-done .num .a{opacity:0}html.is-done .num .b{opacity:1}html.is-done .hit .c1{opacity:0}html.is-done .hit .c2{opacity:1}@media (prefers-reduced-motion:no-preference){html.is-playing .side{animation:inl 420ms var(--ease) both}html.is-playing .top{animation:rise 420ms var(--ease) 80ms both}html.is-playing .stat{animation:rise 440ms var(--ease) both}html.is-playing .stat:nth-child(2){animation-delay:70ms}html.is-playing .stat:nth-child(3){animation-delay:140ms}html.is-playing .stat:nth-child(4){animation-delay:210ms}html.is-playing .meter i{animation:grow 600ms var(--ease) 180ms both}html.is-playing .cal{animation:rise 440ms var(--ease) 200ms both}html.is-playing .card{animation:rise 440ms var(--ease) 300ms both}html.is-playing .wait{animation-delay:340ms}html.is-playing:not(.s1) .ev{opacity:0}html.s1 .ev{animation:evin 400ms var(--ease) both}html.s1 .col:nth-child(2) .ev{animation-delay:50ms}html.s1 .col:nth-child(3) .ev{animation-delay:100ms}html.s1 .col:nth-child(4) .ev{animation-delay:150ms}html.s1 .col:nth-child(5) .ev{animation-delay:200ms}html.s1 .col:nth-child(6) .ev{animation-delay:250ms}html.s2 .track{transform:translateY(-216px);transition:transform 700ms cubic-bezier(.65,0,.35,1)}html.s3 .cursor{opacity:1;translate:513px 529px;transition:translate 700ms cubic-bezier(.65,0,.35,1),opacity 200ms linear}html.s4 .ghost{opacity:1;transition:opacity 200ms linear}html.s4 .pop{opacity:1;animation:pop 360ms var(--ease) both}html.s5 .type{animation:type 520ms steps(13) both}html.s6 .cursor{translate:343px 503px;transition:translate 420ms cubic-bezier(.65,0,.35,1)}html.s7 .confirm{animation:press 220ms ease-out both}html.s7 .cursor{opacity:0;transition:opacity 250ms linear 250ms}html.s7 .pop{animation:none;opacity:0;transition:opacity 250ms linear 120ms}html.s7 .ghost{opacity:0;transition:opacity 200ms linear}html.s7 .nw{opacity:1;animation:pop 420ms var(--ease) 180ms both}html.s7 .toast{opacity:1;translate:0 0;transition:opacity 300ms linear 250ms,translate 500ms var(--ease) 250ms}html.s7 .tick{animation:draw 400ms ease-out 360ms both}html.s7 .num .a{opacity:0;transition:opacity 260ms linear 300ms}html.s7 .num .b{opacity:1;transition:opacity 260ms linear 300ms}html.s7 .hit .c1{opacity:0;transition:opacity 240ms linear 450ms}html.s7 .hit .c2{opacity:1;transition:opacity 240ms linear 450ms}}@keyframes inl{from{opacity:0;transform:translateX(-24px)}}@keyframes rise{from{opacity:0;transform:translateY(16px)}}@keyframes grow{from{transform:scaleX(0)}}@keyframes evin{from{opacity:0;transform:scaleY(.55) translateY(-6px)}to{opacity:1;transform:none}}@keyframes pop{from{opacity:0;transform:scale(.92) translateY(8px)}to{opacity:1;transform:none}}@keyframes type{from{clip-path:inset(0 100% 0 0)}to{clip-path:inset(0 0 0 0)}}@keyframes press{50%{transform:scale(.95)}}@keyframes draw{from{stroke-dashoffset:24}to{stroke-dashoffset:0}}