.organization-page{font-size:16px;color:var(--foreground)}.organization-form :is(p,.field,input,button),.organization-page :is(p,small,.muted,.field,.button){font-size:16px}.organization-page .page-heading{align-items:flex-start}.organization-page .page-heading p{max-width:680px}.organization-summary{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:20px;margin-bottom:20px}.organization-summary .card{margin:0}.organization-summary strong{display:block;font-size:32px;margin-top:8px;color:var(--foreground)}.organization-sample{display:flex;align-items:center;justify-content:space-between;gap:20px;padding:20px;border-radius:24px;margin-bottom:20px}.organization-sample p{margin-top:6px}.organization-toolbar{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:20px}.organization-tabs{display:flex;gap:4px;padding:4px;border-radius:999px;margin-right:auto}.organization-tabs .button{border:0;min-height:44px}.organization-filters{display:grid;grid-template-columns:minmax(200px,1fr) minmax(240px,1.5fr);gap:20px;margin-bottom:24px}.organization-search{position:relative;display:flex;align-items:center}.organization-search svg{position:absolute;left:16px;z-index:1;color:var(--muted-foreground);pointer-events:none}.organization-search input{width:100%;min-height:48px;padding-left:44px}.organization-form .menu-select-trigger,.organization-page .menu-select-trigger{min-height:48px;font-size:16px}.organization-directory,.organization-tree{display:grid;gap:20px}.organization-node{margin-left:calc(var(--organization-depth,0)*24px);padding:20px;border-radius:24px;min-width:0}.organization-node-heading{display:flex;gap:12px;align-items:center;flex-wrap:wrap}.organization-node-heading h2,.organization-person h2{font-size:18px;overflow-wrap:anywhere}.organization-expand{width:44px;height:44px;flex:none;padding:0}.organization-people{margin-left:auto;display:flex;align-items:center;gap:8px;color:var(--muted-foreground);white-space:nowrap}.organization-head{margin-top:16px;overflow-wrap:anywhere}.organization-head>span{margin-right:8px}.organization-position-list{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin-top:16px}.organization-position-list>.muted:first-child{width:100%}.organization-node-actions{display:flex;gap:10px;flex-wrap:wrap;margin-top:20px}.organization-status{display:inline-flex;padding:4px 12px;border:1px dashed var(--border);border-radius:999px;color:var(--muted-foreground);font-size:14px}.organization-person{display:flex;gap:16px;align-items:center;padding:20px;border-radius:24px;min-width:0}.organization-person-avatar{width:48px;height:48px;flex:none;display:grid;place-items:center;border-radius:50%;color:var(--color-brand-700);background:color-mix(in oklab,var(--card) 85%,transparent);font-weight:600}.organization-person-info{flex:1;min-width:0;overflow-wrap:anywhere}.organization-person-info p{margin-top:4px}.organization-form{margin-top:24px}.organization-form .field{min-width:0}.organization-form input{min-height:48px}.organization-page .card-head{align-items:flex-start}@media(max-width:700px){.organization-filters,.organization-summary{grid-template-columns:1fr}.organization-sample{align-items:flex-start;flex-direction:column}.organization-node{margin-left:calc(var(--organization-depth,0)*8px);padding:16px}.organization-person{flex-wrap:wrap;padding:16px;gap:12px}.organization-person>.button{margin-left:60px;max-width:calc(100% - 60px);white-space:normal}.organization-tabs{width:100%;margin:0}.organization-tabs .button{flex:1}.organization-form{grid-template-columns:1fr}.organization-page .page-heading{align-items:stretch;flex-direction:column}.organization-page .row-actions{gap:10px}}.roster-page{font-size:16px}.roster-page,.roster-page .card{min-width:0;max-width:100%}.roster-planning-note{margin-bottom:24px;font-size:16px}.roster-controls{display:grid;gap:20px}.roster-filters{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:16px}.roster-week-navigation{display:flex;align-items:center;justify-content:space-between;gap:12px}.roster-week-navigation strong{display:flex;align-items:center;justify-content:center;gap:10px;text-align:center;font-size:16px}.roster-week-navigation .button{flex-shrink:0;min-width:44px;min-height:44px;padding:10px}.roster-view-tabs{display:flex;flex-wrap:wrap;gap:4px;padding:4px;border-radius:24px;width:fit-content;max-width:100%}.roster-view-tabs button{min-height:44px;padding:8px 14px;font:inherit;font-size:16px;border:1px solid transparent;border-radius:999px;white-space:nowrap}.roster-summary{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;margin-bottom:24px}.roster-summary .card{margin-bottom:0;padding:20px;display:flex;flex-direction:column;gap:10px}.roster-summary span{color:var(--muted-foreground);font-size:16px}.roster-summary strong{font-size:28px;font-weight:600}.roster-sample-badge{padding:8px 16px;border-radius:999px;background:var(--forest-light);color:var(--foreground);font-size:16px}.roster-sample-form .form-footer{margin-top:12px}.roster-table-scroll{width:100%;max-width:100%;overflow-x:auto;overscroll-behavior-inline:contain;border-radius:16px}.roster-table{width:100%;min-width:0;table-layout:fixed;border-collapse:collapse;font-size:13px}.roster-col-employee{width:180px}.roster-col-actions{width:52px}:root .roster-table td,:root .roster-table th{padding:7px 4px;text-align:left;vertical-align:middle;font-size:13px;white-space:normal;border-bottom:1px solid var(--line);min-width:0;max-width:none}:root .roster-table thead th{font-size:12px;font-weight:600;line-height:1.4;white-space:nowrap}.roster-header-date,.roster-header-weekday{display:block;font-size:12px;line-height:1.4}.roster-header-date{font-weight:400;color:var(--muted-foreground)}.roster-employee{display:flex;align-items:flex-start;gap:6px;font-weight:400;min-width:0}.roster-employee>svg{flex-shrink:0;margin-top:3px;color:var(--muted-foreground)}.roster-employee>span{min-width:0;max-width:100%}.roster-employee b,.roster-employee small{display:block;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;line-height:1.5}.roster-employee b{font-size:14px}.roster-employee small{font-size:12px;color:var(--muted-foreground);margin-top:2px}.roster-cell{min-height:66px;padding:6px 4px;border-radius:12px;flex-direction:column;justify-content:center;line-height:1.4}.roster-cell,.roster-cell-time{min-width:0;display:flex;gap:3px;font-size:12px}.roster-cell-time{align-items:center;white-space:nowrap;font-variant-numeric:tabular-nums}.roster-cell-time>svg{flex-shrink:0;width:12px;height:12px}.roster-cell small,.roster-cell-time>span{display:block;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;min-width:0;font-size:12px;line-height:1.4}.roster-cell small{color:var(--muted-foreground)}:root .roster-table .roster-edit-button{width:44px;height:44px;min-width:44px;min-height:44px;padding:0;display:grid;place-items:center}@media(min-width:1440px){.roster-col-employee{width:200px}}@media(max-width:960px){.roster-table{min-width:880px}.roster-table-daily{min-width:500px}}.roster-cell-work{background:color-mix(in oklab,var(--forest-light) 65%,transparent)}.roster-cell-off{background:color-mix(in oklab,var(--gold) 12%,transparent);color:var(--foreground)}.roster-cell-unassigned{border:1px dashed var(--line);color:var(--muted-foreground);font-weight:400}.roster-table-scroll:focus-visible{outline:2px solid var(--color-brand-500);outline-offset:4px}.dialog-content:has(.roster-editor){width:min(1120px,calc(100vw - 32px));max-width:calc(100vw - 32px);max-height:calc(100dvh - 32px);overflow-y:auto}.roster-editor{margin-top:20px;min-width:0;font-size:16px}.roster-editor-note,.roster-rule-hint{color:var(--muted-foreground);font-size:16px;margin-bottom:16px}.roster-rule{padding:12px 16px;border:1px solid var(--line);border-radius:999px;margin-bottom:12px;font-size:16px}.roster-rule-valid{background:color-mix(in oklab,var(--forest-light) 70%,transparent)}.roster-editor-form{display:flex;flex-direction:column;gap:16px}.roster-editor-days{display:grid;gap:12px;border:0;padding:0;margin:0;min-width:0}.roster-editor-day{display:grid;grid-template-columns:minmax(120px,1fr) minmax(120px,1fr) repeat(2,minmax(90px,.7fr)) minmax(140px,1.2fr) minmax(140px,1.2fr);align-items:end;gap:12px;padding:16px;border:1px solid var(--line);border-radius:24px;min-width:0}.roster-editor-day h3{font-size:16px;align-self:center;font-weight:600}.roster-editor-day .field{min-width:0}.roster-editor-day .field>span,.roster-editor-day input{font-size:16px}.roster-editor-day-off{background:color-mix(in oklab,var(--gold) 8%,transparent)}.roster-editor .form-footer,.roster-editor-cancel{display:flex;justify-content:flex-end}.roster-editor .form-footer{margin:0}@media(max-width:1050px){.roster-editor-day{grid-template-columns:repeat(3,minmax(0,1fr))}.roster-editor-day h3{grid-column:1/-1}}@media(max-width:640px){.roster-filters{grid-template-columns:1fr}.roster-summary{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.roster-summary .card{padding:16px}.roster-week-navigation strong{flex-direction:column;gap:4px}.roster-editor-day{grid-template-columns:repeat(2,minmax(0,1fr));padding:12px;border-radius:16px}.roster-editor-day .field:last-child{grid-column:1/-1}.roster-editor .form-footer .button,.roster-editor-cancel .button{width:100%}}.roster-summary{grid-template-columns:repeat(5,minmax(0,1fr))}.roster-legend{display:flex;flex-wrap:wrap;gap:8px 16px;margin:0 0 12px;max-width:100%;font-size:13px}.roster-legend-item{display:inline-flex;align-items:center;gap:6px;min-width:0;color:var(--foreground)}.roster-legend-swatch{width:10px;height:10px;flex-shrink:0;border-radius:999px;background:var(--roster-status-color)}.roster-kind-work{--roster-status-color:#398278}.roster-kind-off{--roster-status-color:#9a8243}.roster-kind-sick{--roster-status-color:#bc5d77}.roster-kind-annual{--roster-status-color:#9671bd}.roster-kind-public_holiday{--roster-status-color:#597fc8}.roster-kind-other{--roster-status-color:#77848d}.roster-cell-annual,.roster-cell-other,.roster-cell-public_holiday,.roster-cell-sick{background:color-mix(in oklab,var(--roster-status-color) 16%,transparent);box-shadow:inset 0 0 0 1px color-mix(in oklab,var(--roster-status-color) 24%,transparent);color:var(--foreground)}.roster-cell-absence-name{display:block;min-width:0;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;font-size:12px;font-weight:600;line-height:1.4}.roster-sample-absence-note{margin:0 0 16px;max-width:100%;color:var(--muted-foreground);font-size:13px;line-height:1.6}@media(max-width:960px){.roster-summary{grid-template-columns:repeat(3,minmax(0,1fr))}}@media(max-width:640px){.roster-summary{grid-template-columns:repeat(2,minmax(0,1fr))}}.roster-mode-switch{display:flex;gap:4px;width:fit-content;max-width:100%;padding:4px;border-radius:999px}.roster-mode-switch button{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:44px;padding:9px 20px;border:1px solid transparent;border-radius:999px;font:inherit;font-size:16px;white-space:nowrap}.roster-daily-view,.roster-shift-group,.roster-shift-people{min-width:0;max-width:100%}.roster-daily-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:20px;margin-bottom:16px}.roster-daily-heading h2{font-size:22px;line-height:1.5}.roster-daily-heading p{max-width:600px;margin-top:6px;color:var(--muted-foreground);font-size:14px}.roster-daily-total{display:flex;flex-direction:column;align-items:flex-end;gap:3px;flex-shrink:0;font-size:12px;color:var(--muted-foreground)}.roster-daily-total strong{font-size:28px;line-height:1.2;color:var(--foreground)}.roster-start-summary{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:20px}.roster-start-summary [role=listitem]{display:inline-flex;align-items:center;gap:8px;padding:8px 14px;border:1px solid var(--line);border-radius:999px;font-size:14px;background:var(--forest-light);color:var(--foreground)}.roster-daily-axis-row,.roster-daily-person{display:grid;grid-template-columns:210px minmax(0,1fr) 44px;gap:16px;align-items:center;min-width:0}.roster-daily-axis-row{margin-bottom:6px}.roster-daily-axis{display:flex;justify-content:space-between;min-width:0;gap:2px;color:var(--muted-foreground);font-size:11px;white-space:nowrap;font-variant-numeric:tabular-nums}.roster-daily-person{padding:13px 0;border-top:1px solid var(--line)}.roster-daily-identity{min-width:0}.roster-daily-identity b,.roster-daily-identity small{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.roster-daily-identity b{font-size:14px;line-height:1.5}.roster-daily-identity small{margin-top:3px;font-size:12px;color:var(--muted-foreground)}.roster-daily-timeline-wrap{display:grid;gap:6px;min-width:0}.roster-daily-hours{font-size:13px;line-height:1.3;font-variant-numeric:tabular-nums;color:var(--foreground)}.roster-daily-timeline{position:relative;width:100%;height:28px;overflow:hidden;border-radius:999px;background-color:var(--muted);background-image:linear-gradient(to right,var(--border) 1px,transparent 1px)}.roster-daily-bar{position:absolute;top:0;bottom:0;display:flex;align-items:center;justify-content:center;min-width:0;overflow:hidden;border-radius:999px;background:var(--color-brand-500);color:white;font-size:12px;font-weight:500;white-space:nowrap}:root .roster-daily-edit{width:44px;height:44px;min-width:44px;min-height:44px;padding:0;display:grid;place-items:center}.roster-daily-away-section>h2{margin:8px 0 16px;font-size:18px}.roster-daily-away-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;min-width:0}.roster-daily-away-grid .card{margin-bottom:0}.roster-daily-away{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px;border-inline-start:3px solid var(--roster-status-color,var(--border));border-radius:16px;background:color-mix(in oklab,var(--roster-status-color,var(--muted)) 8%,transparent)}.roster-daily-away+.roster-daily-away{margin-top:8px}.roster-daily-away>div{min-width:0}.roster-daily-away b,.roster-daily-away small{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:14px}.roster-daily-away small{margin-top:3px;font-size:12px;color:var(--muted-foreground)}.roster-daily-away .roster-daily-edit{flex-shrink:0}@media(max-width:1100px){.roster-daily-axis-row,.roster-daily-person{grid-template-columns:180px minmax(0,1fr) 44px;gap:12px}}@media(max-width:800px){.roster-daily-axis-row{display:none}.roster-daily-person{grid-template-columns:minmax(0,1fr) 44px;gap:12px}.roster-daily-person .roster-daily-timeline-wrap{grid-column:1/-1;grid-row:2}.roster-daily-person .roster-daily-edit{grid-column:2;grid-row:1}.roster-daily-heading{flex-wrap:wrap}.roster-daily-total{align-items:flex-start}.roster-daily-away-grid{grid-template-columns:1fr}.roster-mode-switch button{padding-inline:16px}.roster-daily-heading h2{font-size:20px}}.roster-editor-day[data-selected=true]{border-color:var(--color-brand-500);box-shadow:0 0 0 2px color-mix(in oklab,var(--color-brand-500) 20%,transparent)}.roster-editor-selected-date{margin-bottom:16px;color:var(--color-brand-700);font-size:16px;font-weight:500}.roster-daily-axis{position:relative;display:block;height:16px}.roster-daily-axis>span{position:absolute;top:0;width:40px;margin-left:-20px;text-align:center}.roster-daily-axis>span:first-child{margin-left:0;text-align:left}.roster-daily-axis>span:last-child{margin-left:-40px;text-align:right}