:root{color-scheme:light;--canvas:#f5f7fb;--canvas-glow:#e9effa;--surface:#fff;--surface-raised:#fff;--surface-soft:#f8f9fc;--surface-hover:#edf1f8;--ink:#17243c;--muted:#64718a;--subtle:#5e6c83;--line:#e4e9f2;--line-strong:#d1d9e6;--accent:#345ee7;--accent-soft:#edf2ff;--accent-ink:#294ebe;--day-bg:linear-gradient(145deg,#f0f5ff,#e8effd);--day-ink:#2c4676;--day-border:#d4e0f4;--day-meta:#435f88;--call-bg:linear-gradient(145deg,#263958,#17273f);--call-ink:#edf3ff;--call-muted:#b7c6df;--call-accent:#edc98b;--off-bg:linear-gradient(135deg,#f5f2f9,#eeeaf4);--off-ink:#766489;--post-bg:#f2f5f8;--post-ink:#687c92;--shadow:0 0 0 1px #13213b08,0 2px 5px #13213b04,0 12px 35px #13213b05;--shadow-small:0 0 0 1px #15284c0d,0 1px 3px #15284c08;font-family:Inter,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;font-synthesis:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}
:root[data-theme=dark]{color-scheme:dark;--canvas:#0e1522;--canvas-glow:#17243b;--surface:#151e2e;--surface-raised:#1b2639;--surface-soft:#121b2a;--surface-hover:#24324a;--ink:#e8eef9;--muted:#a0aec5;--subtle:#7889a3;--line:#263248;--line-strong:#3a4a65;--accent:#91aeff;--accent-soft:#253455;--accent-ink:#b9caff;--day-bg:linear-gradient(145deg,#253754,#1e2d46);--day-ink:#dbe8ff;--day-border:#344969;--day-meta:#9ab5dc;--call-bg:linear-gradient(145deg,#2c3547,#172338);--call-ink:#f2f5fc;--call-muted:#b9c6df;--call-accent:#e7c18a;--off-bg:linear-gradient(135deg,#302c42,#262438);--off-ink:#c6b6d9;--post-bg:#202c3b;--post-ink:#a6b8cb;--shadow:0 0 0 1px #ffffff08,0 14px 45px #00000017;--shadow-small:0 0 0 1px #ffffff0d,0 2px 4px #00000012}
@media(prefers-color-scheme:dark){:root:not([data-theme]){color-scheme:dark;--canvas:#0e1522;--canvas-glow:#17243b;--surface:#151e2e;--ink:#e8eef9;--muted:#a0aec5;--line:#263248}}
*{box-sizing:border-box}body{margin:0;background:radial-gradient(ellipse at 85% 0,var(--canvas-glow),transparent 56%),var(--canvas);color:var(--ink);font-size:14px;min-height:100vh}button,input,select{font:inherit;color:inherit}button,input,select,a{-webkit-tap-highlight-color:transparent}button{cursor:pointer;border:0;background:none}button,input,select{min-height:44px}button:disabled{cursor:default;opacity:.45}button:focus-visible,input:focus-visible,select:focus-visible,a:focus-visible,[tabindex]:focus-visible{outline:3px solid var(--accent);outline-offset:3px}button:active:not(:disabled){filter:brightness(.95)}a{color:inherit}h1,h2,h3,h4,p{margin:0}h1,h2,h3{text-wrap:balance}p{text-wrap:pretty}.icon{width:19px;height:19px;display:block;flex:none}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}[hidden]{display:none!important}.skip-link{position:fixed;top:-70px;left:15px;z-index:30;padding:13px 18px;border-radius:8px;background:var(--surface);box-shadow:var(--shadow)}.skip-link:focus{top:10px}
.app-header{min-height:82px;display:flex;align-items:center;justify-content:space-between;gap:25px;padding:14px 38px;background:linear-gradient(105deg,#0d1c36,#142644 68%,#1b2c49);color:#d8e1f1;border-bottom:1px solid #ffffff0c}.brand{display:flex;align-items:center;gap:20px;min-height:44px;text-decoration:none;flex:none}.brand-logo{width:150px;height:46px;object-fit:contain}.brand-divider{width:1px;height:26px;background:#ffffff29}.product-name{font-size:16px;letter-spacing:-.2px;font-weight:550;color:#eef3fb}.main-nav{display:flex;align-items:center;gap:5px}.nav-button{display:flex;align-items:center;justify-content:center;gap:9px;padding:0 16px;min-height:46px;border-radius:8px;color:#b8c7df;white-space:nowrap;font-size:13px;font-weight:500}.nav-button .icon{width:17px;height:17px}.nav-button.active{background:#ffffff12;box-shadow:inset 0 0 0 1px #ffffff12;color:#fff}.header-tools{display:flex;align-items:center;gap:5px}.theme-control{display:flex;align-items:center;gap:7px;padding-left:11px;border:1px solid #ffffff1a;border-radius:7px;color:#c7d5ec}.theme-control .icon{width:16px;height:16px}.theme-control select{background:transparent;color:#d8e4f8;border:0;max-width:100px;min-height:44px;font-size:12px;padding:0 7px 0 0;cursor:pointer}.theme-control option{color:#14223b;background:#fff}.header-tools .icon-button{color:#c5d3e9}.header-tools .icon-button:focus-visible,.theme-control select:focus-visible{outline-color:#adc4ff}
.main-content{max-width:1900px;margin:0 auto;padding:30px 40px}.workspace-heading{display:flex;align-items:center;justify-content:space-between;gap:20px;margin-bottom:22px}h1{font-size:29px;font-weight:650;letter-spacing:-1px;line-height:1.25}.button{min-height:44px;padding:0 14px;display:inline-flex;align-items:center;justify-content:center;gap:8px;border-radius:7px;background:var(--surface-raised);box-shadow:var(--shadow-small);font-size:13px;font-weight:550;white-space:nowrap}.button .icon{width:17px;height:17px;color:var(--muted)}.export-button{font-size:12px;color:var(--muted);padding:0 13px}.icon-button{width:44px;min-width:44px;height:44px;display:inline-grid;place-items:center;border-radius:7px;background:var(--surface-raised);box-shadow:var(--shadow-small);color:var(--muted)}.icon-button.quiet{background:transparent;box-shadow:none}.context-bar{display:flex;align-items:center;gap:12px;margin-bottom:23px}.primary-field{display:flex;align-items:center;min-height:48px;border-radius:8px;background:var(--surface);box-shadow:var(--shadow-small);min-width:0;padding-left:14px}.primary-field label{display:flex;gap:7px;align-items:center;font-size:12px;color:var(--muted);flex:none}.primary-field label .icon{width:16px;height:16px;color:var(--subtle)}.primary-field select{border:0;background:transparent;font-size:13px;font-weight:550;min-height:48px;padding:0 32px 0 13px;max-width:100%;min-width:0;cursor:pointer;text-overflow:ellipsis}.person-field{min-width:225px;max-width:330px}.person-field select{width:100%}.location-field{min-width:230px;max-width:380px}.location-field select{width:100%}.filter-toggle{margin-left:auto;min-height:46px;background:transparent;box-shadow:inset 0 0 0 1px var(--line-strong);color:var(--muted);font-weight:500}.filter-toggle.has-filters{background:var(--accent-soft);color:var(--accent-ink);box-shadow:inset 0 0 0 1px var(--accent-soft)}.filter-count{display:inline-grid;place-items:center;font-size:11px;min-width:20px;height:20px;padding:0 4px;background:var(--accent);color:var(--surface);border-radius:6px}.advanced-filters{display:flex;align-items:flex-end;gap:16px;flex-wrap:wrap;margin:-8px 0 20px;padding:18px;background:var(--surface-soft);border:1px solid var(--line);border-radius:10px}.field{flex:1;min-width:140px}.field label{display:block;font-size:12px;font-weight:550;margin-bottom:7px;color:var(--muted)}.field input,.field select{display:block;width:100%;border:1px solid var(--line-strong);border-radius:6px;min-height:44px;background:var(--surface);padding:9px 11px;font-size:13px;min-width:0}.field input::placeholder{color:var(--subtle)}.reset-button{background:transparent;box-shadow:none;font-size:12px;color:var(--muted);padding:0 5px}.active-filters{display:flex;flex-wrap:wrap;gap:8px;margin:-10px 0 20px}.active-filter{min-height:44px;display:inline-flex;align-items:center;gap:9px;border-radius:6px;background:var(--accent-soft);color:var(--accent-ink);padding:0 11px;font-size:12px}.active-filter .icon{width:14px;height:14px}.active-filter strong{font-weight:600}
.calendar-workspace{background:var(--surface);box-shadow:var(--shadow);border:1px solid var(--line);border-radius:12px;overflow:hidden}.schedule-toolbar{display:flex;align-items:center;justify-content:space-between;gap:18px;padding:19px 22px 10px}.date-navigation{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.date-navigation h2{font-size:21px;letter-spacing:-.55px;font-weight:620;line-height:1.3;margin-right:4px}.date-buttons{display:flex;align-items:center;gap:1px}.date-buttons .icon-button{width:44px;min-width:44px;height:44px}.date-buttons .icon{width:19px;height:19px}.today-button{font-size:12px;background:transparent;box-shadow:inset 0 0 0 1px var(--line-strong);padding:0 12px}.date-picker-label input{width:138px;min-height:44px;font-size:12px;background:var(--surface);border:1px solid var(--line);border-radius:6px;padding:0 8px;color:var(--muted);font-variant-numeric:tabular-nums}.view-switch{display:flex;gap:2px;align-items:center;padding:3px;background:var(--surface-soft);border:1px solid var(--line);border-radius:8px}.view-switch button{padding:0 13px;min-height:44px;font-size:12px;color:var(--muted);border-radius:5px}.view-switch button.selected{background:var(--surface-raised);box-shadow:var(--shadow-small);color:var(--ink);font-weight:600}.filter-bar{display:flex;align-items:center;justify-content:space-between;gap:15px;padding:0 22px 12px}.type-filters{display:flex;align-items:center;gap:5px;flex-wrap:wrap}.type-filters button{display:flex;align-items:center;gap:7px;padding:0 11px;min-height:44px;font-size:12px;border-radius:6px;color:var(--muted);white-space:nowrap}.type-filters button.selected{background:var(--accent-soft);color:var(--accent-ink);font-weight:600}.legend-dot{width:6px;height:6px;flex:none;border-radius:50%;background:#668dd0}.legend-dot.call{background:#c49a58}.legend-dot.off{background:#a194b1}.legend-dot.postcall{background:#8e9faf}.result-count{font-size:12px;color:var(--subtle);font-variant-numeric:tabular-nums;white-space:nowrap}.schedule-surface{min-height:440px;border-top:1px solid var(--line);outline-offset:-3px;position:relative}.schedule-surface[aria-busy=true]{opacity:.7;transition:opacity .2s ease .1s}.schedule-surface[aria-busy=true]::before{content:"";position:absolute;z-index:9;top:-1px;left:0;height:2px;width:30%;background:var(--accent);animation:busy-slide 1.1s ease-in-out infinite}@keyframes busy-slide{from{transform:translateX(-100%)}to{transform:translateX(340%)}}@media(prefers-reduced-motion:reduce){.schedule-surface[aria-busy=true]::before{width:100%}}
.week-grid,.month-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr))}.day-cell{min-width:0;padding:0 11px 18px;border-right:1px solid var(--line);min-height:440px}.day-cell:nth-child(7n){border-right:0}.day-cell.weekend{background:var(--surface-soft)}.day-cell.current-day{background:linear-gradient(180deg,var(--accent-soft),transparent 320px)}.day-heading{height:81px;display:flex;align-items:center;justify-content:center;gap:9px;margin:0 -11px 15px;border-bottom:1px solid var(--line);padding:0 12px}.day-name{font-size:12px;color:var(--muted);font-weight:450}.day-number{font-size:22px;font-weight:550;letter-spacing:-.6px;line-height:36px;min-width:36px;text-align:center;font-variant-numeric:tabular-nums}.current-day .day-number{background:var(--accent);color:var(--surface);border-radius:10px;box-shadow:0 3px 10px #345ee729}.current-day .day-name{color:var(--accent-ink);font-weight:600}.current-day .day-heading{border-bottom-color:var(--accent)}.mobile-month-label{display:none}.empty-day{text-align:center;font-size:12px;color:var(--subtle);line-height:1.7;padding:27px 5px;font-weight:400}
.duty-card{display:block;position:relative;width:100%;text-align:left;min-height:44px;padding:0;margin-bottom:12px;border-radius:9px;background:var(--day-bg);border:1px solid var(--day-border);color:var(--day-ink);box-shadow:0 2px 4px #17274204;overflow:hidden;overflow-wrap:break-word}.shift-content{display:block;padding:12px 12px 14px}.shift-meta{display:flex;align-items:center;gap:6px;font-size:11px;line-height:1.4;margin-bottom:11px;color:var(--day-meta);font-weight:500;min-width:0;flex-wrap:wrap}.shift-meta .icon{width:14px;height:14px}.shift-role{margin-left:auto;font-size:11px;letter-spacing:.2px;font-weight:650;opacity:.85}.duty-title{display:block;font-size:14px;line-height:1.4;letter-spacing:-.15px;font-weight:650}.shift-time{display:block;font-size:12px;line-height:1.6;margin-top:5px;font-variant-numeric:tabular-nums}.assignment-person{display:block;font-size:13px;font-weight:650;margin-bottom:5px;line-height:1.45}.duty-card.daycall{border-color:#b9cbe6;background:var(--day-bg)}.shift-band{display:flex;align-items:stretch;min-height:35px;border-top:1px solid #15274210;font-size:10px;font-weight:550;line-height:1.3}.band-day{display:flex;align-items:center;gap:5px;flex:0 0 37%;padding:8px 8px 8px 10px;background:#f5e9cd;color:#876934}.band-night{display:flex;align-items:center;gap:5px;flex:1;padding:8px;background:linear-gradient(105deg,#344966,#172942);color:#dbe7fa;min-width:0}.shift-band .icon{width:13px;height:13px}.band-night>.icon:last-child{width:13px;height:13px;margin-left:auto;color:#9bb7e1}.band-night>.icon:first-child{color:#eed0a0}.duty-card.call.has-overnight{background:var(--call-bg);border-color:#344962;color:var(--call-ink);box-shadow:0 3px 7px #0b142713}.duty-card.call.has-overnight .shift-meta{color:var(--call-accent)}.duty-card.call.has-overnight .shift-time{color:var(--call-muted)}.overnight-only{border-top:1px solid #ffffff0c;min-height:33px}.overnight-only .band-night{padding:8px 12px;background:#0f1c2e40}.duty-card.call:not(.has-overnight){background:var(--call-bg);color:var(--call-ink);border-color:#344962}.duty-card.call:not(.has-overnight) .shift-meta{color:var(--call-accent)}.duty-card.off{background:var(--off-bg);color:var(--off-ink);border-color:color-mix(in srgb,var(--off-ink) 15%,transparent);box-shadow:none}.duty-card.off .shift-meta{color:var(--off-ink)}.duty-card.postcall{background:var(--post-bg);color:var(--post-ink);border-color:color-mix(in srgb,var(--post-ink) 15%,transparent);box-shadow:none}.duty-card.postcall .shift-meta{color:var(--post-ink)}.duty-continuation{width:100%;display:flex;align-items:flex-start;gap:8px;text-align:left;min-height:54px;padding:9px 10px;margin-bottom:12px;border-radius:7px;border:1px solid var(--line);border-left:2px solid #c9a064;background:var(--surface-soft);color:var(--muted)}.duty-continuation>.icon{width:15px;height:15px;min-width:15px;color:#b0894f;margin-top:2px}.continuation-copy{display:block;min-width:0}.continuation-title{display:block;font-size:11px;font-weight:550;line-height:1.5;color:var(--ink)}.continuation-origin{display:block;font-size:10px;line-height:1.5;margin-top:3px;color:var(--subtle)}.continuation-person{display:block;font-size:12px;line-height:1.5;margin-bottom:3px}.more-assignments{width:100%;min-height:44px;text-align:left;padding:8px 10px;font-size:12px;border-radius:6px;color:var(--accent-ink)}
.month-grid .day-cell{min-height:185px;padding:0 7px 10px;border-bottom:1px solid var(--line)}.month-grid .day-heading{height:45px;justify-content:space-between;padding:0 8px;margin:0 -7px 8px;border-bottom:0;gap:4px}.month-grid .day-name{font-size:11px}.month-grid .day-number{font-size:14px;min-width:28px;line-height:28px}.month-grid .current-day .day-number{border-radius:7px}.month-grid .outside-month{background:var(--surface-soft)}.month-grid .outside-month .day-number{color:var(--subtle)}.month-grid .shift-content{padding:9px 8px 10px}.month-grid .shift-meta{font-size:10px;margin-bottom:6px;gap:4px}.month-grid .shift-meta .icon{width:12px;height:12px}.month-grid .duty-title{font-size:12px;line-height:1.4}.month-grid .shift-time{font-size:11px;margin-top:3px}.month-grid .duty-card{border-radius:6px;margin-bottom:7px}.month-grid .shift-band{min-height:29px;font-size:10px}.month-grid .band-day,.month-grid .band-night{padding:6px 5px;gap:3px}.month-grid .band-night>.icon:last-child{display:none}.month-grid .duty-continuation{padding:7px 6px;gap:4px;margin-bottom:7px}.month-grid .continuation-title{font-size:11px}.month-grid .continuation-origin{font-size:10px}.month-grid .empty-day{font-size:11px;padding:14px 3px}
.agenda-list{padding:0 24px}.agenda-day{display:grid;grid-template-columns:124px minmax(0,1fr);gap:24px;padding:23px 0;border-bottom:1px solid var(--line)}.agenda-day:last-child{border:0}.agenda-date{font-size:16px;font-weight:550;line-height:1.5;letter-spacing:-.2px;padding-top:5px}.agenda-date small{display:block;font-size:12px;font-weight:400;color:var(--muted);line-height:1.7;margin-top:3px}.agenda-assignments{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:12px;align-items:start}.agenda-assignments .duty-card,.agenda-assignments .duty-continuation{margin:0}.agenda-assignments .empty-day{text-align:left;padding:10px 0}.agenda-day.current-day .agenda-date{color:var(--accent)}.team-person{display:flex;align-items:center;gap:8px}.mini-avatar{display:grid;place-items:center;flex:none;width:29px;height:29px;border-radius:50%;background:var(--surface-hover);font-size:10px;color:var(--muted)}.mobile-team{display:none}
.schedule-footer{display:flex;align-items:center;justify-content:space-between;gap:15px;margin-top:18px;font-size:11px;color:var(--subtle)}.sync-label{display:flex;align-items:center;gap:7px;line-height:1.6;font-variant-numeric:tabular-nums}.sync-label:before{content:"";display:block;width:5px;height:5px;background:#70a58e;border-radius:50%;flex:none}.sync-label.stale:before{background:#c19c5d}.status-banner,.horizon-note{padding:12px 15px;background:color-mix(in srgb,#d4ab63 12%,var(--surface));border:1px solid color-mix(in srgb,#c5a164 35%,var(--line));border-radius:8px;font-size:13px;line-height:1.6;color:color-mix(in srgb,#b78c49 58%,var(--ink));margin-bottom:20px}.status-banner.error{background:color-mix(in srgb,#ce6e5a 12%,var(--surface));color:color-mix(in srgb,#c36b57 68%,var(--ink));border-color:color-mix(in srgb,#c36b57 35%,var(--line))}.empty-state{min-height:360px;padding:60px 24px;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center}.empty-icon{display:grid;place-items:center;width:53px;height:53px;border-radius:15px;background:var(--accent-soft);color:var(--accent);margin-bottom:20px}.empty-icon .icon{width:25px;height:25px}.empty-state h3{font-size:18px;font-weight:600;letter-spacing:-.4px;margin-bottom:9px}.empty-state p{font-size:13px;color:var(--muted);max-width:380px;line-height:1.8}.empty-state .button{margin-top:20px}.change-list{padding:0 24px}.change-row{display:grid;grid-template-columns:140px minmax(0,1fr);gap:22px;border-bottom:1px solid var(--line);padding:22px 0}.change-row:last-child{border:0}.change-row small{font-size:12px;color:var(--muted);line-height:1.7}.change-type{display:inline-block;font-size:11px;font-weight:600;text-transform:capitalize;color:var(--accent-ink);background:var(--accent-soft);padding:4px 7px;border-radius:4px;margin-bottom:8px}.change-row h3{font-size:14px;font-weight:600;margin-bottom:7px;line-height:1.5}.change-row p{font-size:12px;color:var(--muted);line-height:1.7}
dialog{background:var(--surface);color:var(--ink);border:1px solid var(--line-strong);border-radius:16px;width:min(500px,calc(100% - 30px));max-height:90vh;max-height:90dvh;overflow:auto;padding:25px;box-shadow:0 25px 100px #06112545}dialog::backdrop{background:#07112280;backdrop-filter:blur(4px)}.dialog-top{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px;gap:15px}.detail-kind{font-size:12px;color:var(--accent);font-weight:600}.dialog-top .icon-button{margin:-8px -8px 0 0}dialog h2{font-size:25px;letter-spacing:-.7px;font-weight:630;line-height:1.3}#detail-person{font-size:14px;color:var(--muted);margin-top:8px}dialog dl{display:grid;grid-template-columns:108px minmax(0,1fr);gap:15px 18px;margin:25px 0;font-size:13px;line-height:1.6}dialog dt{color:var(--muted)}dialog dd{margin:0;overflow-wrap:break-word}.detail-note{padding:12px 14px;border-radius:8px;background:var(--accent-soft);color:var(--accent-ink);font-size:12px;line-height:1.7}.detail-sources{margin-top:25px}.detail-sources>h3{font-size:12px;font-weight:600;color:var(--muted);margin-bottom:13px}.source-assignment{padding:13px 14px;border-radius:8px;background:var(--surface-soft);border:1px solid var(--line);margin-top:8px}.source-assignment h4{font-size:13px;font-weight:600;line-height:1.5;margin-bottom:6px}.source-assignment p{font-size:12px;color:var(--muted);line-height:1.7;margin-top:4px}.source-assignment .source-recorded-time{color:var(--ink)}.source-assignment-note{white-space:pre-wrap}.dialog-footer{margin-top:22px;padding-top:17px;border-top:1px solid var(--line);font-size:11px;color:var(--subtle)}.about-content{margin-top:22px}.about-content p{font-size:13px;color:var(--muted);line-height:1.8;margin-top:14px}.about-content p:first-child{margin-top:0}noscript{display:block;padding:24px;font-size:16px}
@media(hover:hover) and (pointer:fine){.nav-button:hover{background:#ffffff0c;color:white}.button:hover:not(:disabled),.icon-button.quiet:hover{background:var(--surface-hover)}.header-tools .icon-button:hover{background:#ffffff12}.type-filters button:hover,.view-switch button:hover{color:var(--ink);background:var(--surface-hover)}.type-filters button.selected:hover{background:var(--accent-soft)}.duty-card:hover{box-shadow:0 0 0 2px var(--accent),0 3px 12px #132a4a10}.duty-continuation:hover{background:var(--surface-hover);border-color:var(--line-strong)}.more-assignments:hover{background:var(--accent-soft)}.active-filter:hover{box-shadow:inset 0 0 0 1px var(--accent)}}
@media(min-width:1600px){.main-content{padding:34px 48px}.day-cell{min-height:470px;padding-left:15px;padding-right:15px}.day-heading{margin-left:-15px;margin-right:-15px}.duty-title{font-size:15px}.shift-time{font-size:13px}.shift-content{padding:14px}.shift-meta{font-size:12px}.shift-band{font-size:11px}.band-day,.band-night{padding-top:9px;padding-bottom:9px}.continuation-title{font-size:12px}.continuation-origin{font-size:11px}}
@media(max-width:1240px){.app-header{padding-left:25px;padding-right:25px;gap:18px}.brand{gap:14px}.brand-logo{width:138px;height:42px}.product-name{font-size:14px}.nav-button{padding:0 11px;font-size:12px;gap:7px}.main-content{padding:26px 25px}.schedule-toolbar{gap:12px;flex-wrap:wrap}.date-navigation{gap:8px}.date-navigation h2{font-size:20px}.date-picker-label input{width:128px}.day-cell{padding-left:8px;padding-right:8px}.day-heading{margin-left:-8px;margin-right:-8px}.shift-content{padding:11px 9px 12px}.shift-meta{font-size:10px}.duty-title{font-size:13px}.shift-time{font-size:11px}.shift-band{font-size:10px}.band-day,.band-night{padding:8px 6px;gap:4px}.band-night>.icon:last-child{display:none}.continuation-title{font-size:11px}.duty-continuation{gap:5px;padding:8px 7px}.day-heading{gap:5px}.day-name{font-size:11px}}
@media(max-width:1030px){.product-name,.brand-divider{display:none}.app-header{gap:12px;padding-left:20px;padding-right:20px}.theme-control{padding-left:8px;gap:5px}.theme-control select{max-width:83px;font-size:11px}.main-content{padding-left:20px;padding-right:20px}.date-navigation h2{font-size:18px}.view-switch button{padding:0 10px}.day-heading{flex-direction:column;gap:1px}.day-cell{padding-left:6px;padding-right:6px}.day-heading{margin-left:-6px;margin-right:-6px}.shift-meta{font-size:10px}.shift-meta .icon{display:none}.shift-content{padding:10px 8px}.duty-title{font-size:12px}.band-day{flex-basis:35%}.shift-band .icon{display:none}.duty-continuation>.icon{display:none}}
@media(max-width:760px){
 .app-header{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px 12px;padding:12px 16px 10px;min-height:0}
 .brand-logo{width:133px;height:40px}.brand{gap:0}.header-tools .icon-button{width:44px;min-width:44px;height:44px}.theme-control{border:0;padding-left:0}.theme-control select{min-height:44px;max-width:90px;font-size:12px}.theme-control>.icon{width:16px;height:16px}
 .main-nav{grid-column:1/-1;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:4px}.nav-button{font-size:12px;padding:0 5px;gap:6px;min-height:44px;border-radius:7px}.nav-button .icon{width:16px;height:16px}
 .main-content{padding:23px 16px 24px}.workspace-heading{margin-bottom:18px;gap:12px}h1{font-size:26px;letter-spacing:-.85px}.export-button{font-size:12px;min-height:44px;padding:0 11px}.export-button .icon{width:16px;height:16px}
 .context-bar{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr) 44px;gap:9px;margin-bottom:18px;align-items:stretch}.primary-field{min-width:0;max-width:none;padding:8px 9px 0;display:block;border-radius:8px}.primary-field label{font-size:10px;line-height:1.3;gap:0}.primary-field label .icon{display:none}.primary-field select{min-height:44px;font-size:12px;padding:0 12px 0 0;width:100%;font-weight:550}.filter-toggle{width:44px;min-height:65px;padding:0;align-self:stretch;position:relative}.filter-toggle>span:nth-child(2){display:none}.filter-toggle .icon{width:19px;height:19px}.filter-count{position:absolute;top:1px;right:0;min-width:17px;height:17px;font-size:10px}
 .context-bar:has(.person-field[hidden]){grid-template-columns:minmax(0,1fr) 44px}.advanced-filters{margin:-5px 0 18px;padding:14px;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:13px}.field{min-width:0}.field label{font-size:11px}.field input,.field select{font-size:13px;min-height:44px;padding:8px}.reset-button{grid-column:1/-1;justify-self:start;min-height:44px}.active-filters{margin:-5px 0 17px;gap:7px}.active-filter{font-size:11px;min-height:44px;max-width:100%;overflow-wrap:anywhere}
 .calendar-workspace{border-radius:10px}.schedule-toolbar{display:block;padding:17px 14px 5px}.date-navigation{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:7px}.date-navigation h2{font-size:18px;line-height:1.4;letter-spacing:-.5px;margin:0}.date-buttons{gap:0}.date-buttons .icon-button{width:44px;min-width:44px}.date-buttons .icon{width:18px;height:18px}.today-button{font-size:11px;padding:0 11px;min-height:44px;grid-row:2;grid-column:2}.date-picker-label{display:flex;grid-row:2;grid-column:1;align-items:center;gap:9px;margin-top:3px}.date-picker-label input{width:143px;font-size:12px;min-height:44px}.view-switch{margin-top:15px;width:100%;padding:3px}.view-switch button{min-height:44px;flex:1;font-size:12px}.filter-bar{padding:5px 10px 12px;display:block}.type-filters{gap:1px;justify-content:space-between}.type-filters button{font-size:11px;gap:5px;min-height:44px;min-width:44px;justify-content:center;padding:0 7px}.legend-dot{width:5px;height:5px}.result-count{display:block;padding:3px 5px 0;font-size:11px}
 .schedule-surface{min-height:330px}.week-grid,.month-grid{display:block}.week-grid .day-cell,.month-grid .day-cell{min-height:0;padding:16px 13px;display:grid;grid-template-columns:62px minmax(0,1fr);gap:0 12px;border-right:0;border-bottom:1px solid var(--line)}.week-grid .day-cell:last-child,.month-grid .day-cell:last-child{border-bottom:0}.week-grid .day-heading,.month-grid .day-heading{grid-row:1 / span 30;height:auto;min-height:0;display:flex;flex-direction:column;justify-content:flex-start;align-items:center;gap:3px;padding:3px 0;border:0;margin:0}.week-grid .day-name,.month-grid .day-name{font-size:12px;line-height:1.5;display:block}.week-grid .day-number,.month-grid .day-number{font-size:24px;line-height:36px;min-width:36px}.month-grid .mobile-month-label{display:block;font-size:11px;line-height:1.5;color:var(--muted);font-weight:400}.current-day .day-number{border-radius:10px}.week-grid .empty-day,.month-grid .empty-day{font-size:12px;text-align:left;line-height:1.6;padding:15px 2px}.month-grid .outside-month{background:var(--surface-soft)}
 .week-grid .duty-card,.month-grid .duty-card{border-radius:9px;margin-bottom:10px}.week-grid .duty-card:last-child,.month-grid .duty-card:last-child{margin-bottom:0}.week-grid .shift-content,.month-grid .shift-content{padding:13px 13px 14px}.week-grid .shift-meta,.month-grid .shift-meta{font-size:11px;gap:6px;margin-bottom:10px}.week-grid .shift-meta .icon,.month-grid .shift-meta .icon{display:block;width:14px;height:14px}.week-grid .duty-title,.month-grid .duty-title{font-size:15px;line-height:1.4}.week-grid .shift-time,.month-grid .shift-time{font-size:13px;line-height:1.6;margin-top:5px}.week-grid .shift-band,.month-grid .shift-band{font-size:11px;min-height:36px}.week-grid .band-day,.month-grid .band-day{padding:9px 12px;gap:6px;flex-basis:40%}.week-grid .band-night,.month-grid .band-night{padding:9px 11px;gap:6px}.week-grid .shift-band .icon,.month-grid .shift-band .icon{display:block;width:13px;height:13px}.week-grid .band-night>.icon:last-child,.month-grid .band-night>.icon:last-child{display:block}.week-grid .duty-continuation,.month-grid .duty-continuation{padding:10px 11px;gap:7px;margin-bottom:10px;min-height:54px}.week-grid .duty-continuation>.icon,.month-grid .duty-continuation>.icon{display:block;width:15px;height:15px}.week-grid .continuation-title,.month-grid .continuation-title{font-size:12px;line-height:1.5}.week-grid .continuation-origin,.month-grid .continuation-origin{font-size:11px}.month-grid .more-assignments{font-size:12px;min-height:44px;padding:8px 10px}
 .agenda-list{padding:0 14px}.agenda-day{grid-template-columns:62px minmax(0,1fr);gap:12px;padding:18px 0}.agenda-date{font-size:14px;line-height:1.6}.agenda-date small{font-size:11px}.agenda-assignments{display:block}.agenda-assignments .duty-card,.agenda-assignments .duty-continuation{margin-bottom:10px}.agenda-assignments .duty-card:last-child,.agenda-assignments .duty-continuation:last-child{margin-bottom:0}.agenda-assignments .shift-content{padding:13px}.agenda-assignments .duty-title{font-size:14px}.agenda-assignments .shift-meta{font-size:11px}.agenda-assignments .shift-meta .icon{display:block}.agenda-assignments .shift-time{font-size:12px}.agenda-assignments .shift-band{font-size:11px}.agenda-assignments .shift-band .icon{display:block}.agenda-assignments .band-day,.agenda-assignments .band-night{padding:9px 10px}.agenda-assignments .duty-continuation>.icon{display:block}.agenda-assignments .continuation-title{font-size:12px}.agenda-assignments .continuation-origin{font-size:11px}.team-scroll{display:none}.mobile-team{display:block}
 .schedule-footer{margin-top:15px;font-size:10px;gap:8px}.status-banner,.horizon-note{font-size:12px;padding:11px 12px}.empty-state{padding:45px 20px;min-height:300px}.empty-state h3{font-size:17px}.empty-state p{font-size:12px}.change-list{padding:0 15px}.change-row{grid-template-columns:80px minmax(0,1fr);gap:14px;padding:18px 0}.change-row small{font-size:10px}.change-row h3{font-size:12px}.change-row p{font-size:11px}dialog{padding:22px;max-height:88vh;max-height:88dvh}dialog h2{font-size:23px}dialog dl{font-size:12px;grid-template-columns:90px minmax(0,1fr);gap:14px}
}
@media(max-width:370px){.main-content{padding-left:11px;padding-right:11px}.app-header{padding-left:12px;padding-right:12px}.nav-button{font-size:11px;gap:5px}.date-navigation h2{font-size:16px}.type-filters button{font-size:10px;padding:0 6px}.week-grid .day-cell,.month-grid .day-cell{grid-template-columns:51px minmax(0,1fr);gap:0 9px;padding:14px 10px}.agenda-day{grid-template-columns:51px minmax(0,1fr);gap:9px}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{scroll-behavior:auto!important;animation:none!important;transition:none!important}}
@media print{.app-header,.context-bar,.advanced-filters,.active-filters,.export-button,.type-filters,.view-switch,.date-picker-label,.date-buttons,.today-button{display:none!important}.main-content{padding:0}body{background:#fff;color:#111}.calendar-workspace{box-shadow:none;border-color:#bbb}.schedule-surface{overflow:visible}.team-scroll{overflow:visible;max-height:none}.duty-card{break-inside:avoid}*{-webkit-print-color-adjust:exact;print-color-adjust:exact}}
/* Text tabs keep all four destinations distinct on narrow phones. */
@media(max-width:760px){.main-nav .nav-button .icon{display:none}}
@media(max-width:370px){.brand-logo{width:118px;height:36px}}
/* Compact roster: one visible page, normal document scrolling. */
.primary-colleague{display:flex;align-items:center;gap:9px;min-width:180px;max-width:290px;flex:1;padding:0 12px;background:var(--surface);box-shadow:var(--shadow-small);border-radius:8px}.primary-colleague>.icon{width:17px;height:17px;color:var(--subtle)}.primary-colleague input{width:100%;min-width:0;background:transparent;border:0;min-height:48px;padding:0;font-size:13px}.primary-colleague input::placeholder{color:var(--muted)}
.team-pagination{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:8px 16px;border-bottom:1px solid var(--line);min-height:58px}.team-page-summary{font-size:12px;color:var(--muted);font-variant-numeric:tabular-nums}.team-page-controls{display:flex;align-items:center;gap:5px}.team-page-number{font-size:11px;color:var(--subtle);min-width:32px;text-align:center;font-variant-numeric:tabular-nums}.team-page-controls .icon-button{width:44px;min-width:44px}.team-scroll-hint{display:none;font-size:11px;color:var(--subtle);margin-left:auto;margin-right:10px}.team-view:has(.team-scroll[data-scrollable]) .team-scroll-hint{display:inline}.calendar-workspace:has(.team-view){overflow:visible}
/* Team matrix: the pinned header row and every body row are grids on one shared template, so columns line up by construction. The grid shrinks to the minimums, and only past them does the body scroll sideways inside .team-scroll (the header mirrors its scrollLeft). */
.team-matrix{position:relative;--team-name:minmax(104px,176px);--team-day-min:88px;--team-columns:var(--team-name) repeat(7,minmax(var(--team-day-min),1fr))}.team-date-header{position:sticky;top:0;z-index:8;overflow:hidden;border-bottom:1px solid var(--line);background:var(--surface-soft)}.team-header-track,.team-row{display:grid;grid-template-columns:var(--team-columns);align-items:stretch}.team-header-track>*,.team-cell{min-width:0;border-right:1px solid var(--line)}.team-header-track>:last-child,.team-cell:last-child{border-right:0}.team-header-person{position:sticky;left:0;z-index:2;display:flex;align-items:center;background:var(--surface-soft);padding:12px 15px;font-size:12px;color:var(--muted)}.team-header-date{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:2px 7px;min-height:55px;font-size:12px;line-height:1.3;padding:8px 5px;color:var(--muted);text-align:center}.team-header-date strong{font-size:12px;font-weight:600;color:var(--ink);font-variant-numeric:tabular-nums}.team-header-date.current-day{background:var(--accent-soft);color:var(--accent-ink)}
.team-scroll{overflow-x:auto;overflow-y:hidden;border-radius:0 0 12px 12px;scrollbar-color:var(--line-strong) transparent;outline-offset:-3px}.team-table{min-width:100%}.team-row{min-height:54px}.team-cell{padding:5px;border-bottom:1px solid var(--line)}.team-cell-person{position:sticky;left:0;z-index:1;display:flex;align-items:center;background:var(--surface);padding:8px 10px;font-size:12px;font-weight:500;line-height:1.5}.team-cell.current-day{background:var(--accent-soft)}.team-table .team-person>span:last-child{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;overflow-wrap:anywhere}.team-table .team-shift{height:44px;min-height:44px;margin:0}.team-table .mini-avatar{width:27px;height:27px;font-size:10px}.team-table .team-person{gap:8px}
.team-matrix:has(.team-scroll[data-scrollable]:not(.at-end))::after{content:"";position:absolute;top:0;right:0;bottom:12px;width:44px;z-index:9;pointer-events:none;background:linear-gradient(90deg,transparent,color-mix(in srgb,var(--surface) 88%,transparent))}.team-matrix:has(.team-scroll[data-scrollable]:not(.at-start)) .team-cell-person,.team-matrix:has(.team-scroll[data-scrollable]:not(.at-start)) .team-header-person{box-shadow:6px 0 12px -6px #0d1b3340}
.team-shift{display:block;width:100%;min-height:44px;text-align:left;padding:6px 7px;margin-bottom:4px;border-radius:5px;background:var(--day-bg);border:1px solid var(--day-border);color:var(--day-ink);overflow:hidden}.team-shift:last-child{margin-bottom:0}.team-shift-title{display:flex;align-items:center;gap:5px;min-width:0;font-size:12px;font-weight:600;line-height:1.4}.team-shift-title>span{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;min-width:0}.team-shift-title>.icon{width:12px;height:12px;min-width:12px;color:#b59158}.team-shift-meta{display:block;font-size:11px;line-height:1.45;margin-top:2px;color:var(--day-meta);white-space:nowrap;text-overflow:ellipsis;overflow:hidden;font-variant-numeric:tabular-nums}.team-shift.call,.team-shift.daycall{border-left:2px solid #c49a58}.team-shift.call{background:var(--call-bg);color:var(--call-ink);border-top-color:#344962;border-right-color:#344962;border-bottom-color:#344962}.team-shift.call .team-shift-meta{color:var(--call-muted)}.team-shift.off{background:var(--off-bg);color:var(--off-ink);border-color:color-mix(in srgb,var(--off-ink) 18%,transparent)}.team-shift.off .team-shift-meta{color:var(--off-ink)}.team-shift.postcall,.team-shift.is-carry{background:var(--surface-soft);color:var(--muted);border-color:var(--line)}.team-shift.is-carry{border-left:2px solid #c49a58}.team-shift.postcall .team-shift-meta,.team-shift.is-carry .team-shift-meta{color:var(--muted)}.team-empty{display:block;text-align:center;line-height:44px;color:var(--subtle);font-size:20px}.team-day-selector{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:4px;padding:10px;border-bottom:1px solid var(--line)}.team-day-button{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;min-height:54px;border-radius:7px;color:var(--muted)}.team-day-button>span{font-size:10px}.team-day-button strong{font-size:16px;font-weight:600}.team-day-button.selected{background:var(--accent-soft);color:var(--accent-ink);box-shadow:inset 0 0 0 1px var(--accent)}.team-day-button.is-today:not(.selected) strong{color:var(--accent)}.team-mobile-roster{padding:0 12px}.team-mobile-person{display:grid;grid-template-columns:minmax(105px,.85fr) minmax(0,1fr);gap:10px;padding:10px 0;border-bottom:1px solid var(--line)}.team-mobile-person:last-child{border:0}.team-mobile-person h3{font-size:12px;font-weight:550;line-height:1.5;align-self:center}.team-mobile-person .mini-avatar{display:none}.team-mobile-person .team-person{gap:0}.team-mobile-shifts{min-width:0}.team-mobile-shifts .team-shift{min-height:48px;padding:7px 8px}.team-mobile-shifts .team-shift-title{font-size:12px}.team-mobile-shifts .team-shift-meta{font-size:11px}
@media(hover:hover) and (pointer:fine){.team-shift:hover{box-shadow:0 0 0 1px var(--accent)}.team-day-button:hover{background:var(--surface-hover)}}
@media(max-width:760px){.app-header .brand{grid-column:1;grid-row:1}.app-header .header-tools{grid-column:2;grid-row:1}.app-header .main-nav{grid-column:1/-1;grid-row:2}.main-content{padding-top:16px}.workspace-heading{margin-bottom:13px}.context-bar{margin-bottom:14px}.primary-field{padding:0 9px;display:flex}.primary-field label{font-size:10px;margin-right:4px}.primary-field select{min-height:46px;font-size:12px;padding-right:10px}.filter-toggle{min-height:46px}.context-bar:has(.person-field[hidden]) .location-field{grid-column:1;grid-row:1}.context-bar:has(.person-field[hidden]) .filter-toggle{grid-column:2;grid-row:1}.primary-colleague{grid-column:1/-1;grid-row:2;max-width:none;min-width:0;min-height:44px}.primary-colleague input{min-height:44px}.team-pagination{padding:6px 10px;min-height:54px}.team-page-summary{font-size:11px}.team-page-controls{gap:1px}.team-page-number{font-size:10px;min-width:27px}.team-day-selector{padding:8px}.calendar-workspace:has(.team-view){overflow:visible}.team-mobile-person{grid-template-columns:minmax(104px,.85fr) minmax(0,1fr)} }
.nav-button{text-decoration:none}.team-summary .team-shift-title>span{flex:1}.team-extra-count{font-size:10px;line-height:16px;min-width:19px;text-align:center;border-radius:4px;background:color-mix(in srgb,currentColor 12%,transparent);padding:0 3px;flex:none}.team-day-shifts{margin-top:22px;display:grid;gap:12px}.team-day-shifts .duty-card,.team-day-shifts .duty-continuation{margin:0}.team-day-shifts .shift-content{padding:14px}.team-day-shifts .duty-title{font-size:15px}.team-day-shifts .shift-meta{font-size:12px}.team-day-shifts .shift-meta .icon{display:block}.team-day-shifts .shift-time{font-size:13px}#team-day-date{margin-top:8px;font-size:13px;color:var(--muted)}
.team-shift-title{line-height:1.3}.team-shift-meta{line-height:1.35;margin-top:1px}.team-table .team-shift{padding:4px 7px}.team-shift-meta>span+span::before{content:" · "}.when-short{display:none}
/* Narrow tablets (after the base rules so they win): a fixed 88px name column hands the slack to the days, chips keep the shift title and its time, and the site and role tags and the weekday go. */
@media(max-width:1030px){.team-matrix{--team-name:88px}.team-table .mini-avatar{display:none}.team-cell{padding:3px}.team-cell-person{padding:8px 6px}.team-header-person{padding:12px 6px}.team-table .team-shift{padding:4px 6px}.team-table .team-shift-title{font-size:11px}.team-table .team-shift-tag,.team-table .when-full{display:none}.team-table .when-short{display:inline}.team-table .team-shift-meta>span::before{content:none}}
/* Account menu, refresh and sync banner. */
.header-tools .refresh-button[aria-disabled=true]{cursor:progress;color:#eef3fb}.refresh-button.is-running .icon{animation:spin 1.1s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}
.user-menu{position:relative;flex:none}.user-menu-button{display:flex;align-items:center;gap:8px;min-height:44px;padding:0 10px 0 7px;border-radius:7px;border:1px solid #ffffff1a;color:#d8e4f8}.user-menu-button:focus-visible{outline-color:#adc4ff}.user-avatar{display:grid;place-items:center;width:28px;height:28px;flex:none;border-radius:50%;background:#ffffff1f;color:#fff;font-size:12px;font-weight:600}.user-name{font-size:12px;max-width:120px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.user-chevron .icon{width:14px;height:14px;color:#9fb1cf}.user-menu-button[aria-expanded=true]{background:#ffffff12}
.user-menu-panel{position:absolute;right:0;top:calc(100% + 8px);z-index:40;width:max-content;min-width:220px;max-width:calc(100vw - 32px);padding:14px;background:var(--surface-raised);color:var(--ink);border:1px solid var(--line-strong);border-radius:10px;box-shadow:0 18px 50px #06112530}.user-menu-name{font-size:14px;font-weight:600;line-height:1.4;overflow-wrap:anywhere}.user-menu-role{font-size:12px;color:var(--muted);line-height:1.5;margin-top:2px}.user-sign-out{width:100%;margin-top:14px;justify-content:flex-start;background:transparent;box-shadow:inset 0 0 0 1px var(--line-strong)}
.status-banner{display:flex;align-items:center;justify-content:space-between;gap:10px 14px;flex-wrap:wrap}.status-message{display:flex;align-items:flex-start;gap:9px;min-width:0;flex:1 1 240px}.status-message .icon{width:17px;height:17px;margin-top:2px}.banner-button{min-height:44px;font-size:12px;padding:0 14px;color:var(--ink)}.status-banner.working{background:var(--accent-soft);border-color:color-mix(in srgb,var(--accent) 30%,var(--line));color:var(--accent-ink)}.status-banner.success{background:color-mix(in srgb,#70a58e 13%,var(--surface));border-color:color-mix(in srgb,#70a58e 40%,var(--line));color:color-mix(in srgb,#4f8a70 75%,var(--ink))}
@media(hover:hover) and (pointer:fine){.user-menu-button:hover{background:#ffffff0c}.user-sign-out:hover{background:var(--surface-hover)}}
@media(max-width:1240px){.user-name,.user-chevron{display:none}.user-menu-button{padding:0;width:44px;justify-content:center;border:0}}
@media(max-width:1030px){.theme-control{position:relative;width:44px;height:44px;justify-content:center;padding:0;border:0}.theme-control select{position:absolute;inset:0;width:100%;max-width:none;opacity:0}.theme-control:has(select:focus-visible){outline:3px solid #adc4ff;outline-offset:3px;border-radius:7px}.header-tools{gap:2px}}
@media(max-width:760px){.theme-control{padding:0}.theme-control select{max-width:none}}
/* Sign-in page. */
.login-page{display:flex;flex-direction:column}.login-header{justify-content:space-between}.login-main{flex:1;display:flex;align-items:flex-start;justify-content:center;padding:72px 16px 48px}.login-card{width:100%;max-width:400px;padding:32px;background:var(--surface);border:1px solid var(--line);border-radius:14px;box-shadow:var(--shadow)}.login-card h1{font-size:26px}.login-intro{font-size:13px;color:var(--muted);line-height:1.7;margin-top:8px}#login-form{margin-top:24px;display:grid;gap:18px}.login-field label{display:block;font-size:12px;font-weight:550;color:var(--muted);margin-bottom:7px}.login-field input{display:block;width:100%;min-height:46px;padding:10px 12px;border:1px solid var(--line-strong);border-radius:7px;background:var(--surface);font-size:15px}.login-error{padding:11px 13px;border-radius:8px;font-size:13px;line-height:1.6;background:color-mix(in srgb,#ce6e5a 12%,var(--surface));color:color-mix(in srgb,#c36b57 68%,var(--ink));border:1px solid color-mix(in srgb,#c36b57 35%,var(--line))}.login-submit{width:100%;min-height:48px;background:var(--accent);color:#fff;box-shadow:none;font-size:14px}:root[data-theme=dark] .login-submit{color:#0e1522}.login-submit[aria-busy=true]{cursor:progress;opacity:.8}.login-help{font-size:12px;color:var(--subtle);line-height:1.7;margin-top:20px}.login-setup{margin-top:20px;padding:13px 14px;border-radius:8px;background:var(--accent-soft);color:var(--accent-ink);font-size:13px;line-height:1.6}.login-setup code{display:block;margin-top:8px;padding:9px 10px;border-radius:6px;background:var(--surface);color:var(--ink);border:1px solid var(--line);font:12px/1.5 ui-monospace,Consolas,monospace;overflow-wrap:break-word}.login-setup .no-break{white-space:nowrap}.status-banner:focus{outline:3px solid var(--accent);outline-offset:3px}
@media(hover:hover) and (pointer:fine){.login-submit:hover:not(:disabled){background:var(--accent);filter:brightness(1.08)}}
@media(max-width:760px){.login-header{display:flex;padding:12px 16px}.login-main{padding:32px 16px}.login-card{padding:24px 20px}}
/* Email-code sign-in. */
.login-form{margin-top:24px;display:grid;gap:18px}.login-card>.login-error{margin-top:18px}.login-secondary{display:flex;flex-wrap:wrap;justify-content:space-between;gap:4px 12px;margin-top:-6px}.text-button{min-height:44px;padding:0 2px;font-size:13px;color:var(--accent-ink);text-decoration:underline;text-underline-offset:3px;text-decoration-color:color-mix(in srgb,currentColor 40%,transparent)}.text-button:disabled{color:var(--muted);text-decoration:none;opacity:1}#code{font-size:22px;letter-spacing:6px;font-variant-numeric:tabular-nums;font-family:ui-monospace,Consolas,monospace}
.user-menu-email{font-size:12px;color:var(--muted);line-height:1.5;overflow-wrap:anywhere}.user-admin-link,.user-menu-about{width:100%;margin-top:14px;justify-content:flex-start;text-decoration:none;background:transparent;box-shadow:inset 0 0 0 1px var(--line-strong)}.user-admin-link:not([hidden])+.user-menu-about,.user-menu-about+.user-sign-out{margin-top:8px}
/* On the narrowest phones the About button leaves the header (it stays in the account menu) so the logo keeps its width. */
@media(max-width:400px){.header-tools>#about{display:none}}
/* Admin: people with access. */
.admin-nav{margin-right:auto;margin-left:24px}.admin-intro{font-size:13px;color:var(--muted);line-height:1.7;margin-top:6px;max-width:640px}.admin-card{background:var(--surface);border:1px solid var(--line);border-radius:12px;box-shadow:var(--shadow);padding:20px 22px;margin-bottom:22px}.admin-card h2{font-size:17px;font-weight:620;letter-spacing:-.3px}
.add-form{display:grid;grid-template-columns:minmax(200px,1.2fr) minmax(220px,1.4fr) minmax(160px,1fr) 130px auto;gap:14px;align-items:start;margin-top:16px}.add-form .field{min-width:0}.add-submit{margin-top:24px;background:var(--accent);color:#fff;box-shadow:none}:root[data-theme=dark] .add-submit{color:#0e1522}.optional{font-weight:400;color:var(--subtle)}.field-hint{font-size:12px;color:var(--subtle);line-height:1.6;margin-top:6px}
.roster-field{position:relative}.roster-results{position:absolute;left:0;right:0;top:72px;z-index:20;display:grid;padding:5px;background:var(--surface-raised);border:1px solid var(--line-strong);border-radius:8px;box-shadow:0 14px 40px #06112526;max-height:300px;overflow:auto}.roster-option{min-height:44px;text-align:left;padding:0 10px;border-radius:6px;font-size:13px}.roster-option:focus-visible{outline-offset:-3px}.roster-none{padding:10px;font-size:12px;color:var(--muted)}.roster-chosen{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:8px;padding:0 4px 0 11px;border-radius:7px;background:var(--accent-soft);color:var(--accent-ink);font-size:13px;min-width:0}.roster-chosen>span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.accounts-heading{display:flex;align-items:baseline;justify-content:space-between;gap:12px;margin-bottom:12px}.accounts-scroll{overflow-x:auto;margin:0 -22px;padding:0 22px}.accounts-table{width:100%;border-collapse:collapse;font-size:13px}.accounts-table th{text-align:left;font-size:12px;font-weight:550;color:var(--muted);padding:10px 10px;border-bottom:1px solid var(--line);white-space:nowrap}.accounts-table td{padding:12px 10px;border-bottom:1px solid var(--line);vertical-align:top;line-height:1.5}.accounts-table tr:last-child td{border-bottom:0}.accounts-empty{text-align:center;color:var(--muted);padding:30px 10px!important}
.account-name{display:flex;flex-direction:column;gap:2px;min-width:0}.account-name strong{font-weight:600}.account-name small{font-size:12px;color:var(--muted)}.you-tag{align-self:flex-start;font-size:10px;font-weight:600;padding:1px 6px;border-radius:4px;background:var(--accent-soft);color:var(--accent-ink)}.email-cell{overflow-wrap:anywhere;min-width:180px}.pill{display:inline-block;font-size:11px;font-weight:600;padding:3px 8px;border-radius:5px;white-space:nowrap}.role-admin{background:var(--accent-soft);color:var(--accent-ink)}.role-viewer{background:var(--surface-hover);color:var(--muted)}.status-active{background:color-mix(in srgb,#70a58e 16%,var(--surface));color:color-mix(in srgb,#4f8a70 75%,var(--ink))}.status-blocked{background:color-mix(in srgb,#ce6e5a 14%,var(--surface));color:color-mix(in srgb,#c36b57 68%,var(--ink))}.is-blocked .account-name strong,.is-blocked .email-cell{color:var(--muted)}.shift-hint{display:flex;flex-direction:column;font-size:12px;color:var(--muted);white-space:nowrap}.muted{color:var(--subtle)}
.row-actions{display:flex;flex-wrap:wrap;gap:6px;justify-content:flex-end}.row-action{min-height:44px;padding:0 11px;font-size:12px;font-weight:500;background:transparent;box-shadow:inset 0 0 0 1px var(--line-strong)}.danger-text{color:color-mix(in srgb,#c36b57 68%,var(--ink))}.row-action:disabled{opacity:.4}.admin-footnote{margin-top:14px}
#confirm{width:min(440px,calc(100% - 30px))}#confirm h2{font-size:21px}#confirm p{font-size:13px;color:var(--muted);line-height:1.7;margin-top:10px;overflow-wrap:anywhere}.confirm-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:22px}.danger-button{background:#b5483a;color:#fff;box-shadow:none}:root[data-theme=dark] .danger-button{background:#e48b7b;color:#1a0f0d}
#admin-status.success{background:color-mix(in srgb,#70a58e 13%,var(--surface));border-color:color-mix(in srgb,#70a58e 40%,var(--line));color:color-mix(in srgb,#4f8a70 75%,var(--ink))}
@media(hover:hover) and (pointer:fine){.roster-option:hover,.row-action:hover:not(:disabled){background:var(--surface-hover)}.add-submit:hover:not(:disabled),.danger-button:hover{filter:brightness(1.08)}}
@media(max-width:1240px){.add-form{grid-template-columns:repeat(2,minmax(0,1fr))}.add-submit{margin-top:0;justify-self:start}}
@media(max-width:1030px){.admin-nav{margin-left:8px}}
@media(max-width:760px){
 .admin-page .app-header .admin-nav{grid-template-columns:repeat(2,minmax(0,1fr));margin:0}.admin-card{padding:16px 14px;border-radius:10px}.add-form{grid-template-columns:minmax(0,1fr)}.add-submit{width:100%}
}
/* Seven columns do not fit a tablet; below 1030px each account becomes a card. */
@media(max-width:1030px){
 .accounts-scroll{margin:0;padding:0;overflow:visible}.accounts-table,.accounts-table tbody,.accounts-table tr,.accounts-table td{display:block;width:100%}.accounts-table thead{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0)}
 .accounts-table tr{border:1px solid var(--line);border-radius:9px;padding:6px 12px;margin-bottom:12px;background:var(--surface-soft)}.accounts-table td{display:grid;grid-template-columns:96px minmax(0,1fr);gap:10px;padding:8px 0;border-bottom:1px solid var(--line)}.accounts-table tr td:last-child{border-bottom:0}.accounts-table td::before{content:attr(data-label);font-size:11px;color:var(--muted);font-weight:550;padding-top:2px}.accounts-table td.accounts-empty{display:block;border:0}.accounts-table td.accounts-empty::before{content:none}
 .accounts-table td .pill{justify-self:start}.accounts-table td.actions-cell{grid-template-columns:minmax(0,1fr)}.accounts-table td.actions-cell::before{content:none}.row-actions{justify-content:flex-start}.email-cell{min-width:0}.shift-hint{white-space:normal}
}
