/* =====================================================================================================================
   Page styles: Time off, Overtime (page key "approvals"), Expenses, Time Off Management and My Utilization.
   Loaded after design.css; colors come only from its tokens, so Light, Dark and System all work.
   ---------------------------------------------------------------------------------------------------------------------
   Scope
     .rq-page (+ .rq-timeoff .rq-overtime .rq-expenses .rq-team)  the Requests pages, rendered into #content
     .rq-sheet (#timeoff-detail #approval-detail #expense-detail)   the request detail sheets
     #odoo-write-dialog:has(.rq-form)                              the request forms (the writer sheet is shared)
     .ut-page                                                      My Utilization
   Page colors (the design's request types): time off lavender, overtime orange, expenses sand. Text on them is
   --dark-teal in both themes. Status pills follow design.css (.pill.pending .approved .declined .cancelled .draft).
   Utilization percentages keep the level tints (--level-*: 50% or less low, below 70% mid, 70% or more high).
   ===================================================================================================================== */

/* ---------- Requests pages: frame ---------- */
.rq-page{display:grid;gap:var(--s5);min-width:0}
.rq-timeoff,.rq-team,#timeoff-detail{--rq-color:var(--lavender)}
.rq-overtime,#approval-detail{--rq-color:var(--orange)}
.rq-expenses,#expense-detail{--rq-color:var(--sand)}
.rq-history,.rq-section{display:grid;gap:var(--s3);min-width:0}
.task-sync-time.rq-synced{display:flex;align-items:center;gap:var(--s2);margin:0;font-size:12.5px;line-height:1.3;color:var(--ink-soft)}
.task-sync-time.rq-synced::before{content:"";width:8px;height:8px;flex:none;border-radius:50%;background:var(--success)}

/* ---------- Time off balances: the lavender Time off blocks ---------- */
.rq-tiles.timeoff-balances{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:2px;margin:0;padding:0;overflow:visible}
.rq-tile.timeoff-balance{display:flex;flex-direction:column;gap:6px;min-width:0;min-height:176px;padding:var(--s5);border:0;border-radius:0;background:var(--rq-color);color:var(--dark-teal)}
.rq-tile.timeoff-balance h3{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--s3);margin:0 0 auto;font:700 17px/1.25 var(--sans);letter-spacing:-.015em;color:var(--dark-teal)}
.rq-tile.timeoff-balance>strong{display:block;margin-top:var(--s4);font:italic 400 44px/1 var(--editorial);letter-spacing:-.03em;font-variant-numeric:tabular-nums;color:var(--dark-teal)}
.rq-tile.timeoff-balance>strong small{display:block;margin-top:var(--s2);font:600 13px/1.35 var(--sans);letter-spacing:-.005em;color:var(--dark-teal)}
.rq-tile.timeoff-balance p{margin:0;font-size:12.5px;line-height:1.4;color:var(--dark-teal)}
.rq-tile.timeoff-balance strong+p{margin-top:var(--s2);padding-top:var(--s2);border-top:1px solid color-mix(in srgb,var(--dark-teal) 22%,transparent)}

/* ---------- Status blocks (Overtime, Expenses): the first is the page color, the rest are panels ---------- */
.rq-kpis.timeoff-balances{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:2px;margin:0;padding:0;overflow:visible}
.rq-expenses .rq-kpis.timeoff-balances{grid-template-columns:repeat(5,minmax(0,1fr))}
.rq-kpi.timeoff-balance{display:flex;flex-direction:column;gap:var(--s2);min-width:0;padding:var(--s5) var(--s4);border:0;border-radius:0;background:var(--panel);color:var(--ink)}
.rq-kpi.timeoff-balance h3{display:flex;align-items:center;gap:var(--s2);margin:0;font:700 11.5px/1.2 var(--sans);letter-spacing:.06em;text-transform:uppercase;color:var(--ink-soft)}
.rq-kpi.timeoff-balance h3::before{content:"";width:10px;height:10px;flex:none;border-radius:50%;background:var(--rq-tone,transparent);box-shadow:inset 0 0 0 1px var(--line-strong)}
.rq-kpi.pending{--rq-tone:var(--yellow)}
.rq-kpi.approved{--rq-tone:var(--light-teal)}
.rq-kpi.declined{--rq-tone:var(--danger)}
.rq-kpi.timeoff-balance>strong{margin-top:var(--s2);font:700 28px/1 var(--sans);letter-spacing:-.02em;font-variant-numeric:tabular-nums;color:var(--ink)}
.rq-kpi.timeoff-balance>strong small{margin-inline-start:2px;font:500 13px/1.3 var(--sans);letter-spacing:0;color:var(--ink-soft)}
.rq-kpi.timeoff-balance p{margin:0;font-size:12.5px;line-height:1.4;font-variant-numeric:tabular-nums;color:var(--ink-soft)}
.rq-kpi.main.timeoff-balance{background:var(--rq-color);color:var(--dark-teal)}
.rq-kpi.main.timeoff-balance h3,.rq-kpi.main.timeoff-balance>strong,.rq-kpi.main.timeoff-balance>strong small,.rq-kpi.main.timeoff-balance p{color:var(--dark-teal)}
.rq-kpi.main.timeoff-balance h3::before{box-shadow:inset 0 0 0 1.5px var(--dark-teal)}
.rq-kpi.main.timeoff-balance>strong{font:italic 400 52px/.95 var(--editorial);letter-spacing:-.04em}
.rq-kpi.main.timeoff-balance>strong small{display:block;margin:var(--s2) 0 0;font-style:normal}

/* ---------- Action bar: new request, search, filters, refresh ---------- */
.rq-bar.timeoff-controls{display:flex;flex-wrap:wrap;align-items:center;gap:var(--s2);margin:0}
.rq-bar .timeoff-search{flex:1 1 220px;min-width:0;max-width:360px;margin:0}
.rq-bar select{flex:0 1 auto;min-width:150px;max-width:100%}
.rq-bar .rq-refresh{margin-inline-start:auto}
.rq-bar .button.icon .i{width:18px;height:18px}
.rq-nav .rq-period{margin-inline:var(--s2);font:700 15px/1.2 var(--sans);font-variant-numeric:tabular-nums}
.rq-nav #timeoff-scale{margin-inline-start:auto;min-width:120px}

/* ---------- Time off calendar: a panel block like the design's timesheet ---------- */
.rq-timeoff .timeoff-calendar{border:0;border-radius:0;background:var(--panel)}
.rq-timeoff .timeoff-weekdays{padding:0;border-bottom:1px solid var(--line-strong);background:transparent}
.rq-timeoff .timeoff-weekdays strong{padding:12px var(--s3);font:700 11.5px/1.2 var(--sans);letter-spacing:.06em;text-transform:uppercase;text-align:start;color:var(--ink-soft)}
.rq-timeoff .timeoff-day{min-height:116px;padding:var(--s2);border-color:var(--line);background:transparent}
.rq-timeoff .timeoff-day.outside{opacity:1}
.rq-timeoff .timeoff-day.outside .timeoff-day-number{font-weight:500;color:var(--ink-soft)}
.rq-timeoff .timeoff-day.outside .timeoff-event{opacity:.6}
.rq-timeoff .timeoff-day.unusual{background:color-mix(in srgb,var(--line) 45%,transparent)}
.rq-timeoff .timeoff-day.today{background:color-mix(in srgb,var(--accent) 30%,transparent);box-shadow:none}
.rq-timeoff .timeoff-day-number{display:inline-grid;place-items:center;min-width:28px;height:28px;padding:0 6px;border:0;border-radius:0;background:none;font:700 13px/1 var(--sans);font-variant-numeric:tabular-nums;color:var(--ink)}
.rq-timeoff .timeoff-day-number:not(:disabled):hover{background:var(--bg);box-shadow:inset 0 0 0 1px var(--line-strong)}
.rq-timeoff .timeoff-day.today .timeoff-day-number{background:var(--btn);color:var(--btn-ink)}
.rq-timeoff .timeoff-event{display:block;width:100%;margin-top:4px;padding:5px 8px;border:0;border-radius:0;background:var(--yellow);color:var(--dark-teal);font:700 11.5px/1.25 var(--sans);text-align:start}
.rq-timeoff .timeoff-event.pending{background:var(--yellow)}
.rq-timeoff .timeoff-event.approved{background:var(--light-teal)}
.rq-timeoff .timeoff-event.refused{background:var(--burgundy);color:var(--off-white);text-decoration:line-through}
.rq-timeoff .timeoff-event:hover{filter:brightness(.95)}
.rq-timeoff .timeoff-year{gap:var(--s5)}
.rq-timeoff .timeoff-month-title{padding:var(--s3) 0;font:700 15px/1.2 var(--sans);letter-spacing:-.01em;color:var(--ink)}
.rq-timeoff .timeoff-calendar.compact .timeoff-weekdays strong{padding:6px 0;font-size:9.5px;letter-spacing:0;text-align:center}
.rq-timeoff .timeoff-calendar.compact .timeoff-day-number{min-width:0;height:auto;padding:3px;font-size:10.5px}

/* ---------- Request tables: the design's history list (hairlines, bold title, status pills) ---------- */
.rq-table.table-wrap{background:var(--panel)}
.rq-table td{padding-block:14px}
.rq-table td .pill{vertical-align:middle}
.rq-table td button:not(.button){font-weight:700;text-align:start}
.rq-team .rq-table td:first-child{font-weight:700}

/* ---------- Request sheets: details ---------- */
.rq-sheet .dialog-heading{justify-content:flex-start}
.rq-sheet .dialog-heading strong{flex:1;min-width:0;overflow-wrap:anywhere}
.rq-icon{display:grid;place-items:center;width:36px;height:36px;flex:none;background:var(--rq-color);color:var(--dark-teal)}
.rq-sheet-meta{display:flex;flex-wrap:wrap;align-items:center;gap:var(--s2) var(--s3);margin:0 0 var(--s4);font-size:12.5px;color:var(--ink-soft)}
.rq-sheet-note{margin:0 0 var(--s4);padding:var(--s3) var(--s4);border-inline-start:3px solid var(--rq-color);background:var(--panel);font-size:13.5px;line-height:1.5}
.rq-sheet .timeoff-detail-fields{display:grid;grid-template-columns:160px minmax(0,1fr);gap:10px var(--s4);margin:0;font-size:13.5px;line-height:1.45}
.rq-sheet .timeoff-detail-fields dt{font-weight:500;color:var(--ink-soft)}
.rq-sheet .timeoff-detail-fields dd{min-width:0;margin:0;font-weight:600;overflow-wrap:anywhere}
.rq-sheet .odoo-rich-text{margin-top:var(--s4);font-size:13px;line-height:1.55}
.rq-files{display:flex;flex-wrap:wrap;gap:var(--s2);margin-top:var(--s4)}
.rq-files .button{max-width:100%;white-space:normal;overflow-wrap:anywhere;text-align:start}
.rq-sheet .dialog-actions .muted{flex:1 1 220px;margin:0;font-size:12.5px;line-height:1.45}

/* ---------- Request sheets: forms (the shared writer sheet while it holds a request form) ---------- */
#odoo-write-dialog:has(.rq-form-timeoff){--rq-color:var(--lavender);--rq-glyph:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='4' y='5.5' width='16' height='14'/%3E%3Cpath d='M4 10h16M8.5 3.5v4M15.5 3.5v4'/%3E%3Ccircle cx='12' cy='14.8' r='1.6'/%3E%3C/svg%3E")}
#odoo-write-dialog:has(.rq-form-overtime){--rq-color:var(--orange);--rq-glyph:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M18.5 14.6A7 7 0 0 1 9.4 5.5a7 7 0 1 0 9.1 9.1z'/%3E%3Ccircle cx='17' cy='6' r='1.2'/%3E%3C/svg%3E")}
#odoo-write-dialog:has(.rq-form-expense){--rq-color:var(--sand);--rq-glyph:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 3.5h12v17l-2.5-1.5-2 1.5-1.5-1.5-1.5 1.5-2-1.5L6 20.5z'/%3E%3Cpath d='M9 8.5h6M9 12h6M9 15.5h3'/%3E%3C/svg%3E")}
#odoo-write-dialog:has(.rq-form) .dialog-heading{justify-content:flex-start}
#odoo-write-dialog:has(.rq-form) .dialog-heading::before{content:"";width:36px;height:36px;flex:none;background:var(--rq-color)}
#odoo-write-dialog:has(.rq-form) .dialog-heading::after{content:"";position:absolute;top:50%;inset-inline-start:calc(var(--s5) + 8px);width:20px;height:20px;margin-top:-10px;background:var(--dark-teal);-webkit-mask:var(--rq-glyph) center/20px 20px no-repeat;mask:var(--rq-glyph) center/20px 20px no-repeat;pointer-events:none}
#odoo-write-dialog:has(.rq-form) #odoo-write-heading{flex:1;min-width:0;font:700 19px/1.2 var(--sans);letter-spacing:-.02em;text-transform:none;color:var(--ink)}
.rq-form{display:grid;gap:var(--s4);min-width:0}
.rq-form label,.rq-form p,.rq-form fieldset,.rq-form .form-grid{margin:0}
.rq-form label{display:flex;flex-direction:column;gap:6px;font:700 13px/1.3 var(--sans);color:var(--ink)}
.rq-form .form-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:var(--s3)}
.rq-form .muted{font-size:12.5px;line-height:1.5;color:var(--ink-soft)}
.rq-form .timeoff-check{flex-direction:row;align-items:center;gap:var(--s2);font-size:13.5px;font-weight:600}
.rq-form .timeoff-check input{width:18px;height:18px;margin:0}
.rq-form .required-star{color:var(--orange)}
.rq-form #expense-per-diem{display:grid;gap:var(--s4)}
.rq-form .expense-project-search{margin:0 0 6px}
/* The design's sheet blocks: fieldsets with a plain legend, two-up rows, choice cards (time off types, expense
   categories), the summary block with its Duration row, the money row and the analytic box. Checked cards take the
   accent fill; everything is square, with no shadows. */
.rq-form fieldset{display:grid;gap:6px;min-width:0;padding:0;border:0}
.rq-form legend{margin:0 0 6px;padding:0;font:700 13px/1.3 var(--sans);color:var(--ink)}
.rq-form .row2{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:var(--s3)}
.rq-form .row2:has(>[hidden]){grid-template-columns:minmax(0,1fr)}
.rq-form .radios{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:2px}
.rq-form .cats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:2px}
.rq-form :is(.radios,.cats) label{position:relative;display:block;min-width:0}
.rq-form :is(.radios,.cats) input{position:absolute;inset:0;width:100%;height:100%;margin:0;opacity:0;cursor:pointer}
.rq-form :is(.radios,.cats) span{display:grid;align-content:start;gap:2px;height:100%;padding:12px var(--s3);border:1px solid var(--line);background:var(--bg);color:var(--ink)}
.rq-form :is(.radios,.cats) b{font-size:13.5px;line-height:1.25;overflow-wrap:anywhere}
.rq-form .radios small{font-size:12px;font-weight:500;color:var(--ink-soft)}
.rq-form .cats span{gap:4px}
.rq-form .cats small{font-size:11px;font-weight:700;letter-spacing:.04em;color:var(--ink-soft)}
.rq-form :is(.radios,.cats) label:hover span{border-color:var(--ink)}
.rq-form :is(.radios,.cats) input:checked+span{border-color:var(--accent);background:var(--accent);color:var(--dark-teal)}
.rq-form :is(.radios,.cats) input:checked+span small{color:var(--dark-teal)}
.rq-form :is(.radios,.cats) input:focus-visible+span{outline:2px solid var(--focus);outline-offset:2px}
.rq-form .check{flex-direction:row;align-items:center;gap:var(--s2);font-size:13.5px;font-weight:600}
.rq-form .summary{display:grid;gap:6px;padding:var(--s4);background:var(--accent);color:var(--dark-teal);font-size:13.5px;line-height:1.45}
.rq-form .summary:empty{display:none}
.rq-form .summary.warn{background:var(--sand)}
.rq-form .summary .eyebrow{color:inherit}
.rq-form .summary .big{font:italic 400 30px/1 var(--editorial);letter-spacing:-.03em;font-variant-numeric:tabular-nums}
.rq-form .dur{display:flex;align-items:baseline;justify-content:space-between;gap:var(--s3);padding:12px var(--s4);border:1px solid currentColor;font-size:13.5px}
.rq-form .dur b{font-size:16px;font-variant-numeric:tabular-nums}
.rq-form .money{display:grid;grid-template-columns:minmax(0,1fr) 130px;gap:0}
.rq-form .money #expense-amount{border-inline-end:0;font-size:18px;font-weight:700;font-variant-numeric:tabular-nums}
.rq-form .expense-analytic{display:grid;gap:6px;min-width:0;padding:0;border:0}
.rq-form .analytic{display:grid;gap:var(--s3);min-width:0;padding:var(--s4);border:1px solid var(--line)}
.rq-form .an-row{display:grid;grid-template-columns:130px minmax(0,1fr);align-items:center;gap:var(--s3);font-size:13px;font-weight:600}
.rq-form .an-row:has(.an-pick){align-items:start}
.rq-form .an-row:has(.an-pick)>span:first-child{padding-top:12px}
.rq-form .an-pick{display:grid;min-width:0}
.rq-form .hint{font-size:12.5px;line-height:1.5;color:var(--ink-soft)}
.rq-form .expense-per-diem-total{margin:0;padding:12px var(--s4);border-radius:0;background:var(--accent);color:var(--dark-teal);font-size:13.5px;line-height:1.45}
.rq-form .expense-per-diem-total.error{background:var(--danger-soft);color:var(--danger)}
.rq-confirm{display:grid;gap:var(--s2);padding:var(--s4) var(--s5);background:var(--sand);color:var(--dark-teal)}
.rq-confirm p{margin:0;font-size:14px;line-height:1.5}

/* ---------- Time Off Management ---------- */
.rq-team .team-summary{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:var(--s3) var(--s4);margin:0}
.rq-team .team-chips{display:grid;grid-column:1/-1;grid-template-columns:repeat(3,minmax(0,1fr));gap:2px}
.rq-team .team-chip{display:flex;flex-direction:column-reverse;justify-content:flex-end;align-items:flex-start;gap:var(--s3);min-width:0;padding:var(--s5) var(--s4);border:0;border-radius:0;background:var(--panel);color:var(--ink-soft);font:700 11.5px/1.2 var(--sans);letter-spacing:.06em;text-transform:uppercase}
.rq-team .team-chip strong{font:700 28px/1 var(--sans);letter-spacing:-.02em;text-transform:none;font-variant-numeric:tabular-nums;color:var(--ink)}
.rq-team .team-chip.main{background:var(--rq-color);color:var(--dark-teal)}
.rq-team .team-chip.main strong{font:italic 400 52px/.95 var(--editorial);letter-spacing:-.04em;color:var(--dark-teal)}
.rq-team .team-summary .task-sync-time.rq-synced{margin:0}
.rq-team .admin-profile-title{margin:0;font:700 17px/1.2 var(--sans);letter-spacing:-.015em;text-transform:none;color:var(--ink)}
.rq-team .rq-section>.muted{margin:0}
.rq-team .team-requests{display:grid;gap:2px}
.rq-team .team-request{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:start;gap:var(--s4) var(--s5);padding:var(--s5);border:0;border-radius:0;background:var(--panel)}
.rq-team .team-request-main{display:grid;gap:6px;min-width:0}
.rq-team .team-request-head{display:flex;flex-wrap:wrap;align-items:center;gap:var(--s2) var(--s3);margin-bottom:var(--s1)}
.rq-team .team-request-head strong{font:700 17px/1.25 var(--sans);letter-spacing:-.015em;color:var(--ink);overflow-wrap:anywhere}
.rq-team .team-request-head span{padding:3px 8px;background:var(--rq-color);color:var(--dark-teal);font:700 11.5px/1.2 var(--sans)}
.rq-team .team-request-main p{margin:0;font-size:13.5px;line-height:1.5;color:var(--ink);overflow-wrap:anywhere}
.rq-team .team-request-main p.muted{font-size:12.5px;color:var(--ink-soft)}
.rq-team .team-request-main .pre-line{padding:var(--s2) var(--s3);border-inline-start:3px solid var(--rq-color);background:var(--bg)}
.rq-team .team-also-off{display:flex;align-items:baseline;gap:var(--s2);font-weight:600;color:var(--ink)}
.rq-team .team-also-off::before{content:"";width:8px;height:8px;flex:none;border-radius:50%;background:var(--orange);transform:translateY(-1px)}
.rq-team .team-request-files{display:flex;flex-wrap:wrap;gap:var(--s2);margin-top:var(--s1)}
.rq-team .team-request-files .button{min-height:var(--control-sm);padding:0 var(--s3);font-size:13px}
.rq-team .team-request-actions{display:flex;flex-wrap:wrap;align-items:center;justify-content:flex-end;gap:var(--s2)}
.rq-team .team-request-actions>.muted{font-size:12.5px;line-height:1.4}
.rq-team .team-refuse{display:grid;grid-column:1/-1;gap:var(--s3);padding:var(--s4);border:1px solid var(--line);background:var(--bg)}
.rq-team .team-refuse label{display:flex;flex-direction:column;gap:6px;margin:0;font:700 13px/1.3 var(--sans);color:var(--ink)}
.rq-team .team-refuse .team-request-actions{justify-content:flex-start}
.rq-team .team-empty{margin:0;padding:var(--s6) var(--s4);border:0;border-radius:0;background:var(--panel);color:var(--ink-soft);font-size:14px;text-align:center}

/* ---------- My Utilization ---------- */
.ut-page{display:grid;gap:var(--s5);min-width:0;--ut-up:color-mix(in srgb,var(--success) 55%,var(--ink));--ut-down:var(--danger)}
.ut-page .ut-header{display:flex;flex-direction:row;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;gap:var(--s3) var(--s4)}
.ut-page .ut-head{display:grid;gap:6px;min-width:0}
.ut-page .ut-header .ut-title{margin:0;font:700 26px/1.1 var(--sans);letter-spacing:-.025em;text-transform:none;color:var(--ink)}
.ut-page .ut-header .ut-title em{font-family:var(--editorial);font-style:italic;font-weight:400;letter-spacing:-.035em}
.ut-page .ut-sync{display:inline-flex;align-items:center;gap:var(--s2);font-size:12.5px;line-height:1.4;color:var(--ink-soft)}
.ut-page .ut-sync::before{width:8px;height:8px;background:var(--success)}
.ut-page .ut-sync.error{color:var(--danger)}
.ut-page .ut-sync.error::before{background:var(--orange)}
.ut-page .ut-filters{display:flex;flex-wrap:wrap;align-items:center;gap:var(--s2) var(--s3)}
.ut-page .ut-filters label{display:flex;flex-direction:row;align-items:center;gap:var(--s2);margin:0;font:700 11.5px/1.2 var(--sans);letter-spacing:.06em;text-transform:uppercase;color:var(--ink-soft)}
.ut-page .ut-filters select{width:auto;min-width:140px;font:500 14px/1.3 var(--sans);letter-spacing:-.005em;text-transform:none;box-shadow:none}
.ut-page .ut-refresh{display:inline-flex;align-items:center;justify-content:center;gap:var(--s2);min-height:var(--control);padding:0 var(--s4);border:1px solid var(--ink);border-radius:0;background:transparent;color:var(--ink);font:700 14px/1.2 var(--sans);white-space:nowrap;cursor:pointer}
.ut-page .ut-refresh:not(:disabled):hover{border-color:var(--ink);background:var(--panel)}
/* KPI blocks: logged utilization leads, tinted by its level; the others are panels */
.ut-kpis{display:grid;grid-template-columns:minmax(0,1.3fr) repeat(4,minmax(0,1fr));gap:2px}
.ut-kpi{display:flex;flex-direction:column;align-items:flex-start;gap:var(--s2);min-width:0;padding:var(--s5) var(--s4);background:var(--panel);color:var(--ink);cursor:help}
.ut-kpi-label{font:700 11.5px/1.2 var(--sans);letter-spacing:.06em;text-transform:uppercase;color:var(--ink-soft)}
.ut-kpi-value{font:700 28px/1 var(--sans);letter-spacing:-.02em;font-variant-numeric:tabular-nums;color:var(--ink)}
.ut-kpi-value .ut-level{padding:2px 6px;font:inherit;letter-spacing:inherit}
.ut-kpi-sub{font-size:12.5px;line-height:1.4;color:var(--ink-soft)}
.ut-page .ut-kpi .ut-trend{margin-top:auto;padding-top:var(--s1);font-size:12px}
.ut-kpi.main{gap:var(--s3);background:var(--level-low-fill)}
.ut-kpi.main.is-mid{background:var(--level-mid-fill)}
.ut-kpi.main.is-high{background:var(--level-high-fill)}
.ut-kpi.main .ut-kpi-label,.ut-kpi.main .ut-kpi-sub,.ut-page .ut-kpi.main .ut-trend{color:var(--ink)}
.ut-kpi.main .ut-kpi-value{font:italic 400 64px/.9 var(--editorial);letter-spacing:-.04em}
.ut-kpi.main .ut-kpi-value .ut-level{padding:0;background:none}
.ut-insight{max-width:72ch;margin:0;font-size:15px;line-height:1.5;color:var(--ink)}
/* Month by month and where the time went, side by side */
.ut-grid{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(0,1fr);gap:var(--s5);align-items:start}
.ut-grid.wide{grid-template-columns:minmax(0,1fr)}
.ut-page .ut-grid.wide .ut-tc-grid{grid-template-columns:minmax(0,1fr) minmax(0,1.2fr)}
.ut-page .ut-panel{display:grid;gap:var(--s4);min-width:0;padding:var(--s5);border:0;border-radius:0;background:var(--panel);box-shadow:none}
.ut-page .ut-panel-head .ut-title{font:700 17px/1.2 var(--sans);letter-spacing:-.015em;text-transform:none;color:var(--ink)}
.ut-page .ut-panel-body{min-width:0;margin:0}
.ut-page .ut-icon-button{width:var(--control);height:var(--control);border:1px solid var(--line);border-radius:0;background:var(--bg);color:var(--ink)}
.ut-page .ut-icon-button:hover{border-color:var(--ink);background:var(--bg)}
.ut-page .ut-chart{height:280px;grid-template-columns:36px minmax(0,1fr);padding:var(--s5) 0 0}
.ut-page .ut-chart-axis{height:calc(100% - 36px)}
.ut-page .ut-chart-axis span{right:8px;font:600 11px/1 var(--sans);color:var(--ink-soft)}
.ut-page .ut-chart-plot{grid-template-rows:1fr 36px}
.ut-page .ut-chart-grid{inset:0 0 36px 0}
.ut-page .ut-chart-grid i,.ut-page .ut-chart-grid i:first-child{background:var(--line)}
.ut-page .ut-chart-grid i:first-child{background:var(--line-strong)}
.ut-page .ut-bar{border-radius:0}
.ut-page .ut-bar:hover,.ut-page .ut-bar:focus-visible{background:color-mix(in srgb,var(--ink) 5%,transparent)}
.ut-page .ut-bar-fill{width:min(32px,62%);border-radius:0}
.ut-page .ut-bar.current .ut-bar-fill{box-shadow:inset 0 0 0 2px var(--ink)}
.ut-page .ut-bar-fill b{padding-bottom:6px;font:600 11px/1 var(--sans);font-variant-numeric:tabular-nums;color:var(--ink-soft)}
.ut-page .ut-bar.current .ut-bar-fill b{font-weight:700;color:var(--ink)}
.ut-page .ut-bar-tip{padding:9px 11px;border:0;border-radius:0;background:var(--ink);color:var(--bg);box-shadow:none;font:500 12px/1.5 var(--sans)}
.ut-page .ut-chart-labels{align-items:flex-start;padding-top:var(--s2)}
.ut-page .ut-chart-labels span{font:600 11px/1.2 var(--sans);color:var(--ink-soft)}
.ut-page .ut-chart-labels span.is-selected{font-weight:700;color:var(--ink)}
.ut-page .ut-chart-labels small{display:block;margin-top:2px;font:600 10.5px/1.2 var(--sans)}
.ut-page .ut-panel .table-wrap{background:transparent}
.ut-page td button[aria-current]{font-weight:700;text-decoration-color:currentColor}
.ut-page .ut-total td{border-top:1px solid var(--line-strong);background:transparent;font-weight:700}
/* Where your time went (the time card) */
.ut-page .ut-timecard{display:grid;gap:var(--s4)}
.ut-page .ut-tc-person h3{margin:0;font:700 15px/1.3 var(--sans);color:var(--ink)}
.ut-page .ut-tc-person p{margin:4px 0 0;font-size:12.5px;line-height:1.45;color:var(--ink-soft)}
.ut-page .ut-tc-grid{grid-template-columns:minmax(0,1fr);gap:var(--s5);padding-top:var(--s4);border-top:1px solid var(--line)}
.ut-page .ut-timecard h4{margin:0 0 var(--s1);font:700 11.5px/1.2 var(--sans);letter-spacing:.06em;text-transform:uppercase;color:var(--ink-soft)}
.ut-page .ut-tc-calc div{padding:10px 0;border-bottom:1px solid var(--line);font-size:13.5px}
.ut-page .ut-tc-calc dt{color:var(--ink-soft)}
.ut-page .ut-tc-calc dd{font-weight:700;color:var(--ink)}
.ut-page .ut-tc-calc .ut-tc-total{border-top:1px solid var(--line-strong);border-bottom:0}
.ut-page .ut-tc-calc .ut-tc-total dt{font-weight:700;color:var(--ink)}
.ut-page .ut-tc-use{gap:var(--s2);padding:10px 0}
.ut-page .ut-tc-use-head{gap:var(--s3);font-size:13.5px}
.ut-page .ut-tc-use-head>span:first-child{font-weight:700;color:var(--ink)}
.ut-page .ut-tc-of{color:var(--ink-soft)}
.ut-page .ut-tc-track{height:6px;border-radius:0;background:var(--bg)}
.ut-page .ut-tc-track i{border-radius:0}
.ut-page .ut-tc-holidays li{gap:var(--s4);padding:10px 0;border-bottom:1px solid var(--line);font-size:13.5px}
.ut-page .ut-tc-holidays li span:nth-child(2){color:var(--ink-soft)}

/* ---------- Responsive ---------- */
@media (max-width:1100px){
 .rq-kpis.timeoff-balances,.rq-expenses .rq-kpis.timeoff-balances{grid-template-columns:repeat(2,minmax(0,1fr))}
 .rq-overtime .rq-kpis.timeoff-balances{grid-template-columns:repeat(3,minmax(0,1fr))}
 .rq-kpi.main.timeoff-balance{grid-column:1/-1}
 .ut-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}
 .ut-kpi.main{grid-column:1/-1}
 .ut-grid{grid-template-columns:minmax(0,1fr)}
 .ut-page .ut-tc-grid{grid-template-columns:minmax(0,1fr) minmax(0,1.2fr)}
}
@media (max-width:860px){
 .rq-tiles.timeoff-balances{grid-template-columns:repeat(2,minmax(0,1fr))}
 .rq-tile.timeoff-balance{min-height:0}
 .rq-bar .button.primary{flex:1 1 100%}
 .rq-bar .timeoff-search{flex:1 1 100%;max-width:none}
 .rq-bar select{flex:1 1 140px;min-width:0}
 .rq-nav .rq-period{flex:1 1 auto;margin:0}
 .rq-nav #timeoff-scale{margin-inline-start:0;flex:1 1 110px}
 .rq-nav #timeoff-month{flex:1 1 150px;min-width:0}
 .rq-timeoff .timeoff-day{min-height:76px;padding:4px}
 .rq-timeoff .timeoff-weekdays strong{padding:10px 2px;font-size:10px;letter-spacing:.02em;text-align:center}
 .rq-timeoff .timeoff-event{margin-top:3px;padding:3px 4px;font-size:10px}
 .rq-timeoff .timeoff-day-number{min-width:24px;height:24px;padding:0 4px;font-size:12px}
 /* Request tables become the design's list: title, one line of details, the status pill on the right */
 .rq-table.table-wrap{overflow:visible}
 .rq-table table,.rq-table tbody{display:block;width:100%}
 .rq-table thead{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
 .rq-table tr{position:relative;display:flex;flex-wrap:wrap;align-items:baseline;padding:14px var(--s4);border-bottom:1px solid var(--line)}
 .rq-table tbody tr:last-child{border-bottom:0}
 .rq-table table{white-space:normal}
 .rq-table td{display:block;min-width:0;padding:0;border:0;font-size:12.5px;line-height:1.5;white-space:normal;overflow-wrap:anywhere;color:var(--ink-soft)}
 .rq-table td:empty{display:none}
 .rq-table td:first-child{flex:1 0 100%;margin-bottom:4px;padding-inline-end:124px;font-size:14.5px;font-weight:700;color:var(--ink)}
 .rq-table td:nth-child(n+3):not(:last-child)::before{content:"\00b7";margin:0 6px}
 .rq-table td:last-child{position:absolute;top:13px;inset-inline-end:var(--s4)}
 .rq-table td[colspan]{position:static;flex-basis:100%;margin:0;padding:0;font-size:13.5px;font-weight:500;text-align:center;color:var(--ink-soft)}
 .rq-timeoff .rq-table td:nth-child(4)::before{content:"\2013"}
 .rq-expenses .rq-table td:nth-child(2){order:-1;flex:1 0 100%;margin-bottom:4px;padding-inline-end:124px;font-size:14.5px;color:var(--ink)}
 .rq-expenses .rq-table td:first-child{flex:0 1 auto;margin:0;padding:0;font-size:12.5px;font-weight:500;color:var(--ink-soft)}
 .rq-expenses .rq-table td:nth-child(3)::before{content:"\00b7";margin:0 6px}
 .rq-sheet .timeoff-detail-fields{grid-template-columns:minmax(0,1fr);gap:2px}
 .rq-sheet .timeoff-detail-fields dd{margin-bottom:var(--s2)}
 #odoo-write-dialog:has(.rq-form) .dialog-heading::after{inset-inline-start:calc(var(--s4) + 8px)}
 .rq-team .team-chips{grid-template-columns:repeat(2,minmax(0,1fr))}
 .rq-team .team-chip.main{grid-column:1/-1}
 .rq-team .team-request{grid-template-columns:minmax(0,1fr);padding:var(--s4)}
 .rq-team .team-request-actions{justify-content:stretch}
 .rq-team .team-request-actions .button{flex:1 1 auto}
 .ut-page .ut-header{align-items:stretch}
 .ut-page .ut-filters{width:100%}
 .ut-page .ut-filters label{flex:1 1 150px}
 .ut-page .ut-filters select{flex:1;min-width:0}
 .ut-page .ut-panel{padding:var(--s4)}
 .ut-kpi.main .ut-kpi-value{font-size:52px}
}
@media (max-width:760px){
 .ut-page .ut-tc-grid,.ut-page .ut-grid.wide .ut-tc-grid{grid-template-columns:minmax(0,1fr)}
}
@media (max-width:600px){
 .rq-tiles.timeoff-balances{grid-template-columns:minmax(0,1fr)}
 .rq-kpis.timeoff-balances,.rq-overtime .rq-kpis.timeoff-balances,.rq-expenses .rq-kpis.timeoff-balances{grid-template-columns:repeat(2,minmax(0,1fr))}
 .rq-kpi.timeoff-balance:nth-child(even):last-child{grid-column:1/-1}
 .rq-kpi.timeoff-balance{padding:var(--s4)}
 .rq-kpi.timeoff-balance>strong{font-size:24px}
 .rq-kpi.main.timeoff-balance>strong{font-size:44px}
 .rq-team .team-chip{padding:var(--s4)}
 .rq-team .team-chip strong{font-size:24px}
 .rq-team .team-chip.main strong{font-size:44px}
 .ut-page .ut-chart{height:240px;grid-template-columns:30px minmax(0,1fr)}
 .ut-page .ut-bar:not(.current) .ut-bar-fill b{display:none}
 .ut-page .ut-chart-labels span{font-size:10px}
}
@media (max-width:480px){
 .rq-form .form-grid,.rq-form .row2,.rq-form .radios,.rq-form .cats{grid-template-columns:minmax(0,1fr)}
 .rq-form .an-row{grid-template-columns:minmax(0,1fr);gap:4px}
 .rq-form .an-row:has(.an-pick)>span:first-child{padding-top:0}
 .ut-kpi{padding:var(--s4)}
 .ut-kpi-value{font-size:22px}
}
