:root{--line:#e5e5e7;--muted:#8e8e93;--red:#f34b48;--hour:96px}*{box-sizing:border-box}html,body{color:#171719;background:#fff;height:100%;margin:0;font-family:-apple-system,BlinkMacSystemFont,SF Pro Display,PingFang SC,Helvetica Neue,sans-serif;overflow:hidden}button{font:inherit}.app-shell{background:#fff;flex-direction:column;height:100dvh;display:flex;overflow:hidden}.topbar{z-index:5;padding:max(20px, env(safe-area-inset-top)) 16px 14px;border-bottom:1px solid var(--line);background:#fff;flex:none;position:relative}.title-row{justify-content:space-between;align-items:center;gap:12px;display:flex}h1{letter-spacing:-.5px;margin:0;font-size:18px;font-weight:700}.header-pickers{flex:none;align-items:center;gap:8px;display:flex}.date-picker,.member-picker{position:relative}.date-picker:after,.member-picker:after{content:"";pointer-events:none;border-top:5px solid #626268;border-left:4px solid #0000;border-right:4px solid #0000;width:0;height:0;position:absolute;top:50%;right:10px;transform:translateY(-35%)}.date-picker select,.member-picker select{-webkit-appearance:none;appearance:none;color:#303036;background:#f3f3f5;border:0;border-radius:9px;outline:0;height:32px;padding:0 27px 0 10px;font-size:13px;font-weight:600}.date-picker select{min-width:82px}.member-picker select{max-width:112px}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;padding:0;position:absolute;overflow:hidden}.personal-status{border:1px solid var(--line);text-align:left;cursor:pointer;background:#fff;border-radius:11px;justify-content:space-between;align-items:center;gap:12px;width:100%;margin-top:12px;padding:9px 10px;display:flex}.work-status{color:#8b5cf6;align-items:center;gap:5px;min-width:0;font-size:13px;font-weight:700;display:flex}.status-detail{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.status-indicator{flex:none;justify-content:center;align-items:center;width:16px;height:16px;display:inline-flex}.status-indicator svg{fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.75px;width:16px;height:16px;display:block}.personal-status.resting .work-status{color:#3a3a3d}.personal-status.resting .status-indicator{color:#8e8e93}.personal-status:focus-visible{outline-offset:2px;outline:3px solid #8b5cf659}.view-all{color:#626268;flex:none;font-size:12px;font-weight:400}.schedule{flex:auto;min-height:0}.schedule-viewport{scrollbar-width:none;width:100%;height:100%;overflow:hidden auto}.schedule-viewport::-webkit-scrollbar{display:none}.schedule-canvas{--stage-header-height:52px;--schedule-grid-height:684px;--status-rail-width:8px;--time-gutter:clamp(56px, 17vw, 68px);grid-template-columns:var(--time-gutter) minmax(0, 1fr);grid-template-rows:var(--stage-header-height) var(--schedule-grid-height);width:100%;min-height:736px;display:grid;position:relative}.schedule-canvas:before{z-index:5;top:0;bottom:0;left:var(--time-gutter);background:var(--line);content:"";pointer-events:none;width:1px;position:absolute}.status-rail{width:var(--status-rail-width);background:#fff;position:absolute;top:0;bottom:0;right:0;overflow:hidden}.status-band{pointer-events:none;position:absolute;left:0;right:0}.status-band.working{background:#8b5cf6}.time-gutter{background:#fff}.stage-header{background:#fff;grid-area:1/2}.stage-grid{grid-template-columns:repeat(3,minmax(0,1fr));width:100%;min-width:0;display:grid;position:relative}.stage-headings{height:100%}.stage-heading{border-right:1px solid var(--line);text-overflow:ellipsis;white-space:nowrap;place-items:center;padding:0 6px;font-size:14px;font-weight:650;display:grid;overflow:hidden}.stage-heading.pink{background:#fff2f4}.stage-heading.purple{background:#fff0e5}.stage-heading.blue{background:#eff7ff}.time-labels{z-index:4;height:var(--schedule-grid-height);grid-area:2/1;position:sticky;left:0}.time-labels>*{position:absolute}.time-labels>span:not(.now-pill):not(.first):not(.duty-label){width:52px;color:var(--muted);text-align:center;font-size:13px;position:absolute;right:9px;transform:translateY(-9px)}.time-labels>span.first{width:52px;color:var(--muted);text-align:center;font-size:13px;position:absolute;right:9px}.duty-label{z-index:2;color:#fff;white-space:nowrap;background:#8b5cf6;border:1px solid #0000;border-radius:6px;flex-shrink:0;justify-content:center;align-items:center;width:fit-content;padding:2px 8px;font-size:12px;font-weight:500;line-height:16px;display:inline-flex;position:absolute;right:16px;overflow:hidden;transform:translateY(-50%)}.calendar-grid{height:var(--schedule-grid-height);border-top:1px solid var(--line);background-color:#fff;grid-area:2/2}.work-period-band{z-index:0;pointer-events:none;background:#f5f2fa;position:absolute;left:0;right:0}.time-grid-line{z-index:1;background:var(--line);pointer-events:none;height:1px;position:absolute;left:0;right:0}.stage-column{z-index:1;border-right:1px solid var(--line);position:relative}.event{z-index:2;text-align:left;color:#202026;border:0;flex-direction:column;justify-content:center;align-items:flex-start;gap:3px;padding:7px 8px 7px 10px;display:flex;position:absolute;left:0;right:0;overflow:hidden}.event strong{text-overflow:ellipsis;white-space:nowrap;max-width:100%;font-size:13px;font-weight:700;line-height:1.15;overflow:hidden}.event small{color:#5f5f66;white-space:nowrap;font-size:11px}.event.pink{background:#ffe9ee}.event.purple{background:#fff1e8}.event.blue{background:#e6f2ff}.now-line{z-index:6;background:var(--red);pointer-events:none;height:2px;position:absolute}.now-line-after{left:calc(var(--time-gutter) - 9px);right:0}.now-pill{z-index:7;right:calc(100% - var(--time-gutter) + 9px);color:#fff;background:var(--red);text-align:center;font-variant-numeric:tabular-nums;pointer-events:none;border-radius:999px;width:52px;padding:3px 7px;font-size:12px;font-weight:700;line-height:normal;position:absolute;transform:translateY(-50%)}.sheet-backdrop{z-index:10;background:#0003;align-items:flex-end;display:flex;position:fixed;inset:0}.detail-sheet{width:100%;padding:8px 24px max(28px, env(safe-area-inset-bottom));background:#fff;border-radius:20px 20px 0 0}.grabber{background:#d1d1d6;border-radius:999px;width:36px;height:5px;margin:0 auto 18px}.detail-sheet p{color:var(--muted);margin:0;font-size:14px}.detail-sheet h2{margin:8px 0 4px}.detail-sheet time{color:#55555b}.detail-sheet button{float:right;color:#fff;background:#111;border:0;border-radius:9px;margin-top:-24px;padding:8px 12px}.rest-dialog{z-index:30;color:#171719;background:#fff;border:0;width:100%;max-width:none;height:100dvh;max-height:none;margin:0;padding:0;position:fixed;inset:0}.rest-dialog::backdrop{background:#0003}.rest-dialog-content{min-height:100%;padding:max(24px, env(safe-area-inset-top)) 20px max(24px, env(safe-area-inset-bottom));flex-direction:column;display:flex}.rest-dialog header{justify-content:space-between;align-items:flex-start;gap:16px;display:flex}.rest-dialog p{color:var(--muted);margin:0;font-size:14px}.rest-dialog h2{margin:5px 0 0;font-size:22px}.rest-dialog header button{color:#fff;cursor:pointer;background:#171719;border:0;border-radius:9px;flex:none;padding:8px 12px}.rest-period-list{gap:10px;margin:30px 0 0;padding:0;list-style:none;display:grid}.rest-period-list li{background:repeating-linear-gradient(135deg,#f7f4ef 0 6px,#ece7e0 6px 8px);border:1px dashed #bbb3a9;border-radius:12px;justify-content:space-between;align-items:center;gap:12px;padding:16px;display:flex}.rest-period-list time{font-variant-numeric:tabular-nums;font-size:18px;font-weight:700}.rest-period-list span{color:#716b63;font-size:13px;font-weight:650}.schedule-dialog-note{margin-top:30px!important}.schedule-period-list{margin-top:24px}.schedule-period-list li{position:relative;overflow:hidden}.schedule-period-list .work-period:before,.schedule-period-list .rest-period:before{content:"";align-self:stretch;width:5px;margin:-16px 0 -16px -16px}.schedule-period-list .rest-period{background:#f7f4ef;border-color:#bbb3a9}.schedule-dialog{border-inline:1px solid var(--line);border-radius:0;width:min(100%,460px)}.schedule-dialog::backdrop{background:#0003}.schedule-dialog .rest-dialog-content{background:#fff}.schedule-dialog header{border-bottom:1px solid var(--line);padding-bottom:14px}.schedule-dialog p{color:var(--muted);letter-spacing:0;font-size:14px;font-weight:400}.schedule-dialog h2{color:#171719;letter-spacing:normal;font-size:22px}.schedule-dialog header button{color:#303036;background:#f3f3f5;border:0;border-radius:0;padding:8px 12px;font-size:13px;font-weight:600}.schedule-period-list{gap:10px;margin-top:24px}.schedule-period-list li{border:1px solid var(--line);min-height:0;box-shadow:none;background:#fff;border-radius:0;padding:16px}.schedule-period-list li:before{border-radius:0;width:4px;margin:-16px 12px -16px -16px}.schedule-period-list time{color:#202026;letter-spacing:normal;font-size:18px}.schedule-period-list span{font-size:13px}.schedule-period-list .work-period{background:#f5f2fa;border-color:#e2d9f3}.schedule-period-list .work-period:before{background:#8b5cf6}.schedule-period-list .work-period span{color:#6246a5}.schedule-period-list .rest-period{border-color:var(--line);background:#fff}.schedule-period-list .rest-period:before{background:#d1d1d6}.schedule-period-list .rest-period span{color:#626268}.time-preview-control{z-index:20;right:16px;bottom:max(16px, env(safe-area-inset-bottom));-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background:#fffffff5;border:1px solid #d8d8dc;border-radius:12px;width:min(300px,100vw - 32px);padding:10px 12px;position:fixed;box-shadow:0 8px 24px #0000001f}.time-preview-readout{color:#626268;justify-content:space-between;align-items:baseline;margin-bottom:7px;font-size:12px;font-weight:650;display:flex}.time-preview-control output{color:#171719;font-variant-numeric:tabular-nums;font-size:15px}.time-preview-control input{width:100%;accent-color:var(--red);margin:0;display:block}.time-preview-actions{justify-content:space-between;align-items:center;gap:12px;margin-top:8px;display:flex}.time-preview-control button{color:#626268;cursor:pointer;background:0 0;border:0;padding:0;font-size:12px}.time-preview-control button:disabled{color:#b5b5ba;cursor:default}.time-preview-control .playback-button{color:#e43f3b;align-items:center;gap:4px;font-weight:700;display:inline-flex}.playback-button span{font-size:11px}@media (min-width:600px){.app-shell{border-inline:1px solid var(--line);max-width:460px;margin:auto}}[data-theme=mint]{--line:#b9ddd5;--muted:#5d7b76;--red:#e25562}.app-shell[data-theme=mint],.rest-dialog[data-theme=mint]{color:#183d38;background:#f2fbf7}.app-shell[data-theme=mint] .topbar,.app-shell[data-theme=mint] .stage-header,.app-shell[data-theme=mint] .time-gutter,.app-shell[data-theme=mint] .status-rail,.app-shell[data-theme=mint] .calendar-grid{background:#fbfffd}.app-shell[data-theme=mint] .date-picker select,.app-shell[data-theme=mint] .member-picker select{color:#27534c;background:#e2f4ee}.app-shell[data-theme=mint] .date-picker:after,.app-shell[data-theme=mint] .member-picker:after{border-top-color:#46736c}.app-shell[data-theme=mint] .personal-status{border-color:var(--line);background:#fbfffd}.app-shell[data-theme=mint] .work-status{color:#8b5cf6}.app-shell[data-theme=mint] .personal-status.resting .work-status{color:#3a3a3d}.app-shell[data-theme=mint] .personal-status.resting .status-indicator{color:#8e8e93}.app-shell[data-theme=mint] .stage-heading.pink{background:#ffe8ef}.app-shell[data-theme=mint] .stage-heading.purple{background:#eee8ff}.app-shell[data-theme=mint] .stage-heading.blue{background:#def5ef}.app-shell[data-theme=mint] .event.pink{background:#ffdce8}.app-shell[data-theme=mint] .event.purple{background:#e7ddff}.app-shell[data-theme=mint] .event.blue{background:#cef0e8}.app-shell[data-theme=mint] .work-period-band{background:#e5f5ef}.app-shell[data-theme=mint] .status-band.working{background:#348f82}.rest-dialog[data-theme=mint] .rest-dialog-content{background:#f2fbf7}.rest-dialog[data-theme=mint] .rest-dialog header button{background:#348f82}.rest-dialog[data-theme=mint] .rest-period-list li{background:repeating-linear-gradient(135deg,#effaf6 0 6px,#dff2eb 6px 8px);border-color:#a5cdc4}.rest-dialog[data-theme=mint] .rest-period-list span{color:#5d7b76}.rest-dialog[data-theme=mint] .schedule-period-list .work-period:before{background:#348f82}.rest-dialog[data-theme=mint] .schedule-period-list .work-period span{color:#27534c}.time-preview-control[data-theme=mint]{background:#fbfffdf7;border-color:#b9ddd5}.time-preview-control[data-theme=mint] .time-preview-readout,.time-preview-control[data-theme=mint] output,.time-preview-control[data-theme=mint] button{color:#27534c}.time-preview-control[data-theme=mint] .playback-button{color:#348f82}.time-preview-control[data-theme=mint] input{accent-color:#348f82}
