@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-sans-latin-400-normal-CDDApCn2.woff2) format("woff2"),url(/assets/ibm-plex-sans-latin-400-normal-CYLoc0-x.woff) format("woff")}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-sans-latin-ext-400-normal-C5H60-Va.woff2) format("woff2"),url(/assets/ibm-plex-sans-latin-ext-400-normal-RBey6euL.woff) format("woff")}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/ibm-plex-sans-latin-500-normal-6ng42L7E.woff2) format("woff2"),url(/assets/ibm-plex-sans-latin-500-normal-BgVn5rGT.woff) format("woff")}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/ibm-plex-sans-latin-ext-500-normal-DakdToA3.woff2) format("woff2"),url(/assets/ibm-plex-sans-latin-ext-500-normal-D0aIdm-b.woff) format("woff")}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/ibm-plex-sans-latin-600-normal-CuJfVYMP.woff2) format("woff2"),url(/assets/ibm-plex-sans-latin-600-normal-Cu4Hd6ag.woff) format("woff")}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/ibm-plex-sans-latin-ext-600-normal-DOrvGEcy.woff2) format("woff2"),url(/assets/ibm-plex-sans-latin-ext-600-normal-DIrixKbi.woff) format("woff")}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/ibm-plex-sans-latin-700-normal-Bxkt5Cjx.woff2) format("woff2"),url(/assets/ibm-plex-sans-latin-700-normal-Bth3BMcD.woff) format("woff")}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/ibm-plex-sans-latin-ext-700-normal-aMgXseD4.woff2) format("woff2"),url(/assets/ibm-plex-sans-latin-ext-700-normal-DZH6Xh-4.woff) format("woff")}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-mono-latin-400-normal-DMJ8VG8y.woff2) format("woff2"),url(/assets/ibm-plex-mono-latin-400-normal-CvHOgSBP.woff) format("woff")}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-mono-latin-ext-400-normal-BmRBH3aV.woff2) format("woff2"),url(/assets/ibm-plex-mono-latin-ext-400-normal-D3D2R8hC.woff) format("woff")}@font-face{font-family:IBM Plex Sans Condensed;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/ibm-plex-sans-condensed-latin-600-normal-CRd5VyFf.woff2) format("woff2"),url(/assets/ibm-plex-sans-condensed-latin-600-normal-6XnkKYvF.woff) format("woff")}@font-face{font-family:IBM Plex Sans Condensed;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/ibm-plex-sans-condensed-latin-ext-600-normal-CBdNZ9Ci.woff2) format("woff2"),url(/assets/ibm-plex-sans-condensed-latin-ext-600-normal-DvCwRnqE.woff) format("woff")}:root{--blue-700: oklch(47% .21 263);--blue-600: oklch(53% .22 263);--blue-100: oklch(94% .035 263);--ink-900: oklch(24% .025 250);--ink-700: oklch(38% .025 250);--ink-500: oklch(52% .02 250);--surface-0: oklch(99% .003 250);--surface-1: oklch(97.5% .006 250);--surface-2: oklch(95% .009 250);--line: oklch(89% .01 250);--danger: oklch(53% .19 25);--danger-soft: oklch(95% .035 25);--success: oklch(49% .13 155);--warning-soft: oklch(95% .05 90);--font-ui: "IBM Plex Sans", sans-serif;--font-condensed: "IBM Plex Sans Condensed", "IBM Plex Sans", sans-serif;--font-mono: "IBM Plex Mono", monospace;font-family:var(--font-ui);color:var(--ink-900);background:var(--surface-1);font-synthesis:none;text-rendering:optimizeLegibility}*{box-sizing:border-box}html{min-width:320px;background:var(--surface-1)}body{margin:0;min-width:320px;min-height:100dvh;font-size:16px;line-height:1.55;overflow-x:hidden}button,input,select,textarea{font:inherit}button,a,select,input[type=checkbox],input[type=color]{cursor:pointer}button:disabled,select:disabled,input:disabled{cursor:not-allowed;opacity:.55}a{color:var(--blue-700);text-decoration:none}a:hover{text-decoration:underline}button{color:inherit}button,a,input,select,textarea,summary{outline:none}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,summary:focus-visible{outline:2px solid var(--blue-600);outline-offset:2px}h1,h2,h3,p{margin-top:0}h1,h2,h3{line-height:1.2}h1{margin-bottom:6px;font:600 30px/1.15 var(--font-condensed);letter-spacing:-.015em}h2{font-size:19px}h3{font-size:16px}small{font-size:12px}code,pre{font-family:var(--font-mono)}pre{overflow:auto;padding:16px;background:var(--ink-900);color:var(--surface-0);border-radius:6px;font-size:13px}::-moz-selection{background:var(--blue-100);color:var(--blue-700)}::selection{background:var(--blue-100);color:var(--blue-700)}.app-shell,.public-shell{min-height:100dvh}.topbar,.public-header{position:sticky;top:0;z-index:30;display:flex;align-items:center;gap:20px;min-height:64px;padding:8px 20px;background:var(--surface-0);border-bottom:1px solid var(--line)}.brand{display:inline-flex;align-items:center;gap:10px;flex:0 0 auto;color:var(--ink-900)}.brand:hover{text-decoration:none}.brand-mark{display:grid;place-items:center;width:36px;height:36px;border-radius:6px;background:var(--blue-600);color:#fff;font:600 15px var(--font-condensed);letter-spacing:.02em}.brand>span:last-child{display:flex;flex-direction:column}.brand strong{font:600 20px/1.05 var(--font-condensed)}.brand small{color:var(--ink-500);font:400 10px/1.4 var(--font-mono);letter-spacing:.08em;text-transform:uppercase}.main-nav{display:flex;align-self:stretch;gap:2px;flex:1;overflow-x:auto;overflow-y:hidden;scrollbar-width:thin}.nav-link{position:relative;display:inline-flex;align-items:center;gap:7px;min-height:44px;padding:0 12px;white-space:nowrap;color:var(--ink-500);font-size:14px;font-weight:500}.nav-link:hover{color:var(--ink-900);text-decoration:none;background:var(--surface-1)}.nav-link.active{color:var(--blue-700)}.nav-link.active:after{content:"";position:absolute;right:10px;bottom:0;left:10px;height:2px;background:var(--blue-600)}.preview-link{display:inline-flex;align-items:center;gap:7px;min-height:44px;white-space:nowrap;font-size:13px;font-weight:500}.topbar-user{display:flex;align-items:center;gap:8px;margin-left:auto}.user-chip{display:inline-flex;align-items:center;gap:6px;min-height:36px;padding:5px 9px;border:1px solid var(--line);border-radius:6px;color:var(--ink-700);font-size:13px;text-transform:capitalize}.main-content{padding:20px}.public-header{justify-content:space-between}.public-badges{display:flex;gap:16px;color:var(--ink-500);font-size:13px}.public-badges span{display:inline-flex;align-items:center;gap:6px}.button{display:inline-flex;align-items:center;justify-content:center;gap:7px;min-height:44px;padding:8px 13px;border:1px solid transparent;border-radius:6px;font-size:13px;font-weight:600;line-height:1.2;transition:background-color .15s ease-out,color .15s ease-out,border-color .15s ease-out,transform .15s ease-out}.button:hover:not(:disabled){transform:translateY(-1px)}.button:active:not(:disabled){transform:translateY(0)}.button.primary{background:var(--blue-600);color:#fff}.button.primary:hover:not(:disabled){background:var(--blue-700)}.button.secondary{background:var(--surface-0);border-color:var(--line);color:var(--ink-700)}.button.secondary:hover:not(:disabled){background:var(--surface-2);border-color:var(--ink-500)}.button.tertiary{background:transparent;color:var(--ink-700)}.button.tertiary:hover{background:var(--surface-2)}.button.danger-ghost{background:transparent;color:var(--danger);border-color:transparent}.button.danger-ghost:hover:not(:disabled){background:var(--danger-soft)}.button.danger{background:var(--danger);color:#fff}.button.danger:hover:not(:disabled){filter:brightness(.92)}.confirm-message{max-width:65ch;color:var(--ink-700);line-height:1.65}.button.compact{min-height:36px;padding:6px 10px}.button-row{display:flex;flex-wrap:wrap;justify-content:center;gap:10px}.icon-button{display:inline-grid;place-items:center;flex:0 0 auto;width:44px;height:44px;padding:0;border:1px solid transparent;border-radius:6px;background:transparent;color:var(--ink-500);transition:background-color .15s ease-out,color .15s ease-out}.icon-button:hover:not(:disabled){background:var(--surface-2);color:var(--ink-900)}.action-spacer{flex:1}.row-actions{display:flex;align-items:center;justify-content:flex-end;gap:2px}.compact.icon-button,.row-actions .icon-button{width:36px;height:36px}.page-heading{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;margin-bottom:16px}.page-heading p{margin-bottom:0;color:var(--ink-500);font-size:13px}.section-kicker{display:block;margin-bottom:4px;color:var(--blue-700);font:400 11px var(--font-mono);letter-spacing:.1em;text-transform:uppercase}.heading-actions{display:flex;gap:8px}.standard-page{max-width:1500px;margin:0 auto}.schedule-toolbar{display:flex;align-items:center;flex-wrap:wrap;gap:10px;margin-bottom:14px;padding:8px;background:var(--surface-0);border:1px solid var(--line);border-radius:8px}.toolbar-group,.toolbar-actions{display:flex;align-items:center;flex-wrap:wrap;gap:6px}.toolbar-actions{flex:1;justify-content:flex-end}.month-input{min-height:44px;padding:6px 9px;border:1px solid var(--line);border-radius:6px;background:var(--surface-0);color:var(--ink-700);font-size:13px}.segmented{display:inline-flex;padding:3px;background:var(--surface-2);border-radius:7px}.segmented button{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-height:38px;padding:6px 11px;border:0;border-radius:5px;background:transparent;color:var(--ink-500);font-size:13px;font-weight:500}.segmented button.active{background:var(--surface-0);color:var(--blue-700);box-shadow:0 1px 3px #0f171f1f}.schedule-layout{display:grid;grid-template-columns:minmax(0,1fr);gap:16px;align-items:start}.schedule-main{min-width:0}.schedule-export{max-width:100%;overflow:auto;background:var(--surface-0);border:1px solid var(--line);border-radius:8px;scrollbar-width:thin;scrollbar-color:var(--ink-500) var(--surface-2)}.week-grid{display:grid;width:100%;min-width:100%;border-collapse:collapse;font-size:12px}.grid-corner,.day-header,.row-label,.shift-cell{border-right:1px solid var(--line);border-bottom:1px solid var(--line)}.grid-corner{position:sticky;left:0;z-index:4;display:flex;flex-direction:column;justify-content:center;min-height:62px;padding:10px;background:var(--ink-900);color:var(--surface-0)}.grid-corner span{font:600 13px var(--font-condensed);letter-spacing:.06em}.grid-corner small{color:var(--surface-2);font-family:var(--font-mono)}.day-header{position:sticky;top:0;z-index:3;display:flex;flex-direction:column;align-items:flex-start;justify-content:center;gap:2px;min-height:62px;padding:8px 10px;background:var(--ink-900);color:var(--surface-0)}.day-header strong{max-width:calc(100% - 44px);font:600 13px var(--font-condensed);text-transform:uppercase}.day-header span{font:400 12px var(--font-mono)}.day-lock-button{position:absolute;top:4px;right:4px;display:grid;place-items:center;width:44px;height:44px;padding:0;border:0;border-radius:5px;background:transparent;color:var(--surface-2);opacity:.72}.day-lock-button:hover{background:#fafcfe1f;opacity:1}.day-lock-button.locked{color:#f9d46b;opacity:1}.day-header.outside{background:var(--ink-500)}.row-label{position:sticky;left:0;z-index:2;display:flex;flex-direction:column;justify-content:center;min-height:118px;padding:10px;background:var(--surface-2)}.row-label strong{font:600 13px var(--font-condensed)}.row-label span{color:var(--ink-500);font-size:11px}.row-label.section-label{min-height:74px;background:var(--surface-2)}.shift-cell{min-height:118px;padding:7px;background:var(--surface-0);vertical-align:top}.shift-cell.outside{background:var(--surface-1)}.shift-cell.cell-warning{background:var(--danger-soft)}.shift-cell.empty-definition{display:grid;place-items:center;color:var(--line);background:var(--surface-1)}.shift-meta{display:flex;align-items:flex-start;justify-content:space-between;gap:4px;margin-bottom:7px;color:var(--ink-700)}.shift-meta strong{font-size:11px;line-height:1.3}.shift-meta span{white-space:nowrap;font:400 10px var(--font-mono)}.shift-meta .understaffed{color:var(--danger);font-weight:600}.chip-list{display:flex;flex-direction:column;gap:5px}.person-chip{display:flex;align-items:center;justify-content:space-between;gap:4px;min-height:29px;padding:5px 7px;border:0;border-radius:4px;color:#121c26;font-size:12px;font-weight:600;text-align:left}.person-chip:hover:not(:disabled){filter:brightness(.96)}.person-chip.violation,.task-chip.violation{outline:2px solid var(--danger);outline-offset:1px}.add-chip{display:inline-flex;align-items:center;justify-content:center;gap:4px;min-height:29px;padding:4px 6px;border:1px dashed var(--line);border-radius:4px;background:transparent;color:var(--ink-500);font-size:11px}.add-chip:hover{border-color:var(--blue-600);color:var(--blue-700);background:var(--blue-100)}.task-cell,.absence-cell{min-height:74px}.task-chip{display:flex;align-items:center;gap:6px;min-height:38px;padding:4px 6px;border:1px solid var(--line);border-left-width:3px;border-radius:4px;background:var(--surface-0);text-align:left}.task-chip>span:last-child{display:flex;flex-direction:column}.task-chip strong{font-size:11px}.task-chip small{color:var(--ink-500);font-size:10px}.person-dot{display:inline-block;flex:0 0 auto;width:9px;height:9px;border-radius:50%;background:var(--line)}.absence-cell{display:flex;flex-direction:column;gap:4px;background:var(--surface-1)}.absence-badge{display:block;padding:3px 5px;border-left:3px solid;background:var(--surface-0);color:var(--ink-700);font-size:10px}.absence-badge.requested,.absence-badge.birthday{color:var(--danger);font-weight:600}.absence-badge.fixed{color:var(--ink-500)}.month-export{max-height:calc(100dvh - 255px)}.month-grid{width:-moz-max-content;width:max-content;min-width:100%;border-collapse:separate;border-spacing:0;font-size:11px}.month-grid th,.month-grid td{border-right:1px solid var(--line);border-bottom:1px solid var(--line)}.month-grid thead th{position:sticky;top:0;z-index:3;min-width:34px;height:52px;padding:5px;background:var(--ink-900);color:var(--surface-0);text-align:center}.month-grid thead th span{display:block;color:var(--surface-2);font:400 9px var(--font-mono);text-transform:uppercase}.month-grid thead th strong{font:600 13px var(--font-condensed)}.month-grid thead .weekend{background:var(--blue-700)}.month-grid .person-column{position:sticky;left:0;z-index:2;min-width:154px;max-width:154px;padding:8px;background:var(--surface-0);text-align:left}.month-grid thead .person-column{z-index:4;background:var(--ink-900)}.month-grid .person-column>span:last-child{display:inline-flex;flex-direction:column;margin-left:5px;vertical-align:middle}.month-grid .person-column small{display:block;color:inherit;font-weight:400;opacity:.82}.month-grid td{min-width:34px;height:51px;padding:0;background:var(--surface-0)}.month-grid td.weekend{background:var(--blue-100)}.month-cell{display:flex;align-items:center;justify-content:center;flex-wrap:wrap;gap:2px;width:100%;min-height:50px;padding:3px;border:0;background:transparent}button.month-cell:hover{background:var(--surface-2)}.month-entry{display:grid;place-items:center;min-width:21px;height:22px;padding:2px;border-radius:3px;color:var(--ink-900);font:600 10px var(--font-condensed)}.month-absence{color:var(--danger);font:600 8px var(--font-condensed)}.month-grid .total-column{position:sticky;right:0;min-width:47px;padding:6px;background:var(--surface-2);text-align:center}.month-grid .total-column+.total-column{right:47px}.month-grid thead .total-column{z-index:4;background:var(--ink-900);color:var(--surface-0)}.side-panel{display:grid;gap:12px;min-width:0}.quick-stats{display:grid;grid-template-columns:1fr 1fr;background:var(--surface-0);border:1px solid var(--line);border-radius:8px}.quick-stats>div{display:flex;align-items:center;gap:9px;padding:14px;color:var(--blue-700)}.quick-stats>div+div{border-left:1px solid var(--line)}.quick-stats span{display:flex;flex-direction:column}.quick-stats strong{color:var(--ink-900);font:600 21px var(--font-condensed)}.quick-stats small{color:var(--ink-500)}.warnings-section{overflow:hidden;background:var(--surface-0);border:1px solid var(--line);border-radius:8px}.warnings-section>header{display:flex;align-items:center;justify-content:space-between;padding:12px 14px;border-bottom:1px solid var(--line)}.warnings-section h2{margin:0;font-size:15px}.warning-count,.ok-count{display:grid;place-items:center;min-width:24px;height:24px;padding:0 6px;border-radius:12px;background:var(--danger-soft);color:var(--danger);font:600 11px var(--font-mono)}.ok-count{background:#d7f4e0;color:var(--success)}.warning-list{max-height:380px;overflow:auto}.warning-item{display:flex;align-items:flex-start;gap:8px;width:100%;min-height:54px;padding:10px 12px;border:0;border-bottom:1px solid var(--line);background:transparent;color:var(--danger);text-align:left}.warning-item:hover{background:var(--danger-soft)}.warning-item>svg{flex:0 0 auto;margin-top:2px}.warning-item>span{flex:1;color:var(--ink-700);font-size:12px}.warning-item small{display:block;margin-top:3px;color:var(--danger);font-family:var(--font-mono)}.all-clear{display:flex;align-items:center;gap:8px;padding:16px;color:var(--success)}.all-clear p{margin:0;color:var(--ink-500);font-size:13px}.side-note{padding:4px 2px;color:var(--ink-500);font-size:12px}.side-note strong{color:var(--ink-700)}.side-note p{margin:4px 0 0}.modal-backdrop{position:fixed;inset:0;z-index:80;display:grid;place-items:center;padding:16px;background:#0b121a8c;animation:fade-in .15s ease-out}.modal{width:100%;max-width:620px;max-height:calc(100dvh - 32px);overflow:auto;background:var(--surface-0);border-radius:9px;box-shadow:0 20px 70px #0b121a47;animation:modal-in .18s ease-out}.modal-wide{max-width:980px}.modal-header{position:sticky;top:0;z-index:2;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px 18px;background:var(--surface-0);border-bottom:1px solid var(--line)}.modal-header h2{margin:0}.modal-body{padding:18px}.modal-actions{display:flex;align-items:center;flex-wrap:wrap;gap:8px;margin-top:18px;padding-top:14px;border-top:1px solid var(--line)}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:13px}.form-grid.three-columns{grid-template-columns:repeat(3,minmax(0,1fr))}.field{display:flex;flex-direction:column;gap:5px;min-width:0;color:var(--ink-700);font-size:13px}.field>span{font-weight:500}.field input,.field select,.field textarea,.absence-add input,.absence-add select,.new-relation input,.new-relation select,.relation-row input,.relation-row select{width:100%;min-height:44px;padding:8px 10px;border:1px solid var(--line);border-radius:5px;background:var(--surface-0);color:var(--ink-900)}.field input[type=color]{padding:4px}.field textarea{resize:vertical}.field-full{grid-column:1 / -1}.field-help{align-self:center;margin:0;color:var(--ink-500);font-size:11px}.field-error{color:var(--danger)}.field-label{color:var(--ink-700);font-size:13px;font-weight:500}.palette-picker{display:grid;grid-template-columns:repeat(10,minmax(0,1fr));gap:6px;margin-top:6px}.palette-swatch{position:relative;display:grid;place-items:center;min-height:46px;padding:3px;border:2px solid transparent;border-radius:5px;transition:transform .15s ease-out,border-color .15s ease-out,opacity .15s ease-out}.palette-swatch span{max-width:100%;overflow:hidden;font-size:9px;font-weight:600;line-height:1.1;text-overflow:ellipsis;white-space:nowrap}.palette-swatch:hover:not(:disabled){transform:translateY(-1px)}.palette-swatch.selected{border-color:var(--surface-0);outline:2px solid var(--blue-600);outline-offset:1px}.palette-swatch:disabled{opacity:.22;filter:saturate(.45)}.check-field{display:flex;align-items:center;gap:9px;min-height:44px;color:var(--ink-700)}.check-field input{width:18px;height:18px;accent-color:var(--blue-600)}.check-field span{display:flex;flex-direction:column}.check-field small{color:var(--ink-500)}.inline-warning{padding:10px;border-radius:5px;background:var(--danger-soft);color:var(--danger);font-size:12px}.fixed-off-editor{display:grid;gap:9px;padding:12px 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}.fixed-off-row{display:grid;grid-template-columns:1.2fr 1fr 1fr 44px;align-items:end;gap:8px}.fixed-off-row select,.fixed-off-row input{width:100%;min-height:40px;padding:6px 8px;border:1px solid var(--line);border-radius:5px;background:var(--surface-0)}.fixed-off-row label{display:flex;flex-direction:column;gap:3px;color:var(--ink-500);font-size:10px}.employment-editor{margin-top:18px;padding-top:16px;border-top:1px solid var(--line)}.employment-editor h3{margin-bottom:4px}.employment-editor>p{color:var(--ink-500);font-size:12px}.employment-row{display:flex;align-items:center;justify-content:space-between;padding:4px 0;border-bottom:1px solid var(--line);font-family:var(--font-mono);font-size:12px}.range-add{display:flex;align-items:flex-end;flex-wrap:wrap;gap:8px;margin-top:12px}.range-add label{display:flex;flex-direction:column;gap:3px;color:var(--ink-500);font-size:11px}.range-add input{min-height:38px;padding:5px;border:1px solid var(--line);border-radius:5px}.default-rule{display:flex;align-items:center;flex-wrap:wrap;gap:18px;margin-bottom:14px;padding:14px 16px;background:var(--blue-100);border:1px solid oklch(86% .06 263);border-radius:8px}.default-rule>div{flex:1;min-width:240px}.default-rule strong{color:var(--blue-700)}.default-rule p{margin:3px 0 0;color:var(--ink-700);font-size:12px}.default-rule select{min-height:44px;padding:7px 12px;border:1px solid var(--blue-600);border-radius:6px;background:var(--surface-0);color:var(--blue-700);font-weight:600}.privacy-note{display:inline-flex;align-items:center;gap:5px;color:var(--ink-500);font-size:11px}.relation-workspace,.relation-list-view{padding:14px;background:var(--surface-0);border:1px solid var(--line);border-radius:8px}.relation-legend{display:flex;align-items:center;flex-wrap:wrap;gap:14px;margin-bottom:12px;color:var(--ink-500);font-size:12px}.relation-legend span{display:inline-flex;align-items:center;gap:5px}.relation-legend i{display:grid;place-items:center;width:22px;height:22px;border-radius:4px;font-style:normal;font-weight:600}.legend-prefer{background:#d2f6dd;color:var(--success)}.legend-limit{background:var(--warning-soft);color:#986600;color:oklch(55% .12 75)}.legend-avoid{background:var(--danger-soft);color:var(--danger)}.legend-neutral{background:var(--surface-2);color:var(--ink-500)}.legend-default{margin-left:auto}.matrix-scroll{max-width:100%;overflow:auto}.relation-matrix{width:-moz-max-content;width:max-content;min-width:100%;border-collapse:separate;border-spacing:4px}.relation-matrix th{min-width:92px;padding:7px;color:var(--ink-700);font-size:12px;text-align:left}.relation-matrix th:first-child{position:sticky;left:0;z-index:2;min-width:112px;background:var(--surface-0)}.relation-matrix thead th{text-align:center;vertical-align:bottom}.relation-matrix .person-dot{margin-right:5px}.matrix-diagonal{text-align:center;color:var(--line)}.matrix-cell{min-width:96px;padding:4px;border:1px solid transparent;border-radius:5px;text-align:center}.matrix-cell.overridden{border-color:currentColor}.matrix-cell select{width:100%;min-height:32px;padding:3px;border:0;background:transparent;color:inherit;font-size:11px;font-weight:600}.matrix-cell small{display:block;color:var(--ink-500);font:400 9px var(--font-mono)}.relation-person{display:inline-flex;align-items:center;padding:3px 6px;border-radius:4px;font-weight:600;white-space:nowrap}.relation-person.active{outline:2px solid var(--blue-600);outline-offset:2px}.matrix-cell.matrix-active{outline:2px solid var(--blue-600);outline-offset:1px}.active-relation{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:10px;margin-bottom:12px;padding:8px 10px;border-radius:5px;background:var(--blue-100);color:var(--ink-700);font-size:12px}.relation-prefer{background:#daf7e3;color:#006133;color:oklch(43% .12 155)}.relation-limit{background:var(--warning-soft);color:#835100;color:oklch(48% .11 70)}.relation-avoid{background:var(--danger-soft);color:var(--danger)}.relation-neutral{background:var(--surface-2);color:var(--ink-500)}.table-footnote{margin:10px 0 0;color:var(--ink-500);font-size:11px}.relation-list-header{display:flex;align-items:baseline;justify-content:space-between;gap:12px;padding:2px 2px 12px}.relation-list-header h2{margin:0}.relation-list-header h2 span{color:var(--ink-500);font-family:var(--font-mono);font-size:13px}.relation-list-header p{margin:0;color:var(--ink-500);font-size:12px}.relation-row{display:grid;grid-template-columns:minmax(230px,1.1fr) 130px minmax(200px,1fr) auto 44px;align-items:center;gap:8px;margin-bottom:6px;padding:8px;border-left:3px solid currentColor;border-radius:4px}.relation-pair{display:flex;align-items:center;flex-wrap:wrap;gap:5px;color:var(--ink-900)}.relation-pair small{flex-basis:100%;color:var(--ink-500)}.new-relation{margin-top:18px;padding-top:16px;border-top:1px solid var(--line)}.new-relation h3{display:flex;align-items:center;gap:6px}.new-relation-grid{display:grid;grid-template-columns:1fr 1fr 130px 1.4fr auto;gap:8px}.new-relation input,.new-relation select,.relation-row input,.relation-row select{min-height:40px;font-size:12px}.inline-empty{padding:24px;color:var(--ink-500);text-align:center}.season-range{display:flex;align-items:center;flex-wrap:wrap;gap:14px;margin-bottom:14px;padding:12px 14px;background:var(--blue-100);border-radius:7px;color:var(--blue-700)}.season-range>div{display:flex;flex-direction:column;flex:1}.season-range span{color:var(--ink-500);font-size:12px}.season-range label{display:flex;align-items:center;gap:7px;color:var(--ink-700);font-size:12px}.season-range input{min-height:40px;padding:5px;border:1px solid var(--line);border-radius:5px}.stats-totals{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));margin-bottom:18px;background:var(--surface-0);border:1px solid var(--line);border-radius:8px}.stats-totals>div{padding:14px;border-right:1px solid var(--line)}.stats-totals>div:last-child{border:0}.stats-totals span{display:block;color:var(--ink-500);font-size:11px}.stats-totals strong{font:600 23px var(--font-condensed)}.balance-section{margin-bottom:18px;padding:16px;background:var(--surface-0);border:1px solid var(--line);border-radius:8px}.balance-section header{display:flex;align-items:baseline;justify-content:space-between;gap:12px}.balance-section h2{margin-bottom:12px}.balance-section p{color:var(--ink-500);font-size:12px}.balance-list{display:grid;gap:9px}.balance-row{display:grid;grid-template-columns:110px minmax(140px,1fr) 170px;align-items:center;gap:10px;font-size:12px}.balance-track{display:flex;height:9px;overflow:hidden;border-radius:3px;background:var(--surface-2)}.balance-track i{display:block;height:100%}.morning-bar{background:#ceaa3e}.evening-bar{background:var(--blue-600)}.balance-row small{color:var(--ink-500);text-align:right}.person-cell{border-radius:4px;font-weight:600}span.person-cell{display:inline-flex;align-items:center;gap:5px;padding:4px 7px}.person-cell small{color:inherit;opacity:.82}.balance-row .person-cell{justify-self:start;min-width:86px;text-align:center}.stats-table-wrap,.settings-table-wrap{position:relative;max-width:100%;overflow:auto;background:var(--surface-0);border:1px solid var(--line);border-radius:8px}.stats-table,.settings-table{width:100%;min-width:760px;border-collapse:collapse;font-size:13px}.stats-table th,.stats-table td,.settings-table th,.settings-table td{padding:11px 12px;border-bottom:1px solid var(--line);text-align:left;white-space:nowrap}.stats-table thead,.settings-table thead{background:var(--surface-2);color:var(--ink-500);font-size:11px}.stats-table tbody th,.settings-table tbody th{font-weight:600}.stats-table tbody tr:hover,.settings-table tbody tr:hover{background:var(--surface-1)}.stats-table td{font-family:var(--font-mono);font-size:12px}.stats-table th small,.settings-table th small{color:var(--ink-500);font-weight:400}.missing-hours{display:block;color:var(--danger);font-size:9px}.table-loading{padding:14px;text-align:center;color:var(--ink-500)}.settings-tabs{display:flex;gap:3px;margin-bottom:14px;overflow-x:auto;border-bottom:1px solid var(--line)}.settings-tabs button{display:inline-flex;align-items:center;gap:7px;min-height:44px;padding:8px 12px;border:0;border-bottom:2px solid transparent;background:transparent;color:var(--ink-500);white-space:nowrap;font-size:13px}.settings-tabs button.active{border-bottom-color:var(--blue-600);color:var(--blue-700)}.settings-section{min-width:0}.settings-heading{display:flex;align-items:center;justify-content:space-between;gap:14px;margin-bottom:12px}.settings-heading h2{margin-bottom:3px}.settings-heading p{margin:0;color:var(--ink-500);font-size:12px}.settings-table .archived{opacity:.6}.shift-set-list{display:grid;gap:10px}.shift-set{padding:14px;background:var(--surface-0);border:1px solid var(--line);border-radius:8px}.shift-set>header{display:flex;align-items:flex-start;justify-content:space-between}.shift-set>header span{color:var(--blue-700);font:400 11px var(--font-mono)}.shift-set h3{margin:2px 0 10px}.shift-definitions{display:flex;flex-wrap:wrap;gap:8px}.shift-definitions>div{display:grid;grid-template-columns:5px auto auto;align-items:center;gap:7px;min-width:220px;padding:9px;background:var(--surface-1);border-radius:5px}.shift-definitions small{grid-column:2 / -1;color:var(--ink-500)}.category-marker{width:5px;height:28px;border-radius:2px;background:var(--ink-500)}.category-morning{background:#ceaa3e}.category-middle{background:#38a391}.category-evening{background:var(--blue-600)}.shift-editor{margin-top:16px}.shift-editor-head,.shift-editor-row{display:grid;grid-template-columns:1.2fr 110px 110px 70px 140px 130px;align-items:center;gap:6px;min-width:680px}.shift-editor{overflow-x:auto}.shift-editor-head{padding:4px 6px;color:var(--ink-500);font-size:10px;text-transform:uppercase}.shift-editor-row{margin-bottom:6px}.shift-editor-row input,.shift-editor-row select{min-height:40px;padding:5px 7px;border:1px solid var(--line);border-radius:5px}.shift-editor>.button{margin:8px 0}.absence-add{display:grid;grid-template-columns:1fr 170px 155px 155px 1fr auto;align-items:end;gap:7px;margin-bottom:14px;padding:12px;background:var(--surface-0);border:1px solid var(--line);border-radius:8px}.absence-add label{display:flex;flex-direction:column;gap:3px;color:var(--ink-500);font-size:10px}.absence-add input,.absence-add select{min-height:40px;font-size:12px}.help-layout{display:grid;grid-template-columns:200px minmax(0,1fr);gap:24px;align-items:start}.help-index{position:sticky;top:84px;display:flex;flex-direction:column;gap:3px}.help-index a{padding:7px 9px;border-radius:5px;color:var(--ink-500);font-size:13px}.help-index a:hover{background:var(--surface-2);text-decoration:none}.help-content details{scroll-margin-top:84px;border-bottom:1px solid var(--line)}.help-content summary{padding:17px 4px;color:var(--ink-900);font-size:17px;font-weight:600;cursor:pointer}.help-content details>div{max-width:75ch;padding:0 4px 20px;color:var(--ink-700)}.help-content li{margin-bottom:7px}.help-content p{line-height:1.7}.auth-page{display:grid;grid-template-columns:minmax(0,1fr) 400px;gap:48px;align-items:center;max-width:980px;min-height:100dvh;margin:0 auto;padding:32px}.auth-intro{max-width:520px}.auth-intro .brand{margin-bottom:32px}.auth-intro h1{font-size:38px}.auth-intro>p{color:var(--ink-500);line-height:1.7}.auth-points{display:grid;gap:8px;margin-top:22px;color:var(--ink-700);font-size:13px}.auth-points span{display:flex;align-items:center;gap:8px}.auth-points svg{color:var(--blue-700)}.auth-panel{display:grid;gap:14px;padding:24px;background:var(--surface-0);border:1px solid var(--line);border-radius:9px}.auth-panel h2{margin-bottom:4px}.password-field{position:relative;display:flex;align-items:center}.password-field input{width:100%;padding-right:46px}.password-field .icon-button{position:absolute;right:0}.auth-submit{width:100%;margin-top:4px}.auth-error{padding:9px 11px;border-radius:5px;background:var(--danger-soft);color:var(--danger);font-size:13px}.auth-footnote{color:var(--ink-500);line-height:1.5;text-align:center}.public-disabled p{max-width:620px}.public-disabled .button{margin-top:8px}.status-screen{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:calc(100dvh - 120px);padding:32px;text-align:center}.status-screen>svg{margin-bottom:16px;color:var(--blue-600)}.status-screen p{max-width:600px;color:var(--ink-500)}.loading-line{width:140px;height:3px;margin-bottom:18px;overflow:hidden;background:var(--surface-2)}.loading-line:after{content:"";display:block;width:45%;height:100%;background:var(--blue-600);animation:loading-slide 1s ease-in-out infinite alternate}@keyframes fade-in{0%{opacity:0}to{opacity:1}}@keyframes modal-in{0%{opacity:0;transform:scale(.97)}to{opacity:1;transform:scale(1)}}@keyframes loading-slide{0%{transform:translate(0)}to{transform:translate(170%)}}@media(min-width:1100px){.schedule-layout{grid-template-columns:minmax(0,1fr) 264px}.side-panel{position:sticky;top:80px}}@media(max-width:1180px){.topbar{flex-wrap:wrap;gap:4px 12px}.main-nav{order:3;flex-basis:100%}.nav-link.active:after{bottom:0}.preview-link{margin-left:auto}.new-relation-grid{grid-template-columns:1fr 1fr}.relation-row{grid-template-columns:1fr 130px}.relation-row input{grid-column:1 / -1}.absence-add{grid-template-columns:1fr 1fr 1fr}.stats-totals{grid-template-columns:repeat(3,1fr)}}@media(max-width:760px){.main-content{padding:12px}.public-header{align-items:flex-start}.public-badges{flex-direction:column;gap:2px;font-size:11px}.page-heading{align-items:flex-start;flex-direction:column}.heading-actions{align-self:stretch}.heading-actions .button{flex:1}.schedule-toolbar{align-items:stretch}.toolbar-actions{justify-content:flex-start}.toolbar-actions .button{flex:1 1 150px}.form-grid,.form-grid.three-columns{grid-template-columns:1fr}.field-full{grid-column:auto}.modal-body{padding:14px}.relation-list-header,.settings-heading,.balance-section header{align-items:flex-start;flex-direction:column}.default-rule{align-items:stretch}.default-rule select{width:100%}.legend-default{margin-left:0}.new-relation-grid,.relation-row{grid-template-columns:1fr}.relation-row input{grid-column:auto}.relation-row .icon-button{justify-self:end}.stats-totals{grid-template-columns:1fr 1fr}.balance-row{grid-template-columns:80px 1fr}.balance-row small{grid-column:1 / -1;text-align:left}.absence-add,.help-layout{grid-template-columns:1fr}.help-index{position:static;flex-direction:row;overflow-x:auto}.help-index a{white-space:nowrap}.settings-heading .button{width:100%}.auth-page{grid-template-columns:1fr;gap:24px;padding:20px}.auth-intro .brand{margin-bottom:20px}.auth-intro h1{font-size:30px}.auth-points{display:none}.palette-picker{grid-template-columns:repeat(5,minmax(0,1fr))}.fixed-off-row{grid-template-columns:1fr}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{scroll-behavior:auto!important;animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}@media print{.topbar,.public-header,.page-heading,.schedule-toolbar,.side-panel{display:none!important}.main-content{padding:0}.schedule-layout{display:block}.schedule-export{max-height:none;overflow:visible;border:0}.month-export{max-height:none}body{background:#fff}}
