:root{--bg:#f7f6f3;--panel:#fff;--line:#e6e4df;--grid:#f0eee9;--hourline:#e4e1db;--ink:#1f2328;--quiet:#6b6f76;--faint:#9a9ea5;--busy:#eceef1;--busy-edge:#c3c8d0;--lunch:#fcf1d6;--lunch-edge:#eed59a;--accent:#5b5bd6;--accent-soft:#ececfc;--ok:#2f9e6b;--bad:#e5484d;--row:17px;--tcol:56px;--sph:4}*{box-sizing:border-box;margin:0;padding:0}html,body{background:var(--bg)}body{color:var(--ink);-webkit-font-smoothing:antialiased;min-height:100vh;font-family:Inter,Segoe UI,system-ui,sans-serif}button{font:inherit;cursor:pointer;color:inherit;background:0 0;border:0}.pix{font-family:"Press Start 2P",monospace}.beta{vertical-align:top;background:var(--accent);color:#fff;letter-spacing:.8px;text-transform:uppercase;border-radius:6px;margin-left:8px;padding:3px 7px;font:700 10px/12px Inter,Segoe UI,system-ui,sans-serif;display:inline-block}.logo .beta{border-radius:4px;margin-left:6px;padding:1px 5px;font-size:8.5px;line-height:11px}svg.av{width:100%;height:100%;display:block}.err{text-align:center;color:var(--quiet);margin-top:30vh}.top{background:var(--panel);border-bottom:1px solid var(--line);align-items:center;gap:24px;height:64px;padding:0 24px;display:flex}.logo{text-align:left;align-items:center;gap:10px;display:flex}.logo .mark{width:30px;height:30px}.logo .name{letter-spacing:.5px;font-size:12px;line-height:16px}.logo .co{color:var(--quiet);margin-top:2px;font-size:12px}.days{gap:6px;margin:0 auto;display:flex}.day{height:36px;color:var(--faint);background:#f2f1ee;border-radius:18px;align-items:center;gap:6px;padding:0 16px;font-size:14px;font-weight:500;display:flex}.day.done{color:var(--ok);background:#e8f5ee}.day.now{color:#fff;background:var(--accent)}.weekinfo{text-align:right;color:var(--quiet);font-size:12px;line-height:17px}.weekinfo b{color:var(--ink);font-size:13px}.main{min-height:calc(100vh - 64px);display:flex}aside{border-right:1px solid var(--line);background:var(--panel);flex-direction:column;flex:none;gap:18px;width:328px;padding:24px;display:flex}.dayhead .dn{letter-spacing:-.5px;font-size:26px;font-weight:700}.dayhead .ds{color:var(--quiet);margin-top:2px;font-size:13px}.msg{border:1px solid var(--line);background:#f8f8f6;border-radius:12px;gap:12px;padding:14px;display:flex}.msg .ph{border-radius:4px;flex:none;width:40px;height:40px;overflow:hidden}.msg .who{font-size:13px;font-weight:600}.msg .who span{color:var(--faint);margin-left:6px;font-size:12px;font-weight:400}.msg p{color:#33373d;margin-top:4px;font-size:13.5px;line-height:20px}.msg.memo{background:var(--lunch);border-color:var(--lunch-edge)}.wk .memo{margin-top:16px}.lbl{letter-spacing:.8px;text-transform:uppercase;color:var(--faint);font-size:11px;font-weight:600}.meet{background:var(--accent);color:#fff;outline-offset:3px;cursor:grab;touch-action:none;-webkit-user-select:none;user-select:none;border-radius:12px;outline:4px solid #5b5bd62e;gap:12px;padding:14px 16px;display:flex;box-shadow:0 6px 18px #5b5bd647}.meet:active{cursor:grabbing}.meet.dragging{opacity:.45}.meet.done{background:var(--ok);cursor:default;outline-color:#2f9e6b2e;box-shadow:0 6px 18px #2f9e6b40}.meet .grip{opacity:.7;letter-spacing:-3px;font-size:18px;line-height:20px}.meet .mt{font-size:15px;font-weight:600}.meet .md{opacity:.88;margin-top:2px;font-size:12.5px}.faces{flex-wrap:wrap;gap:4px;margin-top:10px;display:flex}.faces .f{border:2px solid #ffffffd9;border-radius:6px;width:26px;height:26px;overflow:hidden}.next{background:var(--ink);color:#fff;border-radius:12px;padding:13px 16px;font-size:15px;font-weight:600}.next[hidden]{display:none}.rule,.brule{align-items:flex-start;gap:6px;display:flex}.rule{color:var(--quiet);background:var(--lunch);border:1px solid var(--lunch-edge);border-radius:8px;padding:8px 12px;font-size:12.5px}.hint{color:var(--quiet);margin-top:auto;font-size:12.5px;line-height:18px}.brule small{color:#5d5d8f;margin-top:1px;font-size:12px;font-weight:400;display:block}.brule{width:fit-content;color:var(--accent);background:var(--accent-soft);border:1px solid #d6d6f5;border-radius:6px;margin-top:8px;padding:4px 8px;font-size:12.5px;font-weight:600;line-height:17px}.cal{--vis:3;flex:1;min-width:0;padding:16px 24px 24px 16px;position:relative}.scroller{scrollbar-width:thin;overflow-x:auto;container-type:inline-size}.scroller.panning{cursor:grabbing;-webkit-user-select:none;user-select:none}.chead,.cbody{--colw:calc((100cqw - var(--tcol)) / min(var(--cols), var(--vis)));width:max-content;min-width:100%;display:grid}.chead{min-height:76px}.corner,.times{z-index:3;background:var(--bg);position:sticky;left:0}.pan{z-index:5;background:var(--ink);color:#fff;border-radius:15px;height:30px;padding:0 12px;font-size:13px;font-weight:600;position:absolute;top:34px;box-shadow:0 4px 12px #0000002e}.pan.prev{left:12px}.pan.next-cols{right:30px}.pan[hidden]{display:none}.person{border-radius:10px 10px 0 0;align-items:center;gap:10px;min-width:0;padding:0 10px;display:flex}.person.hl{background:var(--accent-soft)}.badge{border:1px solid var(--line);background:#fff;border-radius:6px;flex:none;width:46px;height:54px;padding:4px 4px 0;position:relative;box-shadow:0 1px 2px #0000000d}.badge:before{content:"";background:#cfd2d8;border-radius:3px;width:12px;height:6px;margin-left:-6px;position:absolute;top:-5px;left:50%}.badge .ph{border-radius:3px;width:36px;height:36px;overflow:hidden}.badge .strip{border-radius:0 0 5px 5px;height:8px;position:absolute;bottom:0;left:0;right:0}.pname{white-space:nowrap;text-overflow:ellipsis;font-size:15.5px;font-weight:600;overflow:hidden}.remote-tag{color:var(--bad);vertical-align:2px;background:#fde6e6;border-radius:4px;padding:1px 5px;font-size:10.5px;font-weight:700}.dept{color:var(--quiet);align-items:center;gap:5px;margin-top:2px;font-size:11.5px;display:flex}.dept i{border-radius:2px;flex:none;width:8px;height:8px;display:inline-block}.cbody{border-top:1px solid var(--line);position:relative}.times{height:calc(var(--row) * var(--slots))}.times div{color:var(--quiet);font-size:11px;position:absolute;right:10px;transform:translateY(-7px)}.col{height:calc(var(--row) * var(--slots));border-left:1px solid var(--line);cursor:pointer;background-image:linear-gradient(var(--hourline) 1px, transparent 1px), linear-gradient(var(--grid) 1px, transparent 1px);background-size:100% calc(var(--row) * var(--sph)), 100% calc(var(--row) * var(--sph) / 2);position:relative}.booked .col{cursor:default}.col.hl{background-color:#5b5bd60f}.lever{color:var(--accent);white-space:nowrap;margin-top:3px;font-size:11.5px;font-weight:600}.lever.remote{color:var(--bad)}.col.remote{background-color:#e5484d0f;border-left:1px dashed #e5484d80;box-shadow:inset -1px 0 #e5484d80}.col.locked .blk{visibility:hidden}.lock{display:none}.col.locked .lock{pointer-events:none;background:repeating-linear-gradient(135deg,#eef0f3 0 10px,#e4e7ec 10px 20px);border:1px dashed #c3c8d0;border-radius:8px;justify-content:center;align-items:center;font-size:26px;display:flex;position:absolute;inset:2px 4px 2px 2px}.blk{left:4px;right:6px;top:calc(var(--row) * var(--s) + 2px);height:calc(var(--row) * var(--n) - 4px);background:var(--busy);border-left:3px solid var(--busy-edge);color:#50555c;border-radius:6px;padding:5px 8px;font-size:12.5px;line-height:16px;position:absolute;overflow:hidden}.blk.lunch{background:var(--lunch);border-left-color:var(--lunch-edge);color:#8a6d2b}.blk.ooo{background:repeating-linear-gradient(135deg,#f1f2f4 0 6px,#e6e8ec 6px 12px);border-left-color:#b6bcc6}.blk.warn{box-shadow:0 0 0 2px var(--bad)}.slot{left:calc(var(--tcol) + var(--colw) * var(--c0,0) + 4px);width:calc(var(--colw) * var(--cn,1) - 10px);top:calc(var(--row) * var(--s) + 2px);height:calc(var(--row) * var(--n) - 4px);background:var(--accent);color:#fff;pointer-events:none;z-index:2;border-radius:8px;align-items:center;gap:14px;padding:8px 12px;display:flex;position:absolute;box-shadow:0 8px 20px #5b5bd64d}.slot>div:first-child{left:calc(var(--tcol) + 14px);min-width:0;position:sticky}.slot .stamp{position:sticky;right:20px}.slot .t{font-size:14px;font-weight:600}.slot .s{opacity:.88;font-size:12px}.slot.short{padding:0 12px}.slot.short>div:first-child{white-space:nowrap;align-items:baseline;gap:10px;min-width:0;display:flex;overflow:hidden}.slot.short .stamp{padding:1px 6px}.slot.ghost{opacity:.75}.slot.local .s{opacity:1;font-weight:600}.slot.bad{color:var(--bad);box-shadow:none;background:0 0;border:2px dashed #9aa0a8;animation:.4s shake}.slot.bad>div:first-child{background:#fff;border-radius:6px;padding:3px 10px;box-shadow:0 2px 10px #0000001f}.clash{left:2px;right:4px;top:calc(var(--row) * var(--s) + 2px);height:calc(var(--row) * var(--n) - 4px);border:2px solid var(--bad);z-index:1;pointer-events:none;background:#e5484d2e;border-radius:6px;animation:.2s pop;position:absolute}.fading{transition:opacity .25s;opacity:0!important}.slot.ok{background:var(--ok);animation:.25s pop;box-shadow:0 8px 20px #2f9e6b4d}.stamp{border:2px solid #ffffffe6;border-radius:6px;margin-left:auto;padding:3px 8px;font-size:9px;transform:rotate(-6deg)}.float{z-index:50;pointer-events:none;background:var(--accent);color:#fff;border-radius:10px;max-width:240px;padding:10px 14px;font-size:14px;font-weight:600;position:fixed;box-shadow:0 10px 24px #0003}.bubble{z-index:4;border:1px solid var(--line);cursor:pointer;background:#fff;border-radius:14px;width:250px;padding:10px 14px 12px;font-size:14.5px;line-height:20px;animation:.2s pop;position:absolute;box-shadow:0 12px 30px #00000024}.card-bubble{z-index:40;text-align:left;width:auto;max-width:240px;position:fixed}.bubble:after{content:"";left:var(--tail,36px);border-right:1px solid var(--line);border-bottom:1px solid var(--line);background:#fff;width:16px;height:16px;margin-left:-8px;position:absolute;bottom:-9px;transform:rotate(45deg)}.bubble.below:after{top:-9px;bottom:auto;transform:rotate(225deg)}.bubble .who{color:var(--quiet);align-items:center;gap:8px;margin-bottom:5px;font-size:12px;font-weight:600;display:flex}.bubble .who .ph{border-radius:4px;width:24px;height:24px;overflow:hidden}@keyframes shake{0%,to{transform:translate(0)}20%,60%{transform:translate(-6px)}40%,80%{transform:translate(6px)}}@keyframes pop{0%{opacity:0;transform:scale(.94)}to{opacity:1;transform:scale(1)}}@keyframes modal-pop{0%{opacity:0;transform:translate(-50%,-50%)scale(.94)}to{opacity:1;transform:translate(-50%,-50%)scale(1)}}.lang{background:#fff;border:1px solid #cfd3da;border-radius:999px;align-items:center;gap:2px;padding:4px 4px 4px 12px;display:flex;position:absolute;top:16px;right:16px;box-shadow:0 2px 8px #00000014}.lang .globe{width:16px;height:16px;color:var(--quiet);flex:none;margin-right:6px}.lang button{color:var(--quiet);border-radius:999px;padding:8px 14px;font-size:13px;font-weight:600}.lang button.on{background:var(--ink);color:#fff}.start{text-align:center;background-image:linear-gradient(var(--grid) 1px, transparent 1px), linear-gradient(90deg, var(--grid) 1px, transparent 1px);background-size:100% 34px,160px 100%;flex-direction:column;align-items:center;min-height:100vh;padding:64px 16px 32px;display:flex;position:relative}.start .mark{width:64px;height:64px;margin-bottom:22px}.start h1{font-size:34px;font-weight:400;line-height:44px}.start .tag{color:var(--quiet);margin-top:16px;font-size:17px}.wk{border:1px solid var(--line);text-align:left;background:#fff;border-radius:16px;width:100%;max-width:520px;margin-top:34px;padding:22px 26px;box-shadow:0 10px 30px #0000000d}.wk .row{justify-content:space-between;align-items:center;gap:16px;display:flex}.wk .t1{letter-spacing:.8px;text-transform:uppercase;color:var(--accent);font-size:12px;font-weight:600}.wk .t2{margin-top:4px;font-size:22px;font-weight:700}.wk .t3{color:var(--quiet);margin-top:4px;font-size:13px}.dots{gap:8px;margin-top:18px;display:flex}.dots div{text-align:center;color:var(--quiet);background:#f2f1ee;border-radius:8px;flex:1;padding:9px 0;font-size:12px;font-weight:500}.dots .done{color:var(--ok);background:#e8f5ee}.dots .next{background:var(--accent-soft);color:var(--accent)}.dots .locked,.day.locked{opacity:.45}.wk .note{color:var(--quiet);margin-top:12px;font-size:13px;line-height:19px}.wk .note b{color:var(--ink)}.go{background:var(--accent);color:#fff;border-radius:12px;flex:none;padding:14px 26px;font-size:16px;font-weight:600;box-shadow:0 6px 18px #5b5bd64d}.cast{width:100%;margin-top:auto;padding-top:48px}.cast .lbl{margin-bottom:16px;font-size:13px}.credit{color:var(--faint);margin-top:28px;font-size:12px}.cards{flex-wrap:wrap;justify-content:center;align-items:flex-end;gap:12px;display:flex}.card{border:1px solid var(--line);text-align:center;background:#fff;border-radius:10px;flex:none;width:104px;padding:14px 10px 0;transition:transform .15s;position:relative;overflow:hidden;box-shadow:0 2px 6px #0000000d}.card:hover{transform:translateY(-3px)}.card:active{transform:translateY(-1px)scale(.97)}.card.hop{animation:.5s step-end hop}@keyframes hop{0%{transform:none}25%{transform:translateY(-8px)}50%{transform:translateY(-4px)}75%{transform:translateY(-1px)}to{transform:none}}.card:before{content:"";background:#d9dbe0;border-radius:3px;width:18px;height:5px;margin-left:-9px;position:absolute;top:6px;left:50%}.card .ph{border-radius:4px;width:64px;height:64px;margin:6px auto 0;overflow:hidden}.card .n{margin-top:8px;font-size:15px;font-weight:600}.card .d{color:var(--quiet);margin:2px 0 10px;font-size:12px}.card .strip{height:8px;margin:0 -10px}.card.boss{background:#2b2f38;border-color:#2b2f38;width:120px}.card.boss .ph{width:80px;height:80px}.card.boss .n{color:#fff}.card.boss .d{color:#aab0bb}.dim{-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);z-index:60;background:#181a208c;position:fixed;inset:0}.modal{text-align:center;z-index:61;background:#fff;border-radius:20px;width:520px;max-width:calc(100vw - 32px);max-height:calc(100vh - 32px);padding:30px 32px 24px;animation:.25s modal-pop;position:fixed;top:50%;left:50%;overflow:auto;transform:translate(-50%,-50%);box-shadow:0 30px 80px #0000004d}.modal .mark{width:56px;height:56px;margin:0 auto}.modal .k{letter-spacing:.8px;text-transform:uppercase;color:var(--ok);margin-top:16px;font-size:12px;font-weight:700}.modal h2{letter-spacing:-.5px;margin-top:6px;font-size:26px}.modal .sub{color:var(--quiet);margin-top:8px;font-size:15px;line-height:22px}.share{border:1px solid var(--line);text-align:left;color:#33373d;white-space:pre-wrap;background:#f6f6f4;border-radius:12px;margin-top:20px;padding:14px 16px;font-family:Consolas,Courier New,monospace;font-size:14px;line-height:22px}.btns{gap:10px;margin-top:20px;display:flex}.btn{border-radius:12px;flex:1;padding:13px 0;font-size:15px;font-weight:600}.btn.p{background:var(--accent);color:#fff}.btn.s{background:#f2f1ee}.tiny{flex-wrap:wrap;justify-content:center;gap:6px;margin-top:18px;display:flex}.tiny .f{border-radius:5px;width:30px;height:30px;overflow:hidden}.nextweek{color:var(--faint);margin-top:16px;font-size:12.5px}.nextweek b{color:var(--ink)}.back{color:var(--accent);margin-top:10px;font-size:13px;font-weight:600}@media (width<=860px){:root{--row:15px;--tcol:40px}.top{flex-wrap:wrap;gap:10px;height:auto;padding:10px 12px}.weekinfo{display:none}.days{order:3;gap:4px;width:100%;margin:0}.day{flex:1;justify-content:center;height:30px;padding:0 4px;font-size:12.5px}.main{flex-direction:column;min-height:0}aside{border-right:0;border-bottom:1px solid var(--line);gap:12px;width:auto;padding:14px 16px}.dayhead .dn{font-size:22px}.hint{margin-top:0}.cal{--vis:2;padding:8px 6px 24px}.pan{height:24px;padding:0 8px;font-size:11.5px;top:10px}.pan.prev{padding:0 5px;left:2px}.pan.next-cols{right:6px}.chead{min-height:0}.person{text-align:center;flex-direction:column;gap:4px;padding:8px 2px 6px}.badge{width:34px;height:40px;padding:3px 3px 0}.badge .ph{width:26px;height:26px}.badge .strip{height:6px}.dept{display:none}.lever{white-space:normal;font-size:10.5px}.pname{max-width:100%;font-size:13px}.times div{font-size:10px;right:5px}.blk{border-left-width:2px;padding:3px 4px;font-size:11px;line-height:13px;left:2px;right:3px}.slot{gap:8px;padding:4px 8px}.slot .stamp{position:static}.slot .t{font-size:12.5px}.slot .s{font-size:11px}.bubble{width:220px;font-size:13.5px}.start{padding-top:16px}.lang{align-self:center;margin-bottom:22px;position:static}.start h1{font-size:22px;line-height:32px}.start .tag{font-size:15px}.wk{padding:18px}.wk .row{flex-direction:column;align-items:stretch}.cards{flex-wrap:nowrap;justify-content:flex-start;padding:4px 4px 12px;overflow-x:auto}.modal{padding:22px 18px 18px}.modal h2{font-size:22px}}
