/* Shared L&L skin. Layout classes, IDs, hit handlers and breakpoints remain owned by the app. */
body{font-family:var(--ll-font);background:var(--ll-bg);color:var(--ll-text);-webkit-font-smoothing:antialiased;font-variant-numeric:tabular-nums}
body :is(button,input,select,textarea,.ql-container,.ql-editor){font-family:var(--ll-font)}
body :is(.hdr,.side-drawer,.drawer-inner){background:var(--ll-surface);border-color:var(--ll-border);box-shadow:var(--ll-shadow-sm)}
body .hdr{border-bottom:1px solid var(--ll-border);padding:var(--ll-s3) var(--ll-s4)}
.hdr img[src*="logo"],.hdr-logo{padding:var(--ll-s2);border-radius:var(--ll-r-md);background:var(--ll-white);box-shadow:var(--ll-shadow-sm)}
body :is(.ts-card,.mtg-task-card,.perf-system-card,.finance-card,.job-card,.resource-card,.res-card,.dashboard-kpi,.dashboard-summary-card,.triage-card,.perf-review-card,.perf-preview-card,.perf-settings-card,.perf-history-card,.export-form-panel,.export-preview-panel){background:var(--ll-surface);border:1px solid var(--ll-border);border-radius:var(--ll-r-lg);box-shadow:var(--ll-shadow-md);transition:transform var(--ll-motion),box-shadow var(--ll-motion);min-width:0}
body :is(.ts-card,.mtg-task-card,.perf-system-card,.job-card,.res-card,.resource-card):hover{transform:translateY(-1px);box-shadow:var(--ll-shadow-lg)}
body :is(.ts-card,.mtg-task-card,.perf-system-card,.finance-card,.job-card):active{transform:none;box-shadow:var(--ll-shadow-md)}
body :is(.ts-card.active,.ts-card.active-ts,.ts-card.ts-card-active,.mtg-task-card.active,.perf-system-card.active,.job-card.active-split,.finance-card.active){background:var(--ll-blue-50);outline:2px solid var(--ll-brand);outline-offset:-2px;box-shadow:var(--ll-shadow-md)}
body :is(.ts-card,.mtg-task-card,.finance-card,.resource-card){padding:var(--ll-s4)}
body :is(.ts-detail-column,.finance-detail,.perf-clean-detail,#splitDetailContent,#rsDetailPane){background:var(--ll-surface);border:1px solid var(--ll-border);border-radius:var(--ll-r-lg);box-shadow:var(--ll-shadow-md)}
body :is(.ts-card.prio-critical,.mtg-task-card.prio-critical){border-left:4px solid var(--ll-red-600)}
body :is(.ts-card.prio-high,.mtg-task-card.prio-high){border-left:4px solid var(--ll-amber-500)}
body :is(.ts-card.prio-moderate,.mtg-task-card.prio-moderate){border-left:4px solid var(--ll-teal)}
body :is(.btn,.modal-confirm,.modal-cancel,.setup-btn,.auth-btn){min-height:36px;border:1px solid transparent;border-radius:var(--ll-r-sm);font-family:var(--ll-font);font-size:var(--ll-fs-md);font-weight:600;gap:6px;box-shadow:none;transition:background var(--ll-motion),box-shadow var(--ll-motion);line-height:1.2}
body :is(.btn-acc,.btn-primary,.setup-btn,.modal-confirm){background:var(--ll-brand);color:var(--ll-on-brand)}
body :is(.btn-acc,.btn-primary,.setup-btn,.modal-confirm):hover{background:var(--ll-brand-3)}
body :is(.btn-ghost,.modal-cancel,.auth-btn){background:var(--ll-surface);border-color:var(--ll-border);color:var(--ll-text-2)}
body :is(.btn-ghost,.modal-cancel):hover{background:var(--ll-surface-2)}
body .btn-red{color:var(--ll-red-600);border:1px solid var(--ll-red-600);background:var(--ll-surface)}
body .modal :is(.modal-confirm.danger,.btn-red.confirm){background:var(--ll-red-600);color:var(--ll-white)}
body .btn-sm{min-height:32px;font-size:var(--ll-fs-sm)}
body :is(.btn-icon,.finance-icon){min-width:36px;min-height:36px;width:36px;height:36px;padding:var(--ll-s2);border-radius:var(--ll-r-sm);background:transparent}
body :is(.btn-icon,.finance-icon):hover{background:var(--ll-surface-3)}
body .btn>svg{width:16px;height:16px;flex-shrink:0}
body :is(button,input,select,textarea,summary,a,[tabindex]):focus-visible{outline:2px solid var(--ll-brand-2);outline-offset:2px;box-shadow:var(--ll-focus)}
body :is(button,.btn):disabled{opacity:.45;cursor:not-allowed}
body :is(.field-input,.setup-input,.add-task-input,.mtg-textarea,.filter-search input){background:var(--ll-surface);color:var(--ll-text);border:1px solid var(--ll-border);border-radius:var(--ll-r-sm);box-shadow:none;min-height:38px;font-family:var(--ll-font);font-size:var(--ll-fs-md)}
body :is(textarea.field-input,.mtg-textarea){height:auto;min-height:64px}
body :is(.field-input,.setup-input,.add-task-input,.mtg-textarea):focus{border-color:var(--ll-brand-2);box-shadow:var(--ll-focus)}
body :is(input,textarea)::placeholder{color:var(--ll-text-3);opacity:1}
body .field-label{font:600 var(--ll-fs-sm)/1.5 var(--ll-font);color:var(--ll-text-2);text-transform:none;letter-spacing:normal}
body :is(.badge,.task-pill,.sla-badge,.perf-status-badge,.finance-pill,.role-badge,.perf-summary-pill){font-family:var(--ll-font);font-size:var(--ll-fs-xs);font-weight:700;text-transform:uppercase;letter-spacing:.06em;border-radius:var(--ll-r-pill)}
body :is(.badge-pending,.badge-muted,.role-admin){background:var(--ll-blue-100);color:var(--ll-brand)}
body :is(.badge-done,.perf-status-healthy){background:var(--ll-green-100);color:var(--ll-green-ink)}
body :is(.badge-superurgent,.perf-status-underperforming){background:var(--ll-red-100);color:var(--ll-red-600)}
body :is(.sla-warning,.perf-status-check-data){background:var(--ll-amber-100);color:var(--ll-amber-ink)}
.ll-tile,.ll-tile--indigo{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;width:40px;height:40px;border-radius:var(--ll-r-md);background:var(--ll-tile-blue);color:var(--ll-on-hero);box-shadow:var(--ll-glow-blue)}
.ll-tile--indigo{background:var(--ll-tile-indigo)}.ll-tile svg{width:20px;height:20px}
body :is(.ll-banner,.perf-alert,.ai-blocker-box,.ai-action-box,.perf-sanity-note,.finance-flag){background:var(--ll-blue-100);color:var(--ll-text-2);border:1px solid color-mix(in srgb,var(--ll-brand) 25%,var(--ll-border));border-radius:var(--ll-r-md);padding:var(--ll-s3) var(--ll-s4);font-size:var(--ll-fs-md)}
body .ll-banner--warn{background:var(--ll-amber-100);border-color:var(--ll-amber-500)}body .ll-banner--danger{background:var(--ll-red-100);border-color:var(--ll-red-600)}
body .side-drawer{background:var(--ll-surface);border-right:1px solid var(--ll-border)}
body .side-nav-item{height:40px;border-radius:var(--ll-r-sm);font-size:14px;font-weight:500;color:var(--ll-text-2);position:relative}
body .side-nav-item svg{width:18px;height:18px;color:var(--ll-text-3)}
body .side-nav-item.active{background:var(--ll-blue-100);color:var(--ll-brand-3)}body .side-nav-item.active svg{color:var(--ll-brand-3)}
body .side-nav-item.active:before{content:'';position:absolute;left:0;top:var(--ll-s2);bottom:var(--ll-s2);width:3px;border-radius:var(--ll-r-pill);background:var(--ll-brand)}
body :is(.side-nav-section-label,.side-drawer-logo-sub,.hdr-sub,.hdr-time){font-family:var(--ll-font);color:var(--ll-text-3)}
body .side-nav-section-label{font-size:var(--ll-fs-xs);font-weight:600;letter-spacing:.06em}
body :is(.hdr-avatar,.drawer-avatar){border-color:var(--ll-brand)}
body :is(.perf-clean-tabs,.perf-mode-tabs,.mtg-history-filter,.finance-view){padding:var(--ll-s1);border-radius:var(--ll-r-sm);background:var(--ll-surface-3)}
body :is(.perf-clean-tab,.perf-mode-tab,.saved-view-tab,.mtg-history-filter button,.canned-btn){background:transparent;border:0;border-radius:var(--ll-r-xs);color:var(--ll-text-2);font-family:var(--ll-font)}
body :is(.perf-clean-tab.active,.perf-mode-tab.active,.saved-view-tab.active,.mtg-history-filter button.active,.canned-btn.active,.finance-view button.active){background:var(--ll-surface);box-shadow:var(--ll-shadow-sm);color:var(--ll-text)}
body :is(.modal,.drawer,.drawer-inner){background:var(--ll-surface);border-radius:var(--ll-r-lg);box-shadow:var(--ll-shadow-lg)}body .modal{padding:var(--ll-s5);max-width:calc(100vw - 32px)}
body :is(.modal-title,.drawer-title){font:700 var(--ll-fs-xl)/1.3 var(--ll-font)}
body :is(.modal-wrap,.overlay,.nav-overlay){background:var(--ll-overlay);backdrop-filter:blur(4px)}
body :is(.job-dropdown,.perf-more-menu,.finance-more>div,.perf-share-menu,.perf-branded-menu){background:var(--ll-surface);border:1px solid var(--ll-border);border-radius:var(--ll-r-md);box-shadow:var(--ll-shadow-lg);padding:6px}
body :is(.job-dd-item,.perf-more-menu button,.finance-more>div>button,.perf-share-menu button,.perf-branded-menu button){min-height:36px;border-radius:var(--ll-r-xs)}
body :is(.job-dd-item,.perf-more-menu button,.finance-more>div>button,.perf-share-menu button,.perf-branded-menu button):hover{background:var(--ll-surface-2)}
body :is(.ts-history-entry,.finance-history-entry,.task-history-entry,.mtg-notes-thread){font-family:var(--ll-font);font-size:var(--ll-fs-md);border-color:var(--ll-border);color:var(--ll-text-2)}
body :is(.ts-history-entry small,.finance-history-entry small,.task-history-entry small){font-size:var(--ll-fs-xs);color:var(--ll-text-3)}
body :is(.empty,.finance-empty,.ts-empty,.perf-empty){color:var(--ll-text-3);font-family:var(--ll-font);text-align:center;padding:var(--ll-s6)}
body :is(.empty-icon,.dashboard-kpi-icon,.settings-folder-icon){background:var(--ll-tile-blue);color:var(--ll-on-hero);border-radius:var(--ll-r-md);box-shadow:var(--ll-glow-blue)}
body :is(.job-id,code,pre code,.perf-card-pct,.sheet-table td[data-number]){font-family:var(--ll-mono);font-variant-numeric:tabular-nums}
body :is(.hdr-sub,#sunnyStatus,.drawer-sub){font-size:var(--ll-fs-sm);color:var(--ll-text-3)}
body :is([data-tip]:hover,[data-tip]:focus-visible)::after{background:var(--ll-tooltip);color:var(--ll-white);font:400 var(--ll-fs-sm)/1.4 var(--ll-font);border-radius:var(--ll-r-xs);animation-delay:120ms;box-shadow:var(--ll-shadow-md)}
body [data-tip]:hover::before{border-top-color:var(--ll-tooltip)}body [data-tip][data-tip-pos="bottom"]:hover::before{border-bottom-color:var(--ll-tooltip)}
*{scrollbar-width:thin;scrollbar-color:var(--ll-border-strong) transparent}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-thumb{background:var(--ll-border-strong);border-radius:var(--ll-r-pill)}::-webkit-scrollbar-track{background:transparent}
/* Inline colours rendered by legacy JS must lose to these narrowly scoped skin overrides. */
body .btn-acc,body .btn-primary,body .modal-confirm,body .setup-btn{color:var(--ll-on-brand)!important;background:var(--ll-brand)!important}
body .ts-detail-column button[style*="background:var(--acc)"]{color:var(--ll-on-brand)!important}
.ll-hero,body .perf-topbar{position:relative;isolation:isolate;overflow:visible;border-radius:0 0 var(--ll-r-xl) var(--ll-r-xl);background:var(--ll-hero);color:var(--ll-on-hero);padding:var(--ll-s5) var(--ll-s6);margin-bottom:var(--ll-s4);min-width:0;flex-shrink:0;gap:var(--ll-s4);flex-wrap:wrap;border:0}
.ll-hero:after,body .perf-topbar:after{content:'';position:absolute;top:0;right:0;width:130px;height:100%;clip-path:ellipse(90px 90px at 100% 0);background:color-mix(in srgb,var(--ll-white) 9%,transparent);pointer-events:none;z-index:-1}
.ll-hero:before,body .perf-topbar:before{content:'';position:absolute;inset:0;background:linear-gradient(90deg,color-mix(in srgb,var(--ll-brand-3) 30%,transparent),transparent);border-radius:inherit;z-index:-1;pointer-events:none}
body[data-ll-gradient-style="subtle"] :is(.ll-hero,.perf-topbar):before{display:none}
body :is(.ll-hero,.perf-topbar) :is(h1,.dashboard-title){font-size:var(--ll-fs-3xl);font-weight:800;line-height:1.2;color:inherit;text-shadow:none}
body :is(.ll-hero,.perf-topbar) :is(p,.dashboard-subtitle,.finance-page-header p){color:inherit;opacity:.9;font-size:var(--ll-fs-sm)}
/* Title rows contain server-rendered inline text colours; preserve their IDs and structure. */
body .ll-hero [style*="color:var(--txt)"],body .ll-hero [style*="color:var(--txt3)"],body .ll-hero .dashboard-title{color:inherit!important;text-shadow:none!important}
body :is(.ll-hero,.perf-topbar) .btn{background:transparent;color:inherit;border-color:color-mix(in srgb,currentColor 35%,transparent);box-shadow:none}
body :is(.ll-hero,.perf-topbar) :is(.btn-primary,.btn-acc){background:var(--ll-surface)!important;color:var(--ll-brand)!important;border-color:transparent} /* Overrides inline JS primary styling within heroes. */
body .ll-hero .finance-more>div{color:var(--ll-text)}
body .ll-hero .finance-more>div .btn{color:var(--ll-text-2)}
body .dashboard-v2{--dash-panel:var(--ll-surface);--dash-panel-solid:var(--ll-surface);--dash-accent:var(--ll-brand);--dash-accent-2:var(--ll-teal);--dash-accent-3:var(--ll-brand-2);--dash-accent-4:var(--ll-purple-500);--dash-text:var(--ll-text);--dash-muted:var(--ll-text-3);--dash-border:var(--ll-border)}
.ll-theme-preview{border:1px solid var(--ll-border);border-radius:var(--ll-r-md);overflow:hidden;margin-top:var(--ll-s4)}.ll-theme-preview-hero{padding:var(--ll-s4);background:var(--ll-hero);color:var(--ll-on-hero);display:flex;align-items:center;gap:var(--ll-s3)}.ll-theme-preview-hero .ll-tile{box-shadow:none}.ll-theme-controls{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--ll-s3)}.ll-theme-controls label{font-size:var(--ll-fs-sm);color:var(--ll-text-2)}.ll-theme-controls input[type="color"]{width:100%;height:38px;border:1px solid var(--ll-border);border-radius:var(--ll-r-sm);background:var(--ll-surface)}.ll-theme-reset{font-size:var(--ll-fs-sm);border:0;background:none;color:var(--ll-brand);text-decoration:underline;cursor:pointer}.ll-contrast-note{font-size:var(--ll-fs-sm);color:var(--ll-text-2)}
@media(max-width: 1040px){body :is(button,.btn,.side-nav-item,summary,input:not([type="checkbox"]):not([type="radio"]),select){min-height:44px}body :is(.btn-icon,.finance-icon){width:44px;height:44px;min-width:44px}body .nav{left:var(--ll-s3);right:var(--ll-s3);bottom:var(--ll-s3);border:1px solid var(--ll-border);border-radius:var(--ll-r-pill);box-shadow:var(--ll-shadow-lg);padding:var(--ll-s2);max-width:calc(100vw - 24px)}body .nav-item.active{background:var(--ll-brand);color:var(--ll-on-brand);border-radius:var(--ll-r-md)}.ll-hero,body .perf-topbar{padding:var(--ll-s4)}.ll-hero .finance-row{flex-wrap:wrap}}
@media(max-width: 720px){.ll-theme-controls{grid-template-columns:1fr}.ll-hero,body .perf-topbar{gap:var(--ll-s3)}body :is(.ll-hero,.perf-topbar) :is(h1,.dashboard-title){font-size:var(--ll-fs-2xl)}body .page{overflow-x:hidden}.ll-hero .btn{white-space:normal;min-width:0}.ll-hero>.finance-row{width:100%;gap:var(--ll-s1)}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{scroll-behavior:auto!important;animation:none!important;transition:none!important}body :is(.ts-card,.mtg-task-card,.perf-system-card,.finance-card,.job-card,.res-card):hover{transform:none}}
/* Legacy JS injects backgrounds and button colours inline; these explicit skins avoid changing its markup. */
body :is(.ts-card,.job-card,.mtg-task-card){background:var(--ll-surface)!important;border-color:var(--ll-border)!important}
body :is(.ts-card.active,.ts-card.active-ts,.ts-card.ts-card-active,.job-card.active-split,.mtg-task-card.active){background:var(--ll-blue-50)!important}
body button.btn[style*="background:var(--acc)"],body button.btn[style*="background: var(--acc)"]{color:var(--ll-on-brand)!important}
body .dashboard-v2 .dashboard-topbar.ll-hero .dashboard-titleblock{background:transparent;box-shadow:none;border:0;color:var(--ll-on-hero)}
body .dashboard-v2 .dashboard-titleblock:not(.ll-hero *){background:var(--ll-surface)}
body .dashboard-v2 .dashboard-topbar.ll-hero .dashboard-subtitle{color:inherit}
/* Page CSS is loaded later, so scoped component skins also cover its more-specific rules. */
body #page-tech-support .ts-detail-column,body #page-reschedules #rsDetailPane,body #page-jobs #splitDetailContent{background:var(--ll-surface);box-shadow:var(--ll-shadow-md);border:1px solid var(--ll-border)}
body .finance-card{border-left-width:4px;padding-right:88px}body .finance-card.urgency-0{border-left-color:var(--ll-red-600)}body .finance-card.urgency-1{border-left-color:var(--ll-amber-500)}body .finance-card.urgency-2{border-left-color:var(--ll-green-600)}
body .finance-card:hover{transform:translateY(-1px)}
/* Dashboard's embedded stylesheet has more-specific dark-mode title colours. */
body .dashboard-v2 .dashboard-topbar.ll-hero .dashboard-title{color:var(--ll-on-hero)!important}
/* UI text inserted inline by old renderers must follow the selected UI font. */
body :is(.field-input,.ts-history-entry,.task-history-entry,.mtg-notes-thread,.field-label,.badge,.hdr-sub,.hdr-time){font-family:var(--ll-font)!important}
body .theme-swatch{background:var(--ll-swatch,var(--ll-hero));border-radius:var(--ll-r-md);min-height:44px;display:flex;align-items:center;justify-content:center;cursor:pointer}body .theme-swatch-ll{color:var(--ll-white);font:700 11px var(--ll-font)}body .theme-swatch-custom{background:conic-gradient(var(--ll-brand),var(--ll-purple-500),var(--ll-red-600),var(--ll-amber-500),var(--ll-brand))}.ll-theme-preview-actions{display:flex;align-items:center;gap:var(--ll-s4);padding:var(--ll-s4)}
/* Preserve original rich-text document formatting while unifying renderer-injected UI fonts. */
body [style*="font-family"]:not(.ql-editor *):not(.textLayer *):not(.pdfViewer *){font-family:var(--ll-font)!important}
body :is(.job-id,code,pre code,[data-code],[data-number]){font-family:var(--ll-mono)!important} /* IDs and numeric codes are the deliberate mono exception. */
body a,body :is(.finance-job-link,.role-admin,.hdr-title){color:var(--ll-link)}
body.dark-mode .side-nav-item.active,body.dark-mode .side-nav-item.active svg{color:var(--ll-link)}
body :is(.ll-hero,.perf-topbar):before{background:color-mix(in srgb,var(--ll-brand) var(--ll-hero-shade),transparent)}
body :is(.ll-hero,.perf-topbar) :is(p,.dashboard-subtitle){opacity:1}
body :is(.ll-hero,.perf-topbar) :is(.btn-primary,.btn-acc){color:var(--ll-link)!important} /* Keeps hero buttons readable when a custom brand is very light. */
body :is(.ll-hero,.perf-topbar) a{color:inherit}
body .ll-hero .finance-more>div{color:var(--ll-text)}
body #chatDrawer{background:var(--ll-surface);box-shadow:var(--ll-shadow-lg)}body #chatHistory{background:var(--ll-surface-2);box-shadow:none}
body .ll-theme-preview-hero{background:linear-gradient(color-mix(in srgb,var(--ll-brand) var(--ll-hero-shade),transparent),color-mix(in srgb,var(--ll-brand) var(--ll-hero-shade),transparent)),var(--ll-hero)}
body[data-ll-gradient-style="subtle"] .ll-theme-preview-hero{background:var(--ll-hero)}
body #page-jobs>.ll-hero{display:flex;flex-wrap:wrap}body #page-jobs>.ll-hero>div{flex-wrap:wrap;min-width:0}

body #page-dashboard .dashboard-v2{background:transparent;box-shadow:none;padding:0;--card-shadow:var(--ll-shadow-md);--card-shadow-hover:var(--ll-shadow-lg)}
body #page-dashboard :is(.dashboard-kpi-card,.dashboard-summary-card,.triage-col,.triage-card){background:var(--ll-surface);border:1px solid var(--ll-border);border-radius:var(--ll-r-lg);box-shadow:var(--ll-shadow-md)}
body #page-dashboard .dashboard-kpi-card{padding:var(--ll-s4)}body #page-dashboard .dashboard-kpi-card:hover{transform:translateY(-1px);box-shadow:var(--ll-shadow-lg)}
body #page-dashboard .dashboard-kpi-label{display:flex;align-items:center;gap:var(--ll-s3);font-weight:600}body #page-dashboard :is(.dashboard-kpi-value,.dashboard-summary-value){text-shadow:none;box-shadow:none}
body #page-dashboard .dashboard-action-btn{min-height:36px;font-family:var(--ll-font);font-weight:600;border:1px solid var(--ll-border);box-shadow:var(--ll-shadow-sm);border-radius:var(--ll-r-sm);color:var(--ll-text);background:var(--ll-surface)}
body #page-dashboard .dashboard-action-btn.is-primary{background:var(--ll-surface);color:var(--ll-link)}
body .empty-icon{display:inline-flex;align-items:center;justify-content:center;width:40px;height:40px;font-size:20px;padding:var(--ll-s2)}
body .ll-tile{background:linear-gradient(color-mix(in srgb,var(--ll-brand) var(--ll-hero-shade),transparent),color-mix(in srgb,var(--ll-brand) var(--ll-hero-shade),transparent)),var(--ll-tile-blue)}
body .ll-tile--indigo{background:linear-gradient(color-mix(in srgb,var(--ll-brand) var(--ll-hero-shade),transparent),color-mix(in srgb,var(--ll-brand) var(--ll-hero-shade),transparent)),var(--ll-tile-indigo)}
body[data-ll-gradient-style="subtle"] .ll-tile{background:var(--ll-blue-100);color:var(--ll-link)}
/* Original static title rows specify an inline size; only their presentation is overridden. */
body .ll-hero>div:first-child>[style*="font-size:18px"]{font-size:var(--ll-fs-3xl)!important;font-weight:800!important;line-height:1.2}
body :is(.hdr-sub,.side-drawer-logo-sub)::before{content:'';display:inline-block;width:14px;height:14px;margin-right:var(--ll-s1);vertical-align:-2px;background:currentColor;mask:center/contain no-repeat url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M7 19a6 6 0 0 1-1-12 7 7 0 0 1 13 2 5 5 0 0 1-1 10h-2l-4-4-3 3-2-2 2-2 3 3 5-5-2-2-3 3-3-3-5 5 3 3z'/%3E%3C/svg%3E")}
@media(max-width: 1040px){body #page-dashboard .dashboard-action-btn{min-height:44px}}@media(max-width: 720px){body .ll-hero>div:first-child>[style*="font-size:18px"]{font-size:var(--ll-fs-2xl)!important} /* Matches the mobile hero title size despite inline desktop sizing. */}
body :is(.badge-pending,.badge-muted,.role-admin){color:var(--ll-link)}
body :is(.btn-red,.badge-superurgent,.perf-status-underperforming){color:var(--ll-red-ink)}
body.dark-mode .ll-banner--danger{color:var(--ll-red-ink)}
/* Reduced motion also covers high-specificity embedded dashboard hover rules. */
@media(prefers-reduced-motion:reduce){body #page-dashboard :is(.dashboard-kpi-card,.dashboard-action-btn):hover{transform:none}}

/* Shared responsive layout. The only viewport boundaries are 1040px and 720px. */
.ll-responsive{--ll-pane-header-height:54px;overflow-x:hidden}
.ll-responsive :is(.app-shell,.content-shell,.pages,.page,.ll-split,.ll-split-list,.ll-split-detail){min-width:0;max-width:100%}
.ll-responsive #mainApp:is([style*="display: block"],[style*="display: grid"]){display:grid!important} /* Overrides the legacy resize handler's inline display, without changing auth visibility. */
.ll-responsive .page{padding-left:var(--ll-gutter)!important;padding-right:var(--ll-gutter)!important;overflow-x:hidden} /* Existing page padding is inline / important. */
.ll-responsive :is(img,video,canvas,iframe){max-width:100%}
.ll-responsive :is(.ll-table-scroll,#jobsSheetColumn,.sheet-wrap,.export-preview-body){overflow-x:auto;overscroll-behavior-x:contain;max-width:100%;min-width:0}
.ll-table-scroll{width:100%;-webkit-overflow-scrolling:touch}.ll-table-scroll>table{min-width:max-content;width:100%}
.ll-responsive .page.ll-split-page .ll-split{display:flex;flex-direction:row;align-items:stretch;gap:16px;min-width:0;min-height:0;height:calc(100dvh - 200px)}
.ll-responsive .page.ll-split-page .ll-split-list{display:flex;flex-direction:column;flex:0 0 clamp(280px,30vw,380px);width:clamp(280px,30vw,380px);min-width:0;min-height:0;height:100%;overflow-y:auto;overflow-x:hidden}
.ll-responsive .page.ll-split-page .ll-split-detail{display:flex;flex-direction:column;flex:1 1 0;min-width:0;min-height:0;height:100%;overflow-x:hidden}
.ll-responsive #page-finance .ll-split{flex:1;height:auto}.ll-responsive #page-finance .ll-split-list{overflow:hidden;flex-basis:45%;width:45%}
.ll-responsive #jobsLayout.ll-split{height:calc(100dvh - 230px)}
.ll-responsive .ll-pane-backbar{display:none}
.ll-responsive .ll-mobile-tabs,.ll-responsive .ll-phone-summary{display:none}
.ll-responsive .ll-sheet{position:fixed;inset:0 0 0 auto;display:flex;flex-direction:column;width:330px;max-width:100%;height:100dvh;max-height:100dvh;overflow-y:auto;overflow-x:hidden;transform:translateX(105%);transition:transform var(--ll-pane-motion);background:var(--ll-surface);border:1px solid var(--ll-border);border-radius:0;box-shadow:var(--ll-shadow-lg);z-index:1001;padding:16px 16px calc(16px + var(--ll-safe-bottom));visibility:hidden;pointer-events:none}
.ll-responsive .ll-sheet.ll-sheet-visible{transform:translateX(0);visibility:visible;pointer-events:auto}
.ll-responsive .ll-sheet[hidden],.ll-responsive .ll-sheet-scrim[hidden]{display:none!important} /* Native hidden state wins over shared display:flex. */
.ll-responsive .ll-sheet .settings-folder-shell{display:flex;flex-direction:column;min-height:0}.ll-responsive .ll-sheet .settings-folder-list{flex-direction:row;overflow-x:auto;flex-shrink:0;gap:8px}.ll-responsive .ll-sheet .settings-folder-tab{width:auto;flex:0 0 auto;min-width:110px}.ll-responsive .ll-sheet .settings-folder-summary{display:none}.ll-responsive .ll-sheet .settings-pane-wrap{flex:1;min-height:0}
.ll-sheet-heading{display:flex;align-items:center;justify-content:space-between;gap:8px;padding-bottom:16px;flex-shrink:0}.ll-sheet-heading h2{font-size:18px}.ll-sheet-grab{display:none}.ll-more-pages{display:grid;gap:8px;margin-bottom:16px}.ll-more-pages>button{display:flex;align-items:center;gap:12px;text-align:left;padding:12px;background:var(--ll-surface-2);border:1px solid var(--ll-border);border-radius:var(--ll-r-sm);color:var(--ll-text);min-height:44px;font:500 14px var(--ll-font)}.ll-more-pages svg{width:20px;height:20px}
.ll-sheet-scrim{position:fixed;inset:0;width:100%;height:100%;border:0;background:var(--ll-overlay);backdrop-filter:blur(3px);z-index:1000;padding:0}
.ll-responsive.ll-sheet-open .modal-wrap.open{z-index:1100}.ll-responsive .ll-sheet .ll-layout-sheet-close{align-self:flex-end;margin-bottom:8px;flex:none}
.ll-responsive .ll-sheet .finance-filters{position:static;display:grid;width:100%;box-shadow:none;border:0;padding:0}
.ll-responsive .ll-sheet .finance-nudge-panel{padding:0;max-height:none}
.ll-responsive .ll-sheet .field-input{max-width:100%;min-width:0}
@media(min-width:1041px){
 .ll-responsive #mainApp{grid-template-columns:var(--sidebar-w) minmax(0,1fr)}
 .ll-responsive.ll-docked-panel #contentArea{padding-right:330px}
 .ll-responsive .ll-sheet-scrim{display:none}.ll-responsive.ll-docked-panel :is(#helpOverlay,#replyDrawerOverlay,#chatOverlay){display:none!important} /* Open desktop panels are docked, not modal scrims. */
}
@media(max-width:1040px){
 .ll-responsive #mainApp{grid-template-columns:var(--sidebar-w-rail) minmax(0,1fr)}
 .ll-responsive .page.ll-split-page .ll-split-list{flex-basis:clamp(250px,34vw,310px);width:clamp(250px,34vw,310px)}
 .ll-responsive #page-finance .ll-split-list{flex-basis:43%;width:43%}
 .ll-responsive .ll-sheet{width:min(330px,86%)}
 .ll-responsive .ll-sheet .drawer-handle{display:none}
 .ll-responsive .ll-sheet :is(input,select,textarea){min-width:0}
 .ll-responsive :is(#helpOverlay,#replyDrawerOverlay,#chatOverlay){z-index:999}
 .ll-responsive :is(.ll-sheet-visible,.ll-sheet-visible[open])>.finance-filters{position:static}
}
@media(max-width:720px){
 .ll-responsive{font-size:14px;--base-font-size:14px;--base-line-height:1.5;--ll-sheet-bottom:calc(var(--ll-tabbar-height) + var(--ll-safe-bottom))}
 .ll-responsive #mainApp{grid-template-columns:minmax(0,1fr)}
 .ll-responsive #sideDrawer{display:flex}.ll-responsive #menuBtn{display:flex}
 .ll-responsive .content-shell{height:100dvh;min-height:0}
 .ll-responsive .hdr{padding:8px var(--ll-gutter);min-height:56px;gap:8px;flex-wrap:wrap;flex:none}.ll-responsive .hdr>div{min-width:0}.ll-responsive .hdr-right{gap:8px;flex-wrap:wrap}.ll-responsive :is(.hdr-time,.role-badge){display:none}.ll-responsive .hdr-title{font-size:14px}.ll-responsive .hdr-sub{font-size:12px}.ll-responsive .hdr-left{min-width:0;max-width:calc(100vw - 180px)}
 .ll-responsive .pages{min-height:0}.ll-responsive .page{padding:16px var(--ll-gutter) calc(var(--ll-tabbar-height) + var(--ll-safe-bottom) + 24px)!important;scroll-padding-bottom:calc(var(--ll-tabbar-height) + var(--ll-safe-bottom) + 24px);height:auto;overflow-x:hidden} /* Prevents the fixed phone tabs covering the final row. */
 .ll-responsive #page-finance.active{display:block;height:auto;min-height:0}
 .ll-responsive.ll-ui-active .ll-mobile-tabs:not([hidden]){position:fixed;inset:auto 0 0;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));height:calc(var(--ll-tabbar-height) + var(--ll-safe-bottom));padding:0 var(--ll-gutter) var(--ll-safe-bottom);background:var(--ll-surface);border-top:1px solid var(--ll-border);box-shadow:var(--ll-shadow-lg);z-index:800;gap:8px}
 .ll-mobile-tabs>button{display:flex;align-items:center;justify-content:center;flex-direction:column;gap:4px;min-height:54px;background:none;border:0;border-radius:var(--ll-r-sm);color:var(--ll-text-2);font:600 12px var(--ll-font);min-width:0}.ll-mobile-tabs>button.active{color:var(--ll-on-brand);background:var(--ll-brand)}.ll-mobile-tabs>button[hidden]{display:none}
 .ll-responsive :is(#chatFab){bottom:calc(var(--ll-tabbar-height) + var(--ll-safe-bottom) + 16px)}
 .ll-responsive .page.ll-split-page .ll-split{display:block;position:relative;height:auto;min-height:0;overflow:visible;border:0;flex:none;width:100%}
 .ll-responsive .page.ll-split-page .ll-split-list{display:flex!important;position:relative;flex:none;width:100%!important;max-width:100%;height:auto;min-height:0;overflow:visible;padding:0;border:0;transform:translateX(0);transition:transform var(--ll-pane-motion),opacity var(--ll-pane-motion)} /* Overrides the Finance detail-open and old mobile list widths. */
 .ll-responsive .page.ll-split-page[data-view="detail"] .ll-split-list{transform:translateX(-20%);opacity:0;pointer-events:none}
 .ll-responsive .page.ll-split-page .ll-split-detail{display:flex!important;position:fixed;inset:var(--ll-app-header-height) 0 calc(var(--ll-tabbar-height) + var(--ll-safe-bottom));width:100%!important;max-width:100vw;height:auto!important;min-height:0;margin:0;padding:16px var(--ll-gutter);border:0;border-radius:0;box-shadow:none;transform:translateX(102%);transition:transform var(--ll-pane-motion);background:var(--ll-surface);z-index:200;pointer-events:none;visibility:hidden;overflow:auto;overscroll-behavior-y:contain} /* Existing split functions set inline display and fixed heights. */
 .ll-responsive .page.ll-split-page[data-view="detail"] .ll-split-detail{transform:translateX(0);visibility:visible;pointer-events:auto}
 .ll-responsive .page.ll-split-page .ll-pane-backbar{display:flex;position:sticky;top:-16px;align-items:center;gap:8px;min-height:var(--ll-pane-header-height);margin:-16px calc(-1 * var(--ll-gutter)) 16px;padding:8px var(--ll-gutter);background:var(--ll-surface);border-bottom:1px solid var(--ll-border);z-index:20;flex:none}
 .ll-responsive .ll-pane-backbar button{display:flex;align-items:center;gap:8px;min-height:44px;border:0;background:none;color:var(--ll-link);font:600 14px var(--ll-font);padding:8px}.ll-pane-backbar svg{width:20px;height:20px}
 .ll-responsive :is(.finance-back){display:none!important} /* The shared phone Back bar replaces this page-specific fallback. */
 .ll-responsive #jobsLayout.ll-split #jobsDetailColumn{display:flex!important}.ll-responsive #jobsLayout.ll-split .job-tasks{display:none!important} /* Phone split mode uses the detail pane; list/sheet modes keep their original behaviour. */
 .ll-responsive #page-finance .finance-list{flex:none;overflow:visible;min-height:0;padding:8px 0}.ll-responsive #page-finance .finance-detail-scroll{flex:1;min-height:0;overflow:auto;scroll-padding-top:0}.ll-responsive #page-finance .finance-detail-header{position:relative;max-height:none;overflow:visible}.ll-responsive #page-finance .finance-composer{position:sticky;bottom:0;margin-top:auto;flex:none;padding:8px 0;background:var(--ll-surface)}
 .ll-responsive .ll-split-detail .ts-composer{position:sticky!important;bottom:0!important;z-index:15;flex:none;margin-top:auto} /* Its scrollport already ends above the phone tabs and safe area. */
 .ll-responsive .ll-split-detail .ts-composer :is(textarea,.ql-editor){max-height:22dvh;overflow:auto}
 .ll-responsive .ll-split-detail :is(.ts-detail-shell,#splitDetailContent){min-height:0;overflow:auto}
 .ll-responsive .ll-sheet{inset:auto 0 var(--ll-sheet-bottom) 0;width:100%;max-width:100%;height:auto;max-height:min(78dvh,calc(100dvh - var(--ll-sheet-bottom) - 16px));padding:16px var(--ll-gutter) calc(16px + var(--ll-safe-bottom));border-radius:var(--ll-r-lg) var(--ll-r-lg) 0 0;transform:translateY(calc(100% + var(--ll-sheet-bottom)));overflow-y:auto}
 .ll-responsive .ll-sheet.ll-sheet-visible{transform:translateY(0)}.ll-responsive .ll-sheet-grab{display:block;width:40px;height:4px;flex:none;border-radius:var(--ll-r-pill);background:var(--ll-border-strong);margin:0 auto 16px}

 .ll-responsive .ll-phone-summary{display:flex;gap:8px;overflow-x:auto;overscroll-behavior-x:contain;scrollbar-width:none;margin:0 0 16px;padding-bottom:8px;width:100%}.ll-phone-summary::-webkit-scrollbar{display:none}.ll-phone-summary>div{flex:0 0 104px;padding:12px;background:var(--ll-surface);border:1px solid var(--ll-border);border-radius:var(--ll-r-md);min-width:0}.ll-phone-summary strong{display:block;font-size:20px}.ll-phone-summary span{display:block;font-size:12px;color:var(--ll-text-2);margin-top:4px}
 .ll-responsive .page :is(.filter-main-row,.filter-secondary-row,.filter-chip-row,.active-filter-chips,.saved-views-row,.finance-filter-chips,.perf-summary-strip,.perf-summary-row,.ts-repeat-chips,.dashboard-kpi-row,.dashboard-summary-row,.finance-toolbar,.ll-scroll-row){display:flex!important;flex-wrap:nowrap!important;gap:8px!important;overflow-x:auto!important;overscroll-behavior-x:contain;scrollbar-width:none;max-width:100%;min-width:0} /* Chips scroll locally rather than widening or wrapping the page. */
 .ll-responsive .page :is(.active-filter-chips,.saved-views-row,.finance-filter-chips,.perf-summary-strip,.ts-repeat-chips,.ll-scroll-row)>*{flex-shrink:0}
 .ll-responsive .page :is(.dashboard-kpi-row,.dashboard-summary-row)>*{flex:0 0 130px;min-width:0}.ll-responsive .page :is(.dashboard-kpi-card){min-height:104px}.ll-responsive .page .dashboard-kpi-card .dashboard-kpi-value{font-size:28px}
 .ll-responsive .finance-toolbar{overflow:visible!important;flex-wrap:wrap!important}.ll-responsive .finance-search{flex:1 1 100%;min-width:0}.ll-responsive .finance-view{gap:8px}.ll-responsive .finance-pipeline{max-width:100%}.ll-responsive .finance-pipeline-stages{min-width:0}
 .ll-responsive .page :is(.ll-scroll-row,.filter-main-row)>div{min-width:0}.ll-responsive .filter-search{flex:1 0 min(260px,70vw);min-width:0}
 .ll-responsive .page :is(.res-grid,.triage-board,.triage-split-grid,.mtg-summary-grid,.perf-form-grid,.export-grid,.resource-grid){grid-template-columns:minmax(0,1fr)}
 .ll-responsive .page :where(div,section,article,fieldset,header,aside,main){min-width:0;max-width:100%;overflow-wrap:anywhere}
 .ll-responsive .page :where(div,p,span,small,label,time,button,a,td,th,summary){font-size:max(12px,1em)!important;line-height:1.45} /* Floors legacy 9–11px inline UI text while keeping large inherited headings. */
 .ll-responsive :is(.page,.ll-sheet,.modal) :is(input,select,textarea,.field-input,.setup-input,.add-task-input){font-size:16px!important;min-height:44px!important} /* iOS focus must not trigger input zoom; beats old inline font sizes. */
 .ll-responsive :is(button,.btn,.btn-ai,.canned-btn,summary,select,[role="button"],[onclick],.side-nav-item,.font-opt,.theme-swatch,.resource-copy,.snippet-btn){min-height:44px!important} /* Includes controls rendered with inline 26–32px dimensions. */
 .ll-responsive :is(.btn-icon,.finance-icon,.hdr-gear,.hdr-avatar,.resource-action-btn,button[style*="width:30px"],button[style*="width:32px"],button[style*="width:26px"],button[style*="width:28px"]){min-width:44px!important;min-height:44px!important;width:44px!important;height:44px!important}
 .ll-responsive :is(.btn-group,.task-actions,.modal-actions,.drawer-footer-actions,.finance-row,.ts-composer-actions,.ts-composer-tools,.ts-composer-submit,.job-badges,.perf-topbar-controls,.ll-scroll-row){gap:8px!important;flex-wrap:wrap} /* Minimum separation for neighbouring touch targets. */
 .ll-responsive .page :is([style*="gap:4px"],[style*="gap: 4px"],[style*="gap:6px"],[style*="gap: 6px"]){gap:8px!important}
 .ll-responsive .page :is(.ts-card,.mtg-task-card,.perf-system-card,.job-card,.resource-card){padding:16px!important;min-height:44px}.ll-responsive .page .finance-card{padding:16px 88px 16px 16px!important;min-height:44px}
 .ll-responsive :is(tr[onclick],.ll-tappable-row){min-height:44px;height:44px}.ll-responsive .ll-tappable-row>td{padding:12px 8px}
 .ll-responsive .ll-urgency-word{display:block;font-size:12px;color:var(--ll-text-2);margin-top:8px}
 .ll-responsive .modal-wrap{padding:12px}.ll-responsive .modal{max-width:100%;width:100%!important;max-height:calc(100dvh - 24px);overflow:auto}.ll-responsive .modal .finance-fields{grid-template-columns:minmax(0,1fr)}
 .ll-responsive #helpCenterBtn{display:none}.ll-responsive :is(.ll-theme-controls,.settings-font-grid,.settings-density-grid){gap:8px}.ll-responsive .settings-font-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media(prefers-reduced-motion:reduce){.ll-responsive :is(.ll-split-list,.ll-split-detail,.ll-sheet,#sideDrawer.ll-phone-drawer){transition-duration:.01ms!important;animation-duration:.01ms!important}}
/* Page-owned popover selectors load later; shared sheets must retain viewport positioning. */
.ll-responsive .page .ll-sheet{position:fixed;inset:0 0 0 auto;width:330px;max-width:100%;height:100dvh;max-height:100dvh;display:flex;flex-direction:column;border-radius:0;padding:16px;overflow:auto}
@media(max-width:1040px){.ll-responsive .page .ll-sheet{width:min(330px,86%)}}
@media(max-width:720px){.ll-responsive .page .ll-sheet{inset:auto 0 var(--ll-sheet-bottom);width:100%;height:auto;max-height:min(78dvh,calc(100dvh - var(--ll-sheet-bottom) - 16px));border-radius:var(--ll-r-lg) var(--ll-r-lg) 0 0;padding:16px var(--ll-gutter) calc(16px + var(--ll-safe-bottom))}.ll-responsive .page.ll-split-page .ll-split-detail{transition:transform var(--ll-pane-motion),visibility 0s 280ms}.ll-responsive .page.ll-split-page[data-view="detail"] .ll-split-detail{transition-delay:0s}}
@media(prefers-reduced-motion:reduce){.ll-responsive .page.ll-split-page .ll-split-detail{transition:none!important}}
/* Lists stay in normal flow; only the detail translates. Identity transforms would trap fixed filter sheets. */
@media(max-width:720px){.ll-responsive .page.ll-split-page .ll-split-list,.ll-responsive .page.ll-split-page[data-view="detail"] .ll-split-list{transform:none}.ll-responsive .ll-sheet-scrim{touch-action:none}.ll-responsive .page .ll-scroll-row{display:flex!important;flex-wrap:nowrap!important;overflow-x:auto!important;gap:8px!important;scrollbar-width:none}.ll-responsive .page .ll-scroll-row>*{flex:0 0 auto;min-width:0}.ll-responsive .page .ll-scroll-row>div:has(input){flex-basis:min(260px,70vw)}}

/* Settings retains its original full-width bottom drawer and folder layout.
   Reserve space for the grab handle so its scroll area and Save button fit. */
.ll-responsive #settingsDrawer{z-index:1101}
.ll-responsive #settingsOverlay{z-index:1100}
.ll-responsive #settingsDrawer .drawer-inner{height:calc(90dvh - 32px - env(safe-area-inset-bottom,0px));min-height:0}
.ll-responsive #settingsDrawer .settings-footer{flex-shrink:0}

@media(min-width:721px){
 .ll-responsive #mainApp{grid-template-columns:var(--sidebar-w) minmax(0,1fr)}
 .ll-responsive #mainApp:has(>#sideDrawer.collapsed){grid-template-columns:var(--sidebar-w-rail) minmax(0,1fr)}
}
@media(max-width:720px){.ll-responsive .hdr{z-index:402}.ll-responsive #menuBtn{min-width:44px;min-height:44px}}

@media(max-width:720px){
 .ll-responsive #sideDrawer{top:var(--ll-app-header-height);height:calc(100dvh - var(--ll-app-header-height) - var(--ll-tabbar-height) - var(--ll-safe-bottom))}
}
