:root,[data-theme=dark]{color-scheme:dark;--bg: #000000;--bg-grouped: #000000;--surface: #1c1c1e;--surface-2: #2c2c2e;--surface-3: #3a3a3c;--text: #f5f5f7;--text-secondary: #98989d;--text-tertiary: #636366;--accent: #0a84ff;--accent-hover: #409cff;--accent-soft: rgba(10, 132, 255, .18);--accent-on: #ffffff;--separator: rgba(84, 84, 88, .55);--fill: rgba(120, 120, 128, .22);--fill-strong: rgba(120, 120, 128, .32);--success: #30d158;--success-soft: rgba(48, 209, 88, .16);--warning: #ffd60a;--warning-soft: rgba(255, 214, 10, .14);--choice-emergency: #ffd60a;--choice-emergency-soft: rgba(255, 214, 10, .18);--danger: #ff453a;--danger-soft: rgba(255, 69, 58, .16);--shadow: 0 18px 50px rgba(0, 0, 0, .48);--shadow-sm: 0 8px 24px rgba(0, 0, 0, .32);--blur: saturate(180%) blur(20px);--nav-bg: rgba(22, 22, 24, .78);--radius-s: 8px;--radius-m: 12px;--radius-l: 20px;--nav-width: 228px;--space-1: 4px;--space-2: 8px;--space-3: 12px;--space-4: 16px;--space-5: 24px;--space-6: 32px;--space-7: 48px;--font: -apple-system, BlinkMacSystemFont, "SF Pro Text", "Segoe UI", "Helvetica Neue", Helvetica, Arial, sans-serif;--font-display: -apple-system, BlinkMacSystemFont, "SF Pro Display", "Segoe UI", "Helvetica Neue", Helvetica, Arial, sans-serif;--ease: .18s cubic-bezier(.22, 1, .36, 1)}@media(prefers-color-scheme:light){:root,[data-theme=light]{color-scheme:light;--bg: #f5f5f7;--bg-grouped: #f5f5f7;--surface: #ffffff;--surface-2: #f2f2f7;--surface-3: #e5e5ea;--text: #1d1d1f;--text-secondary: #6e6e73;--text-tertiary: #8e8e93;--accent: #0071e3;--accent-hover: #0077ed;--accent-soft: rgba(0, 113, 227, .12);--accent-on: #ffffff;--separator: rgba(60, 60, 67, .14);--fill: rgba(120, 120, 128, .12);--fill-strong: rgba(120, 120, 128, .2);--success: #248a3d;--success-soft: rgba(36, 138, 61, .12);--warning: #b88700;--warning-soft: rgba(255, 204, 0, .22);--choice-emergency: #c9a000;--choice-emergency-soft: rgba(255, 204, 0, .28);--danger: #d70015;--danger-soft: rgba(215, 0, 21, .1);--shadow: 0 18px 50px rgba(0, 0, 0, .12);--shadow-sm: 0 8px 24px rgba(0, 0, 0, .08);--nav-bg: rgba(245, 245, 247, .78)}}*,*:before,*:after{box-sizing:border-box}html,body{height:100%;margin:0}#root{min-height:100%}html{background:var(--bg)}body{font-family:var(--font);background:var(--bg);color:var(--text);font-size:15px;line-height:1.47;letter-spacing:-.011em;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}button{font:inherit;color:inherit;background:transparent;border:0}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}:focus-visible{outline:2px solid var(--accent);outline-offset:3px}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.shell{min-height:100%;display:flex;background:radial-gradient(1200px 600px at 10% -10%,rgba(10,132,255,.07),transparent 50%),var(--bg)}.sidebar{width:var(--nav-width);flex:none;display:flex;flex-direction:column;gap:2px;padding:22px 12px 16px;background:var(--nav-bg);backdrop-filter:var(--blur);-webkit-backdrop-filter:var(--blur);border-right:.5px solid var(--separator);position:sticky;top:0;height:100dvh}.brand{display:flex;flex-direction:column;gap:2px;padding:4px 12px 18px}.brand strong{font-family:var(--font-display);font-size:21px;font-weight:620;letter-spacing:-.03em}.brand span{color:var(--text-secondary);font-size:13px}.nav-link{display:flex;align-items:center;gap:10px;padding:9px 12px;border-radius:var(--radius-m);color:var(--text);text-decoration:none;border:0;background:transparent;width:100%;text-align:left;cursor:pointer;transition:background var(--ease),color var(--ease)}.nav-link svg{color:var(--text-secondary);flex:none}.nav-link:hover{background:var(--fill);text-decoration:none}.nav-link.active{background:var(--accent-soft);color:var(--accent);font-weight:580}.nav-link.active svg{color:var(--accent)}.sidebar-foot{margin-top:auto;padding-top:12px;border-top:.5px solid var(--separator);display:flex;align-items:center;gap:8px}.sidebar-foot .who{min-width:0;flex:1;font-size:13px;color:var(--text-secondary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;padding-left:4px}.content{flex:1;min-width:0;padding:28px 32px 64px;overflow:auto}.page-head{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;flex-wrap:wrap;margin-bottom:22px}.page-head h1,h1.large{margin:0;font-family:var(--font-display);font-size:34px;font-weight:650;letter-spacing:-.035em;line-height:1.1}.page-kicker{margin:0 0 6px;color:var(--text-secondary);font-size:13px;font-weight:500}h2{margin:0 0 8px;font-size:22px;font-weight:620;letter-spacing:-.025em}h3{margin:0 0 12px;font-size:17px;font-weight:600;letter-spacing:-.02em}.muted{color:var(--text-secondary)}.save-state{font-size:13px;color:var(--text-secondary)}.toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:16px}.toolbar-spacer{flex:1;min-width:8px}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;border:0;border-radius:980px;padding:8px 14px;background:var(--fill);color:var(--text);cursor:pointer;white-space:nowrap;flex-shrink:0;transition:background var(--ease),transform var(--ease),opacity var(--ease)}.btn:hover{background:var(--fill-strong)}.btn:active{transform:scale(.98)}.btn:disabled{opacity:.45;cursor:not-allowed;transform:none}.btn.primary{background:var(--accent);color:var(--accent-on)}.btn.primary:hover{background:var(--accent-hover)}.btn.tint{background:var(--accent-soft);color:var(--accent)}.btn.danger{background:var(--danger-soft);color:var(--danger)}.btn-row{display:flex;flex-wrap:wrap;gap:8px;align-items:center}.btn-row input,.btn-row select{width:auto;min-width:160px;flex:1}.icon-btn{width:34px;height:34px;display:inline-flex;align-items:center;justify-content:center;border:0;border-radius:50%;background:var(--fill);color:var(--text);cursor:pointer;flex:none;padding:0;transition:background var(--ease)}.icon-btn:hover{background:var(--fill-strong)}.segmented{display:inline-flex;padding:2px;background:var(--fill);border-radius:10px;gap:2px}.segmented button{border:0;background:transparent;color:var(--text-secondary);padding:6px 12px;border-radius:8px;cursor:pointer;font-weight:530}.segmented button.is-on{background:var(--surface);color:var(--text);box-shadow:var(--shadow-sm)}.period{display:inline-flex;align-items:center;gap:6px}.period-label{min-width:10.5rem;text-align:center;font-weight:600;letter-spacing:-.02em;text-transform:capitalize}.group{background:var(--surface);border-radius:var(--radius-l);margin-bottom:20px;box-shadow:0 0 0 .5px var(--separator)}.group-pad{padding:18px 20px 20px}.group+.group{margin-top:0}.group-title{padding:4px 4px 8px;font-size:13px;font-weight:600;color:var(--text-secondary);letter-spacing:-.01em}.row{display:flex;align-items:center;gap:12px;padding:13px 16px;border-bottom:.5px solid var(--separator);min-height:52px}.row:last-child{border-bottom:0}.row-main{flex:1;min-width:0}.row-main strong{display:block;font-weight:590}.row-main .muted{font-size:13px}.row input,.row select{width:auto;flex:1;min-width:0}.card{background:var(--surface);border-radius:var(--radius-l);padding:18px 20px;margin-bottom:16px;box-shadow:0 0 0 .5px var(--separator)}.grid{display:grid;gap:12px}.grid.cols-3{grid-template-columns:repeat(auto-fit,minmax(180px,1fr))}.status-line{display:flex;flex-wrap:wrap;gap:18px;color:var(--text-secondary);font-size:14px;margin-bottom:18px}.status-line b{color:var(--text);font-weight:600}.quiet-list{list-style:none;margin:0;padding:0}.quiet-list li{padding:12px 0;border-bottom:.5px solid var(--separator);display:flex;gap:12px;justify-content:space-between;align-items:baseline}.quiet-list li:last-child{border-bottom:0}label{display:block;font-size:13px;color:var(--text-secondary);margin-bottom:6px}input,select,textarea{width:100%;background:var(--fill);color:var(--text);border:0;border-radius:var(--radius-s);padding:10px 12px;font:inherit}input:focus,select:focus,textarea:focus{outline:2px solid var(--accent);outline-offset:0;background:var(--surface-2)}input[type=checkbox],input[type=radio]{width:auto;height:auto;padding:0;margin:0;flex:none;accent-color:var(--accent)}.field{margin-bottom:14px}.check{display:flex;align-items:center;gap:8px;margin:0;color:var(--text);font-size:14px;width:max-content;max-width:100%}.select-inline{width:auto;min-width:0;padding:6px 10px}.area-assign{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin:4px 0}.table-wrap{overflow:auto;border-radius:var(--radius-l);background:var(--surface);box-shadow:0 0 0 .5px var(--separator)}table{width:100%;border-collapse:collapse}th,td{padding:12px 14px;border-bottom:.5px solid var(--separator);text-align:left;vertical-align:top}th{color:var(--text-secondary);font-weight:600;font-size:12px;letter-spacing:.01em;background:var(--surface);position:sticky;top:0;z-index:2}tr:last-child td{border-bottom:0}.matrix th:first-child,.matrix td:first-child{position:sticky;left:0;z-index:1;background:var(--surface);min-width:168px}.matrix th:first-child{z-index:3}.people-table td:nth-child(2){width:1%;white-space:nowrap}.when{display:flex;flex-direction:column;gap:2px;min-width:140px}.when .dow{font-size:12px;color:var(--text-secondary);text-transform:capitalize}.when .day{font-size:16px;font-weight:620;letter-spacing:-.02em}.when .title{font-size:13px;color:var(--text-secondary)}.assign{width:100%;min-width:132px;border-radius:10px;padding:8px 10px;background:var(--fill)}.assign.is-open{background:transparent;box-shadow:inset 0 0 0 1px var(--separator);color:var(--text-tertiary)}.assign.is-conflict{box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--warning) 55%,transparent)}.cell-note{margin-top:6px;font-size:12px;color:var(--warning)}.fix-row{display:flex;align-items:center;gap:6px;margin-top:8px;font-size:13px;color:var(--text-secondary)}.cell-closed{color:var(--text-tertiary);font-size:13px}.plan-list{display:none}.plan-night{background:var(--surface);border-radius:var(--radius-l);padding:16px;margin-bottom:10px;box-shadow:0 0 0 .5px var(--separator)}.plan-night header{margin-bottom:12px}.plan-slot{display:flex;align-items:center;gap:10px;padding:8px 0;border-top:.5px solid var(--separator)}.plan-slot>span{width:88px;flex:none;color:var(--text-secondary);font-size:13px}.pill{display:inline-flex;align-items:center;gap:4px;border-radius:980px;padding:2px 8px;font-size:12px;font-weight:600;background:var(--fill);color:var(--text-secondary)}.pill.success{background:var(--success-soft);color:var(--success)}.pill.danger{background:var(--danger-soft);color:var(--danger)}.pill.warning{background:var(--warning-soft);color:var(--warning)}.pill.info{background:var(--accent-soft);color:var(--accent)}.flag{border-radius:var(--radius-m);padding:12px 14px;margin-bottom:16px;background:var(--fill);color:var(--text);font-size:14px}.flag.warning{background:var(--warning-soft)}.flag.danger{background:var(--danger-soft)}.flag.success{background:var(--success-soft)}.flag.info{background:var(--accent-soft)}.menu{position:relative}.menu-pop{position:absolute;right:0;top:calc(100% + 6px);min-width:196px;background:var(--surface-2);-webkit-backdrop-filter:var(--blur);backdrop-filter:var(--blur);border-radius:14px;padding:6px;box-shadow:var(--shadow);z-index:30;display:flex;flex-direction:column}.menu-pop button{border:0;background:transparent;text-align:left;padding:10px 12px;border-radius:10px;cursor:pointer;color:var(--text)}.menu-pop button:hover{background:var(--fill)}.menu-pop button.danger{color:var(--danger)}.sheet{position:fixed;inset:0;z-index:40;display:flex;justify-content:flex-end}.sheet-backdrop{position:absolute;inset:0;border:0;background:#0000005c;cursor:pointer}.sheet-panel{position:relative;width:min(400px,100%);height:100%;background:var(--surface);box-shadow:var(--shadow);display:flex;flex-direction:column;animation:slide-in .22s cubic-bezier(.22,1,.36,1)}.sheet-head{display:flex;align-items:center;justify-content:space-between;padding:18px 16px 12px;border-bottom:.5px solid var(--separator)}.sheet-head h3{margin:0}.sheet-body{padding:16px 18px 28px;overflow:auto}.toast{position:fixed;left:50%;bottom:28px;transform:translate(-50%);background:var(--surface-2);color:var(--text);padding:10px 16px;border-radius:980px;box-shadow:var(--shadow);font-size:14px;font-weight:560;z-index:50;animation:fade-up .25s var(--ease)}.boot,.login{min-height:100%;display:grid;place-items:center;padding:32px 20px;background:radial-gradient(900px 500px at 50% -20%,rgba(10,132,255,.12),transparent 55%),var(--bg)}.boot{color:var(--text-secondary)}.spinner{width:22px;height:22px;border:2px solid var(--fill-strong);border-top-color:var(--accent);border-radius:50%;animation:spin .7s linear infinite;margin:0 auto 12px}.login-card{width:min(400px,100%);background:var(--surface);border-radius:24px;padding:32px 28px;box-shadow:var(--shadow-sm),0 0 0 .5px var(--separator)}.login-card h1{font-size:28px;margin:0 0 4px;letter-spacing:-.03em}.login-card .btn.primary{width:100%;margin-top:8px;padding:12px}.portal{min-height:100%;max-width:560px;margin:0 auto;padding:28px max(12px,env(safe-area-inset-right,0px)) calc(96px + env(safe-area-inset-bottom,0px)) max(12px,env(safe-area-inset-left,0px))}.portal-head{margin-bottom:16px}.portal-head h1{font-size:28px;margin:0 0 4px}.choice-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:5px;margin-top:10px;min-width:0;width:100%}.choice{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;width:100%;min-width:0;max-width:100%;aspect-ratio:2 / 3;min-height:0;padding:6px 3px 5px;border:0;border-radius:12px;text-align:center;cursor:pointer;overflow:hidden;transition:background var(--ease),box-shadow var(--ease),transform var(--ease)}.choice svg{flex:none;width:32px;height:32px}.choice strong{display:block;font-size:11px;font-weight:650;line-height:1.1;letter-spacing:-.03em;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}@media(max-width:400px){.choice svg{width:26px;height:26px}.choice strong{font-size:10px}}@media(min-width:480px){.choice{aspect-ratio:4 / 3;padding:8px 6px;border-radius:12px}.choice svg{width:30px;height:30px}.choice strong{font-size:13px;letter-spacing:-.02em}}.choice[data-kind=UNAVAILABLE]{color:color-mix(in srgb,var(--danger) 17%,#8e8e93);background:color-mix(in srgb,var(--danger) 3%,color-mix(in srgb,var(--fill) 70%,var(--surface-2)));box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--danger) 7%,var(--fill))}.choice[data-kind=UNAVAILABLE] svg{color:color-mix(in srgb,var(--danger) 19%,#8e8e93)}.choice[data-kind=UNAVAILABLE]:hover{background:color-mix(in srgb,var(--danger) 7%,color-mix(in srgb,var(--fill) 55%,var(--surface-2)))}.choice[data-kind=UNAVAILABLE].is-on{color:var(--danger);background:color-mix(in srgb,var(--danger) 38%,var(--surface));box-shadow:inset 0 0 0 2px var(--danger)}.choice[data-kind=UNAVAILABLE].is-on svg{color:var(--danger)}.choice[data-kind=NORMAL]{color:color-mix(in srgb,var(--success) 17%,#8e8e93);background:color-mix(in srgb,var(--success) 3%,color-mix(in srgb,var(--fill) 70%,var(--surface-2)));box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--success) 7%,var(--fill))}.choice[data-kind=NORMAL] svg{color:color-mix(in srgb,var(--success) 19%,#8e8e93)}.choice[data-kind=NORMAL]:hover{background:color-mix(in srgb,var(--success) 7%,color-mix(in srgb,var(--fill) 55%,var(--surface-2)))}.choice[data-kind=NORMAL].is-on{color:var(--success);background:color-mix(in srgb,var(--success) 38%,var(--surface));box-shadow:inset 0 0 0 2px var(--success)}.choice[data-kind=NORMAL].is-on svg{color:var(--success)}.choice[data-kind=HIGH]{color:color-mix(in srgb,var(--accent) 17%,#8e8e93);background:color-mix(in srgb,var(--accent) 3%,color-mix(in srgb,var(--fill) 70%,var(--surface-2)));box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--accent) 7%,var(--fill))}.choice[data-kind=HIGH] svg{color:color-mix(in srgb,var(--accent) 19%,#8e8e93)}.choice[data-kind=HIGH]:hover{background:color-mix(in srgb,var(--accent) 7%,color-mix(in srgb,var(--fill) 55%,var(--surface-2)))}.choice[data-kind=HIGH].is-on{color:var(--accent);background:color-mix(in srgb,var(--accent) 38%,var(--surface));box-shadow:inset 0 0 0 2px var(--accent)}.choice[data-kind=HIGH].is-on svg{color:var(--accent)}.choice[data-kind=EMERGENCY]{color:color-mix(in srgb,var(--choice-emergency) 17%,#8e8e93);background:color-mix(in srgb,var(--choice-emergency) 4%,color-mix(in srgb,var(--fill) 70%,var(--surface-2)));box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--choice-emergency) 8%,var(--fill))}.choice[data-kind=EMERGENCY] svg{color:color-mix(in srgb,var(--choice-emergency) 19%,#8e8e93)}.choice[data-kind=EMERGENCY]:hover{background:color-mix(in srgb,var(--choice-emergency) 8%,color-mix(in srgb,var(--fill) 55%,var(--surface-2)))}.choice[data-kind=EMERGENCY].is-on{color:var(--choice-emergency);background:color-mix(in srgb,var(--choice-emergency) 40%,var(--surface));box-shadow:inset 0 0 0 2px var(--choice-emergency)}.choice[data-kind=EMERGENCY].is-on svg{color:var(--choice-emergency)}.choice:not(.is-on){filter:saturate(.5)}.choice.is-on{filter:none}.choice:disabled{opacity:.5;cursor:not-allowed}.night-card{position:relative;background:var(--surface);border-radius:16px;padding:12px 10px;margin-bottom:8px;min-width:0;box-shadow:0 0 0 .5px var(--separator)}.night-head{margin-bottom:0;padding-right:92px}.night-open{position:absolute;top:10px;right:10px}.night-card h2{margin:0;font-size:17px;font-weight:650;letter-spacing:-.02em;display:flex;align-items:baseline;gap:8px}.night-card .dow{text-transform:capitalize;color:var(--text-secondary);font-size:13px;font-weight:600}.night-detail{margin:2px 0 0;font-size:13px;color:var(--text-secondary)}.area-label{margin:8px 0 0;font-size:12px;color:var(--text-secondary)}.person{padding:16px;border-bottom:.5px solid var(--separator)}.person:last-child{border-bottom:0}.person-head{display:flex;align-items:center;gap:8px;margin-bottom:8px}.person-head strong{flex:1;font-size:17px}.dj-actions{display:flex;flex-wrap:wrap;gap:8px;align-items:center}.public{max-width:960px;margin:0 auto;padding:28px 20px 48px}.public-night,.bottom-nav,.mobile-more{display:none}@keyframes slide-in{0%{transform:translate(12px);opacity:.6}to{transform:none;opacity:1}}@keyframes fade-up{0%{transform:translate(-50%,8px);opacity:0}to{transform:translate(-50%);opacity:1}}@keyframes spin{to{transform:rotate(360deg)}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important}}@media print{.sidebar,.btn,.icon-btn,.no-print,.bottom-nav,.sheet,.toast{display:none!important}.shell{display:block;background:#fff}.content,.public,.portal{padding:0}body,.card,.group,.table-wrap,th,td{background:#fff;color:#000;box-shadow:none}}@media(max-width:860px){.shell{flex-direction:column}.sidebar{display:none;position:fixed;inset:0 auto 0 0;z-index:30;height:100dvh;width:min(280px,86vw)}.sidebar.is-open{display:flex}.content{padding:18px 16px 96px}.page-head h1{font-size:28px}.plan-matrix{display:none}.plan-list{display:block}.public .table-wrap{display:none}.public-night{display:block}.bottom-nav{display:flex;position:fixed;left:0;right:0;bottom:0;z-index:25;background:var(--nav-bg);backdrop-filter:var(--blur);-webkit-backdrop-filter:var(--blur);border-top:.5px solid var(--separator);padding:6px 8px calc(8px + env(safe-area-inset-bottom));justify-content:space-around}.bottom-nav a,.bottom-nav button{flex:1;display:flex;flex-direction:column;align-items:center;gap:2px;border:0;background:transparent;color:var(--text-secondary);font-size:10px;font-weight:560;padding:6px 4px;text-decoration:none;cursor:pointer}.bottom-nav a.active,.bottom-nav a.active svg{color:var(--accent)}.sheet{align-items:flex-end}.sheet-panel{width:100%;height:auto;max-height:88dvh;border-radius:20px 20px 0 0;animation:fade-up .22s var(--ease)}}@media(min-width:861px){.mobile-toggle{display:none!important}}
