:root{--bg:#f5f5f7;--surface:#fff;--surface-2:#fbfbfd;--surface-tint:#f0f4fb;--text:#1d1d1f;--text-2:#6e6e73;--text-3:#86868b;--text-invert:#fff;--border:#d2d2d7;--border-light:#e8e8ed;--accent:#0071e3;--accent-hover:#0077ed;--accent-fill:var(--accent);--accent-fill-hover:var(--accent-hover);--accent-contrast:var(--text-invert);--accent-soft:#e8f1fd;--accent-2:#42a5ff;--accent-border:#cfe3fb;--green:#34c759;--red:#ff3b30;--orange:#ff9500;--ok:#248a3d;--ok-strong:#1a7f37;--ok-soft:#e7f7ec;--red-soft:#ffecec;--red-strong:#c0392b;--red-border:#f3b6ab;--red-stripe:#fff4f2;--red-stripe-2:#ffe6e1;--warn-soft:#fff4e5;--warn-tint:#fff7ed;--warn-border:#fed7aa;--warn-strong:#9a3412;--warn-deep:#7c2d12;--warn-chip-bg:#fff2e8;--warn-chip-fg:#c2410c;--violet:#5856d6;--violet-soft:#ece9fb;--violet-tint:#ede9fe;--track:#e3e3e8;--topbar-bg:#ffffffb8;--nav-active-bg:#0000000f;--radius:18px;--radius-sm:12px;--radius-xs:8px;--radius-pill:980px;--border-width:1px;--shadow-sm:0 1px 2px #0000000a, 0 1px 6px #0000000a;--shadow-md:0 4px 16px #00000014;--shadow-lg:0 12px 40px #00000024;--font:-apple-system, BlinkMacSystemFont, "SF Pro Text", "Segoe UI", Roboto, Helvetica, Arial, sans-serif;--font-display:var(--font);--display-weight:600;--display-spacing:-.03em;--display-transform:none;--label-weight:600;--label-spacing:.05em;--jr-date-w:136px}*{box-sizing:border-box}html,body{margin:0;padding:0}body{background:var(--bg);color:var(--text);font-family:var(--font);-webkit-font-smoothing:antialiased;font-size:15px;line-height:1.5}h1,h2,h3{font-family:var(--font-display);font-weight:var(--display-weight);letter-spacing:var(--display-spacing);text-transform:var(--display-transform);margin:0}h1{font-size:1.6rem}h2{font-size:1.15rem}h3{font-size:1rem}a{color:var(--accent);text-decoration:none}a:hover{color:var(--accent-hover)}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.muted{color:var(--text-2)}.small,.sm{font-size:.82rem}.label{font-size:.68rem;font-weight:var(--label-weight);letter-spacing:var(--label-spacing);text-transform:uppercase;color:var(--text-3)}.topbar{z-index:20;background:var(--topbar-bg);-webkit-backdrop-filter:saturate(180%)blur(20px);backdrop-filter:saturate(180%)blur(20px);border-bottom:var(--border-width) solid var(--border-light);align-items:center;gap:1.5rem;padding:.65rem 1.5rem;display:flex;position:sticky;top:0}.brand{font-family:var(--font-display);font-weight:var(--display-weight);letter-spacing:var(--display-spacing);text-transform:var(--display-transform);color:var(--text);white-space:nowrap;align-items:center;gap:.55rem;font-size:1.02rem;display:inline-flex}.brand-dot{border-radius:var(--radius-pill);background:linear-gradient(135deg, var(--accent), var(--accent-2));flex:none;width:11px;height:11px}.nav{align-items:center;gap:.15rem;display:flex}.nav button{font:inherit;color:var(--text-2);border-radius:var(--radius-pill);cursor:pointer;background:0 0;border:0;padding:.38rem .8rem;font-size:.88rem}.nav button:hover{color:var(--text);background:var(--nav-active-bg)}.nav button.active{color:var(--text);background:var(--nav-active-bg);font-weight:600}.nav button:disabled{color:var(--text-3);cursor:not-allowed;opacity:.55}.nav button:disabled:hover{color:var(--text-3);background:0 0}.topbar-right{color:var(--text-2);align-items:center;gap:.75rem;margin-left:auto;font-size:.85rem;display:flex}.main-scroll{padding:1.75rem 1.5rem 5rem}.content{flex-direction:column;gap:1.25rem;max-width:1180px;margin:0 auto;display:flex}.page-head{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:1rem;display:flex}.btn{font:inherit;color:var(--text);background:var(--surface);border:var(--border-width) solid var(--border);border-radius:var(--radius-pill);cursor:pointer;white-space:nowrap;align-items:center;gap:.4rem;padding:.4rem .85rem;font-size:.86rem;font-weight:500;display:inline-flex}.btn:hover{border-color:var(--text-3);color:var(--text)}.btn-primary{color:var(--accent-contrast);background:var(--accent-fill);border-color:#0000}.btn-primary:hover{background:var(--accent-fill-hover);color:var(--accent-contrast)}.btn-ghost{color:var(--accent);background:0 0;border-color:#0000}.btn-ghost:hover{background:var(--nav-active-bg);border-color:#0000}.btn:disabled{opacity:.5;cursor:not-allowed}.seg{background:var(--surface);border:var(--border-width) solid var(--border);border-radius:var(--radius-pill);gap:2px;padding:2px;display:inline-flex}.seg-btn{font:inherit;color:var(--text-2);border-radius:var(--radius-pill);cursor:pointer;white-space:nowrap;background:0 0;border:0;padding:.32rem .8rem;font-size:.84rem}.seg-btn:hover{color:var(--text)}.seg-btn.on{color:var(--accent-contrast);background:var(--accent-fill);font-weight:600}.card,.entity-card{background:var(--surface);border:var(--border-width) solid var(--border-light);border-radius:var(--radius);box-shadow:var(--shadow-sm)}.entity-card{overflow:hidden}.entity-head{border-bottom:var(--border-width) solid var(--border-light);background:var(--surface-2);align-items:flex-start;gap:.75rem;padding:.9rem 1.1rem;display:flex}.entity-head .name{font-weight:600}.entity-head .sub{color:var(--text-2);font-size:.84rem}.job-spine{border-radius:var(--radius-pill);background:var(--accent);flex:none;align-self:stretch;width:4px}.chip{border-radius:var(--radius-pill);background:var(--border-light);color:var(--text-2);white-space:nowrap;align-items:center;gap:.3rem;padding:.16rem .5rem;font-size:.74rem;font-weight:500;display:inline-flex}.chip.cat-orientation{background:var(--violet-soft);color:var(--violet)}.chip.cat-certification{background:var(--accent-soft);color:var(--accent)}.chip.cat-work_type{background:var(--ok-soft);color:var(--ok-strong)}.job-flag{letter-spacing:.02em;text-transform:uppercase;border-radius:var(--radius-xs);background:var(--warn-chip-bg);color:var(--warn-chip-fg);white-space:nowrap;align-items:center;padding:.14rem .46rem;font-size:.7rem;font-weight:600;display:inline-flex}.job-flag.cx{background:var(--violet-tint);color:var(--violet)}.job-flag.oot{background:var(--warn-soft);color:var(--warn-strong)}.job-flag.ew{background:var(--violet-soft);color:var(--violet)}.role-badge{text-transform:uppercase;letter-spacing:.03em;border-radius:var(--radius-xs);background:var(--border-light);color:var(--text-2);padding:.1rem .4rem;font-size:.68rem;font-weight:600}.role-badge.supervisor{background:var(--violet-soft);color:var(--violet)}.role-badge.lead{background:var(--accent-soft);color:var(--accent)}.role-badge.tech{background:var(--border-light);color:var(--text-2)}.avatar{border-radius:var(--radius-pill);width:26px;height:26px;color:var(--text-invert);background:var(--text-3);border:2px solid var(--surface);flex:none;place-items:center;font-size:.66rem;font-weight:700;display:inline-grid}.crew-avatars{flex-wrap:wrap;align-items:center;gap:.2rem;display:flex}.sched-toolbar{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1rem;display:flex}.week-nav{align-items:center;gap:.4rem;display:inline-flex}.wk-btn{width:30px;height:30px;color:var(--text-2);background:var(--surface);border:var(--border-width) solid var(--border);border-radius:var(--radius-pill);place-items:center;font-size:1rem;line-height:1;display:inline-grid}.wk-btn:hover{color:var(--text);border-color:var(--text-3)}.wk-label{font-family:var(--font-display);font-weight:var(--display-weight);letter-spacing:var(--display-spacing);text-transform:var(--display-transform);text-align:center;min-width:15rem;font-size:1rem}.job-list{flex-direction:column;display:flex}.line-row{grid-template-columns:var(--jr-date-w) minmax(0, 1fr) auto;border-bottom:var(--border-width) solid var(--border-light);align-items:center;gap:.75rem;padding:.6rem 1.1rem;display:grid}.line-row:last-child{border-bottom:0}.jr-date{font-variant-numeric:tabular-nums;color:var(--text-2);white-space:nowrap;font-size:.8rem}.jr-crew{min-width:0}.jr-status{text-align:right;white-space:nowrap;font-size:.78rem}.jr-tags{flex-wrap:wrap;gap:.3rem;display:flex}.text-ok{color:var(--ok)}.text-gap{color:var(--red-strong)}.cal-grid{grid-template-columns:repeat(7,minmax(0,1fr));gap:.6rem;display:grid}@media (max-width:900px){.cal-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}.cal-col-head{font-size:.72rem;font-weight:var(--label-weight);letter-spacing:var(--label-spacing);text-transform:uppercase;color:var(--text-3);border-bottom:var(--border-width) solid var(--border-light);margin-bottom:.5rem;padding:.35rem .15rem}.cal-col-head.is-weekend{color:var(--violet)}.cal-col-body{flex-direction:column;gap:.5rem;min-height:4rem;display:flex}.cal-empty-day{color:var(--text-3);padding:.4rem .1rem;font-size:.76rem}.shift-card{background:var(--surface);border:var(--border-width) solid var(--border-light);border-left:3px solid var(--accent);border-radius:var(--radius-sm);box-shadow:var(--shadow-sm);flex-direction:column;gap:.3rem;padding:.5rem .6rem;display:flex}.shift-card.shift-gap{border-color:var(--red-border);background:repeating-linear-gradient(-45deg, var(--red-stripe), var(--red-stripe) 6px, var(--red-stripe-2) 6px, var(--red-stripe-2) 12px)}.shift-title{font-size:.82rem;font-weight:600;line-height:1.3}.shift-time{color:var(--text-2);font-variant-numeric:tabular-nums;font-size:.72rem}.team-grid{border-collapse:collapse;width:100%;font-size:.82rem}.team-grid th{text-align:left;font-size:.7rem;font-weight:var(--label-weight);letter-spacing:var(--label-spacing);text-transform:uppercase;color:var(--text-3);border-bottom:var(--border-width) solid var(--border);white-space:nowrap;padding:.5rem .6rem}.team-grid th.is-weekend{color:var(--violet)}.team-grid td{border-bottom:var(--border-width) solid var(--border-light);vertical-align:top;padding:.45rem .6rem}.team-grid tr:last-child td{border-bottom:0}.team-name{white-space:nowrap;align-items:center;gap:.45rem;display:flex}.team-cell{flex-direction:column;gap:.2rem;display:flex}.team-chip{border-radius:var(--radius-xs);background:var(--accent-soft);color:var(--accent);border-left:3px solid var(--accent);padding:.12rem .4rem;font-size:.72rem;line-height:1.3}.team-off{color:var(--text-3);font-size:.72rem}.team-vacation{color:var(--warn-strong);background:var(--warn-soft);border-radius:var(--radius-xs);padding:.12rem .4rem;font-size:.72rem}.stat-row{flex-wrap:wrap;gap:1.5rem;padding:.75rem 1.1rem;display:flex}.stat{flex-direction:column;gap:.1rem;display:flex}.stat .n{font-family:var(--font-display);font-weight:var(--display-weight);letter-spacing:var(--display-spacing);font-variant-numeric:tabular-nums;font-size:1.35rem}.stat .k{font-size:.68rem;font-weight:var(--label-weight);letter-spacing:var(--label-spacing);text-transform:uppercase;color:var(--text-3)}.warn-list{color:var(--warn-strong);background:var(--warn-tint);border-top:var(--border-width) solid var(--warn-border);flex-direction:column;gap:.3rem;margin:0;padding:.7rem 1.1rem;font-size:.82rem;list-style:none;display:flex}.empty{text-align:center;color:var(--text-2);flex-direction:column;align-items:center;gap:.5rem;padding:3rem 1.5rem;display:flex}.empty h3{color:var(--text)}.readonly-note{color:var(--text-2);background:var(--surface-2);border:var(--border-width) dashed var(--border);border-radius:var(--radius-sm);align-items:center;gap:.5rem;padding:.6rem 1.1rem;font-size:.82rem;display:flex}.field{flex-direction:column;gap:.25rem;display:flex}.field>label,.field-label{font-size:.72rem;font-weight:var(--label-weight);letter-spacing:var(--label-spacing);text-transform:uppercase;color:var(--text-3)}input[type=text],input[type=email],input[type=date],input[type=time],input[type=number],select,textarea{font:inherit;color:var(--text);background:var(--surface);border:var(--border-width) solid var(--border);border-radius:var(--radius-xs);width:100%;padding:.42rem .55rem;font-size:.9rem}input:focus-visible,select:focus-visible,textarea:focus-visible{border-color:var(--accent)}textarea{resize:vertical;min-height:4.5rem}input[type=number]{width:4.5rem}.grid-2{grid-template-columns:repeat(2,minmax(0,1fr));gap:.75rem;display:grid}.grid-3{grid-template-columns:repeat(3,minmax(0,1fr));gap:.75rem;display:grid}@media (max-width:720px){.grid-2,.grid-3{grid-template-columns:minmax(0,1fr)}}.check-row{align-items:center;gap:.45rem;font-size:.88rem;display:flex}.check-row input[type=checkbox]{width:auto;margin:0}.form-body{flex-direction:column;gap:.85rem;padding:1rem 1.1rem;display:flex}.form-actions{flex-wrap:wrap;align-items:center;gap:.6rem;display:flex}.action-msg{border-radius:var(--radius-xs);padding:.4rem .65rem;font-size:.85rem}.action-msg.ok{color:var(--ok-strong);background:var(--ok-soft)}.action-msg.err{color:var(--red-strong);background:var(--red-soft)}.attr-groups{flex-direction:column;gap:.7rem;display:flex}.attr-group-label{font-size:.7rem;font-weight:var(--label-weight);letter-spacing:var(--label-spacing);text-transform:uppercase;color:var(--text-3);margin-bottom:.3rem}.attr-options{flex-wrap:wrap;gap:.35rem;display:flex}.attr-option{border:var(--border-width) solid var(--border);border-radius:var(--radius-pill);cursor:pointer;background:var(--surface);align-items:center;gap:.3rem;padding:.2rem .5rem;font-size:.8rem;display:inline-flex}.attr-option input{width:auto;margin:0}.attr-option:has(input:checked){border-color:var(--accent);background:var(--accent-soft);color:var(--accent)}.need-row{align-items:center;gap:.5rem;font-size:.85rem;display:flex}.need-row .need-name{flex:1;min-width:0}.data-table{border-collapse:collapse;width:100%;font-size:.87rem}.data-table th{text-align:left;font-size:.7rem;font-weight:var(--label-weight);letter-spacing:var(--label-spacing);text-transform:uppercase;color:var(--text-3);border-bottom:var(--border-width) solid var(--border);white-space:nowrap;padding:.5rem .8rem}.data-table td{border-bottom:var(--border-width) solid var(--border-light);vertical-align:middle;padding:.55rem .8rem}.data-table tr:last-child td{border-bottom:0}.data-table .right{text-align:right;white-space:nowrap}.ce-list{flex-direction:column;display:flex}.ce-row{border-bottom:var(--border-width) solid var(--border-light);align-items:center;gap:.6rem;padding:.5rem 1.1rem;display:flex}.ce-row:last-child{border-bottom:0}.ce-row.is-blocked{background:var(--red-stripe)}.ce-row.is-on{background:var(--ok-soft)}.ce-who{align-items:center;gap:.45rem;min-width:12rem;display:flex}.ce-why{flex:1;min-width:0;font-size:.8rem}.text-warn{color:var(--warn-strong)}.ce-group-head{font-size:.7rem;font-weight:var(--label-weight);letter-spacing:var(--label-spacing);text-transform:uppercase;color:var(--text-3);background:var(--surface-2);border-bottom:var(--border-width) solid var(--border-light);padding:.55rem 1.1rem .3rem}.inline-form{display:inline}.brand-logo{object-fit:contain;flex:none;width:auto;max-width:180px;height:26px}.preview-banner{z-index:19;color:var(--text);background:var(--warn-soft);border-bottom:var(--border-width) solid var(--orange);flex-wrap:wrap;justify-content:center;align-items:center;gap:.75rem;padding:.5rem 1.5rem;font-size:.85rem;display:flex;position:sticky;top:0}.logo-current{flex-wrap:wrap;align-items:center;gap:.85rem;display:flex}.logo-preview{object-fit:contain;border:var(--border-width) solid var(--border-light);border-radius:var(--radius-sm);background-color:var(--surface);background-image:linear-gradient(45deg, var(--surface-2) 25%, transparent 25%), linear-gradient(-45deg, var(--surface-2) 25%, transparent 25%), linear-gradient(45deg, transparent 75%, var(--surface-2) 75%), linear-gradient(-45deg, transparent 75%, var(--surface-2) 75%);background-position:0 0,0 6px,6px -6px,-6px 0;background-size:12px 12px;max-width:260px;max-height:56px;padding:.35rem}.theme-options{flex-direction:column;gap:.4rem;display:flex}.theme-option{border:var(--border-width) solid var(--border-light);border-radius:var(--radius-sm);cursor:pointer;align-items:flex-start;gap:.6rem;padding:.55rem .7rem;display:flex}.theme-option:hover{border-color:var(--border)}.theme-option:has(input:checked){border-color:var(--accent);background:var(--accent-soft)}.theme-option input{flex:none;margin-top:.2rem}.theme-option .name{font-weight:600}.domain-list{flex-wrap:wrap;gap:.3rem;margin-bottom:.4rem;display:inline-flex}.domain-list .chip{align-items:center;gap:.3rem;display:inline-flex}.assistant-fab{z-index:30;font:inherit;color:var(--accent-contrast);background:var(--accent-fill);border:var(--border-width) solid transparent;border-radius:var(--radius-pill);box-shadow:var(--shadow-lg);cursor:pointer;align-items:center;gap:.5rem;padding:.6rem 1rem;font-size:.9rem;font-weight:600;display:inline-flex;position:fixed;bottom:1.25rem;right:1.25rem}.assistant-fab:hover{background:var(--accent-fill-hover)}.assistant-fab kbd{font:inherit;opacity:.75;font-size:.75rem}.assistant{z-index:30;background:var(--surface);border:var(--border-width) solid var(--border);border-radius:var(--radius);width:min(26rem,100vw - 2rem);max-height:min(34rem,100vh - 6rem);box-shadow:var(--shadow-lg);flex-direction:column;display:flex;position:fixed;bottom:1rem;right:1rem;overflow:hidden}.assistant-head{border-bottom:var(--border-width) solid var(--border-light);background:var(--surface-2);align-items:center;gap:.6rem;padding:.5rem .5rem .5rem .85rem;display:flex}.assistant-head .name{margin-right:auto;font-size:.9rem;font-weight:650}.assistant-toggle{color:var(--text-2);cursor:pointer;align-items:center;gap:.3rem;font-size:.75rem;display:inline-flex}.assistant-log{flex-direction:column;flex:1;gap:.6rem;padding:.85rem;font-size:.9rem;display:flex;overflow-y:auto}.assistant-note{color:var(--text-2);font-size:.85rem}.assistant-note ul{margin:.5rem 0 0;padding-left:1.1rem}.assistant-msg{border-radius:var(--radius-sm);white-space:pre-wrap;overflow-wrap:anywhere;padding:.55rem .75rem}.assistant-msg.is-user{max-width:85%;color:var(--accent-contrast);background:var(--accent-fill);align-self:flex-end}.assistant-msg.is-assistant{background:var(--surface-2);border:var(--border-width) solid var(--border-light)}.assistant-msg.is-error{color:var(--red-strong);background:var(--red-soft);border:var(--border-width) solid var(--red-border)}.assistant-msg.is-pending{color:var(--text-3);font-style:italic}.assistant-actions{color:var(--text-3);margin-top:.4rem;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.72rem;display:block}.assistant-choice{background:var(--warn-soft);border:var(--border-width) solid var(--orange);border-radius:var(--radius-sm);flex-wrap:wrap;gap:.4rem;padding:.6rem .75rem;display:flex}.assistant-choice p{width:100%;margin:0 0 .2rem;font-size:.85rem}.assistant-input{border-top:var(--border-width) solid var(--border-light);align-items:flex-end;gap:.5rem;padding:.6rem;display:flex}.assistant-input textarea{resize:none;font:inherit;color:var(--text);background:var(--surface);border:var(--border-width) solid var(--border);border-radius:var(--radius-sm);flex:1;padding:.45rem .6rem;font-size:.9rem}.assistant-input textarea:focus-visible{outline:2px solid var(--accent);outline-offset:1px;border-color:var(--accent)}
