:root{
  --canvas:#f4f6f2;
  --canvas-soft:#eef2ed;
  --surface:#ffffff;
  --surface-raised:#fbfcfa;
  --surface-inset:#edf2ee;
  --ink:#17231f;
  --ink-2:#42524c;
  --ink-3:#53635c;
  --ink-4:#5f6c65;
  --line:rgba(23,35,31,.10);
  --line-strong:rgba(23,35,31,.17);
  --brand:#0b6f50;
  --brand-rgb:11,111,80;
  --brand-strong:#07543d;
  --brand-hover:#0d815c;
  --brand-soft:#e3f2eb;
  --brand-faint:#f1f8f4;
  --amber:#805000;
  --amber-rgb:128,80,0;
  --amber-soft:#fff3df;
  --danger:#bd3440;
  --danger-rgb:189,52,64;
  --danger-soft:#fff0f1;
  --blue:#3f6fae;
  --blue-soft:#eef4fc;
  --good:#146b4e;
  --good-rgb:20,107,78;
  --sidebar-bg:#0b3328;
  --sidebar-ink:#e8f4ef;
  --sidebar-muted:rgba(232,244,239,.68);
  --sidebar-subtle:rgba(232,244,239,.60);
  --focus-ring:#0b6f50;
  --shadow:0 1px 2px rgba(23,35,31,.04),0 8px 28px rgba(23,35,31,.055);
  --shadow-float:0 18px 60px rgba(18,38,31,.18);
  --r-sm:8px;
  --r-md:12px;
  --r-lg:18px;
  --sidebar:248px;
  --topbar:64px;
  --ease:cubic-bezier(.23,1,.32,1);
  color-scheme:light;
}
*{box-sizing:border-box}
html{background:var(--canvas);scroll-behavior:smooth}
body{margin:0;background:var(--canvas);color:var(--ink);font-family:"Aptos","Segoe UI Variable","SF Pro Text",Inter,system-ui,sans-serif;font-size:14px;line-height:1.45;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}
button,input,select,textarea{font:inherit}
button,a,input,select,textarea,summary{outline:none}
button{cursor:pointer}
a{color:inherit;text-decoration:none}
svg{display:block;width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
[hidden],.hidden{display:none!important}
.icon-sprite{position:absolute;width:0;height:0;overflow:hidden}
button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,summary:focus-visible{box-shadow:0 0 0 2px var(--surface),0 0 0 5px var(--focus-ring)}
button:disabled,input:disabled,select:disabled{opacity:.45;cursor:not-allowed}
h1,h2,h3,h4,p{margin:0}
h1{font-size:30px;line-height:1.12;font-weight:720;letter-spacing:-.035em;text-wrap:balance}
h2{font-size:18px;line-height:1.2;font-weight:700;letter-spacing:-.02em}
h3{font-size:15px;font-weight:700}
p{text-wrap:pretty}
code,.tabular,time{font-variant-numeric:tabular-nums}
.eyebrow{color:var(--brand);font-size:12px;font-weight:800;letter-spacing:.12em;text-transform:uppercase}

/* Login */
.login-screen{min-height:100vh;display:grid;grid-template-columns:minmax(0,1.15fr) minmax(400px,.85fr);background:var(--canvas)}
.login-story{position:relative;overflow:hidden;display:flex;flex-direction:column;justify-content:space-between;min-height:100vh;padding:44px 7vw 52px;background:linear-gradient(145deg,#064936 0%,#0a6c4e 54%,#0f7c59 100%);color:#fff}
.login-story:before{content:"";position:absolute;inset:-20%;background:radial-gradient(circle at 70% 30%,rgba(255,255,255,.12),transparent 35%),linear-gradient(rgba(255,255,255,.035) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.035) 1px,transparent 1px);background-size:auto,44px 44px,44px 44px;transform:rotate(-4deg)}
.login-brand,.login-copy,.login-preview{position:relative;z-index:1}
.login-brand{display:flex;align-items:center;gap:12px;font-size:18px;letter-spacing:-.01em}
.brand-mark{display:grid;place-items:center;flex:none;width:38px;height:38px;border-radius:11px;background:var(--brand);color:#fff;box-shadow:inset 0 0 0 1px rgba(255,255,255,.18)}
.login-brand .brand-mark{background:rgba(255,255,255,.14);backdrop-filter:blur(8px)}
.brand-mark svg{width:21px;height:21px;stroke-width:2}
.login-copy{max-width:650px;margin:8vh 0 5vh}
.login-copy .eyebrow{color:#b8ead8}
.login-copy h1{max-width:620px;margin:12px 0 18px;font-size:clamp(38px,5vw,66px);line-height:1.02;color:#fff}
.login-copy>p:last-child{max-width:580px;color:rgba(255,255,255,.76);font-size:17px;line-height:1.65}
.login-preview{width:min(680px,100%);height:185px;padding:16px;border:1px solid rgba(255,255,255,.15);border-radius:20px;background:rgba(255,255,255,.09);box-shadow:0 24px 70px rgba(0,0,0,.14);backdrop-filter:blur(16px)}
.preview-top{display:flex;gap:6px;margin-bottom:15px}.preview-top span{width:7px;height:7px;border-radius:50%;background:rgba(255,255,255,.55)}
.preview-grid{display:grid;grid-template-columns:repeat(6,1fr);grid-template-rows:repeat(2,1fr);gap:8px;height:125px}
.preview-grid i{border-radius:8px;background:rgba(255,255,255,.12);border-left:4px solid rgba(255,255,255,.28)}
.preview-grid i:nth-child(2),.preview-grid i:nth-child(7),.preview-grid i:nth-child(11){background:#fff;color:var(--brand);border-left-color:#f6bd60;box-shadow:0 7px 22px rgba(0,0,0,.12)}
.login-panel{display:grid;place-items:center;padding:36px;background:var(--canvas)}
.login-card{width:min(430px,100%);display:grid;gap:22px;padding:34px;border:1px solid var(--line);border-radius:22px;background:var(--surface);box-shadow:var(--shadow)}
.login-card>div:first-child{display:grid;gap:7px}.login-card>div:first-child p:last-child{color:var(--ink-3)}
.login-card label,.field{display:grid;gap:7px;color:var(--ink-2);font-size:12px;font-weight:700}
.login-card input,.field input,.field select,.field textarea{width:100%;min-height:44px;padding:10px 12px;border:1px solid var(--line-strong);border-radius:10px;background:var(--surface);color:var(--ink);transition:border-color 150ms ease,box-shadow 150ms ease,background-color 150ms ease}
.login-card input::placeholder,.field input::placeholder,.field textarea::placeholder{color:var(--ink-4)}
.form-error{min-height:18px;color:var(--danger);font-size:12px}

/* Buttons and controls */
.button,.icon-button,.text-button,.nav-action{appearance:none;border:1px solid transparent;transition:transform 120ms var(--ease),background-color 150ms ease,border-color 150ms ease,color 150ms ease,box-shadow 150ms ease}
.button{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:38px;padding:8px 14px;border-radius:10px;font-size:13px;font-weight:750;white-space:nowrap}
.button svg{width:16px;height:16px}
.button-primary{color:#fff;background:var(--brand);border-color:var(--brand)}
.button-primary:hover{background:var(--brand-hover);border-color:var(--brand-hover)}
.button-secondary{color:var(--ink-2);background:var(--surface);border-color:var(--line-strong)}
.button-secondary:hover{color:var(--ink);background:var(--surface-raised);border-color:rgba(var(--brand-rgb),.28)}
.button-soft{color:var(--brand-strong);background:var(--brand-soft);border-color:rgba(var(--brand-rgb),.12)}
.button-danger{color:#fff;background:var(--danger);border-color:var(--danger)}
.button-danger-soft{color:var(--danger);background:var(--danger-soft);border-color:rgba(var(--danger-rgb),.16)}
.button-large{min-height:48px;padding:12px 18px;font-size:14px}
.button-small{min-height:32px;padding:6px 10px;font-size:12px;border-radius:8px}
.button:active,.icon-button:active,.nav-action:active{transform:scale(.975)}
.icon-button{display:grid;place-items:center;width:38px;height:38px;padding:0;border-radius:10px;color:var(--ink-2);background:var(--surface);border-color:var(--line)}
.icon-button:hover{color:var(--brand);border-color:rgba(var(--brand-rgb),.25)}
.text-button{min-height:32px;padding:5px 8px;border:0;background:transparent;color:var(--brand);font-size:12px;font-weight:750;border-radius:8px}
.text-button:hover{background:var(--brand-faint)}
.field select{appearance:auto}.field textarea{min-height:90px;resize:vertical}
.field-row{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.checkbox{display:flex;align-items:flex-start;gap:9px;color:var(--ink-2);font-size:12px;font-weight:650;cursor:pointer}.checkbox input{width:17px;height:17px;margin:1px 0 0;accent-color:var(--brand)}
.switch{display:inline-flex;align-items:center;gap:8px;cursor:pointer}.switch input{position:absolute;opacity:0}.switch-track{position:relative;width:38px;height:22px;border:1px solid var(--line-strong);border-radius:999px;background:var(--surface-inset);transition:background-color 150ms ease,border-color 150ms ease}.switch-track:after{content:"";position:absolute;top:3px;left:3px;width:14px;height:14px;border-radius:50%;background:var(--ink-4);transition:transform 180ms var(--ease),background-color 150ms ease}.switch input:checked+.switch-track{background:var(--brand-soft);border-color:rgba(var(--brand-rgb),.32)}.switch input:checked+.switch-track:after{transform:translateX(16px);background:var(--brand)}
.segmented{display:inline-flex;align-items:center;gap:3px;padding:3px;border:1px solid var(--line);border-radius:10px;background:var(--surface-inset)}
.segmented button{min-height:30px;padding:5px 10px;border:0;border-radius:7px;background:transparent;color:var(--ink-3);font-size:12px;font-weight:700}.segmented button.active{color:var(--ink);background:var(--surface);box-shadow:0 1px 3px rgba(23,35,31,.08)}

/* App shell */
.app-shell{min-height:100vh}
.sidebar{position:fixed;inset:0 auto 0 0;z-index:50;width:var(--sidebar);display:flex;flex-direction:column;padding:20px 14px 14px;background:var(--sidebar-bg);color:var(--sidebar-ink);border-right:1px solid rgba(255,255,255,.06)}
.sidebar-brand{display:flex;align-items:center;gap:11px;height:48px;padding:0 9px;margin-bottom:24px}.sidebar-brand>span:last-child{display:grid;min-width:0}.sidebar-brand strong{font-size:16px;letter-spacing:-.015em}.sidebar-brand small{overflow:hidden;margin-top:2px;color:var(--sidebar-subtle);font-size:12px;text-overflow:ellipsis;white-space:nowrap}
.primary-nav{display:grid;gap:4px}.primary-nav>p{margin:2px 10px 6px;color:var(--sidebar-subtle);font-size:12px;font-weight:800;letter-spacing:.11em;text-transform:uppercase}.primary-nav>.nav-section{margin-top:18px}
.primary-nav button,.nav-action{position:relative;display:flex;align-items:center;gap:11px;width:100%;min-height:42px;padding:0 11px;border:1px solid transparent;border-radius:10px;background:transparent;color:var(--sidebar-muted);font-size:13px;font-weight:680;text-align:left}
.primary-nav button svg,.nav-action svg{width:17px;height:17px}.primary-nav button:hover,.nav-action:hover{color:#fff;background:rgba(255,255,255,.055)}.primary-nav button.active{color:#fff;background:rgba(255,255,255,.09);border-color:rgba(255,255,255,.06)}.primary-nav button.active:before{content:"";position:absolute;left:-1px;width:3px;height:20px;border-radius:0 3px 3px 0;background:#79d6b6}
.sidebar-foot{display:grid;gap:8px;margin-top:auto}.session-card{display:flex;align-items:center;gap:10px;padding:10px;border:1px solid rgba(255,255,255,.12);border-radius:12px;background:rgba(255,255,255,.045)}.session-avatar{display:grid;place-items:center;flex:none;width:32px;height:32px;border-radius:9px;background:rgba(121,214,182,.16);color:#9ce6cd;font-size:12px;font-weight:800}.session-card>span:last-child{display:grid;min-width:0}.session-card b{overflow:hidden;font-size:12px;text-overflow:ellipsis;white-space:nowrap}.session-card small{color:var(--sidebar-subtle);font-size:12px}.nav-action{min-height:38px;color:var(--sidebar-subtle)}
.workspace{min-height:100vh;margin-left:var(--sidebar)}
.topbar{position:sticky;top:0;z-index:35;height:var(--topbar);display:flex;align-items:center;gap:14px;padding:0 24px;background:rgba(244,246,242,.90);border-bottom:1px solid var(--line);backdrop-filter:blur(15px)}
.topbar-context{display:flex;align-items:baseline;gap:9px;min-width:0}.topbar-context span{color:var(--ink-4);font-size:12px;font-weight:800;letter-spacing:.11em}.topbar-context strong{overflow:hidden;font-size:14px;text-overflow:ellipsis;white-space:nowrap}.topbar-actions{display:flex;align-items:center;gap:8px;margin-left:auto}.season-chip,.connection-chip,.status-chip,.category-chip{display:inline-flex;align-items:center;gap:6px;width:max-content;border:1px solid var(--line);border-radius:999px;background:var(--surface);color:var(--ink-2);font-size:12px;font-weight:720;white-space:nowrap}.season-chip{padding:6px 9px}.season-chip svg{width:14px;height:14px;color:var(--amber)}.season-chip.winter svg{color:var(--blue)}.connection-chip{padding:6px 9px;color:var(--ink-3)}.connection-chip i{width:7px;height:7px;border-radius:50%;background:var(--good);box-shadow:0 0 0 3px rgba(var(--good-rgb),.10)}
.mobile-menu,.sidebar-scrim{display:none}
.content{width:min(1840px,100%);margin:0 auto;padding:26px 26px 48px}

/* Shared page structure */
.page-head{display:flex;align-items:flex-end;justify-content:space-between;gap:20px;margin-bottom:18px}.page-head>div:first-child{display:grid;gap:5px}.page-head p:last-child{max-width:760px;color:var(--ink-3);font-size:13px}.page-actions{display:flex;align-items:center;justify-content:flex-end;gap:8px;flex-wrap:wrap}
.surface{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:0 1px 2px rgba(23,35,31,.025)}
.section-head{display:flex;align-items:flex-start;justify-content:space-between;gap:14px}.section-head>div{display:grid;gap:4px}.section-head p{color:var(--ink-3);font-size:12px}
.empty-state{display:grid;justify-items:center;gap:9px;padding:54px 20px;text-align:center;color:var(--ink-3)}.empty-state>span{display:grid;place-items:center;width:48px;height:48px;border-radius:14px;background:var(--brand-faint);color:var(--brand)}.empty-state h3{color:var(--ink)}.empty-state p{max-width:520px;font-size:12px}.empty-state .button{margin-top:5px}
.loading-state{display:grid;place-items:center;min-height:360px;color:var(--ink-3)}.spinner{width:26px;height:26px;border:3px solid var(--line);border-top-color:var(--brand);border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}
.status-chip{padding:4px 8px}.status-chip.good{color:var(--good);background:var(--brand-faint);border-color:rgba(var(--good-rgb),.16)}.status-chip.warning{color:var(--amber);background:var(--amber-soft);border-color:rgba(var(--amber-rgb),.16)}.status-chip.danger{color:var(--danger);background:var(--danger-soft);border-color:rgba(var(--danger-rgb),.16)}.category-chip{padding:3px 7px;color:var(--ink-3);background:var(--surface-inset)}

/* Planner */
.planner-page{display:grid;gap:14px}
.planner-head{align-items:center;margin-bottom:0}.planner-head h1{display:flex;align-items:center;gap:10px}.draft-indicator{display:inline-flex;align-items:center;gap:6px;padding:4px 8px;border-radius:999px;background:var(--amber-soft);color:var(--amber);font-size:12px;font-weight:800;letter-spacing:.04em}.draft-indicator i{width:6px;height:6px;border-radius:50%;background:currentColor}.draft-indicator.published{background:var(--brand-faint);color:var(--good)}
.week-strip{display:flex;align-items:center;gap:6px;overflow:auto;padding:4px 0 2px;scrollbar-width:none}.week-strip::-webkit-scrollbar{display:none}.week-pill{display:grid;min-width:126px;padding:9px 12px;border:1px solid var(--line);border-radius:11px;background:var(--surface);color:var(--ink-3);text-align:left}.week-pill b{color:var(--ink-2);font-size:12px}.week-pill small{font-size:12px}.week-pill.active{border-color:var(--brand);background:var(--brand);color:#fff;box-shadow:0 8px 22px rgba(var(--brand-rgb),.16)}.week-pill.active b{color:#fff}.week-pill.today:not(.active){border-color:rgba(var(--brand-rgb),.25)}
.planner-summary{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));overflow:hidden}.planner-metric{display:grid;gap:3px;min-height:92px;padding:17px 18px;border-right:1px solid var(--line)}.planner-metric:last-child{border-right:0}.planner-metric>span{display:flex;align-items:center;justify-content:space-between;color:var(--ink-3);font-size:12px;font-weight:700}.planner-metric>span svg{width:15px;height:15px;color:var(--brand)}.planner-metric strong{font-size:24px;line-height:1.1;letter-spacing:-.035em;font-variant-numeric:tabular-nums}.planner-metric small{color:var(--ink-4);font-size:12px}.planner-metric.warning strong{color:var(--amber)}.planner-metric.good strong{color:var(--good)}
.planner-command{display:flex;align-items:center;gap:10px;padding:12px 14px}.planner-command .date-nav{display:flex;align-items:center;gap:5px}.planner-command .date-label{min-width:210px;text-align:center;font-size:13px;font-weight:750}.planner-command .command-spacer{flex:1}.planner-command label{display:flex;align-items:center;gap:7px;color:var(--ink-3);font-size:12px;font-weight:700}.planner-command select{min-height:34px;padding:5px 28px 5px 9px;border:1px solid var(--line);border-radius:8px;background:var(--surface);color:var(--ink-2)}
.warning-banner{display:flex;align-items:center;gap:11px;padding:11px 14px;border:1px solid rgba(var(--amber-rgb),.18);border-radius:13px;background:var(--amber-soft);color:#74470d}.warning-banner>span:first-child{display:grid;place-items:center;flex:none;width:30px;height:30px;border-radius:9px;background:rgba(var(--amber-rgb),.10)}.warning-banner svg{width:16px;height:16px}.warning-banner>div{display:grid;gap:1px}.warning-banner b{font-size:12px}.warning-banner small{font-size:12px;color:#8a5c20}.warning-banner .text-button{margin-left:auto;color:#74470d}
.planner-card{overflow:hidden}.planner-card-head{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:13px 16px;border-bottom:1px solid var(--line)}.planner-card-head>div:first-child{display:grid;gap:2px}.planner-card-head b{font-size:12px}.planner-card-head small{color:var(--ink-3);font-size:12px}.planner-legend{display:flex;align-items:center;gap:12px;color:var(--ink-3);font-size:12px}.planner-legend span{display:flex;align-items:center;gap:5px}.planner-legend i{width:10px;height:10px;border-radius:3px}.planner-legend .open{background:var(--brand-soft)}.planner-legend .shift{background:var(--brand)}.planner-legend .gap{background:repeating-linear-gradient(135deg,rgba(var(--danger-rgb),.25) 0 3px,transparent 3px 6px);border:1px solid rgba(var(--danger-rgb),.18)}
.planner-scroll{position:relative;overflow:auto;max-height:calc(100vh - 290px);min-height:480px;background:#f9faf8;overscroll-behavior:contain;scrollbar-color:#bbc7c0 transparent}
.planner-grid{display:grid;grid-template-columns:64px repeat(7,var(--day-width));grid-template-rows:auto var(--timeline-height);width:max-content;min-width:100%;background:var(--surface)}
.planner-corner{position:sticky;top:0;left:0;z-index:12;display:flex;align-items:flex-end;justify-content:center;min-height:82px;padding:0 6px 12px;border-right:1px solid var(--line-strong);border-bottom:1px solid var(--line-strong);background:var(--surface);color:var(--ink-4);font-size:12px;font-weight:800;letter-spacing:.08em;text-transform:uppercase}
.day-head{position:sticky;top:0;z-index:9;min-width:var(--day-width);border-right:1px solid var(--line-strong);border-bottom:1px solid var(--line-strong);background:rgba(255,255,255,.97);backdrop-filter:blur(8px)}.day-head.today{background:#f4fbf7}.day-head.closed{background:#f7f8f6}
.day-head-main{display:flex;align-items:center;justify-content:space-between;gap:8px;min-height:40px;padding:7px 10px;border-bottom:1px solid var(--line)}.day-head-main>span:first-child{display:flex;align-items:baseline;gap:6px}.day-head-main strong{font-size:12px;text-transform:capitalize}.day-head-main b{font-size:14px}.day-head-main small{color:var(--ink-3);font-size:12px}.day-hours{display:flex;gap:4px;flex-wrap:wrap;justify-content:flex-end}.day-hours em{padding:2px 5px;border-radius:5px;background:var(--brand-faint);color:var(--brand);font-size:12px;font-style:normal;font-weight:750}.day-head.closed .day-hours em{background:var(--surface-inset);color:var(--ink-4)}
.employee-heads{display:grid;grid-template-columns:repeat(var(--employee-count),var(--lane-width));min-height:41px}.employee-head{display:flex;align-items:center;gap:6px;min-width:0;padding:6px 7px;border-right:1px solid var(--line)}.employee-head:last-child{border-right:0}.employee-dot{display:grid;place-items:center;flex:none;width:24px;height:24px;border-radius:7px;color:#fff;font-size:12px;font-weight:850;letter-spacing:.02em;box-shadow:inset 0 0 0 1px rgba(0,0,0,.07)}.employee-head>span:last-child{display:grid;min-width:0}.employee-head b{overflow:hidden;font-size:12px;text-overflow:ellipsis;white-space:nowrap}.employee-head small{overflow:hidden;color:var(--ink-4);font-size:12px;text-overflow:ellipsis;white-space:nowrap}
.time-axis{position:sticky;left:0;z-index:8;height:var(--timeline-height);border-right:1px solid var(--line-strong);background:var(--surface)}.time-label{position:absolute;right:8px;transform:translateY(-50%);color:var(--ink-4);font:700 12px/1 ui-monospace,SFMono-Regular,Consolas,monospace}.time-label:first-child{transform:none}.time-label:after{content:"";position:absolute;left:calc(100% + 8px);top:50%;width:8px;height:1px;background:var(--line)}
.day-canvas{position:relative;width:var(--day-width);height:var(--timeline-height);overflow:hidden;border-right:1px solid var(--line-strong);background:repeating-linear-gradient(to bottom,transparent 0 calc(var(--half-hour) - 1px),rgba(23,35,31,.045) calc(var(--half-hour) - 1px) var(--half-hour)),repeating-linear-gradient(to bottom,transparent 0 calc(var(--hour-height) - 1px),rgba(23,35,31,.075) calc(var(--hour-height) - 1px) var(--hour-height)),#f6f8f5}.day-canvas.closed{background:repeating-linear-gradient(135deg,#f5f6f4 0 8px,#f0f2ef 8px 16px)}
.open-band{position:absolute;left:0;right:0;background:rgba(var(--brand-rgb),.065);border-top:1px solid rgba(var(--brand-rgb),.10);border-bottom:1px solid rgba(var(--brand-rgb),.10);pointer-events:none}.coverage-gap{position:absolute;left:0;right:0;z-index:1;background:repeating-linear-gradient(135deg,rgba(var(--danger-rgb),.075) 0 5px,rgba(var(--danger-rgb),.015) 5px 10px);border-top:1px dashed rgba(var(--danger-rgb),.26);border-bottom:1px dashed rgba(var(--danger-rgb),.26);pointer-events:none}.coverage-gap:after{content:"Sin cobertura";position:absolute;right:5px;top:3px;color:rgba(var(--danger-rgb),.72);font-size:12px;font-weight:800;text-transform:uppercase;letter-spacing:.05em}
.lane-grid{position:absolute;inset:0;z-index:2;display:grid;grid-template-columns:repeat(var(--employee-count),var(--lane-width))}.employee-lane{position:relative;min-width:0;border-right:1px solid rgba(23,35,31,.075);cursor:crosshair}.employee-lane:last-child{border-right:0}.employee-lane:hover{background:rgba(var(--brand-rgb),.025)}.employee-lane:after{content:"+";position:absolute;right:6px;bottom:6px;display:grid;place-items:center;width:20px;height:20px;border-radius:6px;background:var(--surface);border:1px solid var(--line);color:var(--brand);font-size:13px;opacity:0;transition:opacity 120ms ease}.employee-lane:hover:after{opacity:1}
.absence-cover{position:absolute;inset:0;z-index:3;display:flex;align-items:center;justify-content:center;padding:8px;background:repeating-linear-gradient(135deg,rgba(113,128,122,.12) 0 6px,rgba(113,128,122,.04) 6px 12px);color:var(--ink-3);font-size:12px;font-weight:800;letter-spacing:.05em;text-transform:uppercase;pointer-events:none;writing-mode:vertical-rl}
.shift-block{position:absolute;left:5px;right:5px;z-index:5;display:grid;align-content:start;gap:2px;min-height:25px;padding:6px 7px;border:1px solid rgba(0,0,0,.08);border-radius:8px;color:#10221c;background:var(--shift-color);box-shadow:0 4px 12px rgba(23,35,31,.12);overflow:hidden;cursor:pointer;transition:transform 120ms var(--ease),box-shadow 120ms ease,filter 120ms ease}.shift-block:hover{z-index:7;transform:translateY(-1px);box-shadow:0 8px 20px rgba(23,35,31,.17);filter:saturate(1.06)}.shift-block b{overflow:hidden;font-size:12px;line-height:1.1;text-overflow:ellipsis;white-space:nowrap}.shift-block small{font-size:12px;line-height:1.15;font-weight:700;opacity:.76}.shift-block .shift-state{position:absolute;right:5px;top:5px;display:flex;gap:3px}.shift-block .shift-state svg{width:10px;height:10px}.shift-block.published{box-shadow:0 4px 12px rgba(23,35,31,.10),inset 0 0 0 1px rgba(255,255,255,.28)}.shift-block.outside{outline:2px dashed rgba(var(--amber-rgb),.58);outline-offset:-3px}
.current-time-line{position:absolute;left:0;right:0;z-index:6;height:1px;background:var(--danger);pointer-events:none}.current-time-line:before{content:"";position:absolute;left:-1px;top:-4px;width:8px;height:8px;border-radius:50%;background:var(--danger)}
.closed-label{position:absolute;inset:0;display:grid;place-items:center;color:var(--ink-4);font-size:12px;font-weight:750;letter-spacing:.08em;text-transform:uppercase;pointer-events:none}
.planner-footnote{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 14px;border-top:1px solid var(--line);color:var(--ink-3);font-size:12px}.planner-footnote span{display:flex;align-items:center;gap:5px}.planner-footnote svg{width:13px;height:13px}
.mobile-planner{display:none}

/* Team */
.team-toolbar{display:flex;align-items:center;gap:10px;padding:12px 14px;margin-bottom:14px}.team-toolbar .search-field{position:relative;flex:1;max-width:390px}.search-field input{width:100%;min-height:38px;padding:8px 12px 8px 36px;border:1px solid var(--line);border-radius:10px;background:var(--surface);color:var(--ink)}.search-field svg{position:absolute;left:11px;top:10px;width:16px;height:16px;color:var(--ink-4)}
.team-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.employee-card{display:grid;gap:15px;padding:16px}.employee-card-head{display:flex;align-items:center;gap:11px}.employee-avatar{display:grid;place-items:center;flex:none;width:42px;height:42px;border-radius:12px;color:#fff;font-size:12px;font-weight:850;box-shadow:inset 0 0 0 1px rgba(0,0,0,.08)}.employee-card-head>span:nth-child(2){display:grid;min-width:0}.employee-card-head b{overflow:hidden;font-size:14px;text-overflow:ellipsis;white-space:nowrap}.employee-card-head small{color:var(--ink-3);font-size:12px}.employee-card-head .icon-button{margin-left:auto}.employee-card-stats{display:grid;grid-template-columns:1fr 1fr;gap:8px}.employee-card-stats>div{display:grid;gap:2px;padding:9px;border-radius:9px;background:var(--surface-inset)}.employee-card-stats small{color:var(--ink-4);font-size:12px;text-transform:uppercase;letter-spacing:.06em}.employee-card-stats b{font-size:13px}.hours-progress{height:6px;overflow:hidden;border-radius:999px;background:var(--surface-inset)}.hours-progress i{display:block;width:var(--progress);height:100%;border-radius:inherit;background:var(--employee-color,var(--brand))}.employee-card.inactive{opacity:.62}

/* Absences */
.absence-layout{display:grid;grid-template-columns:minmax(0,1.3fr) minmax(300px,.7fr);gap:14px}.absence-list,.absence-aside{padding:17px}.absence-rows{display:grid;margin-top:13px}.absence-row{display:grid;grid-template-columns:42px minmax(160px,1fr) minmax(150px,.75fr) auto;align-items:center;gap:11px;min-height:62px;border-bottom:1px solid var(--line)}.absence-row:last-child{border-bottom:0}.absence-icon{display:grid;place-items:center;width:36px;height:36px;border-radius:10px;background:var(--amber-soft);color:var(--amber)}.absence-row>span:nth-child(2),.absence-row>span:nth-child(3){display:grid}.absence-row b{font-size:12px}.absence-row small{color:var(--ink-3);font-size:12px}.absence-aside{align-self:start}.absence-aside ul{display:grid;gap:9px;margin:15px 0 0;padding:0;list-style:none}.absence-aside li{display:flex;gap:8px;color:var(--ink-3);font-size:12px}.absence-aside li:before{content:"";flex:none;width:6px;height:6px;margin-top:5px;border-radius:50%;background:var(--brand)}

/* Reports */
.report-summary{display:grid;grid-template-columns:repeat(3,1fr);overflow:hidden;margin-bottom:14px}.report-stat{display:grid;gap:3px;padding:17px;border-right:1px solid var(--line)}.report-stat:last-child{border-right:0}.report-stat small{color:var(--ink-3);font-size:12px}.report-stat strong{font-size:24px}.report-panel{overflow:hidden}.table-toolbar{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px 16px;border-bottom:1px solid var(--line)}.data-table{width:100%;border-collapse:collapse}.data-table th{height:38px;padding:0 14px;background:var(--surface-inset);color:var(--ink-4);font-size:12px;font-weight:850;letter-spacing:.08em;text-align:left;text-transform:uppercase}.data-table td{padding:12px 14px;border-bottom:1px solid var(--line);color:var(--ink-2);font-size:12px}.data-table tbody tr:last-child td{border-bottom:0}.data-table b{color:var(--ink)}.hours-cell{display:grid;grid-template-columns:70px minmax(90px,1fr);align-items:center;gap:9px}.hours-cell .hours-progress{height:5px}

/* Settings */
.settings-layout{display:grid;grid-template-columns:minmax(310px,.7fr) minmax(0,1.3fr);gap:14px}.settings-card,.hours-card{padding:18px}.settings-form{display:grid;gap:13px;margin-top:16px}.season-summary{display:grid;grid-template-columns:1fr 1fr;gap:8px}.season-summary>div{display:grid;gap:3px;padding:10px;border:1px solid var(--line);border-radius:10px;background:var(--surface-inset)}.season-summary small{color:var(--ink-4);font-size:12px;text-transform:uppercase;letter-spacing:.06em}.season-summary b{font-size:12px}.hours-card{overflow:hidden}.season-tabs{display:flex;gap:4px;padding:4px;border:1px solid var(--line);border-radius:11px;background:var(--surface-inset)}.season-tab{display:flex;align-items:center;justify-content:center;gap:6px;min-height:34px;flex:1;border:0;border-radius:8px;background:transparent;color:var(--ink-3);font-size:12px;font-weight:750}.season-tab svg{width:14px;height:14px}.season-tab.active{background:var(--surface);color:var(--ink);box-shadow:0 1px 3px rgba(23,35,31,.08)}
.hours-editor{display:grid;margin-top:14px;border:1px solid var(--line);border-radius:12px;overflow:hidden}.hours-row{display:grid;grid-template-columns:96px 70px 1fr auto;align-items:center;gap:10px;min-height:62px;padding:8px 10px;border-bottom:1px solid var(--line)}.hours-row:last-child{border-bottom:0}.hours-day{display:grid}.hours-day b{font-size:12px}.hours-day small{color:var(--ink-4);font-size:12px}.hours-open{display:flex;align-items:center;gap:6px;color:var(--ink-3);font-size:12px}.interval-list{display:flex;align-items:center;gap:7px;flex-wrap:wrap}.interval-item{display:flex;align-items:center;gap:5px;padding:5px;border:1px solid var(--line);border-radius:8px;background:var(--surface)}.interval-item input{width:84px;min-height:30px;padding:4px 6px;border:0;background:transparent;color:var(--ink);font-size:12px}.interval-item span{color:var(--ink-4)}.interval-item button{display:grid;place-items:center;width:25px;height:25px;padding:0;border:0;border-radius:6px;background:transparent;color:var(--ink-4)}.interval-item button:hover{background:var(--danger-soft);color:var(--danger)}.hours-row.closed .interval-list{opacity:.35;pointer-events:none}.settings-savebar{position:sticky;bottom:12px;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 14px;margin-top:14px;border:1px solid rgba(var(--brand-rgb),.18);border-radius:13px;background:rgba(255,255,255,.94);box-shadow:var(--shadow);backdrop-filter:blur(12px)}.settings-savebar span{display:grid}.settings-savebar b{font-size:12px}.settings-savebar small{color:var(--ink-3);font-size:12px}

/* Portal */
.portal-hero{display:grid;grid-template-columns:1fr auto;align-items:center;gap:18px;padding:24px;background:linear-gradient(135deg,#07543d,#0b7654);color:#fff}.portal-hero>div{display:grid;gap:6px}.portal-hero .eyebrow{color:#aee7d2}.portal-hero p{color:rgba(255,255,255,.72)}.clock-actions{display:flex;gap:8px}.clock-actions .button{min-height:46px}.clock-actions .button:first-child{background:#fff;color:var(--brand-strong);border-color:#fff}.clock-actions .button:last-child{background:rgba(255,255,255,.10);color:#fff;border-color:rgba(255,255,255,.20)}
.portal-grid{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(300px,.65fr);gap:14px;margin-top:14px}.portal-shifts,.portal-summary{padding:18px}.portal-shift-list{display:grid;margin-top:12px}.portal-shift{display:grid;grid-template-columns:58px 1fr auto;align-items:center;gap:10px;min-height:58px;border-bottom:1px solid var(--line)}.portal-shift:last-child{border-bottom:0}.portal-date{display:grid;justify-items:center;padding:5px;border-radius:8px;background:var(--surface-inset)}.portal-date b{font-size:15px}.portal-date small{color:var(--ink-3);font-size:12px;text-transform:uppercase}.portal-shift>span:nth-child(2){display:grid}.portal-shift>span:nth-child(2) b{font-size:12px}.portal-shift>span:nth-child(2) small{color:var(--ink-3);font-size:12px}.portal-time{font:750 12px ui-monospace,SFMono-Regular,Consolas,monospace;color:var(--brand)}

/* Modal and toast */
.modal{width:min(640px,calc(100vw - 28px));max-height:calc(100vh - 32px);padding:0;border:0;border-radius:20px;background:var(--surface);box-shadow:var(--shadow-float);overflow:hidden}.modal::backdrop{background:rgba(16,32,26,.55);backdrop-filter:blur(3px)}.modal form{display:grid;grid-template-rows:auto minmax(0,1fr) auto;max-height:calc(100dvh - 32px);min-height:0}.modal-head{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;padding:19px 20px 15px;border-bottom:1px solid var(--line)}.modal-head>div{display:grid;gap:4px}.modal-body{overflow:auto;min-height:0;display:grid;gap:14px;padding:18px 20px}.modal-actions{display:flex;align-items:center;justify-content:flex-end;flex-wrap:wrap;flex-shrink:0;gap:8px;padding:13px 20px;border-top:1px solid var(--line);background:var(--surface-raised)}.modal-actions .danger-zone{margin-right:auto}.quick-presets{display:flex;gap:6px;flex-wrap:wrap}.quick-presets button{min-height:31px;padding:5px 9px;border:1px solid var(--line);border-radius:8px;background:var(--surface);color:var(--ink-2);font-size:12px;font-weight:700}.quick-presets button:hover{border-color:rgba(var(--brand-rgb),.25);color:var(--brand)}.shift-preview{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:10px;padding:10px;border:1px solid var(--line);border-radius:11px;background:var(--surface-inset)}.shift-preview>span:first-child{display:grid;place-items:center;width:34px;height:34px;border-radius:9px;background:var(--brand-soft);color:var(--brand)}.shift-preview>span:nth-child(2){display:grid}.shift-preview b{font-size:12px}.shift-preview small{color:var(--ink-3);font-size:12px}.shift-duration{font-size:14px;font-weight:800;color:var(--brand)}.modal-note{display:flex;gap:8px;padding:9px;border-radius:9px;background:var(--amber-soft);color:#785019;font-size:12px}.modal-note svg{flex:none;width:14px;height:14px}
.toast{position:fixed;right:22px;bottom:22px;z-index:100;display:flex;align-items:center;gap:9px;max-width:min(430px,calc(100vw - 30px));padding:12px 15px;border:1px solid rgba(255,255,255,.12);border-radius:12px;background:#173b30;color:#fff;box-shadow:0 14px 45px rgba(16,32,26,.26);font-size:12px;font-weight:650;opacity:0;transform:translateY(12px);pointer-events:none;transition:opacity 180ms ease,transform 180ms var(--ease)}.toast.show{opacity:1;transform:none}.toast.bad{background:#8e2730}.toast svg{width:16px;height:16px}

/* Hover polish */
@media(hover:hover) and (pointer:fine){
  .surface.interactive:hover,.employee-card:hover{border-color:rgba(var(--brand-rgb),.18);box-shadow:var(--shadow)}
  .data-table tbody tr:hover,.absence-row:hover,.portal-shift:hover{background:var(--surface-raised)}
}

/* Responsive */
@media(max-width:1280px){
  .content{padding:22px 20px 42px}
  .team-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .settings-layout{grid-template-columns:1fr}.settings-card{display:grid;grid-template-columns:1fr 1fr;gap:16px}.settings-card .section-head,.settings-card .settings-form{grid-column:1/-1}
  .planner-summary{grid-template-columns:repeat(2,1fr)}.planner-metric:nth-child(2){border-right:0}.planner-metric:nth-child(-n+2){border-bottom:1px solid var(--line)}
}
@media(max-width:980px){
  :root{--sidebar:220px}
  .planner-command{flex-wrap:wrap}.planner-command .command-spacer{display:none}.planner-command .date-nav{order:1}.planner-command label{order:2}.planner-command .segmented{order:3}.planner-command .button{order:4}.planner-command .date-label{min-width:170px}
  .absence-layout,.portal-grid{grid-template-columns:1fr}.absence-aside{position:static}
  .report-summary{grid-template-columns:1fr 1fr}.report-stat:nth-child(2){border-right:0}.report-stat:last-child{grid-column:1/-1;border-top:1px solid var(--line)}
}
@media(max-width:800px){
  :root{--sidebar:248px}
  .sidebar{transform:translateX(-100%);transition:transform 220ms var(--ease);box-shadow:18px 0 55px rgba(0,0,0,.20)}.nav-open .sidebar{transform:none}.workspace{margin-left:0}.sidebar-scrim{display:block;position:fixed;inset:0;z-index:45;border:0;background:rgba(16,32,26,.48);opacity:0;pointer-events:none;transition:opacity 160ms ease}.nav-open .sidebar-scrim{opacity:1;pointer-events:auto}.mobile-menu{display:grid}.topbar{padding:0 14px}.content{padding:18px 14px 34px}
  .page-head{align-items:flex-start;flex-direction:column}.page-actions{justify-content:flex-start;width:100%}.page-actions .button{flex:1}
  .week-strip{margin-right:-14px;padding-right:14px}.week-pill{min-width:116px}
  .planner-scroll{display:none}.mobile-planner{display:grid;gap:10px;padding:12px}.mobile-day-tabs{display:flex;gap:5px;overflow:auto;padding-bottom:2px}.mobile-day-tab{display:grid;justify-items:center;min-width:55px;padding:7px;border:1px solid var(--line);border-radius:9px;background:var(--surface);color:var(--ink-3)}.mobile-day-tab b{font-size:12px}.mobile-day-tab small{font-size:12px;text-transform:uppercase}.mobile-day-tab.active{background:var(--brand);border-color:var(--brand);color:#fff}.mobile-lanes{display:grid;gap:8px}.mobile-employee{display:grid;gap:8px;padding:11px;border:1px solid var(--line);border-radius:12px;background:var(--surface)}.mobile-employee-head{display:flex;align-items:center;gap:8px}.mobile-employee-head>span:nth-child(2){display:grid}.mobile-employee-head b{font-size:12px}.mobile-employee-head small{color:var(--ink-3);font-size:12px}.mobile-employee-head .button{margin-left:auto}.mobile-shifts{display:grid;gap:6px}.mobile-shift{display:flex;align-items:center;gap:9px;padding:8px;border-left:4px solid var(--employee-color);border-radius:8px;background:var(--surface-inset)}.mobile-shift>span{display:grid}.mobile-shift b{font-size:12px}.mobile-shift small{color:var(--ink-3);font-size:12px}.mobile-shift .status-chip{margin-left:auto}.mobile-empty{padding:10px;border:1px dashed var(--line-strong);border-radius:8px;color:var(--ink-4);font-size:12px;text-align:center}
  .planner-card-head{align-items:flex-start;flex-direction:column}.planner-legend{flex-wrap:wrap}
  .team-grid{grid-template-columns:1fr}.settings-card{display:block}.settings-card .settings-form{margin-top:16px}
  .hours-row{grid-template-columns:80px 64px 1fr}.hours-row>.text-button{grid-column:3;justify-self:start}.interval-list{grid-column:1/-1;padding-left:80px}
  .login-screen{grid-template-columns:1fr}.login-story{display:none}.login-panel{min-height:100vh;padding:20px}.login-card{padding:25px}
  .portal-hero{grid-template-columns:1fr}.clock-actions{justify-content:flex-start}
}
@media(max-width:600px){
  h1{font-size:25px}.topbar-actions .connection-chip{display:none}.topbar-context span{display:none}.content{padding-left:10px;padding-right:10px}
  .planner-summary{grid-template-columns:1fr 1fr}.planner-metric{min-height:82px;padding:13px}.planner-metric strong{font-size:21px}
  .planner-command{padding:10px}.planner-command .date-nav{width:100%;justify-content:space-between}.planner-command .date-label{flex:1;min-width:0}.planner-command label{width:100%;justify-content:space-between}.planner-command select{flex:1}.planner-command .segmented{width:100%}.planner-command .segmented button{flex:1}.planner-command>.button{width:100%}
  .field-row{grid-template-columns:1fr}.modal-body{padding:15px}.modal-head,.modal-actions{padding-left:15px;padding-right:15px}.modal-actions{flex-wrap:wrap}.modal-actions .danger-zone{width:100%;margin:0}.modal-actions .button{flex:1}
  .absence-row{grid-template-columns:38px 1fr auto}.absence-row>span:nth-child(3){grid-column:2}.absence-row>.icon-button{grid-column:3;grid-row:1/3}
  .report-summary{grid-template-columns:1fr}.report-stat{border-right:0;border-bottom:1px solid var(--line)}.report-stat:last-child{grid-column:auto;border-top:0;border-bottom:0}
  .data-table thead{display:none}.data-table,.data-table tbody,.data-table tr,.data-table td{display:block;width:100%}.data-table tr{padding:10px;border-bottom:1px solid var(--line)}.data-table td{display:grid;grid-template-columns:105px 1fr;padding:5px 0;border:0}.data-table td:before{content:attr(data-label);color:var(--ink-4);font-size:12px;font-weight:800;text-transform:uppercase}.hours-cell{grid-template-columns:60px 1fr}
  .hours-row{grid-template-columns:1fr auto}.hours-open{justify-self:end}.interval-list{grid-column:1/-1;padding-left:0}.hours-row>.text-button{grid-column:1/-1}.settings-savebar{align-items:stretch;flex-direction:column}.settings-savebar .button{width:100%}
  .toast{right:10px;bottom:max(10px,env(safe-area-inset-bottom));left:10px;max-width:none}
}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}.sidebar,.sidebar-scrim,.button,.icon-button,.shift-block,.toast,.switch-track:after{transition-duration:.01ms!important}.spinner{animation:none}}
@media(max-width:600px){.week-strip{margin-right:-10px;padding-right:10px}}

/* Recurrence, weekly context and operational exceptions */
.pattern-cycle-chip{display:inline-flex;align-items:center;gap:5px;margin-left:8px;padding:5px 8px;border:1px solid rgba(63,111,174,.18);border-radius:999px;background:var(--blue-soft);color:var(--blue);font-size:12px;font-weight:750;letter-spacing:0;vertical-align:middle}.pattern-cycle-chip svg{width:13px;height:13px}.button.active{border-color:rgba(var(--brand-rgb),.28);background:var(--brand-soft);color:var(--brand)}
.week-context{overflow:hidden;margin-bottom:14px}.week-context-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;padding:16px 18px;border-bottom:1px solid var(--line)}.week-context-head>div:first-child{display:grid;gap:4px}.week-context-head p:last-child{max-width:760px;color:var(--ink-3);font-size:12px}.week-context-actions{display:flex;gap:7px;flex-wrap:wrap}.week-note{display:grid;grid-template-columns:34px 1fr;align-items:start;gap:10px;padding:12px 18px;border-bottom:1px solid var(--line);background:var(--amber-soft)}.week-note>span{display:grid;place-items:center;width:32px;height:32px;border-radius:8px;background:rgba(var(--amber-rgb),.10);color:var(--amber)}.week-note>span svg{width:15px;height:15px}.week-note div{display:grid;gap:2px}.week-note b{font-size:12px}.week-note p{color:#785019;font-size:12px;line-height:1.5}.week-change-list{display:grid;grid-template-columns:repeat(3,minmax(0,1fr))}.week-change{display:grid;grid-template-columns:32px minmax(0,1fr) auto;align-items:start;gap:9px;min-height:76px;padding:12px 14px;border-right:1px solid var(--line);border-bottom:1px solid var(--line)}.week-change:nth-child(3n){border-right:0}.week-change .change-mark{display:grid;place-items:center;width:30px;height:30px;border-radius:8px;background:var(--surface-inset);color:var(--ink-3)}.week-change .change-mark svg{width:14px;height:14px}.week-change>div{display:grid;gap:1px;min-width:0}.week-change small{color:var(--ink-4);font-size:12px;font-weight:800;text-transform:uppercase}.week-change b{overflow:hidden;font-size:12px;text-overflow:ellipsis;white-space:nowrap}.week-change p{color:var(--ink-3);font-size:12px;line-height:1.4}.week-change.exception .change-mark{background:var(--blue-soft);color:var(--blue)}.week-change.absence .change-mark,.week-change.cancel .change-mark{background:var(--amber-soft);color:var(--amber)}.week-change.special .change-mark{background:var(--brand-soft);color:var(--brand)}.week-change.note .change-mark{background:#f1eef9;color:#7257a7}.week-change-empty{grid-column:1/-1;display:flex;align-items:center;gap:10px;padding:14px 18px}.week-change-empty>span{display:grid;place-items:center;width:30px;height:30px;border-radius:50%;background:var(--brand-soft);color:var(--good)}.week-change-empty>span svg{width:14px;height:14px}.week-change-empty div{display:grid}.week-change-empty b{font-size:12px}.week-change-empty small{color:var(--ink-3);font-size:12px}
.shift-block.origin-pattern{box-shadow:inset 0 0 0 1px rgba(255,255,255,.22)}.shift-block.origin-exception{outline:2px solid rgba(var(--amber-rgb),.48);outline-offset:-2px}.shift-state{display:flex!important;align-items:center;gap:2px}.shift-state svg{width:11px!important;height:11px!important}.planner-card.diff-mode .shift-block.origin-pattern{opacity:.16;filter:saturate(.5)}.planner-card.diff-mode .shift-block.origin-exception,.planner-card.diff-mode .shift-block.origin-manual,.planner-card.diff-mode .absence-cover{opacity:1}.recurrence-banner{display:grid;grid-template-columns:34px 1fr;align-items:center;gap:10px;padding:10px 11px;border:1px solid rgba(63,111,174,.16);border-radius:11px;background:var(--blue-soft);color:var(--blue)}.recurrence-banner>svg{width:17px;height:17px}.recurrence-banner div{display:grid;gap:2px}.recurrence-banner b{font-size:12px}.recurrence-banner small{font-size:12px;color:#4f6682}.recurrence-banner.exception{border-color:rgba(var(--amber-rgb),.18);background:var(--amber-soft);color:var(--amber)}.recurrence-banner.exception small{color:#785019}

/* Pattern editor */
.pattern-onboarding{display:grid;grid-template-columns:62px minmax(0,760px);align-items:start;gap:18px;padding:28px}.pattern-onboarding-icon{display:grid;place-items:center;width:58px;height:58px;border-radius:16px;background:var(--brand-soft);color:var(--brand)}.pattern-onboarding-icon svg{width:25px;height:25px}.pattern-onboarding>div{display:grid;justify-items:start;gap:8px}.pattern-onboarding h2{font-size:22px}.pattern-onboarding p:not(.eyebrow){color:var(--ink-3);line-height:1.6}.patterns-layout{display:grid;grid-template-columns:260px minmax(0,1fr);align-items:start;gap:14px}.pattern-list{position:sticky;top:calc(var(--topbar) + 14px);overflow:hidden}.pattern-list .section-head{padding:15px}.pattern-list-items{display:grid;border-top:1px solid var(--line)}.pattern-list-item{display:grid;grid-template-columns:34px minmax(0,1fr) auto;align-items:center;gap:9px;min-height:64px;padding:9px 11px;border:0;border-bottom:1px solid var(--line);background:transparent;color:var(--ink);text-align:left}.pattern-list-item:last-child{border-bottom:0}.pattern-list-item:hover,.pattern-list-item.active{background:var(--brand-faint)}.pattern-list-item.active{box-shadow:inset 3px 0 var(--brand)}.pattern-status{display:grid;place-items:center;width:31px;height:31px;border-radius:8px;background:var(--surface-inset);color:var(--ink-3)}.pattern-status.active{background:var(--brand-soft);color:var(--brand)}.pattern-status svg{width:14px;height:14px}.pattern-list-item>span:nth-child(2){display:grid;min-width:0}.pattern-list-item b{overflow:hidden;font-size:12px;text-overflow:ellipsis;white-space:nowrap}.pattern-list-item small{color:var(--ink-3);font-size:12px}.pattern-list-item em{padding:3px 5px;border-radius:5px;background:var(--brand-soft);color:var(--brand);font-size:12px;font-style:normal;font-weight:850;letter-spacing:.07em}.pattern-editor{min-width:0;overflow:hidden}.pattern-editor-head{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;padding:17px 18px;border-bottom:1px solid var(--line)}.pattern-editor-head>div:first-child{display:grid;gap:5px}.pattern-title-line{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.pattern-editor-head p{color:var(--ink-3);font-size:12px}.pattern-week-tabs{display:grid;grid-template-columns:repeat(6,minmax(84px,1fr));gap:6px;padding:10px 12px;overflow:auto;border-bottom:1px solid var(--line);background:var(--surface-raised)}.pattern-week-tab{display:grid;grid-template-columns:auto auto;align-items:baseline;justify-content:center;column-gap:5px;min-height:47px;padding:7px 9px;border:1px solid var(--line);border-radius:9px;background:var(--surface);color:var(--ink-3)}.pattern-week-tab span{font-size:12px;font-weight:800;letter-spacing:.08em}.pattern-week-tab b{font-size:18px;color:var(--ink)}.pattern-week-tab small{grid-column:1/-1;font-size:12px}.pattern-week-tab.active{border-color:rgba(var(--brand-rgb),.24);background:var(--brand-soft);color:var(--brand)}.pattern-week-tab.active b{color:var(--brand)}.pattern-tools{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:11px 14px;border-bottom:1px solid var(--line)}.pattern-tools>div{display:grid}.pattern-tools b{font-size:12px}.pattern-tools small{color:var(--ink-3);font-size:12px}.pattern-grid-wrap{overflow:auto}.pattern-grid{display:grid;grid-template-columns:155px repeat(7,minmax(118px,1fr));min-width:980px}.pattern-grid-corner,.pattern-day-head{position:sticky;top:0;z-index:3;display:flex;align-items:center;min-height:38px;padding:0 10px;border-right:1px solid var(--line);border-bottom:1px solid var(--line);background:var(--surface-inset);color:var(--ink-4);font-size:12px;font-weight:850;text-transform:uppercase}.pattern-grid-corner{left:0;z-index:4}.pattern-day-head{justify-content:center}.pattern-employee{position:sticky;left:0;z-index:2;display:flex;align-items:center;gap:7px;min-height:78px;padding:8px;border-right:1px solid var(--line);border-bottom:1px solid var(--line);background:var(--surface)}.pattern-employee>span:last-child{display:grid;min-width:0}.pattern-employee b{overflow:hidden;font-size:12px;text-overflow:ellipsis;white-space:nowrap}.pattern-employee small{color:var(--ink-3);font-size:12px}.pattern-cell{position:relative;display:grid;align-content:start;gap:5px;min-height:78px;padding:6px;border-right:1px solid var(--line);border-bottom:1px solid var(--line);background:var(--surface)}.pattern-cell:hover{background:var(--brand-faint)}.pattern-shift-chip{display:grid;gap:1px;width:100%;padding:6px;border:1px solid color-mix(in srgb,var(--employee-color) 45%,transparent);border-radius:7px;background:color-mix(in srgb,var(--employee-color) 20%,white);color:var(--ink);text-align:left}.pattern-shift-chip b{font-size:12px;font-variant-numeric:tabular-nums}.pattern-shift-chip small{color:var(--ink-3);font-size:12px}.pattern-cell-add{display:grid;place-items:center;width:25px;height:25px;margin-top:auto;border:1px dashed var(--line-strong);border-radius:7px;background:transparent;color:var(--ink-4)}.pattern-cell-add svg{width:12px;height:12px}.pattern-cell:hover .pattern-cell-add{border-color:rgba(var(--brand-rgb),.28);color:var(--brand)}.pattern-explainer{display:grid;grid-template-columns:34px 1fr;gap:10px;padding:13px 16px;background:var(--brand-faint)}.pattern-explainer>span{display:grid;place-items:center;width:32px;height:32px;border-radius:8px;background:var(--brand-soft);color:var(--brand)}.pattern-explainer>span svg{width:15px;height:15px}.pattern-explainer div{display:grid;gap:2px}.pattern-explainer b{font-size:12px}.pattern-explainer p{color:var(--ink-3);font-size:12px}.weekday-picker{display:grid;grid-template-columns:repeat(7,1fr);gap:5px}.weekday-picker label{position:relative}.weekday-picker input{position:absolute;opacity:0;pointer-events:none}.weekday-picker span{display:grid;place-items:center;min-height:36px;border:1px solid var(--line);border-radius:8px;background:var(--surface);color:var(--ink-3);font-size:12px;font-weight:800;text-transform:uppercase;cursor:pointer}.weekday-picker input:checked+span{border-color:rgba(var(--brand-rgb),.28);background:var(--brand-soft);color:var(--brand)}.weekday-picker input:disabled+span{cursor:default}

/* Special opening days */
.special-openings-card{grid-column:1/-1;margin-top:14px;padding:18px}.special-opening-list{display:grid;margin-top:14px;border:1px solid var(--line);border-radius:11px;overflow:hidden}.special-opening-row{display:grid;grid-template-columns:52px minmax(0,1fr) auto 34px 34px;align-items:center;gap:9px;min-height:60px;padding:7px 10px;border-bottom:1px solid var(--line)}.special-opening-row:last-child{border-bottom:0}.special-date{display:grid;place-items:center;width:44px;padding:5px;border-radius:8px;background:var(--surface-inset)}.special-date b{font-size:14px}.special-date small{color:var(--ink-3);font-size:12px;text-transform:uppercase}.special-opening-row>span:nth-child(2){display:grid}.special-opening-row>span:nth-child(2) b{font-size:12px}.special-opening-row>span:nth-child(2) small{color:var(--ink-3);font-size:12px}.special-empty{display:flex;align-items:center;gap:10px;padding:16px}.special-empty>span{display:grid;place-items:center;width:34px;height:34px;border-radius:9px;background:var(--surface-inset);color:var(--ink-3)}.special-empty>span svg{width:15px;height:15px}.special-empty>div{display:grid}.special-empty b{font-size:12px}.special-empty small{color:var(--ink-3);font-size:12px}.special-interval-editor{display:grid;gap:10px;padding:11px;border:1px solid var(--line);border-radius:11px;background:var(--surface-inset)}

@media(max-width:1180px){.patterns-layout{grid-template-columns:1fr}.pattern-list{position:static}.pattern-list-items{grid-template-columns:repeat(2,1fr)}.week-change-list{grid-template-columns:repeat(2,minmax(0,1fr))}.week-change:nth-child(3n){border-right:1px solid var(--line)}.week-change:nth-child(2n){border-right:0}}
@media(max-width:800px){.pattern-onboarding{grid-template-columns:1fr;padding:20px}.pattern-list-items{grid-template-columns:1fr}.pattern-editor-head,.week-context-head{flex-direction:column}.week-context-actions,.pattern-editor-head .page-actions{width:100%}.week-context-actions .button,.pattern-editor-head .page-actions .button{flex:1}.week-change-list{grid-template-columns:1fr}.week-change{border-right:0}.pattern-week-tabs{grid-template-columns:repeat(3,minmax(88px,1fr))}.special-opening-row{grid-template-columns:48px minmax(0,1fr) auto 32px}.special-opening-row .deleteSpecialOpening{grid-column:4}.special-opening-row .editSpecialOpening{display:none}}
@media(max-width:600px){.pattern-cycle-chip{display:flex;width:max-content;margin:7px 0 0}.weekday-picker{grid-template-columns:repeat(4,1fr)}.week-context-head{padding:14px}.week-note{padding:11px 14px}.pattern-week-tabs{display:flex}.pattern-week-tab{min-width:92px}.special-openings-card{padding:14px}.special-opening-row{grid-template-columns:44px 1fr auto}.special-opening-row .status-chip{grid-column:2;justify-self:start}.special-opening-row .icon-button{grid-column:3;grid-row:1/3}.special-opening-row .deleteSpecialOpening{display:none}}

@media print{
  body{background:#fff}.sidebar,.topbar,.page-actions,.week-strip,.planner-command,.warning-banner,.week-context-actions,.planner-footnote,.toast{display:none!important}.workspace{margin:0}.content{max-width:none;padding:0}.planner-page>.page-head{display:block;margin:0 0 10px}.planner-summary{break-inside:avoid}.week-context{break-inside:avoid}.planner-card{box-shadow:none;border-color:#bbb}.planner-scroll{display:block!important;overflow:visible}.planner-grid{transform:scale(.72);transform-origin:top left;width:138%}.mobile-planner{display:none!important}@page{size:landscape;margin:8mm}
}
.week-change-actions{display:flex;align-items:center;gap:4px;align-self:center}.week-change-actions .text-button{padding:5px 7px;border:1px solid var(--line);border-radius:7px;background:var(--surface);font-size:12px}.week-change-actions .icon-button{width:28px;height:28px}.week-change-actions .icon-button svg{width:13px;height:13px}

/* Absence rights and annual-hours control */
.partial-absence-cover{position:absolute;left:3px;right:3px;z-index:6;display:flex;align-items:center;justify-content:center;min-height:18px;padding:2px 4px;border:1px dashed rgba(var(--amber-rgb),.52);border-radius:6px;background:var(--amber-soft);color:#785019;pointer-events:none;overflow:hidden}.partial-absence-cover b{font-size:12px;line-height:1;font-variant-numeric:tabular-nums;white-space:nowrap}.mobile-partial-absence{display:flex;align-items:center;gap:5px;padding:7px 9px;border-radius:8px;background:var(--amber-soft);color:#785019;font-size:12px;font-weight:700}.mobile-partial-absence svg{width:13px;height:13px;flex:none}
.employee-annual-target{color:var(--ink-3);font-size:12px}.employee-annual-target b{color:var(--ink-2)}
.rights-strip{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin-bottom:14px}.right-stat{display:grid;grid-template-columns:38px minmax(0,1fr);align-items:center;gap:10px;padding:13px}.right-stat>span{display:grid;place-items:center;width:36px;height:36px;border-radius:10px;background:var(--brand-soft);color:var(--brand)}.right-stat>span svg{width:16px;height:16px}.right-stat>div{display:grid;gap:1px}.right-stat small{color:var(--ink-4);font-size:12px;font-weight:800;letter-spacing:.07em;text-transform:uppercase}.right-stat strong{font-size:19px;line-height:1.1;font-variant-numeric:tabular-nums}.right-stat p{color:var(--ink-3);font-size:12px}
.entitlement-panel{padding:17px;margin-bottom:14px}.entitlement-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:9px;margin-top:13px}.entitlement-card{display:grid;gap:10px;padding:11px;border:1px solid var(--line);border-radius:11px;background:var(--surface-raised)}.entitlement-card header{display:flex;align-items:center;gap:8px}.entitlement-card header>span:last-child{display:grid;min-width:0}.entitlement-card header b{overflow:hidden;font-size:12px;text-overflow:ellipsis;white-space:nowrap}.entitlement-card header small{color:var(--ink-3);font-size:12px}.entitlement-main{display:grid;gap:5px}.entitlement-main>span,.entitlement-card footer span{display:flex;align-items:baseline;justify-content:space-between;gap:6px}.entitlement-main small,.entitlement-card footer small{color:var(--ink-4);font-size:12px;text-transform:uppercase}.entitlement-main b,.entitlement-card footer b{font-size:12px;font-variant-numeric:tabular-nums}.rights-progress{height:5px;overflow:hidden;border-radius:999px;background:var(--surface-inset)}.rights-progress i{display:block;width:var(--progress);height:100%;border-radius:inherit;background:var(--brand)}.entitlement-card footer{display:grid;grid-template-columns:1fr 1fr;gap:8px;padding-top:8px;border-top:1px solid var(--line)}.entitlement-card footer span{display:grid;justify-content:start;gap:1px}
.rights-layout{grid-template-columns:minmax(0,1.45fr) minmax(300px,.55fr)}.legal-row{grid-template-columns:42px minmax(180px,1.15fr) minmax(190px,.9fr) auto 36px}.legal-row em{margin-top:2px;color:var(--ink-3);font-size:12px;font-style:normal}.legal-aside .section-head p{max-width:300px}.legal-note{display:grid;gap:3px;margin-top:14px;padding:10px;border-radius:9px;background:var(--brand-faint)}.legal-note b{font-size:12px}.legal-note p{color:var(--ink-3);font-size:12px;line-height:1.5}
.absence-policy-card{display:grid;grid-template-columns:38px minmax(0,1fr);gap:10px;padding:11px;border:1px solid rgba(var(--brand-rgb),.16);border-radius:11px;background:var(--brand-faint)}.policy-icon{display:grid;place-items:center;width:36px;height:36px;border-radius:10px;background:var(--brand-soft);color:var(--brand)}.policy-icon.internal{background:var(--amber-soft);color:var(--amber)}.policy-icon svg{width:16px;height:16px}.absence-policy-card>div{display:grid;gap:5px;min-width:0}.policy-title{display:flex;align-items:center;justify-content:space-between;gap:8px}.policy-title b{font-size:12px}.absence-policy-card p{color:var(--ink-2);font-size:12px;line-height:1.45}.absence-policy-card footer{display:flex;align-items:center;justify-content:space-between;gap:8px;padding-top:5px;border-top:1px solid var(--line)}.absence-policy-card footer span{color:var(--ink-4);font-size:12px}.absence-policy-card footer strong{color:var(--brand);font-size:12px;text-align:right}.absence-quick-row{display:flex;align-items:center;justify-content:space-between;gap:8px;min-height:30px}.absence-quick-row small{color:var(--ink-3);font-size:12px;font-variant-numeric:tabular-nums}
.annual-report-head{display:flex;align-items:flex-end;justify-content:space-between;gap:14px;margin:25px 0 10px}.annual-report-head>div{display:grid;gap:3px}.annual-report-head p:last-child{color:var(--ink-3);font-size:12px}.year-picker{display:flex;align-items:center;gap:7px;color:var(--ink-3);font-size:12px;font-weight:700}.year-picker select{min-height:36px;padding:6px 30px 6px 10px;border:1px solid var(--line);border-radius:9px;background:var(--surface);color:var(--ink)}.annual-summary{display:grid;grid-template-columns:repeat(4,1fr);overflow:hidden;margin-bottom:14px}.annual-summary>div{display:grid;gap:3px;padding:15px;border-right:1px solid var(--line)}.annual-summary>div:last-child{border-right:0}.annual-summary small{color:var(--ink-4);font-size:12px;text-transform:uppercase;letter-spacing:.05em}.annual-summary strong{font-size:22px;font-variant-numeric:tabular-nums}.annual-summary .warning strong{color:var(--amber)}.annual-summary .good strong{color:var(--good)}.table-sub{display:block;margin-top:2px;color:var(--ink-4);font-size:12px}.annual-progress-cell{display:grid;grid-template-columns:auto minmax(80px,1fr);align-items:center;gap:5px 8px;min-width:150px}.annual-progress-cell small{grid-column:1/-1;color:var(--ink-4);font-size:12px}.report-method{display:flex;align-items:flex-start;gap:7px;padding:10px 14px;border-top:1px solid var(--line);background:var(--surface-raised);color:var(--ink-3);font-size:12px}.report-method svg{flex:none;width:13px;height:13px;color:var(--amber)}

@media(max-width:1180px){.rights-strip{grid-template-columns:repeat(2,1fr)}.entitlement-grid{grid-template-columns:repeat(2,1fr)}.annual-summary{grid-template-columns:repeat(2,1fr)}.annual-summary>div:nth-child(2){border-right:0}.annual-summary>div:nth-child(-n+2){border-bottom:1px solid var(--line)}}
@media(max-width:800px){.entitlement-grid{grid-template-columns:1fr}.legal-row{grid-template-columns:38px minmax(0,1fr) auto}.legal-row>span:nth-child(3){grid-column:2}.legal-row>.status-chip{grid-column:2;justify-self:start}.legal-row>.icon-button{grid-column:3;grid-row:1/4}.annual-report-head{align-items:flex-start;flex-direction:column}.year-picker{width:100%;justify-content:space-between}.year-picker select{flex:1}.absence-policy-card footer{align-items:flex-start;flex-direction:column}.absence-policy-card footer strong{text-align:left}}
@media(max-width:600px){.rights-strip{grid-template-columns:1fr 1fr;gap:7px}.right-stat{grid-template-columns:30px 1fr;padding:10px}.right-stat>span{width:29px;height:29px}.right-stat strong{font-size:16px}.right-stat p{display:none}.entitlement-panel{padding:13px}.entitlement-card footer{grid-template-columns:1fr 1fr}.legal-row{grid-template-columns:34px 1fr auto}.annual-summary{grid-template-columns:1fr 1fr}.annual-summary>div{padding:12px}.annual-summary strong{font-size:18px}.annual-table td{grid-template-columns:120px 1fr}.annual-progress-cell{min-width:0}.policy-title{align-items:flex-start;flex-direction:column}.absence-quick-row{align-items:flex-start;flex-direction:column}}

/* Workforce suite: presence, approvals, documents and people */
.table-scroll{overflow:auto}
.compact-empty{padding:18px;color:var(--ink-4);font-size:12px;text-align:center}
.row-actions{display:flex;align-items:center;justify-content:flex-end;gap:5px}
.row-actions .icon-button{width:32px;height:32px;border-radius:8px}

.presence-kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin-bottom:14px}
.presence-kpi{display:grid;gap:3px;min-height:104px;padding:16px}
.presence-kpi small{color:var(--ink-4);font-size:12px;font-weight:800;letter-spacing:.06em;text-transform:uppercase}
.presence-kpi strong{font-size:25px;line-height:1.1;font-variant-numeric:tabular-nums}
.presence-kpi p{color:var(--ink-3);font-size:12px}
.presence-kpi.attention{background:var(--amber-soft)}
.presence-kpi.attention strong{color:var(--amber)}
.presence-panel{overflow:hidden;margin-bottom:14px}
.presence-panel td>small{display:block;margin-top:2px;color:var(--ink-4);font-size:12px}
.operations-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.ops-card{overflow:hidden}
.ops-card>.section-head{padding:15px 16px;border-bottom:1px solid var(--line)}
.ops-list{display:grid}
.ops-list>article{display:grid;grid-template-columns:34px minmax(0,1fr) auto;align-items:center;gap:9px;min-height:58px;padding:8px 13px;border-bottom:1px solid var(--line)}
.ops-list>article:last-child{border-bottom:0}
.ops-list>article>div{display:grid;gap:1px;min-width:0}.ops-list b{font-size:12px}.ops-list small{color:var(--ink-3);font-size:12px}
.ops-mark{display:grid;place-items:center;width:31px;height:31px;border-radius:8px;background:var(--blue-soft);color:var(--blue)}
.ops-mark.warning{background:var(--amber-soft);color:var(--amber)}.ops-mark svg{width:14px;height:14px}

.request-columns{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));align-items:start;gap:12px}
.request-card{overflow:hidden}.request-card>.section-head{padding:14px;border-bottom:1px solid var(--line)}
.request-list{display:grid}.request-row{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:8px;min-height:66px;padding:10px 12px;border-bottom:1px solid var(--line)}.request-row:last-child{border-bottom:0}
.request-row>div{display:grid;gap:2px;min-width:0}.request-row b{overflow:hidden;font-size:12px;text-overflow:ellipsis;white-space:nowrap}.request-row small{color:var(--ink-3);font-size:12px;line-height:1.35}.request-row .row-actions,.request-row>.text-button{grid-column:1/-1;justify-self:end}

.communication-grid{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(320px,.85fr);gap:14px;align-items:start}
.documents-panel,.announcements-panel{overflow:hidden}.documents-panel>.section-head,.announcements-panel>.section-head{padding:15px 16px;border-bottom:1px solid var(--line)}
.document-list,.announcement-list{display:grid}.document-row{display:grid;grid-template-columns:38px minmax(0,1fr) auto auto;align-items:center;gap:10px;min-height:68px;padding:10px 13px;border-bottom:1px solid var(--line)}.document-row:last-child{border-bottom:0}
.document-icon{display:grid;place-items:center;width:34px;height:34px;border-radius:9px;background:var(--brand-soft);color:var(--brand)}.document-icon svg{width:15px;height:15px}
.document-row>div{display:grid;gap:2px;min-width:0}.document-row b{font-size:12px}.document-row small{color:var(--ink-3);font-size:12px}.document-status small{white-space:nowrap}.tag-line{display:flex;gap:3px;flex-wrap:wrap}.tag-line em{padding:2px 5px;border-radius:5px;background:var(--surface-inset);color:var(--ink-3);font-size:12px;font-style:normal}
.announcement-card{display:grid;gap:8px;padding:14px;border-bottom:1px solid var(--line);background:var(--brand-faint)}.announcement-card.read{background:var(--surface)}.announcement-card:last-child{border-bottom:0}.announcement-card header{display:flex;align-items:flex-start;justify-content:space-between;gap:8px}.announcement-card header>div{display:grid}.announcement-card b{font-size:12px}.announcement-card small{color:var(--ink-4);font-size:12px}.announcement-card p{color:var(--ink-2);font-size:12px;line-height:1.5}.announcement-card>a{color:var(--brand);font-size:12px;font-weight:750}.announcement-card footer{display:flex;justify-content:flex-end}
.recipient-picker{display:grid;gap:7px;padding:10px;border:1px solid var(--line);border-radius:10px;background:var(--surface-inset)}.recipient-picker #recipientList{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:5px;padding-left:20px}

.people-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;align-items:start}.people-card{overflow:hidden}.people-card>.section-head{padding:15px;border-bottom:1px solid var(--line)}
.goal-list,.review-list,.course-list{display:grid}.goal-list>article,.course-list>article{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:8px;padding:11px 13px;border-bottom:1px solid var(--line)}.goal-list>article:last-child,.course-list>article:last-child{border-bottom:0}.goal-list>article>div,.course-list>article>div{display:grid;min-width:0}.goal-list b,.course-list b{font-size:12px}.goal-list small,.course-list small{color:var(--ink-3);font-size:12px}.goal-list strong{font-size:12px;font-variant-numeric:tabular-nums}.goal-list .hours-progress{grid-column:1/-1}
.review-list>article{display:grid;grid-template-columns:42px minmax(0,1fr);gap:9px;padding:11px 13px;border-bottom:1px solid var(--line)}.review-list>article:last-child{border-bottom:0}.review-score{display:grid;place-items:center;width:38px;height:38px;border-radius:10px;background:var(--brand-soft);color:var(--brand);font-size:15px;font-weight:800;font-variant-numeric:tabular-nums}.review-list>article>div{display:grid;gap:2px}.review-list b{font-size:12px}.review-list small{color:var(--ink-4);font-size:12px}.review-list p{color:var(--ink-3);font-size:12px}

.workforce-settings-card,.coverage-rules-card,.organization-card{margin-top:14px;padding:18px}
.workforce-settings-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin-top:15px}.workforce-settings-grid .field small{color:var(--ink-4);font-size:12px;font-weight:500}.setting-check{align-self:end;min-height:70px;padding:10px;border:1px solid var(--line);border-radius:10px;background:var(--surface-inset)}.setting-check>span{display:grid}.setting-check b{font-size:12px}.setting-check small{color:var(--ink-3);font-size:12px}.geo-settings{display:grid;grid-template-columns:1fr 1fr .7fr;grid-column:1/-1;gap:10px;padding:10px;border:1px solid var(--line);border-radius:10px;background:var(--surface-inset)}
.coverage-rule-list{display:grid;margin-top:13px;border:1px solid var(--line);border-radius:11px;overflow:hidden}.coverage-rule-row{display:grid;grid-template-columns:42px minmax(0,1fr) auto 34px;align-items:center;gap:10px;min-height:56px;padding:8px 10px;border-bottom:1px solid var(--line)}.coverage-rule-row:last-child{border-bottom:0}.coverage-day{display:grid;place-items:center;width:36px;height:36px;border-radius:9px;background:var(--brand-soft);color:var(--brand);text-transform:uppercase}.coverage-day b{font-size:12px}.coverage-rule-row>div{display:grid}.coverage-rule-row>div b{font-size:12px;font-variant-numeric:tabular-nums}.coverage-rule-row>div small{color:var(--ink-3);font-size:12px}.coverage-rule-row>strong{font-size:12px}
.organization-columns{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-top:14px}.organization-columns>div{display:grid;gap:7px}.organization-columns>div>small{color:var(--ink-4);font-size:12px;font-weight:850;letter-spacing:.08em}.org-chip-list{display:flex;gap:6px;flex-wrap:wrap}.org-chip{display:inline-flex;align-items:center;gap:5px;min-height:30px;padding:4px 5px 4px 9px;border:1px solid var(--line);border-radius:8px;background:var(--surface-raised);font-size:12px;font-weight:700}.org-chip button{display:grid;place-items:center;width:20px;height:20px;padding:0;border:0;border-radius:5px;background:transparent;color:var(--ink-4)}.org-chip button:hover{background:var(--danger-soft);color:var(--danger)}.org-chip svg{width:10px;height:10px}.muted-copy{color:var(--ink-4);font-size:12px}

.employee-home-strip{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:9px;margin:14px 0}.home-action{display:grid;grid-template-columns:34px minmax(0,1fr);align-items:center;gap:9px;min-height:68px;padding:11px;border:1px solid var(--line);border-radius:var(--r-md);color:var(--ink);text-align:left}.home-action:not(.static):hover{border-color:rgba(var(--brand-rgb),.22);background:var(--brand-faint)}.home-action>span{display:grid;place-items:center;width:32px;height:32px;border-radius:8px;background:var(--brand-soft);color:var(--brand)}.home-action>span svg{width:14px;height:14px}.home-action>div{display:grid}.home-action b{font-size:12px}.home-action small{color:var(--ink-3);font-size:12px}.clock-actions-rich{display:grid;grid-template-columns:repeat(2,minmax(96px,1fr));min-width:220px}.clock-actions-rich .button{min-height:38px}.portal-day-status{display:grid;gap:6px;margin-top:12px}.portal-day-status small{color:var(--ink-3);font-size:12px}

.workforce-report-head{display:flex;align-items:flex-end;justify-content:space-between;gap:14px;margin:25px 0 10px}.workforce-report-head>div{display:grid;gap:3px}.workforce-report-head p:last-child{color:var(--ink-3);font-size:12px}.workforce-report-panel{overflow:hidden}

@media(max-width:1180px){.presence-kpis{grid-template-columns:repeat(2,1fr)}.request-columns,.people-grid{grid-template-columns:1fr 1fr}.request-card:last-child,.people-card:last-child{grid-column:1/-1}.workforce-settings-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.communication-grid{grid-template-columns:1fr}.employee-home-strip{grid-template-columns:repeat(2,1fr)}}
@media(max-width:800px){.operations-grid,.request-columns,.people-grid{grid-template-columns:1fr}.request-card:last-child,.people-card:last-child{grid-column:auto}.workforce-settings-grid{grid-template-columns:1fr 1fr}.geo-settings{grid-template-columns:1fr 1fr}.geo-settings .field:last-child{grid-column:1/-1}.organization-columns{grid-template-columns:1fr}.document-row{grid-template-columns:36px minmax(0,1fr) auto}.document-status{grid-column:2}.document-row>.row-actions{grid-column:2/-1}.workforce-report-head{align-items:flex-start;flex-direction:column}.recipient-picker #recipientList{grid-template-columns:1fr}.clock-actions-rich{min-width:0;width:100%}}
@media(max-width:600px){.presence-kpis{grid-template-columns:1fr 1fr;gap:7px}.presence-kpi{min-height:88px;padding:12px}.presence-kpi strong{font-size:20px}.operations-grid{gap:10px}.ops-list>article{grid-template-columns:31px 1fr}.ops-list>article>.status-chip,.ops-list>article>.row-actions{grid-column:2;justify-self:start}.request-row{grid-template-columns:1fr auto}.request-row .row-actions{justify-self:start}.workforce-settings-card,.coverage-rules-card,.organization-card{padding:13px}.workforce-settings-grid,.geo-settings{grid-template-columns:1fr}.geo-settings .field:last-child{grid-column:auto}.coverage-rule-row{grid-template-columns:38px 1fr auto}.coverage-rule-row>strong{grid-column:2}.coverage-rule-row>.icon-button{grid-column:3;grid-row:1/3}.document-row{grid-template-columns:34px 1fr}.document-status,.document-row>.row-actions{grid-column:2}.document-row>.row-actions{justify-content:flex-start;flex-wrap:wrap}.people-card>.section-head{padding:13px}.employee-home-strip{grid-template-columns:1fr 1fr;gap:7px}.home-action{min-height:62px;padding:9px}.clock-actions-rich{grid-template-columns:1fr 1fr}.workforce-report-panel .data-table td{grid-template-columns:120px 1fr}}

@media print{.workforce-report-head .button{display:none!important}.presence-kpis,.annual-summary{break-inside:avoid}.workforce-report-panel{break-inside:auto}.communication-grid,.people-grid,.request-columns{display:block}.communication-grid>*{margin-bottom:10px}}

/* Workforce suite extensions: access, talent and pulse */
.user-access-card{margin-top:14px;padding:18px}.user-access-list{display:grid;margin-top:13px;border:1px solid var(--line);border-radius:11px;overflow:hidden}.user-access-row{display:grid;grid-template-columns:34px minmax(0,1fr) auto auto;align-items:center;gap:10px;min-height:58px;padding:8px 10px;border-bottom:1px solid var(--line)}.user-access-row:last-child{border-bottom:0}.user-access-row.inactive{opacity:.58}.employee-avatar.small{width:31px;height:31px;border-radius:8px;background:var(--brand);font-size:12px}.user-access-row>div{display:grid}.user-access-row b{font-size:12px}.user-access-row small{color:var(--ink-3);font-size:12px}
.excel-tool-links{display:grid;grid-template-columns:1fr 1fr;gap:8px}.excel-tool-links .button{width:100%}
.people-advanced-grid{display:grid;grid-template-columns:1.15fr .85fr;gap:14px;margin-top:14px;align-items:start}.skills-matrix-card,.talent-card,.pulse-card,.variable-card{overflow:hidden}.skills-matrix-card>.section-head,.talent-card>.section-head,.pulse-card>.section-head,.variable-card>.section-head{padding:15px;border-bottom:1px solid var(--line)}
.skills-matrix{overflow:auto;max-height:420px}.skills-matrix-head,.skills-matrix-row{display:grid;grid-template-columns:minmax(130px,1.5fr) repeat(var(--skill-count,6),minmax(70px,1fr));min-width:max-content;border-bottom:1px solid var(--line)}.skills-matrix-head{position:sticky;top:0;z-index:2;background:var(--surface-inset)}.skills-matrix-head span,.skills-matrix-head b,.skills-matrix-row span,.skills-matrix-row i{display:flex;align-items:center;justify-content:center;min-width:84px;min-height:36px;padding:6px 8px;border-right:1px solid var(--line);font-size:12px}.skills-matrix-head span,.skills-matrix-row span{position:sticky;left:0;justify-content:flex-start;min-width:150px;background:inherit;font-weight:750}.skills-matrix-head b{max-width:110px;overflow:hidden;color:var(--ink-3);text-overflow:ellipsis;white-space:nowrap}.skills-matrix-row{background:var(--surface)}.skills-matrix-row span{background:var(--surface);font-size:12px}.skills-matrix-row i{color:var(--ink-4);font-style:normal}.skills-matrix-row i.has{background:var(--brand-faint);color:var(--good);font-size:12px;font-weight:800}
.nine-box{position:relative;display:grid;grid-template-columns:repeat(3,1fr);grid-template-rows:repeat(3,minmax(80px,1fr));gap:5px;padding:22px 12px 30px 28px}.nine-cell{display:flex;align-content:flex-start;gap:4px;flex-wrap:wrap;padding:8px;border:1px solid var(--line);border-radius:8px;background:var(--surface-raised)}.nine-cell small{width:100%;color:var(--ink-4);font-size:12px;text-transform:uppercase}.nine-cell>span{padding:3px 5px;border-radius:5px;background:var(--brand-soft);color:var(--brand-strong);font-size:12px;font-weight:700}.cell-3-3,.cell-3-2,.cell-2-3{background:var(--brand-faint)}.axis-y{position:absolute;left:5px;top:50%;color:var(--ink-4);font-size:12px;font-weight:800;letter-spacing:.08em;text-transform:uppercase;transform:rotate(-90deg) translateY(-50%)}.axis-x{position:absolute;right:12px;bottom:8px;color:var(--ink-4);font-size:12px;font-weight:800;letter-spacing:.08em;text-transform:uppercase}
.pulse-result{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px;padding:12px 14px;border-bottom:1px solid var(--line)}.pulse-result:last-child{border-bottom:0}.pulse-result>div{display:grid}.pulse-result b{font-size:12px}.pulse-result small{color:var(--ink-3);font-size:12px}.pulse-result strong{font-size:21px;color:var(--brand);font-variant-numeric:tabular-nums}.pulse-result>span{grid-column:1/-1;color:var(--ink-4);font-size:12px}.variable-list{display:grid}.variable-list>article{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:8px;padding:11px 13px;border-bottom:1px solid var(--line)}.variable-list>article:last-child{border-bottom:0}.variable-list>article>div{display:grid}.variable-list b{font-size:12px}.variable-list small{color:var(--ink-3);font-size:12px}.variable-list strong{font-size:12px;font-variant-numeric:tabular-nums}
.pulse-prompt{display:grid;grid-template-columns:42px minmax(0,1fr) auto;align-items:center;gap:12px;margin:14px 0;padding:14px;border-color:rgba(var(--brand-rgb),.18);background:var(--brand-faint)}.pulse-prompt>span{display:grid;place-items:center;width:40px;height:40px;border-radius:11px;background:var(--brand-soft);color:var(--brand)}.pulse-prompt>span svg{width:17px;height:17px}.pulse-prompt>div{display:grid;gap:2px}.pulse-prompt h2{font-size:14px}.pulse-prompt>div>p:last-child{color:var(--ink-3);font-size:12px}.range-value{display:block;color:var(--brand);font-size:16px;font-variant-numeric:tabular-nums}

@media(max-width:1000px){.people-advanced-grid{grid-template-columns:1fr}.user-access-row{grid-template-columns:34px 1fr auto}.user-access-row>.row-actions{grid-column:2/-1}}
@media(max-width:600px){.user-access-card{padding:13px}.user-access-row{grid-template-columns:31px 1fr auto}.user-access-row>.status-chip{grid-column:2;justify-self:start}.user-access-row>.row-actions{grid-column:2/-1;justify-content:flex-start}.excel-tool-links{grid-template-columns:1fr}.nine-box{grid-template-rows:repeat(3,minmax(68px,1fr));padding-left:25px}.nine-cell{padding:5px}.nine-cell small{display:none}.pulse-prompt{grid-template-columns:38px 1fr}.pulse-prompt>.button{grid-column:2;justify-self:start}.skills-matrix-head span,.skills-matrix-row span{min-width:125px}.skills-matrix-head b,.skills-matrix-row i{min-width:64px}}

/* TEDOMO Dev/Ops table standard 2026-09-17 */
.table-scroll,
.report-panel>div[style*="overflow:auto"]{
  max-height:clamp(360px,58vh,620px);
  overflow:auto;
  scrollbar-width:thin;
  scrollbar-color:var(--line-strong,var(--line)) transparent;
}
.data-table{
  width:max-content;
  min-width:100%;
  border-collapse:separate;
  border-spacing:0;
  table-layout:auto;
  font-size:12px;
}
.data-table th,
.data-table td{
  min-height:0;
  padding:4px 8px;
  font-size:12px;
  line-height:20px;
  white-space:nowrap;
  background-clip:padding-box;
  font-variant-numeric:tabular-nums;
}
.data-table th{
  position:sticky;
  top:0;
  z-index:10;
  height:auto;
  background:var(--surface-inset)!important;
  color:var(--ink-4);
  text-transform:none;
  letter-spacing:.01em;
  font-weight:820;
  isolation:isolate;
  overflow:hidden;
  cursor:pointer;
}
.data-table th:first-child{
  left:0;
  z-index:30;
  background:var(--surface)!important;
  box-shadow:1px 0 0 var(--line),12px 0 16px -17px rgba(15,31,43,.72);
}
.data-table td:first-child{
  position:sticky;
  left:0;
  z-index:12;
  background:var(--surface)!important;
  isolation:isolate;
  box-shadow:1px 0 0 var(--line),12px 0 16px -17px rgba(15,31,43,.55);
}
.data-table tbody tr:hover td:first-child{background:var(--surface-raised)!important}
.data-table th .sort-indicator{margin-left:4px;opacity:.56;color:var(--ink-4)}
.data-table th[data-sort-state="asc"] .sort-indicator,
.data-table th[data-sort-state="desc"] .sort-indicator{opacity:1;color:var(--brand)}
@media(max-width:760px){
  .table-scroll,.report-panel>div[style*="overflow:auto"]{max-height:56vh}
  .data-table{display:table!important;width:max-content!important;min-width:760px!important}
  .data-table thead{display:table-header-group!important}
  .data-table tbody{display:table-row-group!important}
  .data-table tr{display:table-row!important;padding:0!important;border:0!important}
  .data-table th,.data-table td{display:table-cell!important;padding:4px 8px!important;white-space:nowrap!important}
  .data-table td:before{content:none!important}
}

/* Legacy visual Excel import */
.legacy-import-summary{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin:4px 0 18px}.legacy-import-summary>div{padding:12px 14px;border:1px solid var(--line);border-radius:12px;background:var(--surface-inset)}.legacy-import-summary small{display:block;color:var(--ink-4);font-size:12px}.legacy-import-summary b{display:block;margin-top:4px;font-size:22px}.legacy-import-summary .warning b{color:var(--warning,#b86b00)}.legacy-mapping,.legacy-review,.legacy-preview-table{margin-top:18px}.legacy-mapping h3,.legacy-review h3,.legacy-preview-table h3{margin:0 0 6px}.legacy-mapping>p,.legacy-review>p{margin:0 0 12px;color:var(--ink-4)}.legacy-mapping-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.legacy-note-list{display:grid;gap:7px;max-height:190px;overflow:auto;padding-right:4px}.legacy-note-list>span{display:grid;grid-template-columns:minmax(120px,auto) 1fr;gap:10px;padding:8px 10px;border:1px solid var(--line);border-radius:10px;background:var(--surface-inset)}.legacy-note-list small{color:var(--ink-3)}.legacy-preview-table .table-scroll{max-height:340px}.legacy-preview-table .data-table{min-width:680px}@media(max-width:760px){.legacy-import-summary{grid-template-columns:repeat(2,minmax(0,1fr))}.legacy-mapping-grid{grid-template-columns:1fr}.legacy-note-list>span{grid-template-columns:1fr}}

/* Integrated duty-calendar extension */
/* Duty-calendar controls, responsive and accessible. */
.guard-calendar-card{margin-top:20px;padding:22px}
.guard-calendar-card .section-head{margin-bottom:14px}
.guard-controls{display:grid;grid-template-columns:minmax(90px,.4fr) minmax(180px,1.5fr) auto;gap:12px;align-items:end;margin:14px 0}
.guard-controls:has(.guard-upload){grid-template-columns:minmax(180px,1fr) auto}
.guard-controls .field{min-width:0;margin:0}
.guard-controls input{width:100%}
.guard-upload small{font-size:12px;display:block;margin-top:5px}
.guard-preview{border:1px solid #b5d2c6;border-radius:12px;padding:14px;margin:18px 0}
.guard-preview strong{font-size:14px}
.guard-preview p{margin:7px 0}
.guard-preview small{display:block;font-size:12px}
.guard-dates{display:flex;flex-wrap:wrap;gap:7px;margin:13px 0}
.guard-dates span{padding:5px 9px;border-radius:8px;background:var(--brand-soft);font-size:12px;color:var(--brand-strong)}
.guard-current{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:10px;margin:18px 0 6px;font-size:13px}
.guard-list{max-height:470px;overflow-y:auto}
.guard-day-row{display:grid;grid-template-columns:120px minmax(140px,1fr) 110px auto;gap:10px;align-items:center;border-top:1px solid rgba(130,150,140,.2);padding:9px 2px;font-size:13px}
.guard-day-row span{min-width:0;overflow-wrap:anywhere}
.guard-day-row small{font-size:12px;opacity:.7}
.guard-month-badge{display:inline-flex;align-items:center;font-size:12px;line-height:1.2;min-height:22px;padding:3px 6px;border:1px solid var(--amber);background:var(--amber-soft);color:var(--amber);border-radius:5px}
.month-date-head.guard-day{box-shadow:inset 0 3px 0 #be812d}
@media(max-width:800px){.guard-controls{grid-template-columns:1fr 1fr}.guard-controls .field:nth-child(2){grid-column:2/-1}.guard-controls button{grid-column:1/-1}.guard-day-row{grid-template-columns:90px 1fr auto}.guard-day-row small{display:none}}
@media(max-width:540px){.guard-calendar-card{padding:14px}.guard-controls,.guard-controls:has(.guard-upload){grid-template-columns:1fr}.guard-controls .field:nth-child(2){grid-column:auto}.guard-day-row{grid-template-columns:80px minmax(80px,1fr) auto}}


/* Workforce policy editor */
.wf-policy{margin-top:20px;padding:22px}
.wf-policy h3{font-size:15px;margin:22px 0 12px}
.wf-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}
.wf-grid .field{min-width:0}
.wf-grid input{width:100%;min-width:0}
.wf-checks{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px 22px;margin:17px 0}
.wf-check{display:flex;align-items:flex-start;gap:9px;font-size:13px}
.wf-check input{margin-top:3px;flex:none}
.wf-check span{line-height:1.45}
.wf-table-scroll{overflow-x:auto;max-width:100%}
.wf-table{width:100%;min-width:960px;table-layout:auto;border-collapse:collapse}
.wf-table th{font-size:12px;text-align:left;padding:9px;background:var(--surface-inset)}
.wf-table td{padding:7px;border-bottom:1px solid var(--line)}
.wf-table input,.wf-table select{width:100%;min-width:65px;border-radius:7px;padding:6px;font:inherit;font-size:12px}
.wf-table input[type=checkbox]{width:18px;height:18px}
.wf-rule input[data-field=name]{min-width:120px}
.wf-rule input[data-field=active_period]{min-width:140px}
.wf-rule input[data-field=special_friday]{min-width:125px}
.wf-actions{display:flex;justify-content:flex-end;gap:10px;flex-wrap:wrap;margin:14px 0}
.wf-disclaimer{margin-top:10px;font-size:12px;opacity:.85}
@media(max-width:920px){.wf-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:600px){.wf-policy{padding:14px}.wf-grid,.wf-checks{grid-template-columns:1fr}.wf-actions button{width:100%}}


/* Contract timeline editor */
.contract-row{display:grid;grid-template-columns:minmax(130px,1fr) minmax(130px,1fr) minmax(90px,.65fr) auto;gap:10px;align-items:end;padding:12px 0;border-bottom:1px solid var(--line)}
.contract-row .field{min-width:0;margin:0}
.contract-row input{width:100%;min-width:0}
.contract-year-result{margin:18px 0;padding:14px;border-radius:10px;background:var(--surface-inset);font-weight:700;font-size:13px}
@media(max-width:750px){.contract-row{grid-template-columns:1fr 1fr}.contract-row .field:last-of-type{grid-column:1/-1}}
@media(max-width:420px){.contract-row{grid-template-columns:1fr}.contract-row .field:last-of-type{grid-column:auto}}


/* Monthly opening editor */
.month-profile-card{margin-top:20px;padding:22px}
.monthly-profile-nav{display:flex;align-items:end;justify-content:space-between;gap:14px;flex-wrap:wrap;margin:15px 0}
.monthly-profile-nav .field{min-width:180px;margin:0}
.monthly-profile-days{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px 20px}
.monthly-profile-days .field{min-width:0;margin:0}
.monthly-profile-days input{font-size:14px;width:100%;min-width:0;font-variant-numeric:tabular-nums}
.monthly-profile-days small{font-size:12px;opacity:.8}
@media(max-width:600px){.month-profile-card{padding:14px}.monthly-profile-days{grid-template-columns:1fr}}


/* Farmatic SQL live integration */
.farmatic-sql-config{margin-top:18px;padding:24px}
.farmatic-sync-metrics{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin:16px 0}
.farmatic-sync-metrics>div{display:flex;flex-direction:column;gap:5px;min-width:0;padding:12px;border:1px solid var(--border,#dce5e7);border-radius:10px}
.farmatic-sync-metrics small{font-size:12px;opacity:.72}
.farmatic-sync-metrics strong{font-size:13px;overflow-wrap:anywhere}
.farmatic-sync-controls{display:flex;align-items:end;flex-wrap:wrap;gap:12px;margin-top:14px}
.farmatic-sync-controls .field{flex:1 1 260px;min-width:0;margin:0}
.farmatic-sync-controls input,.farmatic-sync-controls select{font-size:14px;min-height:42px;width:100%}
.farmatic-sync-controls button{min-height:42px}
.farmatic-sync-error,.farmatic-unmapped{font-size:13px;color:#a5452d;overflow-wrap:anywhere}
#farmaticSqlFeedback{font-size:13px;margin:15px 0 0}
@media(max-width:720px){
 .farmatic-sql-config{padding:16px}
 .farmatic-sync-metrics{grid-template-columns:repeat(2,minmax(0,1fr))}
 .farmatic-sync-controls button{flex:1 1 auto}
}
@media(max-width:430px){.farmatic-sync-metrics{grid-template-columns:1fr 1fr}}


/* Dormant Farmatic workers: deliberately separate from planning roster. */
.dormant-roster{margin:24px 0 18px;padding:22px;border:1px solid #d7dce2;border-radius:14px;background:#f0f2f4;color:#344051}
.dormant-roster .section-head h2{font-size:17px;color:#384657;margin:0 0 4px}
.dormant-roster .section-head p{max-width:740px;color:#697588;margin:0;line-height:1.5}
.dormant-roster-count{white-space:nowrap;padding:6px 10px;background:#e2e6eb;color:#526173;border-radius:999px;font-size:12px;font-weight:600}
.inactive-team-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(265px,1fr));gap:12px;margin-top:14px}
.inactive-team-card{display:flex;align-items:center;flex-wrap:wrap;gap:10px;padding:14px 12px;border:1px solid #d6dce3;border-radius:11px;background:#fafbfc;min-width:0}
.inactive-team-avatar{display:grid;place-items:center;flex:0 0 37px;width:37px;height:37px;border-radius:10px;background:#dce1e7;color:#606e7f;font-weight:700;font-size:12px}
.inactive-team-info{flex:1 1 140px;min-width:0;display:flex;flex-direction:column;gap:3px}
.inactive-team-info strong{font-size:13px;color:#364355;overflow-wrap:anywhere}
.inactive-team-info small{font-size:12px;color:#7a8594;overflow-wrap:anywhere}
.inactive-team-actions{display:flex;gap:7px;justify-content:flex-end;flex-wrap:wrap;flex:1 1 100%;border-top:1px solid #e9ecf0;padding-top:10px}
.inactive-team-actions .button{min-width:74px}
.dormant-empty{color:#6d7988;padding:8px 0}
@media(max-width:650px){.dormant-roster{padding:14px}.inactive-team-grid{grid-template-columns:1fr}.inactive-team-card{padding:12px}}


/* Annual-hours source statuses and duty-shift verification. */
.year-hours,.guard-coverage-card{margin-top:20px;padding:22px}
.year-hours-table{width:100%;overflow-x:auto;margin-top:15px}
.year-hours-table table{border-collapse:collapse;width:100%;font-size:13px}
.year-hours-table th,.year-hours-table td{padding:10px 12px;text-align:left;border-bottom:1px solid var(--border,#ddd);vertical-align:middle}
.year-hours-value{display:flex;align-items:center;gap:6px;white-space:nowrap}
.year-hours-value input{width:88px;min-width:88px;padding:7px;font-size:14px;font-variant-numeric:tabular-nums}
.year-hours-origin{display:block;color:var(--text,#374151);font-size:12px;white-space:nowrap}
.year-hours-verified{display:block;font-size:12px;opacity:.8;margin-top:3px}
.year-hours-verified input{margin:0 4px 0 0}
.year-hours-table button{margin:2px;white-space:nowrap}
.guard-coverage-row{display:grid;grid-template-columns:1fr 1fr 1.3fr .7fr auto;gap:10px;align-items:end;margin:10px 0}
.guard-coverage-row .field{margin:0;min-width:0}
.guard-coverage-row input,.guard-coverage-row select{min-width:0;width:100%;font-size:13px}
.guard-coverage-row button{margin-bottom:2px}
.guard-coverage-actions{display:flex;flex-wrap:wrap;gap:15px;align-items:center;margin:16px 0}
.guard-coverage-actions label{font-size:13px;display:flex;align-items:center;gap:7px}
@media(max-width:800px){.guard-coverage-row{grid-template-columns:repeat(2,minmax(0,1fr))}.guard-coverage-row button{grid-column:span 2}.year-hours,.guard-coverage-card{padding:14px}}


.official-holidays-auto{margin-top:20px;padding:22px}
.official-holiday-form{display:flex;flex-wrap:wrap;align-items:end;gap:12px;margin:14px 0}
.official-holiday-form .field{min-width:130px;max-width:200px;margin:0}
.official-holiday-form button{min-height:41px}
.official-holiday-results{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin-top:16px}
.official-holiday-results>div{padding:12px;border-radius:10px;border:1px solid var(--border,#dce2e8);min-width:0}
.official-holiday-results small{display:block;font-size:12px;color:var(--text-muted,#768394)}
.official-holiday-results strong{display:block;margin-top:6px;font-size:13px;overflow-wrap:anywhere}
.official-holidays-pending{font-size:13px;color:#995826;margin:12px 0 0}
.official-holidays-ok{font-size:13px;color:#28734a;margin:12px 0 0}
.official-holidays-links{font-size:12px;display:flex;flex-wrap:wrap;gap:8px}
.official-holidays-links a{text-decoration:underline}
@media(max-width:800px){.official-holiday-results{grid-template-columns:repeat(2,minmax(0,1fr))}.official-holidays-auto{padding:14px}}
@media(max-width:440px){.official-holiday-results{grid-template-columns:1fr}}

/* Auditoría anual sin IA: criterios visibles y densidad de información. */
.quality-page{display:flex;flex-direction:column;gap:18px}
.quality-summary{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}
.quality-stat{display:flex;flex-direction:column;gap:5px;padding:17px 18px;border:1px solid var(--line);border-radius:13px;background:var(--surface,#fff);min-width:0}
.quality-stat small{font-weight:650;color:var(--ink-3);font-size:12px}
.quality-stat b{font-size:29px;line-height:1.1;letter-spacing:-.04em;overflow-wrap:anywhere;color:var(--ink)}
.quality-stat span{font-size:12px;color:var(--ink-3);line-height:1.5}
.quality-stat.critical{border-left:4px solid #c34b43}
.quality-stat.warning{border-left:4px solid #df9b41}
.quality-guidance{display:flex;align-items:center;justify-content:space-between;gap:18px;padding:20px}
.quality-guidance h2{margin:0 0 6px;font-size:17px}
.quality-guidance p{margin:0;font-size:13px;line-height:1.6;color:var(--ink-3)}
.quality-guidance .quality-pending{color:#b24f37;margin-top:8px}
.quality-results{padding:18px;min-width:0}
.quality-results .section-head{display:flex;align-items:center;justify-content:space-between;gap:14px}
.quality-results .section-head>label{display:flex;align-items:center;gap:8px;white-space:nowrap;font-size:13px}
.quality-cell-sub{display:block;color:var(--ink-3);font-weight:400;line-height:1.45;margin-top:4px}
.quality-results .table-wrap{max-height:680px;overflow:auto}
.quality-results td{vertical-align:top;font-size:12px}
.quality-results td:nth-child(3){min-width:190px}
.quality-results td:nth-child(5){min-width:190px;max-width:330px}
.quality-limit{font-size:12px;color:var(--ink-3);margin-top:12px}
.quality-page .page-head input[type=number]{width:90px;min-width:0}
@media(max-width:1050px){.quality-summary{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:680px){.quality-summary{grid-template-columns:1fr 1fr;gap:8px}.quality-stat{padding:12px}.quality-stat b{font-size:24px}.quality-guidance{display:block}.quality-guidance button{margin-top:12px}.quality-results{padding:12px}.quality-results .section-head{align-items:flex-start;flex-direction:column}}
@media(max-width:420px){.quality-summary{grid-template-columns:1fr}}
.annual-registry-panel{min-width:0}
.annual-registry-table th,.annual-registry-table td{font-size:12px;vertical-align:top}
.annual-registry-table td>b,.annual-registry-table td>small{display:block}
.annual-registry-table td>small{margin-top:3px;color:var(--text-muted,#748496)}
.annual-registry-table td:nth-child(1){min-width:125px}
.annual-registry-table td:nth-child(5){min-width:150px}
.annual-contract-details{min-width:180px;max-width:300px}
.annual-contract-details summary{cursor:pointer;font-weight:650;color:var(--brand,#2268ae)}
.annual-contract-details p{font-weight:650;margin:9px 0 4px;font-size:11px}
.annual-contract-line{display:block;padding:3px 0;border-bottom:1px dashed var(--border,#e5eaf0);font-size:11px;line-height:1.4}
.quality-negative{color:#b4523b !important}
.quality-data-alert{color:#a75b20!important;font-size:11px;font-weight:600;line-height:1.35}
.annual-registry-table .status-chip{white-space:nowrap}
.farmatic-attendance-page{display:grid;gap:14px;min-width:0}
.farmatic-attendance-page .page-head{margin-bottom:0}
.farmatic-attendance-filter{display:grid;grid-template-columns:140px 160px minmax(180px,1fr);gap:15px;padding:15px 18px;align-items:end}
.farmatic-attendance-filter label{display:grid;gap:6px;font-weight:650;font-size:12px;color:var(--ink-3,#667487)}
.farmatic-attendance-filter select{width:100%;height:39px;padding:7px 9px;border-radius:8px;border:1px solid var(--line,#dce4eb);background:var(--surface,#fff);color:var(--ink,#1b2f3e)}
.farmatic-attendance-kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:11px}
.farmatic-attendance-kpis article{display:grid;gap:5px;padding:17px;min-width:0}
.farmatic-attendance-kpis small{font-size:12px;color:var(--ink-3,#748295)}
.farmatic-attendance-kpis b{font-size:25px;line-height:1.1;color:var(--ink,#173348);font-variant-numeric:tabular-nums}
.farmatic-attendance-sync,.farmatic-legacy-banner,.farmatic-sync-closed{font-size:12px;line-height:1.55;margin:0;padding:11px 14px;border:1px solid var(--line,#dce4eb);border-radius:10px;color:var(--ink-3,#667487)}
.farmatic-legacy-banner{background:var(--surface-inset,#f7f9fb)}
.farmatic-sync-closed{border-left:3px solid #58918a}
.farmatic-attendance-table{min-width:0;overflow:hidden}
.farmatic-attendance-table .table-toolbar p{font-size:12px;margin-top:4px;color:var(--ink-3,#738293)}
.farmatic-attendance-table td,.farmatic-attendance-table th{font-size:12px;vertical-align:top}
.farmatic-attendance-table td small{display:block;color:var(--ink-3,#738293);margin-top:4px}
.farmatic-attendance-table td:nth-child(7){min-width:210px;max-width:330px}
.farmatic-attendance-table .status-chip{display:inline-flex;margin:1px 2px 4px 0;font-size:10px}
.farmatic-segment-details summary{cursor:pointer;font-size:12px;font-weight:700;color:var(--brand,#25639c)}
.farmatic-segment-list{padding:8px 0;display:grid;gap:5px}
.farmatic-segment{display:grid;grid-template-columns:1fr auto;gap:2px 10px;padding:7px 9px;border-radius:7px;background:var(--surface-inset,#f5f8fb)}
.farmatic-segment b,.farmatic-segment strong{font-size:12px}
.farmatic-segment small{grid-column:1/-1}
.farmatic-legacy-note{line-height:1.5;font-size:11px}
.farmatic-history-pager{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:13px 17px;font-size:12px;color:var(--ink-3,#748295)}
.farmatic-history-pager>div{display:flex;gap:7px}
@media(max-width:880px){.farmatic-attendance-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}.farmatic-attendance-filter{grid-template-columns:1fr 1fr}.farmatic-attendance-filter label:last-child{grid-column:1/-1}}
@media(max-width:520px){.farmatic-attendance-kpis article{padding:12px}.farmatic-attendance-kpis b{font-size:21px}.farmatic-attendance-filter{grid-template-columns:1fr 1fr;padding:12px}.farmatic-attendance-table .table-scroll{overflow-x:auto}.farmatic-attendance-table table{min-width:950px}}


@media(max-width:760px){.annual-registry-table{min-width:1150px}}



/* Independent commercial-opening profiles for each planning year. */
.opening-year-toolbar{margin:12px 0 16px;padding:15px 18px}
.opening-year-controls{display:flex;align-items:flex-end;flex-wrap:wrap;gap:12px 20px}
.opening-year-controls .field{max-width:230px;min-width:155px;margin:0}
.opening-year-count{display:flex;flex-direction:column;gap:3px;flex:1 1 190px;min-width:0;padding-bottom:6px}
.opening-year-count b{font-size:15px;font-variant-numeric:tabular-nums}
.opening-year-count small{font-size:12px;color:var(--ink-3,var(--text-secondary,#677))}
.opening-year-toolbar .modal-note{margin:12px 0 0;line-height:1.4}
.opening-year-status{font-size:12px;margin:5px 0 0;color:var(--danger,#b44545)}
@media(max-width:620px){.opening-year-toolbar{padding:12px}.opening-year-controls{gap:12px}
.opening-year-controls .field{flex:1 1 140px;max-width:none}.opening-year-count{flex:1 1 130px}
.opening-year-controls>.button{width:100%;min-height:44px}}
