:root {
  color-scheme: light;
  --forest-950: #10291f;
  --forest-800: #1c4937;
  --forest-650: #2d6a50;
  --forest-100: #e5f0e9;
  --shell-bg: #10291f;
  --shell-text: #ffffff;
  --shell-muted: #d5e9dd;
  --frame-1: #e5f0e9;
  --frame-2: #fffefa;
  --surface: #fffefa;
  --accent: #2d6a50;
  --cream: #f5f3ed;
  --paper: #fffefa;
  --ink: #1e2823;
  --muted: #68736d;
  --line: #dce1dc;
  --amber: #cc7b19;
  --blue: #397293;
  --shadow: 0 12px 35px rgba(18, 42, 32, .08);
  font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
}
html { min-height: 100%; -webkit-text-size-adjust: 100%; }
body { min-height: 100%; }
body.modal-open { overflow: hidden; overscroll-behavior: none; }
button, input, select, textarea { touch-action: manipulation; }
button, a, input, select, textarea, [tabindex] { -webkit-tap-highlight-color: rgba(45,106,80,.18); }
:focus-visible { outline: 3px solid #d18a24; outline-offset: 3px; }

:root[data-theme="dark-blue"] {
  --forest-950: #0b2038;
  --forest-800: #173f63;
  --forest-650: #245b86;
  --forest-100: #e1ebf3;
  --shell-bg: #0b2038;
  --shell-muted: #dcebf6;
  --frame-1: #e1ebf3;
  --frame-2: #fbfdff;
  --surface: #fbfdff;
  --accent: #245b86;
  --cream: #f1f4f7;
  --paper: #fbfdff;
  --ink: #172533;
  --muted: #63717e;
  --line: #d6dee5;
  --amber: #d28b34;
  --blue: #2879ad;
  --shadow: 0 12px 35px rgba(11, 32, 56, .1);
}

:root[data-theme="slate"] {
  --forest-950: #2b3034;
  --forest-800: #4a555d;
  --forest-650: #687178;
  --forest-100: #e5e7e7;
  --shell-bg: #2b3034;
  --shell-muted: #e3e6e7;
  --frame-1: #e5e7e7;
  --frame-2: #fffefa;
  --surface: #fffefa;
  --accent: #687178;
  --cream: #f3f1ed;
  --paper: #fffefa;
  --ink: #292d30;
  --muted: #707476;
  --line: #dddcd8;
  --amber: #a86d38;
  --blue: #54758a;
  --shadow: 0 12px 35px rgba(43, 48, 52, .09);
}

* { box-sizing: border-box; }
.visually-hidden { position: absolute !important; width: 1px !important; height: 1px !important; padding: 0 !important; margin: -1px !important; overflow: hidden !important; clip: rect(0, 0, 0, 0) !important; white-space: nowrap !important; border: 0 !important; }
html, body { margin: 0; min-height: 100%; background: var(--shell-bg); color: var(--shell-text); }
button, a { font: inherit; }
button { cursor: pointer; }
.app-frame { min-height: 100dvh; }
.rail { display: none; }
#main-content { min-height: 100dvh; padding: max(24px, env(safe-area-inset-top)) 18px calc(104px + env(safe-area-inset-bottom)); outline: none; }
.page-header { display: flex; align-items: center; justify-content: space-between; gap: 16px; max-width: 1040px; margin: 0 auto 20px; }
.eyebrow, .section-kicker, .project-number { margin: 0 0 5px; color: var(--forest-650); font-size: .72rem; font-weight: 800; letter-spacing: .09em; text-transform: uppercase; }
.page-header .eyebrow { color: var(--shell-muted); }
.project-back-button { display: inline-flex; align-items: center; gap: 6px; min-height: 44px; margin: 0 0 5px; padding: 9px 12px; border: 1px solid var(--line); border-radius: 12px; background: var(--paper); color: var(--forest-650); font-size: .78rem; font-weight: 850; letter-spacing: .07em; text-transform: uppercase; }
.project-back-button > span { font-size: 1rem; line-height: .7; }
h1, h2, h3, p { margin-top: 0; }
h1 { margin-bottom: 0; font-family: Georgia, "Times New Roman", serif; font-size: clamp(1.75rem, 6vw, 2.35rem); font-weight: 600; letter-spacing: -.035em; line-height: 1.05; }
h2 { margin-bottom: 7px; font-size: 1.15rem; }
h3 { margin-bottom: 5px; }
.icon-button { width: 43px; height: 43px; display: grid; place-items: center; border: 1px solid var(--line); border-radius: 50%; background: var(--paper); color: var(--forest-800); box-shadow: var(--shadow); }
.icon-button svg { width: 20px; height: 20px; fill: none; stroke: currentColor; stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; }
.header-actions { display: flex; align-items: center; gap: 8px; }
.notification-wrap { position: relative; }
.notification-button { position: relative; }
.notification-badge { position: absolute; top: -6px; right: -6px; min-width: 20px; height: 20px; display: grid; place-items: center; padding: 0 4px; border-radius: 999px; background: #a93428; color: #fff; font-size: .66rem; font-weight: 800; box-shadow: 0 0 0 2px var(--paper); }
.notification-panel { position: absolute; z-index: 25; top: calc(100% + 9px); right: 0; width: min(310px, calc(100vw - 36px)); overflow: hidden; border: 1px solid var(--line); border-radius: 15px; background: var(--paper); color: var(--ink); box-shadow: 0 18px 45px rgba(18,42,32,.18); }
.notification-panel-heading { display: flex; align-items: center; justify-content: space-between; gap: 10px; padding: 13px 15px; border-bottom: 1px solid var(--line); }
.notification-panel-heading strong { font-family: Georgia, serif; font-size: .98rem; }
.notification-panel-heading span { color: var(--muted); font-size: .67rem; font-weight: 700; }
.notification-empty { display: flex; flex-direction: column; align-items: center; padding: 24px 15px; text-align: center; }
.notification-empty > span { display: grid; place-items: center; width: 34px; height: 34px; margin-bottom: 9px; border-radius: 50%; background: var(--forest-100); color: var(--forest-800); font-weight: 900; }
.notification-empty strong { font-size: .8rem; }
.notification-empty small { margin-top: 4px; color: var(--muted); font-size: .7rem; }
.connection-pill { min-height: 36px; display: inline-flex; align-items: center; gap: 7px; padding: 7px 10px; border: 1px solid var(--line); border-radius: 999px; background: var(--paper); color: var(--muted); box-shadow: var(--shadow); }
.connection-dot { width: 9px; height: 9px; border-radius: 50%; background: #9ca39f; box-shadow: 0 0 0 3px rgba(156,163,159,.15); }
.connection-label { font-size: .69rem; font-weight: 800; }
.connection-pill.online { color: #276442; }
.connection-pill.online .connection-dot { background: #3d9a63; box-shadow: 0 0 0 3px rgba(61,154,99,.17); }
.connection-pill.offline { color: #9b452f; }
.connection-pill.offline .connection-dot { background: #c45639; box-shadow: 0 0 0 3px rgba(196,86,57,.17); }
.connection-pill.checking .connection-dot { background: var(--amber); animation: connection-pulse 1.2s ease-in-out infinite; }
@keyframes connection-pulse { 50% { opacity: .35; transform: scale(.75); } }
.hero-card, .intro-card { max-width: 1040px; margin: 0 auto; border: 1px solid var(--line); border-radius: 22px; background: var(--frame-1); color: var(--ink); box-shadow: var(--shadow); }
.hero-card { padding: 20px; overflow: hidden; position: relative; }
.hero-card::after { content: ""; position: absolute; width: 180px; height: 180px; right: -70px; top: -80px; border: 34px solid color-mix(in srgb, var(--forest-650) 7%, transparent); border-radius: 50%; }
.hero-topline { display: flex; align-items: center; gap: 8px; margin-bottom: 28px; color: var(--muted); font-size: .76rem; }
.hero-topline span:last-child { margin-left: auto; }
.status-dot { width: 7px; height: 7px; border-radius: 50%; background: #7fc79c; }
.hero-card .section-kicker { color: var(--forest-800); }
.hero-card h2 { position: relative; margin-bottom: 7px; font-family: Georgia, serif; font-size: clamp(1.45rem, 5vw, 2rem); font-weight: 500; }
.hero-card p:not(.section-kicker) { position: relative; color: var(--muted); font-size: .85rem; }
.hero-actions { position: relative; display: flex; flex-wrap: wrap; gap: 10px; margin-top: 24px; }
.primary-button, .secondary-button { min-height: 44px; padding: 10px 16px; border-radius: 12px; font-weight: 750; }
.primary-button { border: 1px solid var(--forest-650); background: var(--forest-650); color: white; }
.hero-card .primary-button { border-color: var(--forest-650); background: var(--forest-650); color: white; }
.secondary-button { border: 1px solid var(--line); background: transparent; color: var(--forest-800); }
.hero-card .secondary-button { border-color: var(--forest-800); color: var(--forest-800); }
.content-section { max-width: 1040px; margin: 28px auto 0; }
.section-heading { display: flex; align-items: end; justify-content: space-between; margin-bottom: 13px; }
.section-heading h2 { margin: 0; font-family: Georgia, serif; font-size: 1.4rem; font-weight: 600; }
.count-badge { display: grid; place-items: center; min-width: 27px; height: 27px; padding: 0 8px; border-radius: 50%; background: var(--forest-100); color: var(--forest-800); font-size: .75rem; font-weight: 800; }
.attention-grid, .project-list { display: grid; gap: 10px; }
.attention-card { width: 100%; display: grid; grid-template-columns: auto 1fr auto; align-items: center; gap: 13px; padding: 14px; text-align: left; border: 1px solid var(--line); border-radius: 15px; background: var(--paper); color: var(--ink); }
.attention-card strong, .attention-card small { display: block; }
.attention-card small { margin-top: 3px; color: var(--muted); }
.attention-icon { display: grid; place-items: center; width: 42px; height: 42px; border-radius: 12px; font-size: 1.2rem; }
.attention-icon.amber { background: #fff0d8; color: var(--amber); }
.attention-icon.blue { background: #e5f0f5; color: var(--blue); }
.chevron { color: var(--muted); font-size: 1.7rem; }
.metric-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 9px; }
.metric-grid article { padding: 16px 8px; border: 1px solid var(--line); border-radius: 15px; background: rgba(255,254,250,.72); text-align: center; }
.metric-grid strong, .metric-grid span { display: block; }
.metric-grid strong { color: var(--forest-800); font-family: Georgia, serif; font-size: 1.8rem; }
.metric-grid span { margin-top: 3px; color: var(--muted); font-size: .73rem; }
.intro-card { display: flex; align-items: center; gap: 17px; padding: 20px; }
.intro-card h2 { margin-bottom: 5px; }
.intro-card p { margin-bottom: 0; color: var(--muted); line-height: 1.5; }
.large-icon { display: grid; place-items: center; flex: 0 0 auto; width: 58px; height: 58px; border-radius: 18px; background: var(--forest-100); color: var(--forest-800); font-size: 1.75rem; }
.intro-card .large-icon { background: var(--frame-2); color: var(--forest-800); }
.project-card { display: grid; gap: 15px; padding: 18px; border: 1px solid var(--line); border-radius: 17px; background: var(--paper); }
.project-card p:not(.project-number) { margin: 0; color: var(--muted); font-size: .82rem; }
.status-pill, .prototype-label { justify-self: start; padding: 5px 9px; border-radius: 999px; background: #fff0d8; color: #825015; font-size: .7rem; font-weight: 800; }
.empty-state { max-width: 620px; margin: 18vh auto 0; display: flex; flex-direction: column; align-items: center; padding: 38px 24px; text-align: center; border: 1px solid var(--line); border-radius: 22px; background: var(--paper); }
.empty-state h2 { margin: 17px 0 8px; font-family: Georgia, serif; font-size: 1.55rem; }
.empty-state p { max-width: 410px; color: var(--muted); line-height: 1.55; }
.prototype-label { background: var(--forest-100); color: var(--forest-800); }
.receipt-layout { width: 100%; max-width: 1040px; min-width: 0; margin: 0 auto; display: grid; gap: 18px; align-items: start; }
.receipt-entry-card, .recent-receipts { border: 1px solid var(--line); border-radius: 20px; background: var(--paper); box-shadow: var(--shadow); }
.receipt-entry-card { min-width: 0; padding: 18px; }
.receipt-title-row { display: flex; align-items: start; justify-content: space-between; gap: 14px; }
.receipt-title-row h2 { margin: 0; font-family: Georgia, serif; font-size: 1.55rem; }
.step-badge { padding: 6px 9px; border-radius: 999px; background: var(--forest-100); color: var(--forest-800); font-size: .68rem; font-weight: 800; white-space: nowrap; }
.receipt-instructions { margin: 9px 0 22px; color: var(--ink); font-size: .95rem; line-height: 1.5; }
.form-step { margin: 0; padding: 20px 0; border: 0; border-top: 1px solid var(--line); }
.form-step legend { width: 100%; display: flex; align-items: center; gap: 9px; padding: 20px 0 14px; font-family: Georgia, serif; font-size: 1.05rem; font-weight: 700; }
.form-step legend span { display: grid; place-items: center; width: 25px; height: 25px; border-radius: 50%; background: var(--forest-950); color: white; font-family: var(--font-sans, sans-serif); font-size: .68rem; }
.capture-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 9px; }
.capture-button { min-height: 104px; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 3px; padding: 12px 8px; border: 1px solid var(--line); border-radius: 15px; background: white; color: var(--ink); }
.capture-button.primary-capture { border-color: var(--forest-650); background: var(--forest-100); color: var(--forest-800); }
.capture-button > span { margin-bottom: 4px; font-size: 1.45rem; }
.capture-button small { color: var(--muted); font-size: .68rem; }
.form-helper { margin: 10px 0 0; color: var(--ink); font-size: .875rem; line-height: 1.4; text-align: center; }
.receipt-preview { display: grid; grid-template-columns: 54px 1fr auto; align-items: center; gap: 10px; margin-top: 11px; padding: 9px; border: 1px solid var(--line); border-radius: 13px; background: #faf9f4; }
.receipt-preview img, .file-tile { width: 54px; height: 54px; border-radius: 9px; object-fit: cover; }
.file-tile { display: grid; place-items: center; background: #efe5d5; color: #825015; font-size: .65rem; font-weight: 900; }
.receipt-preview strong, .receipt-preview small { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.receipt-preview strong { font-size: .78rem; }
.receipt-preview small { margin-top: 3px; color: var(--muted); font-size: .68rem; }
.remove-file { width: 32px; height: 32px; border: 0; border-radius: 50%; background: #eeeae2; color: #73594e; font-size: 1.2rem; }
.ocr-suggestion-button { width: 100%; min-height: 44px; margin-top: 9px; border: 1px dashed var(--forest-650); border-radius: 11px; background: var(--forest-100); color: var(--forest-800); font-size: .72rem; font-weight: 850; }
.form-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 11px; }
.form-grid label, .more-details label { display: grid; gap: 5px; color: var(--ink); font-size: .875rem; font-weight: 750; }
.form-grid label > span { color: #a54931; }
.form-grid input, .form-grid select, .more-details textarea { min-width: 0; width: 100%; min-height: 44px; padding: 10px 11px; border: 1px solid #cfd5cf; border-radius: 11px; background: white; color: var(--ink); font: inherit; font-weight: 500; }
.span-all { grid-column: 1 / -1; }
.money-input { display: grid; grid-template-columns: auto 1fr; align-items: center; min-height: 44px; padding-left: 11px; border: 1px solid #cfd5cf; border-radius: 11px; background: white; }
.money-input span { color: var(--muted) !important; }
.money-input input { border: 0; }
.segmented-control { display: grid; grid-template-columns: repeat(2, 1fr); padding: 4px; border-radius: 12px; background: #e9ebe7; }
.segmented-control button { min-height: 39px; border: 0; border-radius: 9px; background: transparent; color: var(--muted); font-weight: 800; }
.segmented-control button.selected { background: white; color: var(--forest-800); box-shadow: 0 2px 8px rgba(18,42,32,.1); }
.coding-fields { margin-top: 12px; }
.receipt-coding-locked input:disabled, .receipt-coding-locked select:disabled { border-color: #bdc4bf; background: #e7e9e7; color: #49564d; opacity: 1; cursor: not-allowed; }
.receipt-coding-lock-note { margin: 8px 0 0; color: var(--ink); font-size: .875rem; line-height: 1.4; }
.receipt-split-toggle { display: flex; align-items: center; justify-content: space-between; gap: 10px; width: 100%; min-height: 48px; margin-top: 14px; padding: 11px 13px; border: 1px solid var(--forest-650); border-radius: 12px; background: var(--forest-100); color: var(--forest-950); font-weight: 800; text-align: left; }
.receipt-split-toggle span { font-size: .8rem; font-weight: 700; }
.receipt-split-panel { display: grid; gap: 12px; min-width: 0; margin-top: 14px; padding: 14px; border: 2px solid var(--forest-650); border-radius: 14px; background: var(--forest-100); }
.receipt-split-heading { display: flex; align-items: start; justify-content: space-between; gap: 12px; }
.receipt-split-heading strong { color: var(--forest-950); font-size: 1.05rem; }
.receipt-split-heading p { margin: 4px 0 0; color: var(--ink); font-size: .875rem; line-height: 1.4; }
.receipt-split-heading button, .receipt-split-line header button { min-height: 40px; padding: 7px 9px; border: 0; background: transparent; color: var(--forest-800); font-weight: 800; text-decoration: underline; }
.receipt-split-line { display: grid; gap: 9px; min-width: 0; padding: 13px; border: 1px solid var(--line); border-radius: 12px; background: var(--paper); }
.receipt-split-line header { display: flex; justify-content: space-between; align-items: center; }
.receipt-split-line p { margin: 0; font-size: .875rem; line-height: 1.45; }
.receipt-split-line label { display: grid; gap: 5px; color: var(--ink); font-size: .875rem; font-weight: 750; }
.receipt-split-line input, .receipt-split-line select { min-width: 0; width: 100%; min-height: 44px; padding: 9px 11px; border: 1px solid #aebbb1; border-radius: 9px; background: #fff; color: var(--ink); font-size: 1rem; }
.receipt-split-balance { margin: 0; padding: 12px; border: 1px solid #a54931; border-radius: 10px; background: #fff0e9; color: #692e20; font-size: .95rem; font-weight: 800; line-height: 1.35; }
.receipt-split-balance.balanced { border-color: var(--forest-650); background: #e2f1e7; color: var(--forest-950); }
.receipt-review-allocations { display: grid; gap: 6px; margin-top: 9px; }
.receipt-review-allocations > div { display: flex; justify-content: space-between; gap: 10px; padding: 7px 0; border-top: 1px solid var(--line); }
.receipt-job-picker select[size] { max-height: 15rem; overflow-y: auto; overscroll-behavior: contain; }
.more-details { margin-top: 14px; }
.more-details summary { color: var(--forest-800); font-size: .76rem; font-weight: 800; cursor: pointer; }
.more-details label { margin-top: 11px; }
.receipt-submit-row { display: flex; flex-direction: column; gap: 10px; }
.receipt-submit-row p { min-height: 1em; margin: 0; color: #934c35; font-size: .73rem; }
.receipt-submit-row .primary-button { width: 100%; }
.recent-receipts { padding: 18px; }
.recent-list { display: grid; gap: 8px; }
.recent-list article { display: grid; grid-template-columns: auto 1fr auto; align-items: center; gap: 10px; padding: 11px 0; border-bottom: 1px solid var(--line); }
.recent-list article:last-child { border-bottom: 0; }
.receipt-symbol { display: grid; place-items: center; width: 35px; height: 35px; border-radius: 10px; background: var(--forest-100); color: var(--forest-800); }
.recent-list strong, .recent-list small { display: block; }
.recent-list strong { font-size: .78rem; }
.recent-list small { margin-top: 3px; color: var(--muted); font-size: .68rem; }
.entry-status { padding: 5px 7px; border-radius: 999px; background: #e9f0e8; color: var(--forest-800); font-size: .62rem; font-weight: 800; }
.entry-status.review { background: #fff0d8; color: #825015; }
.text-button { width: 100%; display: flex; justify-content: space-between; margin-top: 14px; padding: 11px 0 0; border: 0; border-top: 1px solid var(--line); background: transparent; color: var(--forest-800); font-size: .75rem; font-weight: 800; text-align: left; }
.text-button.receipt-latest-entry { display: block; padding: 12px 14px; border: 1px solid var(--forest-650); border-radius: 10px; background: var(--forest-100); color: var(--forest-950); font-size: .92rem; line-height: 1.35; }
.settings-card { max-width: 720px; margin: 0 auto 16px; padding: 20px; border: 1px solid var(--line); border-radius: 20px; background: var(--paper); box-shadow: var(--shadow); }
.profile-settings-card h2 { margin: 0 0 14px; }
.mobile-profile-form { display: grid; gap: 14px; }
.mobile-profile-form > label, .mobile-sms-prompt form > label, .profile-mfa-challenge form > label { display: grid; gap: 6px; font-weight: 700; }
.mobile-profile-form input:not([type="checkbox"]), .mobile-profile-form select, .mobile-sms-prompt input:not([type="checkbox"]), .profile-mfa-challenge input { width: 100%; min-height: 44px; padding: 9px 12px; border: 1px solid var(--line); border-radius: 9px; background: var(--surface); color: var(--ink); font-size: 1rem; }
.mobile-profile-form small, .profile-consent-note { color: var(--muted); font-size: .78rem; line-height: 1.45; }
.profile-checkbox { display: flex !important; align-items: flex-start; gap: 9px !important; font-weight: 500 !important; line-height: 1.45; }
.profile-checkbox input { flex: 0 0 auto; width: 19px; height: 19px; margin-top: 2px; }
.profile-checkbox span { min-width: 0; overflow-wrap: anywhere; }
.profile-actions { display: flex; flex-wrap: wrap; gap: 9px; }
.profile-actions button { min-height: 44px; }
.profile-mfa-summary { display: grid; gap: 5px; margin: 12px 0; color: var(--muted); }
.profile-mfa-challenge { margin-top: 16px; padding: 12px; border: 1px solid var(--line); border-radius: 10px; overflow-wrap: anywhere; }
.profile-mfa-challenge img { display: block; max-width: min(100%, 240px); margin: 10px 0; }
.profile-mfa-challenge code { overflow-wrap: anywhere; }
.profile-status { color: var(--forest-800); }
.mobile-sms-prompt-backdrop { position: fixed; z-index: 310; inset: 0; background: rgba(3, 15, 12, .68); }
.mobile-sms-prompt { position: fixed; z-index: 311; top: 50%; left: 50%; width: min(92vw, 560px); max-height: min(90dvh, 820px); overflow: auto; transform: translate(-50%, -50%); padding: 20px; border-radius: 16px; background: var(--surface); color: var(--ink); box-shadow: 0 18px 50px rgba(0,0,0,.3); }
.mobile-sms-prompt h2 { margin: 0 0 12px; }
.mobile-sms-prompt form { display: grid; gap: 13px; }
.pm-today-toolbar, .pm-today-job-head, .pm-today-order { display: flex; align-items: center; gap: 8px; }
.pm-today-toolbar { flex-wrap: wrap; }
.pm-today-toolbar .secondary-button { border-color: var(--shell-muted); color: #fff; }
.pm-today-section-toggle { display: grid; gap: 4px; padding: 0; border: 0; background: transparent; color: inherit; text-align: left; cursor: pointer; }
.pm-today-section-toggle .section-kicker { margin: 0; }
.pm-today-section-title { font-family: Georgia, serif; font-size: 1.45rem; font-weight: 700; }
.pm-today-order-panel { padding: 12px; border: 1px solid var(--line); border-radius: 14px; background: var(--paper); color: var(--ink); }
.pm-today-order-panel p { margin: 0 0 10px; }
.pm-today-order-panel ol { display: grid; gap: 8px; margin: 0; padding: 0; list-style: none; }
.pm-today-order-row { display: flex; align-items: center; gap: 10px; min-width: 0; padding: 7px; border: 1px solid var(--line); border-radius: 10px; background: var(--surface); }
.pm-today-order-row > span:nth-child(2) { flex: 1; min-width: 0; overflow-wrap: anywhere; }
.pm-today-order-row.is-dragging { opacity: .55; }
.pm-today-order-row.is-drop-target { outline: 3px solid var(--forest-800); }
.pm-today-drag-handle { display: grid; place-items: center; flex: 0 0 44px; min-height: 44px; border-radius: 8px; background: var(--paper); cursor: grab; touch-action: none; user-select: none; -webkit-user-select: none; }
.today-tasks-section > .section-heading .secondary-button { border-color: var(--shell-muted); color: #fff; }
.pm-today-jobs { display: grid; gap: 14px; margin: 16px 0; }
.pm-today-job { min-width: 0; overflow: hidden; border: 1px solid var(--line); border-radius: 16px; background: var(--paper); }
.pm-today-job-head { padding: 12px; }
.pm-today-job-head > button:first-child, .pm-today-report > button { display: grid; gap: 4px; flex: 1; min-width: 0; padding: 8px; border: 0; background: transparent; color: var(--ink); text-align: left; font: inherit; }
.pm-today-job-head strong, .pm-today-report strong { overflow-wrap: anywhere; font-size: 1rem; }
.pm-today-job-head span, .pm-today-report span { color: var(--muted); font-size: .84rem; }
.pm-today-order button { min-width: 40px; min-height: 40px; border: 1px solid var(--line); border-radius: 9px; background: var(--surface); color: var(--ink); }
.pm-today-reports { display: grid; gap: 10px; padding: 0 12px 12px; }
.pm-today-previous, .pm-today-current { min-width: 0; border: 1px solid var(--line); border-radius: 13px; background: var(--surface); overflow: hidden; }
.pm-today-previous-toggle { display: grid; gap: 4px; width: 100%; min-height: 60px; padding: 12px 18px; border: 0; background: transparent; color: var(--ink); text-align: left; font: inherit; }
.pm-today-previous-toggle strong { font-size: 1rem; }
.pm-today-previous-toggle span { color: var(--muted); font-size: .88rem; }
.pm-today-previous-body { display: grid; gap: 10px; padding: 0 12px 12px; }
.pm-today-current { display: grid; gap: 10px; padding: 12px; }
.pm-today-report { min-width: 0; padding: 10px; border: 1px solid var(--line); border-radius: 12px; background: var(--surface); }
.pm-today-current > .pm-today-report { background: var(--paper); }
.pm-today-detail { display: grid; gap: 12px; padding: 10px; border-top: 1px solid var(--line); }
.pm-today-detail h4 { margin: 0 0 5px; }
.pm-today-detail p { margin: 0; white-space: pre-wrap; overflow-wrap: anywhere; }
.pm-today-detail ul { margin: 0; padding-left: 22px; columns: 2; }
.pm-today-photos { display: grid; grid-template-columns: repeat(auto-fill, minmax(140px, 1fr)); gap: 10px; }
.pm-today-photos figure { min-width: 0; margin: 0; }
.pm-today-photos img { display: block; width: 100%; max-height: 220px; object-fit: cover; border-radius: 9px; }
.pm-today-photos figcaption { margin-top: 5px; font-size: .8rem; overflow-wrap: anywhere; }
.pm-today-gallery { min-width: 0; border: 1px solid var(--line); border-radius: 12px; background: var(--surface); overflow: hidden; }
.pm-today-gallery-toggle { display: grid; gap: 4px; width: 100%; min-height: 58px; padding: 12px 18px; border: 0; background: transparent; color: var(--ink); text-align: left; font: inherit; }
.pm-today-gallery-toggle strong { font-size: 1rem; }
.pm-today-gallery-toggle span { color: var(--muted); font-size: .88rem; }
.pm-today-gallery-body { min-width: 0; padding: 14px; border-top: 1px solid var(--line); }
.pm-today-gallery-body > p { overflow-wrap: anywhere; }
.pm-today-gallery-track { display: flex; gap: 16px; max-width: 100%; overflow-x: auto; padding: 4px 4px 12px; scroll-snap-type: x mandatory; -webkit-overflow-scrolling: touch; }
.pm-today-gallery-track figure { flex: 0 0 min(80vw, 520px); min-width: 0; margin: 0; scroll-snap-align: start; border: 1px solid var(--line); border-radius: 12px; overflow: hidden; background: var(--paper); }
.pm-today-gallery-track img { display: block; width: 100%; height: min(62vw, 390px); min-height: 220px; object-fit: contain; background: #172a2c; }
.pm-today-gallery-track figcaption { display: grid; gap: 4px; padding: 12px; font-size: .92rem; overflow-wrap: anywhere; }
.pm-today-gallery-track figcaption span { color: var(--muted); }
.beta-feedback-card form, .beta-feedback-card label { display: grid; gap: 7px; }
.beta-feedback-card form { gap: 13px; }
.beta-feedback-card label { color: var(--ink); font-size: .74rem; font-weight: 800; }
.beta-feedback-card select, .beta-feedback-card textarea { width: 100%; min-height: 44px; padding: 10px 11px; border: 1px solid var(--line); border-radius: 11px; background: white; color: var(--ink); font: inherit; font-size: 16px; }
.beta-feedback-card textarea { resize: vertical; }
.feedback-confirm { grid-template-columns: auto 1fr; align-items: start; }
.feedback-confirm input { width: 20px; height: 20px; margin: 0; }
.feedback-confirm span { color: var(--muted); font-weight: 600; line-height: 1.4; }
.beta-feedback-card form > p { min-height: 1em; margin: 0; color: var(--forest-800); font-size: .68rem; }
.support-diagnostics > div:last-child { display: flex; flex-wrap: wrap; gap: 7px; margin-top: 13px; }
.support-diagnostics > div:last-child button { min-height: 40px; padding: 8px 10px; border: 1px solid var(--line); border-radius: 10px; background: transparent; color: var(--forest-800); font-size: .68rem; font-weight: 800; }
.settings-heading { display: flex; align-items: start; justify-content: space-between; gap: 12px; }
.settings-heading h2, .compact-settings h2 { margin-bottom: 0; font-family: Georgia, serif; font-size: 1.4rem; }
.collapsible-settings { padding: 0; overflow: hidden; box-shadow: none; }
.settings-collapse-toggle { width: 100%; padding: 16px 20px; border: 0; background: transparent; color: var(--ink); text-align: left; }
.settings-collapse-toggle .settings-heading { width: 100%; align-items: center; }
.settings-collapse-toggle .section-kicker, .settings-collapse-toggle strong { display: block; }
.settings-collapse-toggle strong { margin-top: 3px; font-family: Georgia, serif; font-size: 1.08rem; }
.settings-toggle-end { display: flex; align-items: center; gap: 9px; }
.settings-chevron { font-size: 1rem; transition: transform .16s ease; }
.settings-collapse-toggle[aria-expanded="true"] .settings-chevron { transform: rotate(180deg); }
.settings-collapse-content { padding: 0 20px 20px; border-top: 1px solid var(--line); }
.settings-collapse-content[hidden] { display: none; }
.settings-collapse-content > p { margin: 14px 0 18px; color: var(--muted); font-size: .82rem; line-height: 1.5; }
.settings-card > p, .compact-settings p:last-child { margin: 9px 0 18px; color: var(--muted); font-size: .82rem; line-height: 1.5; }
.settings-icon { display: grid; place-items: center; width: 38px; height: 38px; border-radius: 11px; background: var(--forest-100); color: var(--forest-800); font-size: 1.2rem; }
.theme-options { display: grid; gap: 9px; }
.theme-option { display: grid; grid-template-columns: auto 1fr auto; align-items: center; gap: 12px; width: 100%; min-height: 65px; padding: 10px 12px; border: 1px solid var(--line); border-radius: 14px; background: transparent; color: var(--ink); text-align: left; }
.theme-option.selected { border: 2px solid var(--forest-650); padding: 9px 11px; background: var(--forest-100); }
.theme-option strong, .theme-option small { display: block; }
.theme-option strong { font-size: .82rem; }
.theme-option small { margin-top: 3px; color: var(--muted); font-size: .68rem; }
.theme-swatches { display: flex; overflow: hidden; width: 51px; height: 38px; border: 1px solid rgba(0,0,0,.08); border-radius: 10px; }
.theme-swatches i { flex: 1; }
.theme-check { width: 24px; color: var(--forest-650); font-size: 1.1rem; font-weight: 900; text-align: center; }
.compact-settings { box-shadow: none; }
.compact-settings p:last-child { margin-bottom: 0; }
.more-feature-section { max-width: 720px; margin: 0 auto 16px; }
.more-feature-list { display: grid; gap: 9px; }
.feature-link-card { display: grid; grid-template-columns: auto 1fr auto; align-items: center; gap: 13px; padding: 16px 18px; border: 1px solid var(--line); border-radius: 18px; background: var(--paper); color: var(--ink); text-decoration: none; box-shadow: var(--shadow); }
.feature-link-icon { display: grid; place-items: center; width: 43px; height: 43px; border-radius: 12px; background: var(--forest-100); color: var(--forest-800); font-size: 1.25rem; }
.feature-link-card strong, .feature-link-card small { display: block; }
.feature-link-card strong { font-size: .85rem; }
.feature-link-card small { margin-top: 3px; color: var(--muted); font-size: .7rem; line-height: 1.35; }
.project-selector, .project-workspace { max-width: 1040px; margin: 0 auto; }
.project-selector > div:first-child { margin-bottom: 18px; }
.project-selector-heading { display: flex; align-items: start; justify-content: space-between; gap: 15px; margin-bottom: 18px; }
.project-selector-heading > div > p:last-child { margin-bottom: 0; color: var(--muted); font-size: .8rem; }
.manage-dashboard-button { flex: 0 0 auto; }
.project-selector-controls { display: grid; gap: 10px; padding: 15px; border: 1px solid var(--line); border-radius: 16px; background: var(--paper); box-shadow: var(--shadow); }
.project-selector-controls label { display: grid; gap: 5px; color: var(--muted); font-size: .68rem; font-weight: 800; }
.project-selector-controls select { width: 100%; min-height: 46px; padding: 9px 11px; border: 1px solid var(--line); border-radius: 11px; background: white; color: var(--ink); font: inherit; }
.project-selector-controls input[type="search"] { width: 100%; min-height: 46px; padding: 9px 11px; border: 1px solid var(--line); border-radius: 11px; background: white; color: var(--ink); font: inherit; }
.project-selector-controls > div { display: grid; grid-template-columns: repeat(2, 1fr); gap: 8px; }
.project-selector-controls button:disabled { opacity: .5; cursor: default; }
.selected-project-preview { display: grid; gap: 15px; margin-top: 12px; padding: 18px; border: 1px solid var(--line); border-radius: 16px; background: var(--paper); }
.selected-project-preview small { color: var(--forest-650); font-size: .64rem; font-weight: 900; }.selected-project-preview h3 { margin: 4px 0; font-family: Georgia, serif; }.selected-project-preview p { margin: 0; color: var(--muted); font-size: .7rem; }
.project-preview-capabilities { display: flex; flex-wrap: wrap; gap: 6px; }.project-preview-capabilities span { padding: 5px 8px; border-radius: 999px; background: #eeeae2; color: var(--muted); font-size: .62rem; font-weight: 800; opacity: .55; }.project-preview-capabilities span.available { background: var(--forest-100); color: var(--forest-800); opacity: 1; }
.dashboard-manager { margin-top: 14px; padding: 18px; border: 1px solid var(--line); border-radius: 17px; background: var(--paper); }.dashboard-manager h3 { margin-bottom: 4px; font-family: Georgia, serif; }.dashboard-manager > div:first-child > p:last-child { color: var(--muted); font-size: .7rem; }
.dashboard-manager-list { display: grid; gap: 9px; }.dashboard-manager-list article { display: grid; gap: 11px; padding: 14px; border: 1px solid rgba(20,35,27,.1); border-radius: 13px; }.dashboard-manager-list article > div:first-child small, .dashboard-manager-list article > div:first-child strong { display: block; }.dashboard-manager-list article > div:first-child small { margin-bottom: 3px; font-size: .6rem; font-weight: 900; }.dashboard-manager-list article > div:first-child strong { font-size: .76rem; }.dashboard-manager-list label { display: grid; gap: 4px; color: var(--muted); font-size: .62rem; font-weight: 800; }.dashboard-manager-list select { min-height: 38px; padding: 7px 9px; border: 1px solid rgba(20,35,27,.18); border-radius: 9px; background: rgba(255,255,255,.75); color: var(--ink); font: inherit; }
.tone-sage { background: #cdd6c6 !important; }.tone-blue { background: #cad9e2 !important; }.tone-sand { background: #e2d4bf !important; }.tone-clay { background: #dcc9bd !important; }.tone-slate { background: #c9ced4 !important; }
.card-order-controls { display: flex; gap: 6px; }.card-order-controls button { min-width: 38px; min-height: 36px; border: 1px solid rgba(20,35,27,.18); border-radius: 9px; background: rgba(255,255,255,.72); color: var(--ink); font-weight: 850; }.card-order-controls button:disabled { opacity: .35; }.card-order-controls .untrack-button { margin-left: auto; padding-inline: 10px; color: #8f412f; font-size: .64rem; }
.dashboard-manager-note { margin: 13px 0 0; color: var(--muted); font-size: .62rem; line-height: 1.45; }
.manage-dashboard-link { color: var(--forest-800); font-size: .7rem; font-weight: 850; text-decoration: none; }.tracked-dashboard-grid { display: grid; gap: 9px; }.tracked-project-card { display: flex; align-items: center; justify-content: space-between; gap: 12px; width: 100%; padding: 16px; border: 1px solid rgba(20,35,27,.1); border-radius: 15px; color: #273029; text-align: left; box-shadow: var(--shadow); }.tracked-project-card small, .tracked-project-card strong, .tracked-project-card em { display: block; }.tracked-project-card small { margin-bottom: 4px; font-size: .61rem; font-weight: 900; letter-spacing: .07em; }.tracked-project-card strong { font-size: .83rem; }.tracked-project-card em { margin-top: 5px; color: #59645d; font-size: .65rem; font-style: normal; }
.project-tracked-preview { margin-top: 22px; padding-top: 20px; border-top: 1px solid var(--line); }
.project-selector h2 { margin-bottom: 6px; font-family: Georgia, serif; font-size: 1.5rem; }
.project-selector > div:first-child > p:last-child { color: var(--muted); font-size: .8rem; }
.project-choice-list { display: grid; gap: 10px; }
.project-choice-list button { display: flex; align-items: center; justify-content: space-between; gap: 12px; width: 100%; padding: 17px; border: 1px solid var(--line); border-radius: 16px; background: var(--paper); color: var(--ink); text-align: left; box-shadow: var(--shadow); }
.project-choice-list small, .project-choice-list strong, .project-choice-list em { display: block; }
.project-choice-list small { margin-bottom: 4px; color: var(--forest-650); font-size: .64rem; font-weight: 900; letter-spacing: .07em; }
.project-choice-list strong { font-size: .9rem; }
.project-choice-list em { margin-top: 5px; color: var(--muted); font-size: .68rem; font-style: normal; }
.project-tabs { display: flex; gap: 5px; overflow-x: auto; margin-bottom: 13px; padding: 4px; border-radius: 13px; background: #e3e6e2; }
.project-tabs button { flex: 1 0 auto; min-height: 38px; padding: 8px 13px; border: 0; border-radius: 10px; background: transparent; color: var(--muted); font-size: .72rem; font-weight: 850; }
.project-tabs button.selected { background: var(--paper); color: var(--forest-800); box-shadow: 0 2px 8px rgba(18,42,32,.1); }
.project-pane { padding: 18px; border: 1px solid var(--line); border-radius: 19px; background: var(--paper); box-shadow: var(--shadow); }
.project-overview-section { min-width: 0; overflow: hidden; border: 1px solid var(--line); border-radius: 16px; background: var(--frame-1); color: var(--ink); box-shadow: var(--shadow); }
.project-overview-section > button { display: flex; align-items: center; justify-content: space-between; gap: 12px; width: 100%; min-height: 60px; padding: 14px 18px; border: 0; background: transparent; color: var(--ink); text-align: left; font: inherit; }
.project-overview-section > button strong { font-size: 1rem; }
.project-overview-section > button span { display: grid; place-items: center; width: 32px; height: 32px; flex: 0 0 auto; border-radius: 50%; background: var(--forest-100); color: var(--forest-800); font-size: 1.25rem; }
.project-overview-section.is-unavailable > button { color: var(--muted); opacity: .6; cursor: not-allowed; }
.project-overview-section.is-unavailable > button span { background: var(--line); color: var(--muted); }
.project-overview-section.has-warning > button strong { color: #a32626; }
.project-overview-note { margin: -3px 18px 13px; font-size: .9rem; overflow-wrap: anywhere; }
.project-required-warning { color: #a32626; font-weight: 700; }
.project-overview-section > div:not([hidden]) { min-width: 0; padding: 14px; border-top: 1px solid var(--line); }
.project-overview-section .project-pane { box-shadow: none; }
.project-history-body { display: grid; gap: 12px; min-width: 0; }
.project-geofence-card { display: grid; gap: 12px; min-width: 0; padding: 16px; border: 2px solid #8eac95; border-radius: 14px; background: var(--paper); color: var(--ink); }
.project-geofence-heading { display: flex; justify-content: space-between; align-items: flex-start; gap: 12px; }
.project-geofence-heading h3, .project-geofence-card p { margin: 0; }
.project-geofence-status { padding: 4px 10px; border-radius: 999px; background: #d8eddd; color: #174e30; font-weight: 800; }
.project-geofence-pending { display: grid; gap: 10px; padding: 12px; border: 1px solid #c49137; border-radius: 10px; background: #fff7e5; color: #31240a; }
.project-geofence-editor { display: grid; gap: 12px; }
.project-geofence-actions { display: flex; flex-wrap: wrap; gap: 8px; }
.project-geofence-coordinates { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 8px; }
.project-geofence-coordinates button { grid-column: 1 / -1; }
.project-geofence-card label { display: grid; gap: 5px; min-width: 0; font-weight: 700; }
.project-geofence-card input, .project-geofence-card textarea { width: 100%; min-width: 0; padding: 10px; border: 1px solid #8b9b8e; border-radius: 8px; background: #fff; color: #172c1e; font: inherit; }
.project-geofence-points { margin: 0; padding-left: 24px; }
.project-geofence-points li { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 6px; padding: 5px 0; }
.project-geofence-preview { display: grid; gap: 4px; padding: 8px; border: 1px solid #a4b9a8; border-radius: 10px; background: #f4f9f5; color: #173720; }
.project-geofence-preview svg { width: 100%; max-height: 200px; }
.project-geofence-preview small { overflow-wrap: anywhere; }
.project-geofence-google-map { width: 100%; height: min(72vw, 420px); min-height: 280px; border: 1px solid #8da99a; border-radius: 10px; background: #e7eee7; color: #183323; }
.project-geofence-map-legend { display: flex; flex-wrap: wrap; gap: 8px 14px; font-weight: 700; font-size: .85rem; }
.project-geofence-map-legend span:first-child { color: #217646; }
.project-geofence-map-legend span:nth-child(2) { color: #a2600f; }
.project-geofence-map-legend span:nth-child(3) { color: #2468b2; }
.project-history-day { overflow: hidden; border: 1px solid var(--line); border-radius: 12px; background: var(--frame-2); }
.project-history-day > button { display: grid; gap: 4px; width: 100%; min-height: 58px; padding: 12px 14px; border: 0; background: transparent; color: var(--ink); text-align: left; font: inherit; }
.project-history-day > button span { color: var(--muted); font-size: .85rem; }
.project-history-day-body { display: grid; gap: 12px; padding: 12px; border-top: 1px solid var(--line); }
.project-history-contributor { display: grid; gap: 12px; min-width: 0; padding: 14px; border: 1px solid var(--line); border-radius: 12px; background: var(--paper); color: var(--ink); }
.project-history-contributor h4, .project-history-contributor h5 { margin: 0 0 5px; }
.project-history-contributor > p { margin: 0; color: var(--muted); }
.project-history-contributor ul { margin: 6px 0 0; padding-left: 20px; }
.project-history-contributor li { margin: 3px 0; overflow-wrap: anywhere; }
.project-history-contributor section { min-width: 0; }
.project-history-images { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 220px), 1fr)); gap: 12px; min-width: 0; }
.project-history-images figure { min-width: 0; margin: 0; overflow: hidden; border: 1px solid var(--line); border-radius: 12px; background: var(--paper); }
.project-history-images img { display: block; width: 100%; max-height: 320px; object-fit: contain; background: #172a2c; }
.project-history-images figcaption { display: grid; gap: 4px; padding: 10px; overflow-wrap: anywhere; font-size: .85rem; }
.project-history-images figcaption span { color: var(--muted); }
.project-overview-pane { padding: 0; overflow: hidden; }
.project-overview-hero { padding: 22px; background: var(--forest-950); color: white; }
.project-overview-hero h2 { margin-bottom: 6px; font-family: Georgia, serif; font-size: 1.5rem; }
.project-overview-hero > p:not(.section-kicker) { color: #cbd9d1; font-size: .76rem; }
.project-overview-hero .section-kicker { color: #a8c9b8; }
.project-capability-grid { display: grid; gap: 9px; padding: 16px; }
.project-capability-grid button { display: grid; grid-template-columns: auto 1fr; gap: 2px 11px; padding: 14px; border: 1px solid var(--line); border-radius: 13px; background: transparent; color: var(--ink); text-align: left; }
.project-capability-grid button > span { grid-row: span 2; display: grid; place-items: center; width: 38px; height: 38px; border-radius: 11px; background: var(--forest-100); color: var(--forest-800); font-size: 1.15rem; font-weight: 850; }
.project-capability-grid strong { font-size: .8rem; }.project-capability-grid small { color: var(--muted); font-size: .65rem; }
.project-daily-reports { padding: 18px; }
.daily-report-heading { align-items: center; }
.daily-report-heading button { flex: 0 0 auto; min-height: 38px; padding: 8px 11px; font-size: .68rem; }
.daily-report-list { display: grid; gap: 7px; }
.daily-report-list > button { display: grid; grid-template-columns: 1fr auto auto; align-items: center; gap: 10px; width: 100%; padding: 12px; border: 1px solid var(--line); border-radius: 12px; background: transparent; color: var(--ink); text-align: left; }
.daily-report-date strong, .daily-report-date small { display: block; }
.daily-report-date strong { font-size: .72rem; }.daily-report-date small { margin-top: 3px; color: var(--muted); font-size: .6rem; }
.report-status { padding: 5px 7px; border-radius: 999px; background: var(--forest-100); color: var(--forest-800); font-size: .58rem; font-weight: 850; white-space: nowrap; }
.report-status.status-draft { background: #e5edf4; color: #2f607e; }.report-status.status-needs-review { background: #fff0d8; color: #825015; }
.daily-reports-mobile-intro { max-width: 940px; display: flex; align-items: center; justify-content: space-between; gap: 20px; margin: 0 auto 16px; padding: 20px; border-radius: 19px; background: var(--forest-950); color: white; box-shadow: var(--shadow); }
.daily-reports-mobile-intro h2 { margin-bottom: 5px; font-family: Georgia, serif; font-size: 1.35rem; }.daily-reports-mobile-intro p:last-child { margin: 0; color: #c8d8d0; font-size: .73rem; line-height: 1.45; }.daily-reports-mobile-intro .section-kicker { color: #9fc4b1; }
.daily-reports-mobile-intro > span { display: grid; place-items: center; width: 46px; height: 46px; flex: 0 0 auto; border-radius: 50%; background: rgba(255,255,255,.12); font-weight: 900; }
.daily-report-open-strip { max-width: 940px; margin: 0 auto 14px; }.daily-report-open-strip > div:first-child { display: flex; align-items: end; justify-content: space-between; gap: 12px; margin-bottom: 7px; }.daily-report-open-strip > div:first-child span { color: var(--muted); font-size: .62rem; }.daily-report-open-strip > div:last-child { display: flex; gap: 6px; overflow-x: auto; padding: 1px 1px 6px; }.daily-report-open-strip button { flex: 0 0 auto; min-width: 122px; padding: 8px 10px; border: 1px solid var(--line); border-radius: 10px; background: var(--paper); color: var(--ink); text-align: left; }.daily-report-open-strip button strong, .daily-report-open-strip button span { display: block; }.daily-report-open-strip button strong { font-size: .64rem; }.daily-report-open-strip button span { margin-top: 2px; color: var(--muted); font-size: .54rem; }
.daily-reports-mobile-grid { max-width: 940px; display: grid; gap: 12px; margin: 0 auto; }
.daily-report-project-card { padding: 18px; border: 1px solid var(--line); border-radius: 18px; background: var(--paper); box-shadow: var(--shadow); }
.daily-report-card-heading { display: flex; align-items: start; justify-content: space-between; gap: 12px; }.daily-report-card-heading small { color: var(--forest-650); font-size: .62rem; font-weight: 900; letter-spacing: .08em; }.daily-report-card-heading h2 { margin: 3px 0 0; font-family: Georgia, serif; font-size: 1.05rem; }
.daily-report-card-metrics { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 7px; margin: 15px 0; }.daily-report-card-metrics div { padding: 10px; border-radius: 11px; background: var(--cream); }.daily-report-card-metrics strong, .daily-report-card-metrics span { display: block; }.daily-report-card-metrics strong { color: var(--forest-800); font-size: .8rem; }.daily-report-card-metrics span { margin-top: 2px; color: var(--muted); font-size: .58rem; }
.daily-report-project-card > button { width: 100%; }
.daily-report-mobile-shell { max-width: 940px; margin: 0 auto; }
.daily-report-dashboard-back { min-height: 44px; margin-bottom: 8px; padding: 7px 0; border: 0; background: transparent; color: var(--forest-800); font-weight: 850; }
.daily-report-editor-toolbar { display: flex; align-items: center; justify-content: space-between; gap: .75rem; }
.daily-report-open-drafts { max-width: 940px; margin: 0 auto 16px; padding: 14px; border: 1px solid var(--line); border-radius: 12px; background: var(--frame-1); color: var(--ink); }
.daily-report-open-drafts > p { margin: .5rem 0; font-size: .8rem; }
.daily-report-draft-list { display: grid; gap: .65rem; }
.daily-report-draft-list > article { display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: .6rem; padding: .75rem; border: 1px solid var(--line); border-radius: 9px; background: var(--paper); color: var(--ink); }
.daily-report-draft-details { min-width: 0; }
.daily-report-draft-details strong { font-size: .95rem; overflow-wrap: anywhere; }
.daily-report-draft-details span { color: var(--ink); line-height: 1.4; }
.daily-report-draft-details b { color: var(--forest-800); }
.daily-report-draft-list > article strong, .daily-report-draft-list > article span { display: block; }
.daily-report-draft-list > article span { margin-top: .2rem; font-size: .75rem; }
.daily-report-final-submit { margin: 1rem 0; padding: 1rem; border: 2px solid var(--line); border-radius: 12px; background: var(--paper); color: var(--ink); }
.daily-report-final-submit h2 { margin: 0 0 .75rem; }
.daily-report-final-confirm { margin-top: .75rem; display: flex; flex-wrap: wrap; align-items: center; gap: .6rem; }
.daily-report-final-confirm p { flex-basis: 100%; margin: 0; }
.daily-report-final-submit [role="alert"] { color: #9b1c1c; font-weight: 700; }
.daily-report-delete-confirm { flex-basis: 100%; padding: .85rem; border: 2px solid #9b2c23; border-radius: 9px; background: #fff5f3; color: #2c110e; }
.daily-report-delete-confirm p { margin: .45rem 0; font-size: .8rem; }
.daily-report-delete-confirm > div { display: flex; flex-wrap: wrap; gap: .5rem; }
.daily-report-delete-button { min-height: 44px; padding: .55rem .85rem; border: 1px solid #9b2c23; border-radius: 8px; background: #b42318; color: #fff; font-weight: 750; }
.daily-report-progress { display: grid; gap: 7px; margin-bottom: 12px; padding: 15px; border: 1px solid var(--line); border-radius: 15px; background: var(--paper); }.daily-report-progress span { color: var(--muted); font-size: .7rem; }.daily-report-progress span strong { color: var(--forest-800); }.daily-report-progress progress { width: 100%; height: 8px; accent-color: var(--forest-650); }.daily-report-progress small { color: var(--muted); font-size: .59rem; }
.daily-report-section-nav { position: sticky; z-index: 8; top: 0; display: flex; gap: 6px; overflow-x: auto; margin-bottom: 12px; padding: 7px 2px 9px; background: var(--cream); scrollbar-width: thin; }.daily-report-section-nav button { min-height: 42px; flex: 0 0 auto; display: flex; align-items: center; gap: 6px; padding: 8px 11px; border: 1px solid var(--line); border-radius: 11px; background: var(--paper); color: var(--muted); font-size: .68rem; font-weight: 800; }.daily-report-section-nav button.complete { border-color: var(--forest-650); background: var(--forest-100); color: var(--forest-800); }.daily-report-section-nav button > span { font-weight: 950; }
.daily-report-long-form { display: grid; gap: 13px; }
.daily-report-field-time-group { --field-time-accent: var(--forest-650); position: relative; display: grid; gap: 13px; padding-left: 13px; }.daily-report-field-time-group::before { content: ""; position: absolute; z-index: 0; top: 18px; bottom: 18px; left: 3px; width: 4px; border-radius: 999px; background: var(--field-time-accent); opacity: .82; }.daily-report-field-time-group > .daily-report-scroll-section { position: relative; z-index: 1; border-left: 5px solid var(--field-time-accent); }.daily-report-field-time-group > .daily-report-scroll-section .daily-report-section-heading { background: linear-gradient(90deg, var(--forest-100), var(--paper) 38%); }
.daily-report-scroll-section { scroll-margin-top: 66px; overflow: hidden; border: 1px solid var(--line); border-radius: 18px; background: var(--paper); box-shadow: var(--shadow); }.daily-report-scroll-section.collapsed { box-shadow: none; }.daily-report-section-heading { width: 100%; min-height: 66px; display: flex; align-items: center; justify-content: space-between; gap: 15px; padding: 13px 18px; border: 0; border-bottom: 1px solid var(--line); background: var(--paper); color: var(--ink); text-align: left; }.daily-report-scroll-section.collapsed .daily-report-section-heading { border-bottom: 0; }.daily-report-section-heading > span:first-child small, .daily-report-section-heading > span:first-child strong { display: block; }.daily-report-section-heading small { color: var(--forest-650); font-size: .57rem; font-weight: 900; text-transform: uppercase; letter-spacing: .07em; }.daily-report-section-heading strong { margin-top: 3px; font-family: Georgia, serif; font-size: 1.05rem; }.daily-report-section-heading > span:last-child { max-width: 52%; color: var(--muted); font-size: .6rem; text-align: right; }.daily-report-section-heading i { display: inline-block; margin-left: 5px; font-style: normal; transition: transform .16s ease; }.daily-report-section-heading[aria-expanded="false"] i { transform: rotate(180deg); }
.daily-report-mobile-form { display: grid; gap: 15px; padding: 19px; background: var(--paper); }.daily-report-mobile-form[hidden] { display: none; }
.daily-report-mobile-form > label, .daily-report-field-grid label { display: grid; gap: 6px; color: var(--ink); font-size: .73rem; font-weight: 800; }.daily-report-mobile-form input, .daily-report-mobile-form select, .daily-report-mobile-form textarea { width: 100%; min-height: 44px; padding: 10px 11px; border: 1px solid #cfd5cf; border-radius: 10px; background: white; color: var(--ink); font: inherit; font-size: 16px; font-weight: 500; }.daily-report-mobile-form textarea { resize: vertical; line-height: 1.45; }
.daily-report-weather-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }.daily-report-weather-grid label { min-width: 0; font-size: .64rem; }.daily-report-weather-grid input { min-width: 0; padding-inline: 8px; }
.daily-report-field-label { display: flex; align-items: baseline; gap: 4px; }.daily-report-required { order: 2; color: #c62828; font-size: .9rem; font-weight: 950; }
.daily-report-rich-field { display: grid; gap: 0 !important; }.daily-report-rich-toolbar { display: flex; gap: 4px; margin-top: 6px; padding: 6px; border: 1px solid #cfd5cf; border-bottom: 0; border-radius: 10px 10px 0 0; background: var(--cream); }.daily-report-rich-toolbar button { min-width: 34px; min-height: 32px; padding: 4px 8px; border: 1px solid var(--line); border-radius: 6px; background: var(--paper); color: var(--ink); font-size: .68rem; }.daily-report-rich-editor { display: block; min-height: 118px; max-height: 70vh; overflow: auto; resize: vertical; padding: 11px; border: 1px solid #cfd5cf; border-radius: 0 0 10px 10px; background: white; color: var(--ink); font-size: 16px; font-weight: 500; line-height: 1.45; }.daily-report-rich-editor:focus { outline: 2px solid var(--forest-650); outline-offset: -1px; }.daily-report-rich-editor[aria-invalid="true"] { border-color: #c62828; box-shadow: 0 0 0 2px rgba(198,40,40,.14); }.daily-report-rich-editor ul, .daily-report-rich-editor ol { padding-left: 22px; }
.daily-report-rich-field, .daily-report-delay-reason { color: var(--ink); font-size: .73rem; font-weight: 800; }
.daily-report-delay-reason { display: grid; gap: 6px; }
.daily-report-delay-form { margin-top: 13px; border-top: 1px solid var(--line); }.daily-report-delay-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.daily-report-source-note { margin: -5px 0 0; color: var(--muted); font-size: .65rem; line-height: 1.45; }.daily-report-cost-code-list { display: grid; gap: 7px; max-height: 330px; margin: 0; padding: 10px; overflow: auto; border: 1px solid var(--line); border-radius: 12px; }.daily-report-cost-code-list legend { padding: 0 5px; font-size: .7rem; font-weight: 850; }.daily-report-cost-code-list > label { display: flex; align-items: center; gap: 10px; min-height: 50px; padding: 8px 10px; border: 1px solid var(--line); border-radius: 9px; background: var(--cream); cursor: pointer; }.daily-report-cost-code-list > label[hidden] { display: none; }.daily-report-cost-code-list input { width: 20px; height: 20px; min-height: 20px; flex: 0 0 auto; padding: 0; }.daily-report-cost-code-list label > span { min-width: 0; display: grid; grid-template-columns: 20px auto 1fr; align-items: baseline; gap: 7px; }.daily-report-cost-code-list small { color: var(--muted); font-size: .55rem; }.daily-report-cost-code-list strong { color: var(--forest-800); font-size: .72rem; }.daily-report-cost-code-list em { overflow: hidden; color: var(--muted); font-size: .65rem; font-style: normal; text-overflow: ellipsis; white-space: nowrap; }.daily-report-cost-code-empty { margin: 0; padding: 12px; border-radius: 10px; background: var(--cream); color: var(--muted); font-size: .68rem; text-align: center; }
.daily-report-cost-code-picker { position: relative; z-index: 12; }.daily-report-cost-code-picker > label { display: grid; gap: 6px; color: var(--ink); font-size: .73rem; font-weight: 800; }.daily-report-cost-code-picker input { width: 100%; min-height: 46px; padding: 10px 11px; border: 1px solid #cfd5cf; border-radius: 10px; background: white; font: inherit; font-size: 16px; }.daily-report-cost-code-results { position: absolute; z-index: 20; top: calc(100% + 5px); left: 0; right: 0; max-height: min(440px, 55vh); overflow-y: auto; overscroll-behavior: contain; padding: 7px; border: 1px solid #9eaaa2; border-radius: 12px; background: var(--paper); box-shadow: 0 18px 45px rgba(9,25,18,.24); }.daily-report-cost-code-results[hidden] { display: none; }.daily-report-cost-code-results > button { width: 100%; min-height: 49px; display: grid; grid-template-columns: minmax(70px, auto) 1fr; gap: 10px; align-items: center; padding: 9px 10px; border: 0; border-bottom: 1px solid var(--line); background: transparent; color: var(--ink); text-align: left; }.daily-report-cost-code-results > button:hover, .daily-report-cost-code-results > button:focus { background: var(--forest-100); outline: none; }.daily-report-cost-code-results > button[hidden] { display: none; }.daily-report-cost-code-results strong { color: var(--forest-800); font-size: .72rem; }.daily-report-cost-code-results span { color: var(--muted); font-size: .66rem; }.daily-report-selected-cost-codes { display: grid; gap: 7px; margin: 0; padding: 10px; border: 1px solid var(--line); border-radius: 12px; }.daily-report-selected-cost-codes legend { padding: 0 5px; font-size: .7rem; font-weight: 850; }.daily-report-selected-cost-codes > div { display: grid; grid-template-columns: 1fr auto; gap: 9px; align-items: center; min-height: 50px; padding: 8px 10px; border-radius: 9px; background: var(--cream); }.daily-report-selected-cost-codes > div > span { min-width: 0; display: grid; grid-template-columns: 20px auto 1fr; gap: 7px; align-items: baseline; }.daily-report-selected-cost-codes small { color: var(--muted); font-size: .55rem; }.daily-report-selected-cost-codes strong { color: var(--forest-800); font-size: .72rem; }.daily-report-selected-cost-codes em { overflow: hidden; color: var(--muted); font-size: .65rem; font-style: normal; text-overflow: ellipsis; white-space: nowrap; }.daily-report-selected-cost-codes button { min-height: 34px; padding: 5px 8px; border: 1px solid #b67a72; border-radius: 7px; background: transparent; color: #8a3429; font-size: .58rem; font-weight: 800; }.daily-report-selected-cost-codes > p { margin: 0; padding: 10px; color: var(--muted); font-size: .67rem; }
.daily-report-employee-picker { position: relative; z-index: 11; }.daily-report-employee-picker > label { display: grid; gap: 6px; color: var(--ink); font-size: .73rem; font-weight: 800; }.daily-report-employee-results { position: absolute; z-index: 20; top: calc(100% + 5px); left: 0; right: 0; max-height: min(390px, 50vh); overflow-y: auto; padding: 7px; border: 1px solid #9eaaa2; border-radius: 12px; background: var(--paper); box-shadow: 0 18px 45px rgba(9,25,18,.24); }.daily-report-employee-results[hidden], .daily-report-employee-results > button[hidden] { display: none; }.daily-report-employee-results > button { width: 100%; min-height: 49px; display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 9px 10px; border: 0; border-bottom: 1px solid var(--line); background: transparent; color: var(--ink); text-align: left; }.daily-report-employee-results > button:hover, .daily-report-employee-results > button:focus { background: var(--forest-100); outline: none; }.daily-report-employee-results > button strong { font-size: .72rem; }.daily-report-employee-results > button span, .daily-report-employee-results > p { color: var(--muted); font-size: .63rem; }.daily-report-employee-results > p { margin: 0; padding: 11px; }.daily-report-crew-cards { display: grid; gap: 15px; }.daily-report-crew-empty { margin: 0; padding: 16px; border: 1px dashed var(--line); border-radius: 12px; color: var(--muted); font-size: .7rem; text-align: center; }.daily-report-crew-card { overflow: hidden; border: 2px solid #8fa298; border-left: 6px solid var(--forest-650); border-radius: 14px; background: var(--paper); box-shadow: 0 6px 16px rgba(17,45,32,.13); }.daily-report-crew-card.complete { border-color: #4f8a6c; border-left-color: #2f7655; }.daily-report-crew-card > header { display: flex; align-items: center; justify-content: space-between; gap: 10px; padding: 14px 15px; border-bottom: 1px solid #9faf9f; background: var(--forest-100); }.daily-report-crew-card > header strong, .daily-report-crew-card > header small { display: block; }.daily-report-crew-card > header strong { color: var(--forest-950); font-size: 1rem; line-height: 1.2; }.daily-report-crew-card > header small { margin-top: 4px; color: #465b50; font-size: .62rem; font-weight: 750; }.daily-report-crew-card > header > span { padding: 5px 8px; border-radius: 999px; background: var(--paper); color: var(--forest-800); font-size: .74rem; font-weight: 900; }.daily-report-crew-lines { display: grid; gap: 9px; padding: 13px; background: #fbfcfa; }.daily-report-crew-lines > p { margin: 0; color: var(--muted); font-size: .67rem; }.daily-report-crew-line { display: grid; grid-template-columns: minmax(0, 1.35fr) minmax(150px, .8fr) auto; gap: 8px; align-items: end; padding: 11px; border: 1px solid #c6d0c9; border-radius: 10px; background: var(--paper); }.daily-report-crew-line label { display: grid; gap: 5px; min-width: 0; color: var(--forest-950); font-size: .66rem; font-weight: 850; }.daily-report-crew-line select { min-width: 0; }.daily-report-hours-control { display: grid; grid-template-columns: 36px minmax(66px, 1fr) 36px; }.daily-report-hours-control button { min-height: 44px; padding: 0; border: 1px solid #8ea096; background: var(--forest-100); color: var(--forest-950); font-size: 1rem; font-weight: 900; }.daily-report-hours-control button:first-child { border-radius: 9px 0 0 9px; }.daily-report-hours-control button:last-child { border-radius: 0 9px 9px 0; }.daily-report-hours-control input { border-color: #8ea096; border-radius: 0; text-align: center; }.daily-report-remove-line { min-height: 44px; padding: 6px 8px; border: 0; background: transparent; color: #8a3429; font-size: .57rem; font-weight: 800; }.daily-report-crew-card > footer { display: flex; flex-wrap: wrap; justify-content: space-between; gap: 7px; padding: 11px 13px 13px; border-top: 1px solid #d5ddd7; background: var(--cream); }.daily-report-remove-crew { min-height: 38px; padding: 6px 9px; border: 1px solid #a85e54; border-radius: 8px; background: var(--paper); color: #7f2e25; font-size: .58rem; font-weight: 850; }.daily-report-protected-note { margin: 0 11px 11px; padding: 8px 10px; border-radius: 8px; background: #fff0dc; color: #7c4c1a; font-size: .62rem; }
.daily-report-online-only { margin-left: auto; padding: 3px 6px; border-radius: 999px; background: #e5edf4; color: #2f607e; font-size: .52rem; font-weight: 850; }.daily-report-directory-status { position: sticky; z-index: 1; top: -7px; display: block; padding: 7px 10px; background: var(--cream); color: var(--muted); font-size: .55rem; font-weight: 800; text-transform: uppercase; letter-spacing: .05em; }
.daily-report-crew-line select { min-height: 44px; padding: 7px 8px; font-size: 16px; }.daily-report-hours-control { grid-template-columns: 40px minmax(66px, 1fr) 40px; }.daily-report-hours-control button { min-height: 44px; font-size: 1rem; }.daily-report-hours-control input { min-width: 0; min-height: 44px; padding: 5px 4px; font-size: 16px; }.daily-report-remove-line { min-height: 44px; padding: 4px 6px; font-size: .65rem; }.daily-report-crew-card > footer .secondary-button, .daily-report-remove-crew { min-height: 44px; padding: 6px 9px; font-size: .65rem; }
.daily-equipment-hours-field { display: grid; gap: 5px; min-width: 0; color: var(--forest-950); font-size: .66rem; font-weight: 850; }
.daily-equipment-code-prompt { display: grid; gap: 9px; padding: 13px; border: 1px solid #a9793a; border-radius: 10px; background: #fff3dd; color: #573d18; }
.daily-equipment-code-prompt p { margin: 0; line-height: 1.4; }
.daily-equipment-code-prompt button { justify-self: start; }
.daily-equipment-carry-note { margin: 2px 0; color: #715019; font-size: .72rem; line-height: 1.35; font-weight: 800; }
.daily-equipment-removal-backdrop { position: fixed; inset: 0; z-index: 230; background: rgba(5, 17, 12, .78); }
.daily-equipment-removal-dialog { position: fixed; z-index: 231; inset: auto 12px 12px; max-width: 560px; max-height: calc(100dvh - 24px); overflow-y: auto; margin: auto; padding: 18px; border-radius: 16px; background: var(--paper); color: var(--ink); box-shadow: 0 20px 55px rgba(0, 0, 0, .38); }
.daily-equipment-removal-dialog header, .daily-equipment-removal-dialog footer { display: flex; align-items: center; justify-content: space-between; gap: 12px; }
.daily-equipment-removal-dialog header h2 { margin: 0; font-size: 1.2rem; }
.daily-equipment-removal-dialog header button { min-width: 44px; min-height: 44px; border: 0; background: transparent; color: var(--ink); font-size: 1.6rem; }
.daily-equipment-removal-dialog form, .daily-equipment-removal-dialog form label { display: grid; gap: 9px; }
.daily-equipment-removal-dialog form { gap: 15px; }
.daily-equipment-removal-dialog form label { font-size: .82rem; font-weight: 800; }
.daily-equipment-removal-dialog select, .daily-equipment-removal-dialog input { min-height: 46px; width: 100%; font-size: 1rem; }
.daily-equipment-removal-dialog [hidden] { display: none; }
.daily-equipment-removal-hint { margin: 0; color: var(--muted); font-size: .75rem; }
.daily-equipment-removal-error { margin: 0; overflow-wrap: anywhere; color: #8a3429; font-weight: 800; }
.daily-report-week-total { display: grid; gap: 2px; padding: 6px 9px; border: 1px solid #8fa298; border-radius: 9px; background: var(--paper); color: var(--forest-800); text-align: right; }.daily-report-week-total strong { font-size: .75rem !important; }.daily-report-week-total small { margin: 0 !important; color: var(--muted) !important; font-size: .5rem !important; }.daily-report-weekly-backdrop { position: fixed; z-index: 68; inset: 0; background: rgba(4,10,15,.66); backdrop-filter: blur(2px); }.daily-report-weekly-sheet { position: fixed; z-index: 69; left: 50%; bottom: 0; width: min(560px, 100vw); max-height: min(760px, 88vh); overflow: auto; padding: 19px; transform: translateX(-50%); border-radius: 20px 20px 0 0; background: var(--paper); color: var(--ink); box-shadow: 0 -18px 55px rgba(0,0,0,.3); }.daily-report-weekly-sheet > header { display: flex; align-items: start; justify-content: space-between; gap: 12px; }.daily-report-weekly-sheet h2 { margin: 3px 0 0; font-family: Georgia, serif; font-size: 1.2rem; }.daily-report-weekly-sheet > header > button { width: 38px; height: 38px; border: 0; border-radius: 50%; background: var(--cream); color: var(--ink); font-size: 1.2rem; }.daily-report-weekly-summary { display: grid; gap: 3px; margin: 15px 0 11px; padding: 12px; border-radius: 11px; background: var(--forest-100); }.daily-report-weekly-summary strong { color: var(--forest-800); font-size: 1rem; }.daily-report-weekly-summary span { color: var(--muted); font-size: .62rem; }.daily-report-weekly-entries { display: grid; gap: 7px; }.daily-report-weekly-entries article { display: flex; justify-content: space-between; gap: 12px; padding: 11px; border: 1px solid var(--line); border-radius: 10px; }.daily-report-weekly-entries article > div:last-child { display: grid; justify-items: end; gap: 5px; }.daily-report-weekly-entries strong, .daily-report-weekly-entries span, .daily-report-weekly-entries small { display: block; }.daily-report-weekly-entries article > div:first-child > strong { font-size: .7rem; }.daily-report-weekly-entries article > div:first-child > span { margin-top: 3px; color: var(--forest-800); font-size: .64rem; }.daily-report-weekly-entries article > div:first-child > small { margin-top: 3px; color: var(--muted); font-size: .56rem; }.daily-report-weekly-entries > p { color: var(--muted); font-size: .68rem; text-align: center; }
.daily-report-no-equipment { display: flex !important; align-items: center; gap: 9px !important; padding: 11px 12px; border: 1px solid var(--line); border-radius: 11px; background: var(--cream); }.daily-report-no-equipment input { width: 20px; height: 20px; min-height: 20px; flex: 0 0 auto; padding: 0; }.daily-report-no-equipment span { font-size: .7rem; font-weight: 800; }
.daily-report-photo-actions { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; }.daily-report-photo-grid { display: grid; gap: 11px; }.daily-report-photo-card { display: grid; grid-template-columns: minmax(130px, .7fr) 1.3fr; overflow: hidden; border: 1px solid var(--line); border-radius: 13px; background: var(--paper); }.daily-report-photo-card.state-available { border-color: #5d9675; }.daily-report-photo-card.state-failed { border-color: #b85e50; }.daily-report-photo-preview { position: relative; min-height: 150px; background: #dce2de; }.daily-report-photo-preview img { width: 100%; height: 100%; min-height: 150px; display: block; object-fit: cover; }.daily-report-photo-preview > span { position: absolute; left: 7px; bottom: 7px; padding: 4px 7px; border-radius: 999px; background: rgba(12,27,20,.82); color: white; font-size: .52rem; font-weight: 850; }.daily-report-photo-details { display: grid; align-content: center; gap: 6px; min-width: 0; padding: 12px; }.daily-report-photo-details > strong { overflow: hidden; font-size: .72rem; text-overflow: ellipsis; white-space: nowrap; }.daily-report-photo-details > small { color: var(--muted); font-size: .57rem; }.daily-report-photo-details > div:last-child { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 3px; }.daily-report-photo-details button { min-height: 35px; padding: 5px 8px; font-size: .57rem; }.daily-report-photo-progress { height: 6px; overflow: hidden; border-radius: 999px; background: #dbe1dd; }.daily-report-photo-progress i { display: block; height: 100%; border-radius: inherit; background: var(--forest-650); transition: width .2s ease; }
.daily-report-photo-note { max-height: 100px; overflow: auto; padding: 8px; border-left: 3px solid var(--forest-650); border-radius: 0 7px 7px 0; background: var(--cream); color: var(--ink); font-size: .62rem; line-height: 1.4; }.daily-report-photo-note > strong { display: block; margin-bottom: 3px; color: var(--forest-800); font-size: .52rem; text-transform: uppercase; letter-spacing: .05em; }.daily-report-photo-note p { margin: 3px 0; }.daily-report-photo-note ul, .daily-report-photo-note ol { margin: 3px 0; padding-left: 18px; }
.daily-report-photo-preview > span { display: inline-flex; align-items: center; gap: 5px; }.daily-report-photo-spinner { width: 10px; height: 10px; border: 2px solid rgba(255,255,255,.45); border-top-color: white; border-radius: 50%; animation: daily-photo-spin .7s linear infinite; }.daily-report-photo-progress.indeterminate i { width: 38% !important; animation: daily-photo-progress 1.1s ease-in-out infinite; }@keyframes daily-photo-spin { to { transform: rotate(360deg); } }@keyframes daily-photo-progress { from { transform: translateX(-110%); } to { transform: translateX(280%); } }
.daily-photo-editor-shell { position: fixed; z-index: 80; inset: 0; display: grid; place-items: center; padding: max(8px, env(safe-area-inset-top)) max(8px, env(safe-area-inset-right)) max(8px, env(safe-area-inset-bottom)) max(8px, env(safe-area-inset-left)); background: rgba(4,10,15,.78); }.daily-photo-editor { width: min(960px, 100%); max-height: 100%; display: grid; grid-template-rows: auto auto minmax(0, 1fr) auto; overflow: hidden; border-radius: 17px; background: var(--paper); color: var(--ink); box-shadow: 0 24px 75px rgba(0,0,0,.45); }.daily-photo-editor > header { display: flex; align-items: start; justify-content: space-between; gap: 12px; padding: 13px 15px; border-bottom: 1px solid var(--line); }.daily-photo-editor h2 { margin: 2px 0 0; font-family: Georgia, serif; font-size: 1.1rem; }.daily-photo-editor > header button { width: 36px; height: 36px; border: 0; border-radius: 50%; background: var(--cream); color: var(--ink); font-size: 1.15rem; }.daily-photo-editor-toolbar { display: flex; flex-wrap: wrap; align-items: end; gap: 7px; padding: 9px 12px; border-bottom: 1px solid var(--line); background: var(--cream); }.daily-photo-editor-toolbar label { display: grid; gap: 3px; font-size: .55rem; font-weight: 800; }.daily-photo-editor-toolbar select { min-height: 35px; padding: 5px 7px; border: 1px solid var(--line); border-radius: 7px; font-size: 13px; }.daily-photo-editor-toolbar input[type="color"] { width: 42px; height: 35px; padding: 2px; }.daily-photo-editor-toolbar input[type="range"] { width: 90px; }.daily-photo-editor-toolbar button { min-height: 35px; padding: 5px 9px; font-size: .58rem; }.daily-photo-editor-canvas-wrap { min-height: 0; overflow: auto; display: grid; place-items: center; padding: 10px; background: #242b2f; }.daily-photo-editor canvas { max-width: 100%; max-height: 100%; background: white; touch-action: none; cursor: crosshair; }.daily-photo-editor > p { margin: 0; padding: 8px 12px; color: var(--muted); font-size: .58rem; }
.daily-photo-editor.robust { width: min(1080px, 100%); }.daily-photo-editor-layout { min-height: 0; display: grid; grid-template-columns: minmax(0, 1.55fr) minmax(230px, .65fr); overflow: hidden; }.daily-photo-editor-notes { overflow-y: auto; padding: 13px; border-left: 1px solid var(--line); background: var(--paper); }.daily-photo-editor-notes h3 { margin: 0 0 7px; font-size: .72rem; }.daily-photo-editor-notes h3:not(:first-child) { margin-top: 15px; }.daily-photo-note-toolbar { display: flex; gap: 4px; padding: 5px; border: 1px solid var(--line); border-bottom: 0; border-radius: 8px 8px 0 0; background: var(--cream); }.daily-photo-note-toolbar button { min-width: 32px; min-height: 30px; padding: 3px 6px; border: 1px solid var(--line); border-radius: 5px; background: var(--paper); color: var(--ink); font-size: .6rem; }.daily-photo-note-editor { min-height: 110px; max-height: 230px; overflow: auto; resize: vertical; padding: 9px; border: 1px solid var(--line); border-radius: 0 0 8px 8px; background: white; color: var(--ink); font-size: 14px; line-height: 1.4; }.daily-photo-text-layers { display: flex; flex-wrap: wrap; gap: 5px; margin-bottom: 8px; }.daily-photo-text-layers button { min-height: 31px; padding: 4px 7px; border: 1px solid var(--line); border-radius: 6px; background: var(--cream); color: var(--ink); font-size: .56rem; }.daily-photo-text-layers button.selected { border-color: var(--forest-650); background: var(--forest-100); }.daily-photo-text-layers > span, .daily-photo-editor-notes > p { color: var(--muted); font-size: .58rem; line-height: 1.4; }.daily-photo-editor-notes > label { display: grid; gap: 5px; font-size: .6rem; font-weight: 800; }.daily-photo-editor-notes textarea { width: 100%; padding: 8px; border: 1px solid var(--line); border-radius: 8px; font: inherit; font-size: 14px; resize: vertical; }
.daily-report-generated-line { margin: -5px 0 0; padding: 10px 12px; border-left: 3px solid #2d7655; border-radius: 0 9px 9px 0; background: #e8f2ec; color: #28513f; font-size: .7rem; line-height: 1.45; }.daily-report-generated-line strong { display: block; margin-bottom: 3px; font-size: .57rem; text-transform: uppercase; letter-spacing: .06em; }.daily-report-generated-line.delay { border-left-color: #a66d20; background: #fff2dd; color: #704a18; }
.daily-report-work-status { display: flex; flex-wrap: wrap; gap: 11px 18px; margin: 0; padding: 12px; border: 1px solid var(--line); border-radius: 12px; }.daily-report-work-status legend { padding: 0 5px; font-size: .7rem; font-weight: 850; }.daily-report-work-status label { display: flex; align-items: center; gap: 6px; font-size: .72rem; font-weight: 700; }.daily-report-work-status input { width: 19px; min-height: 19px; height: 19px; padding: 0; }
.daily-report-field-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 11px; }.daily-report-form-actions { display: grid; grid-template-columns: 1fr 1.25fr; gap: 8px; margin: 3px 0 0; padding: 10px 0 0; }
.daily-report-pending-body { display: grid; gap: 13px; padding: 18px; }.daily-report-pending-body[hidden] { display: none; }.daily-report-pending-body > p { margin: 0; color: var(--muted); font-size: .72rem; line-height: 1.5; }.daily-report-pending-body > button { justify-self: start; }
.daily-report-placeholder-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; }.daily-report-placeholder-grid article { padding: 11px; border-radius: 11px; background: var(--cream); }.daily-report-placeholder-grid strong, .daily-report-placeholder-grid span { display: block; }.daily-report-placeholder-grid strong { color: var(--forest-800); font-size: .75rem; }.daily-report-placeholder-grid span { margin-top: 3px; color: var(--muted); font-size: .58rem; }
.daily-report-gantt-backdrop { position: fixed; z-index: 48; inset: 0; background: rgba(4,10,15,.72); backdrop-filter: blur(3px); }
.daily-report-gantt-frame { min-width: 0; overflow: hidden; border: 1px solid var(--line); border-radius: 13px; background: var(--surface); }
.daily-report-gantt-frame.expanded { position: fixed; z-index: 49; inset: max(6px, env(safe-area-inset-top)) max(6px, env(safe-area-inset-right)) max(6px, env(safe-area-inset-bottom)) max(6px, env(safe-area-inset-left)); display: grid; grid-template-rows: auto minmax(0, 1fr) auto; border-radius: 17px; box-shadow: 0 22px 70px rgba(0,0,0,.42); }
.daily-report-gantt-toolbar { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 11px 12px; border-bottom: 1px solid var(--line); background: var(--forest-950); color: white; }.daily-report-gantt-toolbar strong, .daily-report-gantt-toolbar small { display: block; }.daily-report-gantt-toolbar strong { font-size: .72rem; }.daily-report-gantt-toolbar small { margin-top: 3px; color: #b9cbc2; font-size: .56rem; }.daily-report-gantt-toolbar button { min-height: 36px; flex: 0 0 auto; border-color: #6f8d80; color: white; font-size: .62rem; }
.daily-report-gantt-scroll { min-height: 0; overflow: auto; background: #f6f7f4; overscroll-behavior: contain; scrollbar-gutter: stable; }.daily-report-gantt-scroll:focus-visible { outline: 3px solid #d18a24; outline-offset: -3px; }
.daily-report-gantt-grid { position: relative; width: calc(210px + var(--timeline-width)); min-width: 100%; }
.daily-report-gantt-header, .daily-report-gantt-row { display: grid; grid-template-columns: 210px var(--timeline-width); }
.daily-report-gantt-header { position: sticky; z-index: 5; top: 0; height: 35px; background: #e2e8e3; color: var(--forest-800); font-size: .55rem; font-weight: 900; text-transform: uppercase; }
.daily-report-gantt-header > div:first-child { position: sticky; z-index: 7; left: 0; display: flex; align-items: center; padding: 0 10px; border-right: 1px solid #bdc9c0; background: #dbe4dd; }
.daily-report-gantt-header > div:last-child { position: relative; overflow: hidden; }.daily-report-gantt-header > div:last-child span { position: absolute; top: 10px; width: 32px; text-align: center; }
.daily-report-gantt-row { min-height: 78px; border-top: 1px solid #d7ddd8; }
.daily-report-gantt-task { position: sticky; z-index: 3; left: 0; display: grid; grid-template-columns: 22px 1fr; gap: 7px; align-items: center; padding: 7px 9px; border-right: 1px solid #bdc9c0; background: var(--paper); }.daily-report-gantt-task > span { color: var(--muted); font-size: .55rem; }.daily-report-gantt-task strong, .daily-report-gantt-task small { display: block; }.daily-report-gantt-task strong { overflow: hidden; font-size: .65rem; text-overflow: ellipsis; white-space: nowrap; }.daily-report-gantt-task small { margin-top: 2px; color: var(--muted); font-size: .52rem; }.daily-report-gantt-task em { display: inline-block; margin-top: 3px; color: var(--forest-800); font-size: .49rem; font-style: normal; font-weight: 850; }
.daily-report-task-status { display: flex; gap: 4px; margin-top: 5px; }.daily-report-task-status button { min-height: 25px; padding: 3px 6px; border: 1px solid #8da096; border-radius: 6px; background: transparent; color: #37614d; font-size: .48rem; font-weight: 850; }.daily-report-task-status button.selected { border-color: #2d6a50; background: #d8eadf; }.daily-report-task-status button.behind { color: #7c4c1a; }.daily-report-task-status button.behind.selected { border-color: #9f6523; background: #ffebcc; }
.daily-report-gantt-track { position: relative; min-height: 78px; background: #f9faf7; }.daily-report-gantt-track > i { position: absolute; top: 0; bottom: 0; width: 1px; background: #e1e5e1; }.daily-report-gantt-track > i:nth-child(7n + 1) { background: #c8d0c9; }
.daily-report-gantt-bar { position: absolute; z-index: 1; top: 27px; height: 24px; overflow: hidden; padding: 0; border: 1px solid #315f4c; border-radius: 5px; background: #5c9478; }.daily-report-gantt-bar b { display: block; height: 100%; background: #24503e; }.daily-report-gantt-bar.complete, .daily-report-gantt-bar.on-track { border-color: #426f59; background: #70a98b; }.daily-report-gantt-bar.in-progress { border-color: #8a641d; background: #e0b85f; }.daily-report-gantt-bar.in-progress b { background: #a56f19; }.daily-report-gantt-bar.upcoming { border-color: #74817a; background: #aab4ae; }.daily-report-gantt-bar.upcoming b { background: #68756e; }.daily-report-gantt-bar.behind { border-color: #8e3d2e; background: #d97a65; }.daily-report-gantt-bar.behind b { background: #9c3f2f; }
.daily-report-gantt-dependencies { position: absolute; z-index: 2; overflow: visible; pointer-events: none; }.daily-report-gantt-dependencies path { fill: none; stroke: #384d43; stroke-width: 1.5; vector-effect: non-scaling-stroke; }.daily-report-gantt-dependencies marker path { fill: #384d43; stroke: none; }.daily-report-gantt-dependencies text { fill: #5b4430; paint-order: stroke; stroke: #f9faf7; stroke-width: 3px; font-size: 9px; font-weight: 850; }
.daily-report-gantt-legend { display: flex; flex-wrap: wrap; gap: 12px; padding: 8px 11px; border-top: 1px solid var(--line); background: var(--paper); color: var(--muted); font-size: .53rem; }.daily-report-gantt-legend span { display: flex; align-items: center; gap: 5px; }.daily-report-gantt-legend i { width: 12px; height: 7px; border-radius: 2px; background: #70a98b; }.daily-report-gantt-legend i.in-progress { background: #e0b85f; }.daily-report-gantt-legend i.upcoming { background: #aab4ae; }
.daily-report-schedule-empty { padding: 18px; color: var(--muted); font-size: .72rem; }
.daily-report-status-backdrop { position: fixed; z-index: 58; inset: 0; background: rgba(4,10,15,.65); backdrop-filter: blur(2px); }
.daily-report-status-dialog { position: fixed; z-index: 59; left: 50%; top: 50%; width: min(430px, calc(100vw - 30px)); padding: 22px; transform: translate(-50%, -50%); border-radius: 18px; background: var(--paper); color: var(--ink); box-shadow: 0 24px 70px rgba(0,0,0,.42); }.daily-report-status-dialog h2 { font-family: Georgia, serif; font-size: 1.2rem; }.daily-report-status-dialog > p:not(.section-kicker) { color: var(--muted); font-size: .7rem; line-height: 1.45; }.daily-report-status-dialog label { display: grid; gap: 6px; font-size: .72rem; font-weight: 800; }.daily-report-status-dialog textarea { width: 100%; padding: 10px; border: 1px solid var(--line); border-radius: 10px; font: inherit; font-size: 16px; }.daily-report-status-dialog form > div { display: grid; grid-template-columns: 1fr 1.2fr; gap: 8px; margin-top: 14px; }
.daily-schedule-task-backdrop { position: fixed; z-index: 72; inset: 0; background: rgba(4,10,15,.7); backdrop-filter: blur(2px); }.daily-schedule-task-sheet { position: fixed; z-index: 73; left: 50%; bottom: 0; width: min(620px, 100vw); max-height: min(860px, 92dvh); overflow: hidden; transform: translateX(-50%); border-radius: 20px 20px 0 0; background: var(--paper); color: var(--ink); box-shadow: 0 -20px 60px rgba(0,0,0,.35); }.daily-schedule-task-sheet > header { display: flex; align-items: start; justify-content: space-between; gap: 12px; padding: 17px 18px; border-bottom: 1px solid var(--line); background: var(--forest-950); color: white; }.daily-schedule-task-sheet h2 { margin: 3px 0 0; font-family: Georgia, serif; font-size: 1.15rem; }.daily-schedule-task-sheet > header button { width: 38px; height: 38px; flex: 0 0 auto; border: 0; border-radius: 50%; background: rgba(255,255,255,.14); color: white; font-size: 1.2rem; }.daily-schedule-task-body { max-height: calc(92dvh - 74px); display: grid; gap: 16px; overflow-y: auto; padding: 17px; }.daily-schedule-task-body dl { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 7px; margin: 0; }.daily-schedule-task-body dl > div { padding: 10px; border-radius: 10px; background: var(--cream); }.daily-schedule-task-body dt { color: var(--muted); font-size: .55rem; font-weight: 800; text-transform: uppercase; }.daily-schedule-task-body dd { margin: 3px 0 0; color: var(--forest-800); font-size: .7rem; font-weight: 850; }.daily-schedule-task-body h3 { margin: 0 0 7px; font-size: .76rem; }.daily-schedule-task-body section > p { margin: 0; color: var(--muted); font-size: .65rem; }.daily-schedule-task-history { display: grid; gap: 7px; margin: 0; padding: 0; list-style: none; }.daily-schedule-task-history li { padding: 10px; border: 1px solid var(--line); border-radius: 9px; font-size: .66rem; line-height: 1.4; }.daily-schedule-task-history li small { display: block; margin-top: 4px; color: var(--muted); font-size: .55rem; }.daily-schedule-task-history.requests li > span { float: right; padding: 3px 6px; border-radius: 999px; background: var(--forest-100); color: var(--forest-800); font-size: .5rem; font-weight: 850; }.daily-schedule-task-history.requests p { margin: 6px 0; }.daily-schedule-update-request { border: 1px solid var(--line); border-radius: 12px; background: var(--cream); }.daily-schedule-update-request summary { padding: 13px; color: var(--forest-800); cursor: pointer; font-size: .72rem; font-weight: 900; }.daily-schedule-update-request form { display: grid; gap: 11px; padding: 0 13px 13px; }.daily-schedule-update-request label { display: grid; gap: 5px; font-size: .65rem; font-weight: 800; }.daily-schedule-update-request input, .daily-schedule-update-request select, .daily-schedule-update-request textarea { width: 100%; min-height: 44px; padding: 9px; border: 1px solid var(--line); border-radius: 9px; background: white; color: var(--ink); font: inherit; font-size: 16px; }.daily-schedule-update-request textarea { resize: vertical; }.daily-schedule-update-request form > div { display: grid; grid-template-columns: 1fr 1.3fr; gap: 8px; }.daily-schedule-view-only { padding: 11px; border-radius: 9px; background: var(--cream); }.daily-report-gantt-task[data-open-schedule-task] { cursor: pointer; }.daily-report-gantt-task[data-open-schedule-task]:focus-visible { outline: 3px solid #d18a24; outline-offset: -3px; }
.daily-report-start-check { position: fixed; z-index: 74; left: 50%; top: 50%; width: min(460px, calc(100vw - 28px)); max-height: 86dvh; overflow: auto; padding: 22px; transform: translate(-50%,-50%); border-radius: 18px; background: var(--paper); color: var(--ink); box-shadow: 0 24px 70px rgba(0,0,0,.42); }.daily-report-start-check h2 { margin: 4px 0 10px; font-family: Georgia,serif; font-size: 1.2rem; }.daily-report-start-check > p:not(.section-kicker) { color: var(--muted); font-size: .7rem; line-height: 1.45; }.daily-report-start-check ul { display: grid; gap: 7px; margin: 12px 0; padding: 0; list-style: none; }.daily-report-start-check li { display: flex; justify-content: space-between; gap: 10px; padding: 10px; border: 1px solid var(--line); border-radius: 9px; }.daily-report-start-check li strong { font-size: .68rem; }.daily-report-start-check li span { color: var(--muted); font-size: .58rem; text-align: right; }.daily-report-start-check > div { display: grid; grid-template-columns: 1fr 1.35fr; gap: 8px; margin-top: 15px; }
.daily-safety-form { gap: 17px; }.daily-safety-status { display: flex; justify-content: space-between; gap: 10px; padding: 11px; border-radius: 11px; background: #fff0d8; }.daily-safety-status.submitted { background: var(--forest-100); }.daily-safety-status strong { font-size: .7rem; }.daily-safety-status span { color: var(--muted); font-size: .58rem; text-align: right; }.daily-safety-checklist { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 7px; margin: 0; padding: 12px; border: 1px solid var(--line); border-radius: 12px; }.daily-safety-checklist legend { padding: 0 5px; font-size: .72rem; font-weight: 900; }.daily-safety-checklist label { display: flex; align-items: center; gap: 7px; min-height: 42px; padding: 7px; border-radius: 8px; background: var(--cream); font-size: .61rem; }.daily-safety-checklist input { width: 19px; height: 19px; min-height: 19px; flex: 0 0 auto; padding: 0; }.daily-safety-signatures { display: grid; gap: 10px; }.daily-safety-signatures h3 { margin: 0; font-size: .78rem; }.daily-safety-signatures > div > p { margin: 3px 0 0; color: var(--muted); font-size: .6rem; }.daily-safety-signature-card { overflow: hidden; border: 1px solid var(--line); border-radius: 11px; background: var(--cream); }.daily-safety-signature-card > header { padding: 9px 11px; }.daily-safety-signature-card > header strong, .daily-safety-signature-card > header small { display: block; }.daily-safety-signature-card > header strong { font-size: .72rem; }.daily-safety-signature-card > header small { margin-top: 2px; color: var(--muted); font-size: .55rem; }.daily-safety-signature-card canvas { width: 100%; height: 132px; display: block; border-block: 1px solid var(--line); background: white; touch-action: none; cursor: crosshair; }.daily-safety-signature-card canvas[aria-disabled="true"] { background: #eef1ee; cursor: default; }.daily-safety-signature-card footer { display: flex; align-items: center; justify-content: space-between; gap: 9px; padding: 8px 10px; }.daily-safety-signature-card footer span { color: var(--muted); font-size: .58rem; }.daily-safety-signature-card footer button { min-height: 31px; padding: 4px 8px; border: 1px solid #a85e54; border-radius: 7px; background: transparent; color: #7f2e25; font-size: .55rem; }.daily-safety-signature-card.preparer { border-left: 4px solid var(--forest-650); }
.daily-safety-extras { display: grid; gap: 10px; padding: 13px; border: 1px solid var(--line); border-radius: 12px; background: var(--cream); }.daily-safety-extras h3 { margin: 0; font-size: .76rem; }.daily-safety-extras > div > p { margin: 3px 0 0; color: var(--muted); font-size: .59rem; }.daily-safety-talk-list, .daily-safety-material-list { display: grid; gap: 7px; }.daily-safety-talk-list article, .daily-safety-material-list article { display: flex; align-items: center; justify-content: space-between; gap: 9px; padding: 9px; border: 1px solid var(--line); border-radius: 9px; background: var(--paper); }.daily-safety-talk-list strong, .daily-safety-talk-list small, .daily-safety-material-list strong, .daily-safety-material-list small { display: block; }.daily-safety-talk-list strong, .daily-safety-material-list strong { font-size: .66rem; }.daily-safety-talk-list small, .daily-safety-material-list small, .daily-safety-material-list > p { margin-top: 3px; color: var(--muted); font-size: .55rem; }.daily-safety-talk-list button, .daily-safety-material-list button { min-height: 34px; flex: 0 0 auto; padding: 5px 8px; font-size: .55rem; }.daily-safety-material-list button { border: 0; background: transparent; color: #8a3429; font-weight: 800; }
.daily-safety-evidence-heading [data-safety-evidence-status] { padding: 8px 10px; border-radius: 8px; background: #fff3dd; color: #6b4919; font-size: .78rem; font-weight: 800; }
.daily-safety-evidence-heading [data-safety-evidence-status].complete { background: #e2f1e7; color: #205b3b; }
.daily-safety-video { overflow: hidden; border: 1px solid var(--line); border-radius: 12px; background: #08130f; color: #fff; }.daily-safety-video > header { display: flex; align-items: center; justify-content: space-between; gap: 10px; padding: 10px 12px; }.daily-safety-video > header strong, .daily-safety-video > header small { display: block; }.daily-safety-video > header strong { font-size: .7rem; }.daily-safety-video > header small { margin-top: 2px; color: #c8d4cf; font-size: .55rem; }.daily-safety-video > header > div { display: flex; gap: 6px; }.daily-safety-video > header button { min-height: 32px; padding: 5px 8px; border-color: #7e9189; color: #fff; font-size: .54rem; }.daily-safety-video-frame { position: relative; width: 100%; aspect-ratio: 16 / 9; background: #000; }.daily-safety-video-frame iframe, #daily-safety-youtube-player { width: 100%; height: 100%; border: 0; }.daily-safety-video:fullscreen { display: flex; flex-direction: column; width: 100vw; height: 100vh; border: 0; border-radius: 0; }.daily-safety-video:fullscreen .daily-safety-video-frame { flex: 1; aspect-ratio: auto; }
.budget-summary-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 8px; margin-bottom: 20px; }
.budget-summary-grid article { padding: 13px; border: 1px solid var(--line); border-radius: 12px; background: var(--cream); }
.budget-summary-grid small, .budget-summary-grid strong { display: block; }
.budget-summary-grid small { color: var(--muted); font-size: .61rem; }.budget-summary-grid strong { margin-top: 5px; color: var(--forest-800); font-size: .9rem; }
.project-section-heading { display: flex; align-items: end; justify-content: space-between; gap: 10px; margin-bottom: 11px; }
.project-section-heading h3 { margin: 0; font-family: Georgia, serif; font-size: 1.15rem; }
.project-section-heading > span { color: var(--muted); font-size: .65rem; font-weight: 750; }
.project-data-table-wrap { overflow-x: auto; border: 1px solid var(--line); border-radius: 13px; -webkit-overflow-scrolling: touch; }
.project-data-table { width: 100%; min-width: 760px; border-collapse: collapse; font-size: .7rem; }
.project-data-table th { padding: 9px 10px; background: var(--forest-100); color: var(--forest-800); font-size: .59rem; text-align: left; text-transform: uppercase; white-space: nowrap; }
.project-data-table td { padding: 10px; border-top: 1px solid var(--line); color: var(--muted); white-space: nowrap; font-variant-numeric: tabular-nums; }
.project-data-table td:nth-child(2) { white-space: normal; }.project-data-table button { padding: 0; border: 0; background: transparent; color: var(--forest-800); font-weight: 850; text-decoration: underline; }
.budget-sheet-backdrop { position: fixed; z-index: 40; inset: 0; background: rgba(6,18,13,.5); backdrop-filter: blur(2px); }
.budget-detail-sheet { position: fixed; z-index: 41; left: 0; right: 0; bottom: 0; max-height: 88dvh; overflow-y: auto; padding: 9px 20px calc(24px + env(safe-area-inset-bottom)); border-radius: 22px 22px 0 0; background: var(--paper); color: var(--ink); box-shadow: 0 -16px 45px rgba(6,18,13,.25); }
.budget-detail-sheet .sheet-heading h2 { max-width: 620px; font-size: 1.25rem; }
.sheet-back-link { margin: 0 0 6px !important; width: auto !important; height: auto !important; padding: 0 !important; border-radius: 0 !important; background: transparent !important; color: var(--forest-650) !important; font-size: .68rem !important; font-weight: 800; }
.detail-metric-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 8px; margin: 17px 0; }
.detail-metric-grid article { padding: 12px; border: 1px solid var(--line); border-radius: 12px; background: var(--cream); }
.detail-metric-grid small, .detail-metric-grid strong { display: block; }.detail-metric-grid small { color: var(--muted); font-size: .61rem; }.detail-metric-grid strong { margin-top: 4px; color: var(--forest-800); font-size: .86rem; }
.detail-progress-label { display: flex; justify-content: space-between; color: var(--muted); font-size: .67rem; }.detail-progress-label strong { color: var(--forest-800); }.detail-progress { margin-bottom: 20px; }
.change-order-list { display: grid; gap: 8px; }.change-order-list button { width: 100%; display: flex; align-items: center; justify-content: space-between; gap: 10px; padding: 12px; border: 1px solid var(--line); border-radius: 12px; background: transparent; color: var(--ink); text-align: left; }.change-order-list strong, .change-order-list small { display: block; }.change-order-list strong { font-size: .73rem; }.change-order-list small { margin-top: 4px; color: var(--muted); font-size: .62rem; }.change-order-list > p { color: var(--muted); font-size: .7rem; }
.transaction-heading { margin-top: 20px; }.cost-composition, .change-order-lines { display: grid; }.cost-composition div, .change-order-lines > div { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 10px 0; border-bottom: 1px solid var(--line); font-size: .68rem; }.cost-composition div > span { color: var(--muted); }.change-order-lines span > strong, .change-order-lines span > small { display: block; }.change-order-lines span > small { margin-top: 3px; color: var(--muted); font-size: .6rem; }
.change-order-status-row { display: flex; align-items: center; justify-content: space-between; margin-top: 13px; }.change-order-status { padding: 5px 8px; border-radius: 999px; background: var(--forest-100); color: var(--forest-800); font-size: .62rem; font-weight: 850; }.change-order-status.pending { background: #fff0d8; color: #825015; }.change-order-status-row small, .detail-reference { color: var(--muted); font-size: .65rem; }.detail-reference { margin: 0 0 19px; }
.cost-code-invoices { display: grid; gap: 8px; }
.cost-code-invoices > button { display: grid; grid-template-columns: auto 1fr auto; align-items: center; gap: 10px; width: 100%; padding: 11px; border: 1px solid var(--line); border-radius: 12px; background: transparent; color: var(--ink); text-align: left; }
.invoice-file-icon { display: grid; place-items: center; width: 38px; height: 42px; border-radius: 7px 7px 10px 7px; background: var(--forest-100); color: var(--forest-800); font-size: .55rem; font-weight: 900; }
.cost-code-invoices strong, .cost-code-invoices small, .cost-code-invoices em { display: block; }
.cost-code-invoices > button > span:nth-child(2) > strong { font-size: .7rem; }
.cost-code-invoices > button > span:nth-child(2) > small { margin-top: 3px; color: var(--muted); font-size: .59rem; }
.cost-code-invoices em { justify-self: start; margin-top: 4px; color: var(--forest-650); font-size: .57rem; font-style: normal; font-weight: 800; }
.invoice-amount { color: var(--ink); font-size: .69rem; font-weight: 850; text-align: right; white-space: nowrap; }
.invoice-amount small { margin-top: 4px; color: var(--forest-650); font-size: .57rem; font-weight: 800; }
.cost-code-invoices > p { color: var(--muted); font-size: .7rem; }
.invoice-viewer-backdrop { position: fixed; z-index: 42; inset: 0; background: rgba(4,10,15,.72); backdrop-filter: blur(3px); }
.invoice-viewer { position: fixed; z-index: 43; inset: max(8px, env(safe-area-inset-top)) max(8px, env(safe-area-inset-right)) max(8px, env(safe-area-inset-bottom)) max(8px, env(safe-area-inset-left)); display: grid; grid-template-rows: auto auto minmax(0, 1fr); overflow: hidden; border-radius: 17px; background: #27313a; color: white; box-shadow: 0 24px 70px rgba(0,0,0,.4); }
.invoice-viewer-header { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 14px 16px; background: var(--forest-950); }
.invoice-viewer-header .section-kicker { color: #a8c9b8; }
.invoice-viewer-header h2 { margin: 0 0 3px; font-family: Georgia, serif; font-size: 1.15rem; }
.invoice-viewer-header small { color: #bdcec5; font-size: .62rem; }
.invoice-viewer-header button { width: 35px; height: 35px; flex: 0 0 auto; border: 1px solid rgba(255,255,255,.2); border-radius: 50%; background: rgba(255,255,255,.1); color: white; font-size: 1.2rem; }
.invoice-viewer-toolbar { display: flex; align-items: center; justify-content: flex-end; gap: 7px; padding: 7px 12px; background: #1d252c; }
.invoice-viewer-toolbar > span { margin-right: auto; color: #c6cdd2; font-size: .61rem; font-weight: 750; }
.invoice-viewer-toolbar button { width: 29px; height: 29px; border: 1px solid #58636c; border-radius: 7px; background: #333e47; color: white; }
.invoice-viewer-toolbar strong { min-width: 40px; font-size: .61rem; text-align: center; }
.invoice-document-stage { overflow: auto; padding: 16px; }
.authorized-invoice-stage { background: #f1f4f2; color: var(--ink); }
.authorized-invoice-document { margin: 0 0 16px; padding: 10px; border-radius: 10px; background: white; }
.authorized-invoice-document h3 { margin: 0 0 8px; overflow-wrap: anywhere; font-size: .8rem; }
.authorized-invoice-document iframe { display: block; width: 100%; min-height: 65vh; border: 0; }
.authorized-invoice-document img { display: block; max-width: 100%; height: auto; margin: 0 auto; }
.synthetic-invoice-document { position: relative; width: min(100%, 760px); min-height: 760px; margin: 0 auto; padding: clamp(24px, 5vw, 52px); overflow: hidden; background: white; color: #222b31; box-shadow: 0 7px 24px rgba(0,0,0,.25); }
.synthetic-watermark { position: absolute; left: 50%; top: 48%; width: 130%; transform: translate(-50%, -50%) rotate(-28deg); color: rgba(169,44,30,.09); font-size: clamp(2rem, 7vw, 4.5rem); font-weight: 950; text-align: center; white-space: nowrap; }
.invoice-document-heading { position: relative; display: flex; align-items: center; justify-content: space-between; gap: 15px; padding-bottom: 22px; border-bottom: 3px solid #244f69; }
.invoice-demo-mark { padding: 12px; border-radius: 9px; background: #244f69; color: white; font-size: .8rem; font-weight: 950; letter-spacing: .12em; }
.invoice-document-heading h3 { margin: 0 0 5px; color: #244f69; font-size: 1.55rem; text-align: right; }
.invoice-document-heading > div:last-child { text-align: right; }
.invoice-address-grid { position: relative; display: grid; grid-template-columns: repeat(2, 1fr); gap: 22px; margin: 28px 0; }
.invoice-address-grid small, .invoice-address-grid strong, .invoice-address-grid span { display: block; }
.invoice-address-grid small, .invoice-meta-grid small { margin-bottom: 5px; color: #71808a; font-size: .58rem; font-weight: 850; letter-spacing: .08em; }
.invoice-address-grid strong { font-size: .75rem; }
.invoice-address-grid span { margin-top: 5px; color: #65717a; font-size: .65rem; line-height: 1.55; }
.invoice-meta-grid { position: relative; display: grid; grid-template-columns: repeat(3, 1fr); gap: 9px; margin-bottom: 28px; padding: 14px; background: #eef3f6; }
.invoice-meta-grid strong { font-size: .66rem; }
.invoice-line-table { position: relative; width: 100%; border-collapse: collapse; font-size: .68rem; }
.invoice-line-table th { padding: 9px; background: #244f69; color: white; text-align: left; }
.invoice-line-table th:last-child, .invoice-line-table td:last-child { text-align: right; }
.invoice-line-table td { padding: 12px 9px; border-bottom: 1px solid #d8dfe3; }
.invoice-total { position: relative; display: flex; justify-content: flex-end; gap: 30px; margin-top: 18px; font-size: .8rem; }
.invoice-total strong { color: #244f69; }
.synthetic-invoice-document footer { position: absolute; left: clamp(24px, 5vw, 52px); right: clamp(24px, 5vw, 52px); bottom: 30px; padding-top: 10px; border-top: 1px solid #d8dfe3; color: #71808a; font-size: .58rem; text-align: center; }
.document-folder-strip { display: flex; gap: 7px; overflow-x: auto; margin-bottom: 12px; }
.document-folder-strip button { padding: 7px 11px; border: 1px solid var(--line); border-radius: 999px; background: transparent; color: var(--muted); font-size: .67rem; font-weight: 800; white-space: nowrap; }
.document-folder-strip button.selected { border-color: var(--forest-650); background: var(--forest-100); color: var(--forest-800); }
.document-folder-strip button.missing-required { border-color: #a32626; background: #fff0ef; color: #8c1717; }
.mobile-document-list { display: grid; gap: 8px; }
.mobile-document-list > button { display: grid; grid-template-columns: auto 1fr auto; align-items: center; gap: 10px; width: 100%; padding: 12px; border: 1px solid var(--line); border-radius: 13px; background: transparent; color: var(--ink); text-align: left; }
.mobile-document-list > button.document-unavailable { border-style: dashed; opacity: .68; }
.document-type { display: grid; place-items: center; width: 38px; height: 42px; border-radius: 7px 7px 10px 7px; background: var(--forest-100); color: var(--forest-800); font-size: .58rem; font-weight: 900; }
.mobile-document-list strong, .mobile-document-list small, .mobile-document-list em { display: block; }.mobile-document-list strong { font-size: .76rem; }.mobile-document-list small { margin-top: 3px; color: var(--muted); font-size: .63rem; }.mobile-document-list em { justify-self: start; margin-top: 5px; padding: 3px 6px; border-radius: 999px; background: var(--cream); color: var(--muted); font-size: .55rem; font-style: normal; }
.project-boundary-note { margin-top: 13px; padding: 10px 12px; border-radius: 11px; background: #fff3df; color: #76531f; font-size: .65rem; line-height: 1.45; }
.document-viewer-backdrop { position: fixed; z-index: 300; inset: 0; background: rgba(4,10,15,.72); backdrop-filter: blur(3px); }
.project-document-viewer { position: fixed; z-index: 301; inset: max(8px, env(safe-area-inset-top)) max(8px, env(safe-area-inset-right)) max(8px, env(safe-area-inset-bottom)) max(8px, env(safe-area-inset-left)); display: grid; grid-template-rows: auto auto minmax(0, 1fr) auto; overflow: hidden; border-radius: 17px; background: #27313a; color: white; box-shadow: 0 24px 70px rgba(0,0,0,.4); }
.project-document-viewer.api-document-viewer { grid-template-rows: auto auto auto minmax(0, 1fr) auto; }
.document-download-status:empty { display: none; }
.document-download-message { margin: 0; padding: 10px 16px; background: #e8f3eb; color: #123a2b; font-size: .9rem; overflow-wrap: anywhere; }
.document-download-message a { color: #074f98; font-weight: 800; text-decoration: underline; }
.document-download-message button { display: inline-block; min-height: 44px; margin: 5px 0; font-size: 1rem; }
.project-document-viewer > header { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 14px 16px; background: var(--forest-950); }
.project-document-viewer > header .section-kicker { color: #a8c9b8; }
.project-document-viewer > header h2 { margin: 0 0 3px; font-family: Georgia, serif; font-size: 1.1rem; }
.project-document-viewer > header small { color: #bdcec5; font-size: .6rem; }
.project-document-viewer > header button { min-width: 64px; min-height: 44px; padding: 8px 12px; flex: 0 0 auto; border: 1px solid rgba(255,255,255,.45); border-radius: 10px; background: rgba(255,255,255,.14); color: white; font-size: .85rem; font-weight: 800; }
.document-viewer-toolbar { display: flex; align-items: center; flex-wrap: wrap; gap: 7px; padding: 7px 12px; background: #1d252c; }
.document-viewer-toolbar .document-state { margin-right: auto; padding: 4px 7px; border-radius: 999px; background: #264d3e; color: #d9f3e4; font-size: .58rem; font-weight: 850; }
.document-viewer-toolbar .document-state.state-quarantined { background: #5b421e; color: #ffe8bd; }
.document-viewer-toolbar > button:not(.secondary-button) { min-width: 44px; min-height: 44px; border: 1px solid #58636c; border-radius: 7px; background: #333e47; color: white; font-size: 1.15rem; }
.document-viewer-toolbar > button:disabled { opacity: .4; }
.document-viewer-toolbar .document-page-label { min-width: 55px; font-size: .85rem; }
.document-viewer-toolbar > .document-fit-button { width: auto; padding: 0 9px; white-space: nowrap; }
.document-viewer-toolbar strong { min-width: 40px; font-size: .61rem; text-align: center; }
.document-viewer-toolbar .secondary-button { min-height: 30px; padding: 5px 10px; border-color: #77858f; color: white; }
.project-document-stage { overflow: auto; padding: 16px; background: #202931; }
.project-document-pdf-page { display: block; max-width: none; margin: 0 auto; background: white; box-shadow: 0 8px 28px rgba(0,0,0,.35); }
.project-document-image { display: block; width: max-content; max-width: none; min-height: 0; margin: 0 auto; background: white; }
.project-document-preview { width: min(760px, 100%); min-height: 100%; margin: auto; transform-origin: top left; }
.project-document-preview.spreadsheet-preview { width: 1120px; min-width: 1120px; margin: 0; }
.spreadsheet-stage { overscroll-behavior: contain; scrollbar-gutter: stable; }
.spreadsheet-stage:focus-visible { outline: 3px solid #8fc5a7; outline-offset: -3px; }
.synthetic-pdf-document, .synthetic-office-document, .synthetic-text-document, .synthetic-spreadsheet { position: relative; min-height: 650px; padding: clamp(25px, 6vw, 58px); background: white; color: #243039; box-shadow: 0 8px 28px rgba(0,0,0,.25); }
.synthetic-pdf-document h3, .synthetic-office-document h3 { margin: 22px 0; color: #214d3b; font-family: Georgia, serif; font-size: 1.65rem; }
.synthetic-document-lines { height: 300px; margin-top: 40px; background: repeating-linear-gradient(#dfe5e2 0 2px, transparent 2px 31px); }
.synthetic-office-document h4 { margin-top: 34px; }
.synthetic-office-document p { line-height: 1.8; }
.synthetic-text-document { margin: 0; overflow: auto; font: .78rem/1.7 ui-monospace, monospace; white-space: pre-wrap; }
.synthetic-spreadsheet { width: 1120px; padding: 34px; }
.synthetic-spreadsheet table { width: 100%; min-width: 1052px; border-collapse: collapse; font-size: .75rem; }
.synthetic-spreadsheet th, .synthetic-spreadsheet td { padding: 10px; border: 1px solid #b8c8bf; text-align: left; }
.synthetic-spreadsheet th { position: sticky; top: 0; z-index: 1; min-width: 115px; background: #214d3b; color: white; white-space: nowrap; }
.synthetic-spreadsheet td { white-space: nowrap; }
.synthetic-plan-image { position: relative; min-height: 600px; overflow: hidden; border: 14px solid white; background: #e7eee7; color: #2e5a48; box-shadow: 0 8px 28px rgba(0,0,0,.25); }
.synthetic-plan-image::before, .synthetic-plan-image::after { content: ""; position: absolute; background: #c6d4ca; }
.synthetic-plan-image::before { inset: 15% 47% 10% 43%; }.synthetic-plan-image::after { inset: 46% 8% 40% 8%; }
.synthetic-plan-image span, .synthetic-plan-image strong, .synthetic-plan-image b, .synthetic-plan-image em { position: absolute; z-index: 1; padding: 7px; border: 2px solid #5d806f; background: rgba(255,255,255,.8); font-size: .68rem; font-style: normal; }
.synthetic-plan-image span { left: 12%; top: 20%; }.synthetic-plan-image strong { left: 50%; top: 6%; transform: translateX(-50%); }.synthetic-plan-image b { right: 11%; bottom: 18%; }.synthetic-plan-image em { left: 9%; bottom: 7%; }
.project-document-viewer > footer { padding: 9px 14px; background: #1d252c; color: #c6cdd2; font-size: .58rem; line-height: 1.4; }
.project-document-viewer > footer button { min-height: 44px; margin-left: 8px; padding: 8px 12px; border: 1px solid #b8d6c7; border-radius: 9px; background: #335e4b; color: white; font: inherit; font-size: .85rem; font-weight: 800; }
.schedule-overview { display: flex; align-items: center; justify-content: space-between; gap: 16px; margin-bottom: 22px; padding: 16px; border-radius: 15px; background: var(--forest-950); color: white; }
.schedule-overview h3 { margin-bottom: 4px; font-family: Georgia, serif; font-size: 1.25rem; }.schedule-overview small { color: #bdcec5; font-size: .65rem; }.schedule-overview .section-kicker { color: #a8c9b8; }
.schedule-ring { width: 64px; height: 64px; display: grid; place-items: center; flex: 0 0 auto; border-radius: 50%; background: conic-gradient(#75bc91 var(--schedule-progress), rgba(255,255,255,.15) 0); position: relative; }.schedule-ring::after { content: ""; position: absolute; inset: 7px; border-radius: 50%; background: var(--forest-950); }.schedule-ring span { position: relative; z-index: 1; font-size: .7rem; font-weight: 900; }
.schedule-list { display: grid; gap: 9px; }.schedule-list article { padding: 12px; border: 1px solid var(--line); border-radius: 12px; }.schedule-task-heading { display: flex; align-items: start; justify-content: space-between; gap: 10px; }.schedule-task-heading strong, .schedule-task-heading small { display: block; }.schedule-task-heading strong { font-size: .76rem; }.schedule-task-heading small, .schedule-list article > small { margin-top: 3px; color: var(--muted); font-size: .6rem; }.task-status { padding: 4px 6px; border-radius: 999px; background: var(--forest-100); color: var(--forest-800); font-size: .56rem; font-weight: 850; white-space: nowrap; }.task-status.upcoming { background: #eeeae2; color: var(--muted); }
.task-progress { height: 6px; overflow: hidden; margin: 10px 0 5px; border-radius: 999px; background: var(--line); }.task-progress i { display: block; height: 100%; border-radius: inherit; background: var(--forest-650); }
.project-gantt-pane { min-width: 0; overflow: hidden; }
.project-gantt-pane.fullscreen { position: fixed; z-index: 180; inset: max(8px, env(safe-area-inset-top)) max(8px, env(safe-area-inset-right)) max(8px, env(safe-area-inset-bottom)) max(8px, env(safe-area-inset-left)); display: flex; flex-direction: column; background: var(--paper); }
.project-gantt-backdrop { position: fixed; z-index: 179; inset: 0; background: rgba(5, 18, 13, .72); }
.project-gantt-controls { display: flex; align-items: end; flex-wrap: wrap; gap: 8px; margin: 12px 0 8px; }
.project-gantt-controls label { display: grid; flex: 1 1 180px; gap: 4px; color: var(--muted); font-size: .69rem; font-weight: 800; }
.project-gantt-controls input { width: 100%; min-height: 42px; padding: 8px 10px; border: 1px solid var(--line); border-radius: 10px; background: var(--paper); color: var(--ink); font-size: 16px; }
.project-gantt-controls button { min-height: 42px; padding: 7px 10px; border: 1px solid var(--line); border-radius: 10px; background: var(--paper); color: var(--forest-800); font-size: .75rem; font-weight: 800; }
.project-gantt-controls button:disabled { opacity: .45; }
.project-gantt-status, .project-gantt-hint, .project-gantt-empty { color: var(--muted); font-size: .73rem; line-height: 1.4; }
.project-gantt-scroll { min-height: 210px; max-height: 520px; overflow: auto; border: 1px solid var(--line); border-radius: 12px; background: var(--paper); overscroll-behavior: contain; touch-action: pan-x pan-y; }
.project-gantt-pane.fullscreen .project-gantt-scroll { flex: 1; max-height: none; }
.project-gantt-grid { position: relative; width: calc(168px + var(--project-gantt-width)); min-width: 100%; }
.project-gantt-header, .project-gantt-row { display: grid; grid-template-columns: 168px var(--project-gantt-width); }
.project-gantt-header { position: sticky; z-index: 7; top: 0; height: 40px; border-bottom: 1px solid var(--line); background: var(--forest-100); }
.project-gantt-label { position: sticky; z-index: 8; left: 0; padding: 10px; border-right: 1px solid var(--line); background: var(--forest-100); font-weight: 850; }
.project-gantt-axis { position: relative; height: 40px; overflow: hidden; }
.project-gantt-date { position: absolute; top: 10px; width: 76px; overflow: hidden; padding-left: 4px; border-left: 1px solid var(--forest-650); color: var(--forest-800); font-size: .67rem; font-weight: 800; text-overflow: ellipsis; white-space: nowrap; }
.project-gantt-row { position: relative; z-index: 2; height: 44px; border-bottom: 1px solid var(--line); }
.project-gantt-task { position: sticky; z-index: 4; left: 0; display: grid; grid-template-columns: 36px minmax(0, 1fr); align-items: center; gap: 4px; width: 168px; padding: 5px 7px; border: 0; border-right: 1px solid var(--line); background: var(--paper); color: var(--ink); text-align: left; }
.project-gantt-task.summary { background: var(--forest-100); }
.project-gantt-task span { color: var(--muted); font-size: .61rem; }.project-gantt-task strong { overflow: hidden; font-size: .7rem; text-overflow: ellipsis; white-space: nowrap; }
.project-gantt-track { position: relative; height: 44px; }
.project-gantt-bar { position: absolute; z-index: 3; top: 13px; height: 18px; overflow: hidden; padding: 0; border: 1px solid var(--forest-800); border-radius: 5px; background: #8ebba4; }
.project-gantt-bar i { display: block; height: 100%; background: var(--forest-800); }.project-gantt-bar.summary { background: var(--forest-650); }.project-gantt-bar.milestone { width: 12px; border-radius: 1px; transform: rotate(45deg); }
.project-gantt-lines, .project-gantt-arrows { position: absolute; left: 168px; top: 40px; pointer-events: none; }.project-gantt-lines { z-index: 0; }.project-gantt-arrows { z-index: 1; overflow: visible; }
.project-gantt-line { position: absolute; top: 0; height: 100%; border-left: 1px solid var(--line); }.project-gantt-line.month { border-left: 2px solid var(--forest-650); }.project-gantt-line.today { border-left: 2px solid #c86436; }
.project-gantt-legend { display: flex; flex-wrap: wrap; gap: 7px 14px; margin-top: 10px; color: var(--muted); font-size: .66rem; }.project-gantt-legend span { display: inline-flex; align-items: center; gap: 5px; }.project-gantt-legend i { display: inline-block; width: 16px; height: 9px; border-radius: 2px; background: #8ebba4; }.project-gantt-legend i.today { width: 2px; height: 13px; border-radius: 0; background: #c86436; }.project-gantt-legend i.progress { background: var(--forest-800); }.project-gantt-legend i.summary { background: var(--forest-650); }
.project-gantt-arrows path { fill: none; stroke: var(--forest-650); stroke-width: 1.5; }.project-gantt-arrows marker path { fill: var(--forest-650); }
.project-gantt-detail-backdrop { position: fixed; z-index: 190; inset: 0; background: rgba(4, 15, 10, .7); }.project-gantt-detail { position: fixed; z-index: 191; left: 50%; bottom: 0; width: min(580px, 100vw); max-height: 85dvh; overflow: auto; transform: translateX(-50%); padding: 18px; border-radius: 18px 18px 0 0; background: var(--paper); color: var(--ink); }
.project-gantt-detail header { display: flex; align-items: start; justify-content: space-between; gap: 12px; }.project-gantt-detail header button { min-width: 42px; min-height: 42px; border: 1px solid var(--line); border-radius: 50%; background: var(--paper); font-size: 1.2rem; }
.project-gantt-detail h2 { margin: 4px 0 16px; font-size: 1.1rem; }.project-gantt-detail h3 { margin-top: 18px; font-size: .88rem; }.project-gantt-detail dl { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; margin: 0; }.project-gantt-detail dl > div { padding: 9px; border-radius: 8px; background: var(--forest-100); }.project-gantt-detail dt { color: var(--muted); font-size: .65rem; }.project-gantt-detail dd { margin: 3px 0 0; font-size: .75rem; font-weight: 800; }.project-gantt-detail li, .project-gantt-detail p { font-size: .75rem; }
.project-access-message { padding: 36px 20px; text-align: center; }.project-access-message > span { font-size: 1.8rem; color: var(--muted); }.project-access-message h3 { margin: 12px 0 6px; font-family: Georgia, serif; }.project-access-message p { max-width: 430px; margin: auto; color: var(--muted); font-size: .75rem; line-height: 1.5; }
.navigation-options { display: grid; gap: 8px; }
.navigation-option { display: grid; grid-template-columns: auto 1fr auto; align-items: center; gap: 11px; width: 100%; min-height: 61px; padding: 9px 11px; border: 1px solid var(--line); border-radius: 13px; background: transparent; color: var(--ink); text-align: left; }
.navigation-option.selected { border-color: var(--forest-650); background: var(--forest-100); }
.navigation-option strong, .navigation-option small { display: block; }
.navigation-option strong { font-size: .78rem; }
.navigation-option small { margin-top: 3px; color: var(--muted); font-size: .66rem; }
.pin-state { min-width: 47px; padding: 5px 8px; border: 1px solid var(--line); border-radius: 999px; color: var(--forest-800); font-size: .64rem; font-weight: 850; text-align: center; }
.navigation-option.selected .pin-state { border-color: var(--forest-650); background: var(--paper); }
.navigation-note { margin-bottom: 0 !important; font-size: .67rem !important; }
.tracking-notice { max-width: 1040px; margin: 0 auto 14px; display: grid; grid-template-columns: auto 1fr; align-items: center; gap: 10px; padding: 13px 15px; border: 1px solid #b9d0df; border-radius: 14px; background: #e8f1f6; color: #244f69; }
.tracking-notice > span:first-child { font-size: 1.2rem; }
.tracking-notice p { margin: 0; }
.tracking-notice strong, .tracking-notice small { display: block; }
.tracking-notice strong { font-size: .77rem; }
.tracking-notice small { margin-top: 2px; font-size: .68rem; line-height: 1.35; }
.tracking-notice > span:last-child { grid-column: 2; font-size: .64rem; font-weight: 750; }
.tracking-toolbar { max-width: 1040px; margin: 0 auto 18px; display: grid; gap: 10px; }
.tracking-search { display: grid; grid-template-columns: auto 1fr; align-items: center; gap: 7px; min-height: 44px; padding: 0 12px; border: 1px solid var(--line); border-radius: 12px; background: var(--paper); }
.tracking-search span { color: var(--muted); font-size: 1.2rem; }
.tracking-search input { width: 100%; min-width: 0; border: 0; outline: 0; background: transparent; color: var(--ink); font: inherit; font-size: .8rem; }
.tracking-filters { display: flex; gap: 7px; overflow-x: auto; padding-bottom: 2px; }
.tracking-filters button { min-height: 35px; padding: 7px 12px; border: 1px solid var(--line); border-radius: 999px; background: var(--paper); color: var(--muted); font-size: .7rem; font-weight: 800; white-space: nowrap; }
.tracking-filters button.selected { border-color: var(--forest-650); background: var(--forest-100); color: var(--forest-800); }
.tracking-filters span.selected { flex: 0 0 auto; padding: 7px 12px; border: 1px solid var(--forest-650); border-radius: 999px; background: var(--forest-100); color: var(--forest-800); font-size: .7rem; font-weight: 800; white-space: nowrap; }
.fleet-map-card, .equipment-section { width: 100%; min-width: 0; max-width: 1040px; margin: 0 auto 18px; padding: 17px; border: 1px solid var(--line); border-radius: 19px; background: var(--paper); box-shadow: var(--shadow); }
.tracking-notice, .tracking-toolbar { width: 100%; min-width: 0; }
.map-heading-actions { display: flex; align-items: center; gap: 8px; }
.expand-map-button { min-height: 35px; display: inline-flex; align-items: center; gap: 6px; padding: 7px 10px; border: 1px solid var(--line); border-radius: 10px; background: var(--paper); color: var(--forest-800); font-size: .68rem; font-weight: 850; white-space: nowrap; }
.expand-map-button > span { font-size: .95rem; line-height: 1; }
.fleet-map { position: relative; height: clamp(220px, 36vw, 350px); overflow: hidden; border: 1px solid #cbd5ce; border-radius: 15px; background-color: #e7eee7; background-image: linear-gradient(rgba(58,91,72,.06) 1px, transparent 1px), linear-gradient(90deg, rgba(58,91,72,.06) 1px, transparent 1px); background-size: 30px 30px; }
.google-fleet-map { background: #e7eee7; }
.fleet-map-canvas { position: absolute; inset: 0; transform-origin: center; transition: transform .18s ease; }
.expanded-map-backdrop { position: fixed; z-index: 33; inset: 0; background: rgba(6,18,13,.62); backdrop-filter: blur(3px); }
.fleet-map-card.map-expanded { position: fixed; z-index: 34; inset: max(10px, env(safe-area-inset-top)) max(10px, env(safe-area-inset-right)) max(10px, env(safe-area-inset-bottom)) max(10px, env(safe-area-inset-left)); max-width: none; margin: 0; display: grid; grid-template-rows: auto minmax(0, 1fr) auto; border-radius: 18px; }
.fleet-map-card.map-expanded .fleet-map { height: 100%; min-height: 0; }
.map-road { position: absolute; display: block; height: 18px; background: #f6f3ea; border-block: 1px solid #d8d2c4; transform-origin: center; }
.road-one { width: 130%; left: -15%; top: 48%; transform: rotate(-8deg); }
.road-two { width: 90%; left: 28%; top: 40%; transform: rotate(61deg); }
.map-site { position: absolute; padding: 4px 6px; border-radius: 5px; background: rgba(255,255,255,.78); color: #587064; font-size: .58rem; font-weight: 800; }
.site-one { left: 17%; top: 24%; }.site-two { right: 13%; bottom: 20%; }.site-three { left: 43%; top: 10%; }
.equipment-marker { position: absolute; z-index: 2; left: var(--map-x); top: var(--map-y); width: 35px; height: 35px; display: grid; place-items: center; transform: translate(-50%, -50%); border: 3px solid white; border-radius: 50% 50% 50% 12%; background: var(--forest-800); color: white; box-shadow: 0 3px 9px rgba(18,42,32,.28); }
.equipment-marker span { font-size: .61rem; font-weight: 900; transform: rotate(0); }
.equipment-marker.alert { background: #bd593b; }
.equipment-marker.stale { outline: 3px dashed #7d5b28; outline-offset: 3px; }
.map-zoom-controls { display: flex; gap: 3px; }
.map-zoom-controls button { min-width: 30px; height: 32px; padding: 0 7px; border: 1px solid var(--line); background: var(--paper); color: var(--forest-800); font-size: .68rem; font-weight: 850; }
.map-zoom-controls button:first-child { border-radius: 8px 0 0 8px; }.map-zoom-controls button:last-child { border-radius: 0 8px 8px 0; }
.map-disclaimer { margin: 9px 2px 0; color: var(--muted); font-size: .64rem; }
.equipment-table-wrap { overflow-x: auto; border: 1px solid var(--line); border-radius: 14px; background: white; -webkit-overflow-scrolling: touch; }
.equipment-table { width: 100%; min-width: 880px; border-collapse: collapse; font-size: .72rem; }
.equipment-table th { padding: 10px 11px; border-bottom: 1px solid var(--line); background: var(--forest-100); color: var(--forest-800); font-size: .61rem; font-weight: 850; letter-spacing: .025em; text-align: left; text-transform: uppercase; white-space: nowrap; }
.equipment-table td { padding: 11px; border-bottom: 1px solid var(--line); color: var(--muted); vertical-align: middle; }
.equipment-table tbody tr:last-child td { border-bottom: 0; }
.equipment-table tbody tr:hover { background: color-mix(in srgb, var(--forest-100) 45%, white); }
.maintenance-page { max-width: 1040px; margin: 0 auto; padding: 18px; color: var(--ink); background: var(--paper); border: 1px solid var(--line); border-radius: 16px; }
.maintenance-page > header { display: flex; justify-content: space-between; align-items: center; gap: 12px; }
.maintenance-page h1 { margin: 0; font-size: clamp(1.4rem, 5vw, 2rem); }
.maintenance-page h2 { margin: 0 0 12px; }
.maintenance-page button, .maintenance-page input, .maintenance-page select, .maintenance-page textarea { min-height: 44px; font-size: 1rem; }
.maintenance-filters { display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: end; gap: 12px; margin: 18px 0 8px; }
.maintenance-filters label, .maintenance-section-filters label, .maintenance-detail label { display: grid; gap: 6px; font-weight: 700; }
.maintenance-filters input, .maintenance-section-filters select, .maintenance-detail input, .maintenance-detail select, .maintenance-detail textarea { width: 100%; max-width: 100%; padding: 9px 10px; border: 1px solid var(--line); border-radius: 9px; background: var(--frame-1); color: var(--ink); }
.maintenance-search-help { margin: 0 0 8px; color: var(--muted); font-size: .9rem; }
.maintenance-equipment-section { margin-top: 18px; border: 1px solid var(--line); border-radius: 12px; padding: 12px; }
.maintenance-equipment-section summary { cursor: pointer; font-size: 1.1rem; font-weight: 800; color: var(--forest-800); }
.maintenance-section-filters { max-width: 280px; margin: 12px 0; }
.maintenance-count { margin: 8px 0; color: var(--muted); }
.maintenance-table-scroll, .maintenance-detail { overflow-x: auto; -webkit-overflow-scrolling: touch; }
.maintenance-table, .maintenance-detail table { width: 100%; min-width: 630px; border-collapse: separate; border-spacing: 0; }
.maintenance-table th, .maintenance-table td, .maintenance-detail th, .maintenance-detail td { padding: 11px 12px; border-bottom: 1px solid var(--line); text-align: left; vertical-align: middle; }
.maintenance-table th { background: var(--forest-100); color: var(--forest-800); white-space: nowrap; }
.maintenance-table th:first-child, .maintenance-table td:first-child { position: sticky; left: 0; z-index: 1; background: var(--paper); min-width: 170px; }
.maintenance-table th:first-child { z-index: 2; background: var(--forest-100); }
.maintenance-equipment button { display: grid; gap: 3px; width: 100%; padding: 0; border: 0; background: transparent; color: var(--forest-800); text-align: left; text-decoration: underline; }
.maintenance-equipment span { font-size: .82rem; text-decoration: none; }
.maintenance-status { display: inline-block; padding: 5px 9px; border-radius: 7px; font-weight: 800; white-space: nowrap; }
.maintenance-status-stack { display: grid; justify-items: start; gap: 4px; font-size: .75rem; color: var(--ink); }
.maintenance-status-stack > span:not(.maintenance-status) { white-space: nowrap; }
.maintenance-status-stack > span:nth-child(2) { font-weight: 700; }
.maintenance-status.maintenance-due { background: #fce4df; color: #9b2819; }
.maintenance-status.maintenance-warning { background: #fff0cc; color: #704000; }
.maintenance-status.maintenance-current { background: #deefe4; color: #145331; }
.maintenance-status.maintenance-not_configured { background: #e7e9ec; color: #313c44; }
.maintenance-detail { margin-top: 16px; padding: 16px; border: 1px solid var(--line); border-radius: 12px; background: var(--frame-1); }
.maintenance-detail form { display: grid; gap: 14px; max-width: 640px; }
.maintenance-detail h3 { margin: 20px 0 12px; }
.maintenance-detail [data-maintenance-routine-schedule][hidden] { display: none; }
.maintenance-page > h2 { margin: 20px 0 12px; }
.maintenance-latest-readings { margin-top: 18px; border: 1px solid var(--line); border-radius: 12px; padding: 12px; }
.maintenance-latest-readings summary { cursor: pointer; font-size: 1.1rem; font-weight: 800; color: var(--forest-800); }
.maintenance-latest-readings > p { color: var(--muted); }
.maintenance-latest-readings .maintenance-table { min-width: 780px; }
.maintenance-row .secondary-button, .maintenance-latest-readings .secondary-button { white-space: nowrap; }
@media (max-width: 600px) { .maintenance-filters { grid-template-columns: 1fr; } .maintenance-page { padding: 12px; } }
.reading-age { display: block; margin-top: 4px; color: var(--muted); font-size: .56rem; }.reading-age.stale { color: #9a542f; font-weight: 850; }
.numeric-cell { white-space: nowrap; font-variant-numeric: tabular-nums; }
.equipment-name-link, .history-link { padding: 0; border: 0; background: transparent; color: var(--forest-800); text-align: left; }
.equipment-name-link small, .equipment-name-link strong { display: block; }
.equipment-name-link small { margin-bottom: 3px; color: var(--forest-650); font-size: .59rem; font-weight: 900; text-transform: uppercase; }
.equipment-name-link strong { font-size: .75rem; text-decoration: underline; text-decoration-color: color-mix(in srgb, var(--forest-650) 40%, transparent); text-underline-offset: 3px; }
.history-link { display: inline-flex; align-items: center; gap: 5px; font-size: .68rem; font-weight: 800; white-space: nowrap; text-decoration: underline; text-underline-offset: 3px; }
.table-metric { display: inline-block; min-width: 43px; padding: 4px 6px; border-radius: 999px; background: var(--forest-100); color: var(--forest-800); font-weight: 850; text-align: center; }
.table-metric.alert { background: #f9ded5; color: #a33f29; }
.table-scroll-hint { margin: 8px 1px 0; color: var(--muted); font-size: .62rem; }
.tracking-empty { padding: 26px 15px; color: var(--muted); text-align: center; font-size: .78rem; }
.equipment-sheet-backdrop { position: fixed; z-index: 40; inset: 0; background: rgba(6,18,13,.5); backdrop-filter: blur(2px); }
.equipment-sheet { position: fixed; z-index: 41; left: 0; right: 0; bottom: 0; max-height: 86dvh; overflow-y: auto; padding: 9px 20px calc(24px + env(safe-area-inset-bottom)); border-radius: 22px 22px 0 0; background: var(--paper); color: var(--ink); box-shadow: 0 -16px 45px rgba(6,18,13,.25); }
.sheet-handle { width: 42px; height: 5px; margin: 0 auto 16px; border-radius: 999px; background: var(--line); }
.sheet-heading { display: flex; align-items: start; justify-content: space-between; gap: 12px; }
.sheet-heading h2 { margin: 0; font-family: Georgia, serif; font-size: 1.4rem; }
.sheet-heading button { width: 35px; height: 35px; border: 0; border-radius: 50%; background: var(--forest-100); color: var(--forest-800); font-size: 1.25rem; }
.sheet-location { margin: 9px 0 16px; color: var(--muted); font-size: .75rem; }
.sheet-metrics { display: grid; grid-template-columns: repeat(2, 1fr); gap: 8px; }
.sheet-metrics article { padding: 12px; border: 1px solid var(--line); border-radius: 12px; background: var(--cream); }
.sheet-metrics small, .sheet-metrics strong { display: block; }
.sheet-metrics small { color: var(--muted); font-size: .62rem; }
.sheet-metrics strong { margin-top: 4px; color: var(--forest-800); font-size: .84rem; }
.equipment-sheet h3 { margin: 20px 0 8px; font-family: Georgia, serif; font-size: 1rem; }
.history-heading { display: flex; align-items: end; justify-content: space-between; gap: 10px; margin-top: 16px; }.history-heading h3 { margin: 0; }.history-heading > div { display: flex; gap: 4px; }.history-heading button { padding: 5px 8px; border: 1px solid var(--line); border-radius: 8px; background: transparent; color: var(--muted); font-size: .62rem; font-weight: 850; }.history-heading button.selected { border-color: var(--forest-650); background: var(--forest-100); color: var(--forest-800); }
.equipment-history { display: grid; }
.equipment-history div { display: grid; grid-template-columns: 54px 1fr; gap: 2px 9px; padding: 9px 0; border-bottom: 1px solid var(--line); font-size: .7rem; }
.equipment-history span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.equipment-history small { grid-column: 2; color: var(--muted); }
.serial-label { margin: 14px 0 0; color: var(--muted); font-size: .62rem; }
.tab-bar { position: fixed; z-index: 10; left: 0; right: 0; bottom: 0; display: grid; grid-template-columns: repeat(auto-fit, minmax(52px, 1fr)); padding: 8px 5px max(8px, env(safe-area-inset-bottom)); border-top: 1px solid var(--line); background: rgba(255,254,250,.94); backdrop-filter: blur(16px); }
.nav-item { display: flex; flex-direction: column; align-items: center; gap: 3px; padding: 4px 2px; color: var(--muted); text-decoration: none; font-size: .66rem; font-weight: 700; }
.tab-bar .tablet-extra { display: none; }
.nav-icon { display: grid; place-items: center; min-width: 29px; height: 28px; font-size: 1.13rem; }
.receipt-nav-icon { width: 20px; height: 20px; fill: none; stroke: currentColor; stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; }
.nav-item[aria-current="page"] { color: var(--forest-800); }
.nav-item[aria-current="page"] .nav-icon { border-radius: 9px; background: var(--forest-100); }
.toast { position: fixed; z-index: 30; left: 50%; bottom: calc(86px + env(safe-area-inset-bottom)); width: max-content; max-width: calc(100vw - 32px); padding: 11px 15px; border-radius: 11px; background: var(--ink); color: white; font-size: .8rem; box-shadow: var(--shadow); opacity: 0; transform: translate(-50%, 12px); pointer-events: none; transition: .2s ease; }
.toast.visible { opacity: 1; transform: translate(-50%, 0); }
.service-gate[hidden] { display: none; }
.service-gate { position: fixed; z-index: 100; inset: 0; display: flex; flex-direction: column; align-items: center; justify-content: center; padding: max(28px, env(safe-area-inset-top)) max(24px, env(safe-area-inset-right)) max(28px, env(safe-area-inset-bottom)) max(24px, env(safe-area-inset-left)); background: var(--surface); color: var(--ink); text-align: center; }
.service-gate-icon { display: grid; place-items: center; width: 68px; height: 68px; margin-bottom: 20px; border-radius: 22px; background: var(--forest-100); color: var(--forest-800); font-size: 2rem; }
.service-gate h1 { margin: 7px 0 9px; font-family: Georgia, serif; font-size: clamp(1.7rem, 6vw, 2.5rem); }
.service-gate > p:not(.section-kicker) { max-width: 430px; margin: 0 0 22px; color: var(--muted); line-height: 1.55; }
.service-gate small { margin-top: 18px; color: var(--muted); }
body.service-gated { overflow: hidden; }
.receipt-lifecycle { display: flex; align-items: center; gap: 11px; width: 100%; max-width: 100%; min-width: 0; margin: 4px 0 14px; padding: 12px 14px; border: 1px solid var(--line); border-radius: 12px; background: var(--forest-100); overflow: hidden; }
.receipt-lifecycle .status-dot { flex: 0 0 auto; }
.receipt-lifecycle > div { min-width: 0; max-width: 100%; }
.receipt-lifecycle strong, .receipt-lifecycle small { display: block; }
.receipt-lifecycle small { max-width: 100%; margin-top: 3px; color: var(--muted); line-height: 1.35; overflow-wrap: anywhere; word-break: break-word; }
.receipt-entry-card [role="alert"], .receipt-entry-card .form-helper { max-width: 100%; overflow-wrap: anywhere; word-break: break-word; }
.receipt-review-backdrop { position: fixed; z-index: 201; inset: 0; pointer-events: auto; background: rgba(6,18,13,.58); backdrop-filter: blur(3px); }
.receipt-review-sheet { position: fixed; z-index: 202; left: 0; right: 0; bottom: 0; max-height: 92dvh; overflow-y: auto; pointer-events: auto; touch-action: pan-y; padding: 20px max(20px, env(safe-area-inset-right)) calc(20px + env(safe-area-inset-bottom)) max(20px, env(safe-area-inset-left)); border-radius: 24px 24px 0 0; background: var(--paper); color: var(--ink); box-shadow: 0 -18px 52px rgba(6,18,13,.3); }
.receipt-review-sheet > header { display: flex; align-items: center; justify-content: space-between; gap: 12px; }
.receipt-review-sheet > header h2 { margin: 2px 0 0; font-family: Georgia, serif; font-size: 1.35rem; }.receipt-review-sheet > header button { width: 36px; height: 36px; border: 0; border-radius: 50%; background: #eeeae2; color: var(--ink); font-size: 1.2rem; }
.receipt-review-file { display: flex; align-items: center; gap: 11px; margin: 18px 0; padding: 11px; border: 1px solid var(--line); border-radius: 13px; background: #faf9f4; }.receipt-review-file img { width: 58px; height: 58px; border-radius: 9px; object-fit: cover; }.receipt-review-file strong, .receipt-review-file small { display: block; }.receipt-review-file small { margin-top: 4px; color: var(--muted); font-size: .67rem; }
.receipt-review-details { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; margin: 0; }.receipt-review-details div { padding: 11px; border: 1px solid var(--line); border-radius: 11px; }.receipt-review-details dt { color: var(--muted); font-size: .59rem; font-weight: 850; text-transform: uppercase; }.receipt-review-details dd { margin: 4px 0 0; overflow-wrap: anywhere; font-size: .78rem; font-weight: 750; }
.receipt-review-notice { margin: 13px 0; padding: 12px; border-radius: 11px; background: var(--forest-100); }.receipt-review-notice strong, .receipt-review-notice span { display: block; }.receipt-review-notice span { margin-top: 3px; color: var(--muted); font-size: .68rem; line-height: 1.4; }
.receipt-review-sheet > footer { position: sticky; bottom: 0; display: grid; grid-template-columns: 1fr 1.4fr; gap: 9px; padding-top: 10px; background: var(--paper); }
.shared-file-interaction { margin: 10px 0 0; padding: 8px 10px; border-radius: 8px; background: #fff2cf; color: #684b16; font-size: .64rem; font-weight: 750; }
[data-shared-fields] { display: grid; gap: 12px; margin-top: 16px; }
[data-shared-fields][hidden] { display: none; }
[data-shared-fields] label { display: grid; gap: 7px; color: var(--ink); font-size: 1rem; font-weight: 850; }
[data-shared-fields] select { width: 100%; min-height: 52px; padding: 10px 12px; border: 1px solid var(--line); border-radius: 11px; background: white; color: var(--ink); font-size: 18px; line-height: 1.25; }
.app-frame.session-gated { display: block; }
.app-frame.session-gated .rail, .app-frame.session-gated .tab-bar { display: none; }
.app-frame.session-gated #main-content { display: grid; min-height: 100dvh; place-items: center; padding: 24px; }
.session-gate { width: min(100%, 430px); padding: 34px; border: 1px solid var(--line); border-radius: 24px; background: var(--surface); text-align: center; box-shadow: var(--shadow); }
.sms-enrollment-gate { width: min(100%, 460px); overflow: hidden; border: 1px solid var(--line); border-radius: 24px; background: var(--surface); text-align: center; box-shadow: var(--shadow); }
.sms-brand-bar { display: grid; min-height: 232px; padding: 20px; place-items: center; background: #0b355d; }
.sms-enrollment-logo { width: 194px; height: 194px; object-fit: contain; }
.sms-enrollment-body { padding: clamp(24px, 6vw, 38px); }
.sms-enrollment-gate h1 { margin: 7px 0 10px; font-size: clamp(1.2rem, 4vw, 1.55rem); }
.sms-enrollment-body > p:not(.sms-error, .sms-policy-links) { margin: 0 auto 20px; color: var(--muted); line-height: 1.5; }
.sms-enrollment-gate form, .sms-enrollment-gate label { display: grid; gap: 7px; text-align: left; }
.sms-enrollment-gate form { gap: 14px; margin-top: 20px; }
.sms-enrollment-gate label { color: var(--ink); font-size: .76rem; font-weight: 800; }
.sms-enrollment-gate input { width: 100%; min-height: 48px; padding: 11px 12px; border: 1px solid var(--line); border-radius: 11px; background: white; color: var(--ink); font: inherit; font-size: 16px; }
.sms-enrollment-gate .sms-consent-check { grid-template-columns: auto 1fr; align-items: start; gap: 10px; font-weight: 600; line-height: 1.45; }
.sms-consent-check input { width: 22px; height: 22px; min-height: 0; margin: 1px 0 0; padding: 0; }
.sms-consent-copy { margin: 0; color: var(--muted); font-size: .7rem; line-height: 1.5; }
.sms-primary-button { background: #0b355d; }
.sms-primary-button:hover { background: #164d7d; }
.sms-error { min-height: 1.3em; margin: 14px 0 0; color: #9a3328; font-size: .74rem; line-height: 1.4; }
.sms-policy-links { display: flex; justify-content: center; gap: 8px; margin: 14px 0 0; font-size: .72rem; }
.sms-policy-links a { color: var(--forest-800); font-weight: 800; }
.sms-enrollment-body > small { display: block; margin-top: 16px; color: var(--muted); font-size: .65rem; line-height: 1.45; }
.sms-back-button { min-height: 44px; border: 0; background: transparent; color: var(--forest-800); font-weight: 800; }
.alternate-verification { margin-top: 20px; padding-top: 18px; border-top: 1px solid var(--line); text-align: left; }
.alternate-verification summary { min-height: 44px; display: grid; place-items: center; color: var(--forest-800); font-size: .76rem; font-weight: 850; cursor: pointer; }
.alternate-verification > div { display: grid; gap: 8px; margin-top: 8px; }
.alternate-verification button { min-height: 52px; padding: 9px 12px; border: 1px solid var(--line); border-radius: 11px; background: transparent; color: var(--ink); font-weight: 800; text-align: left; }
.alternate-verification button small { display: block; margin-top: 3px; color: var(--muted); font-weight: 500; }
.alternate-verification button:disabled { opacity: .58; }
.policy-page { width: min(100% - 32px, 760px); margin: 32px auto; padding: clamp(22px, 5vw, 42px); border: 1px solid var(--line); border-radius: 20px; background: var(--surface); box-shadow: var(--shadow); }
.policy-page h1 { margin: 8px 0 22px; }
.policy-page h2 { margin: 24px 0 8px; font-size: 1.1rem; }
.policy-page p { color: var(--muted); line-height: 1.65; }
.policy-page a { color: var(--forest-800); font-weight: 800; }
.brand-icon { display: grid; place-items: center; width: 44px; height: 44px; border: 1px solid #779286; border-radius: 13px; background: rgba(255,255,255,.07); color: white; }
.session-gate .brand-icon { margin: 0 auto 22px; background: var(--forest-950); color: white; }
.session-gate .brand-icon img { width: 31px; height: 31px; object-fit: contain; }
.session-gate h1 { margin: 7px 0 10px; font-size: clamp(1.55rem, 5vw, 2.1rem); }
.session-gate p:not(.section-kicker) { margin: 0 auto 22px; color: var(--muted); line-height: 1.55; }
.session-gate small { display: block; margin-top: 17px; color: var(--muted); }
.session-spinner { display: block; width: 30px; height: 30px; margin: 20px auto; border: 3px solid var(--line); border-top-color: var(--forest-600); border-radius: 50%; animation: session-spin .8s linear infinite; }
@keyframes session-spin { to { transform: rotate(360deg); } }

@media (min-width: 600px) and (max-width: 759px) {
  .tab-bar .tablet-extra.compact-tablet-extra { display: flex; }
  .tab-bar .nav-item { min-width: 0; text-align: center; }
}

@media (min-width: 760px) {
  .app-frame { display: grid; grid-template-columns: 230px 1fr; }
  .app-frame.rail-collapsed { grid-template-columns: 76px 1fr; }
  .rail { position: sticky; top: 0; height: 100dvh; display: flex; flex-direction: column; padding: 26px 18px; background: var(--forest-950); color: white; }
  .rail-header { display: flex; align-items: center; gap: 8px; margin: 0 0 36px 9px; }
  .brand { min-width: 0; display: flex; align-items: center; gap: 11px; color: white; text-decoration: none; }
  .brand-icon img { width: 31px; height: 31px; object-fit: contain; }
  .rail-toggle { flex: 0 0 auto; display: grid; place-items: center; width: 28px; height: 28px; margin-left: auto; border: 1px solid #587267; border-radius: 9px; background: rgba(255,255,255,.07); color: white; font-size: 1.25rem; }
  .rail-nav { flex: 1; min-height: 0; display: grid; align-content: start; gap: 7px; overflow-y: auto; overscroll-behavior: contain; }
  .rail .nav-item { flex-direction: row; justify-content: flex-start; gap: 12px; padding: 11px 12px; border-radius: 12px; color: #b9cac1; font-size: .84rem; }
  .rail .nav-item[aria-current="page"] { background: rgba(255,255,255,.1); color: white; }
  .rail .nav-item[aria-current="page"] .nav-icon { background: transparent; }
  .profile-button { display: flex; align-items: center; gap: 10px; margin-top: auto; padding: 10px; border: 0; border-top: 1px solid #365246; background: transparent; color: white; text-align: left; }
  .avatar { display: grid; place-items: center; width: 34px; height: 34px; border-radius: 50%; background: #d8a44d; color: var(--forest-950); font-size: .73rem; font-weight: 900; }
  .profile-copy strong, .profile-copy small { display: block; }
  .profile-copy strong { font-size: .75rem; }
  .profile-copy small { margin-top: 2px; color: #9eb3a8; font-size: .65rem; }
  .app-frame.rail-collapsed .rail { padding-inline: 11px; }
  .app-frame.rail-collapsed .rail-header { flex-direction: column; margin-left: 0; }
  .app-frame.rail-collapsed .rail .nav-item > span:last-child,
  .app-frame.rail-collapsed .profile-copy { display: none; }
  .app-frame.rail-collapsed .rail-toggle { margin-left: 0; }
  .app-frame.rail-collapsed .rail .nav-item { justify-content: center; padding-inline: 5px; }
  .app-frame.rail-collapsed .profile-button { justify-content: center; padding-inline: 0; }
  #main-content { padding: 42px clamp(28px, 5vw, 70px) 60px; }
  .tab-bar { display: none; }
  .attention-grid { grid-template-columns: repeat(2, 1fr); }
  .project-card { grid-template-columns: 1fr auto; align-items: center; }
  .project-card button { grid-column: 1 / -1; justify-self: start; }
  .toast { bottom: 24px; }
  .receipt-entry-card, .recent-receipts { padding: 24px; }
  .receipt-review-sheet { left: 50%; right: auto; bottom: 50%; width: min(580px, calc(100vw - 40px)); max-height: min(760px, calc(100dvh - 40px)); transform: translate(-50%, 50%); border-radius: 22px; }
  .project-choice-list { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .project-selector-controls { grid-template-columns: minmax(0, 1fr) auto; align-items: end; }
  .project-selector-controls > div { min-width: 190px; }
  .selected-project-preview { grid-template-columns: 1fr auto; align-items: center; }
  .dashboard-manager-list article { grid-template-columns: minmax(180px, 1fr) minmax(150px, .55fr) auto; align-items: center; }
  .tracked-dashboard-grid, .today-job-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .daily-reports-mobile-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .daily-report-field-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .daily-report-form-actions { position: static; grid-template-columns: auto auto; justify-content: end; margin: 0; padding: 0; background: transparent; }
  .project-capability-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .budget-summary-grid { grid-template-columns: repeat(4, 1fr); }
  .budget-detail-sheet { left: auto; top: 0; width: min(560px, 66vw); max-height: 100dvh; border-radius: 22px 0 0 22px; padding-top: 24px; }
  .budget-detail-sheet .sheet-handle { display: none; }
  .tracking-toolbar { grid-template-columns: minmax(250px, 1fr) auto; align-items: center; }
  .equipment-sheet { left: auto; top: 0; width: min(460px, 56vw); max-height: 100dvh; border-radius: 22px 0 0 22px; padding-top: 24px; }
  .sheet-handle { display: none; }
}

@media (max-width: 759px) {
  .daily-photo-editor.robust { grid-template-rows: auto auto minmax(0, 1fr) auto; }
  .daily-photo-editor-layout { grid-template-columns: 1fr; overflow-y: auto; }
  .daily-photo-editor-layout .daily-photo-editor-canvas-wrap { min-height: 280px; }
  .daily-photo-editor-notes { overflow: visible; border-top: 1px solid var(--line); border-left: 0; }
  .daily-photo-editor-toolbar { max-height: 154px; overflow-y: auto; }
  #main-content { padding-left: max(16px, env(safe-area-inset-left)); padding-right: max(16px, env(safe-area-inset-right)); padding-bottom: calc(92px + env(safe-area-inset-bottom)); }
  .form-grid { grid-template-columns: 1fr; }
  .span-all { grid-column: 1; }
  .form-grid input, .form-grid select, .more-details textarea { font-size: 16px; }
  .capture-button, .primary-button, .secondary-button, .segmented-control button, .tracking-filters button { min-height: 44px; }
  .document-folder-strip button, .history-heading button, .map-zoom-controls button { min-height: 44px; }
  .receipt-review-details { grid-template-columns: 1fr; }
  .receipt-review-details .span-all { grid-column: 1; }
  .daily-report-crew-line { grid-template-columns: 1fr; }
  .daily-report-remove-line { justify-self: end; min-height: 34px; }
}

@media (orientation: landscape) and (max-height: 600px) {
  .receipt-review-sheet, .equipment-sheet { top: max(6px, env(safe-area-inset-top)); bottom: max(6px, env(safe-area-inset-bottom)); max-height: none; border-radius: 16px; }
  .receipt-review-sheet { left: 50%; right: auto; width: min(680px, calc(100vw - 32px)); transform: translateX(-50%); }
  .project-document-viewer, .invoice-viewer { inset: max(5px, env(safe-area-inset-top)) max(5px, env(safe-area-inset-right)) max(5px, env(safe-area-inset-bottom)) max(5px, env(safe-area-inset-left)); }
  .fleet-map-card.map-expanded { inset: max(5px, env(safe-area-inset-top)) max(5px, env(safe-area-inset-right)) max(5px, env(safe-area-inset-bottom)) max(5px, env(safe-area-inset-left)); }
}

@media (prefers-contrast: more) {
  :root { --line: #829087; --muted: #46534d; }
  .primary-button, .secondary-button, button, input, select, textarea { border-width: 2px; }
}

@media (min-width: 1100px) {
  .app-frame { grid-template-columns: 260px 1fr; }
  .hero-card { padding: 28px; }
  .project-card { grid-template-columns: 1fr auto auto; }
  .project-card button { grid-column: auto; }
}

@media (prefers-reduced-motion: reduce) {
  * { scroll-behavior: auto !important; transition: none !important; }
  .daily-report-photo-spinner, .daily-report-photo-progress.indeterminate i { animation: none !important; }
}

.wishlist-toolbar,.wishlist-section-heading{display:flex;align-items:center;justify-content:space-between;gap:16px}.wishlist-toolbar{margin-bottom:18px}.wishlist-toolbar h2,.wishlist-section-heading h2{margin:2px 0}.wishlist-create,.wishlist-schedule-card,.wishlist-list{background:var(--surface);border:1px solid var(--line);border-radius:18px;padding:18px;margin-bottom:18px}.wishlist-create{display:grid;grid-template-columns:1fr 1fr;gap:14px}.wishlist-create label{display:grid;gap:7px;font-weight:700}.wishlist-create input,.wishlist-create select,.wishlist-create textarea{width:100%}.wishlist-gantt-scroll{overflow-x:auto;margin-top:16px;border:1px solid var(--line);border-radius:14px;background:var(--surface)}.wishlist-gantt-grid{position:relative;width:calc(210px + var(--wishlist-width));min-width:100%}.wishlist-gantt-header,.wishlist-gantt-row{display:grid;grid-template-columns:210px var(--wishlist-width)}.wishlist-gantt-header{height:50px;border-bottom:1px solid var(--line);background:color-mix(in srgb,var(--surface) 82%,var(--accent) 18%)}.wishlist-gantt-header>strong{padding:16px}.wishlist-gantt-header>span{position:relative}.wishlist-gantt-header>span>span{position:absolute;text-align:center;padding-top:7px;border-left:1px solid var(--line);font-size:.72rem;font-weight:800}.wishlist-gantt-header small{display:block;font-size:.58rem;text-transform:uppercase}.wishlist-gantt-row{height:58px;padding:0;border:0;border-bottom:1px solid var(--line);background:transparent;text-align:left}.wishlist-gantt-row:hover{background:color-mix(in srgb,var(--surface) 92%,var(--accent) 8%)}.wishlist-task-label{padding:10px 12px;display:grid;gap:2px;border-right:1px solid var(--line);z-index:2;background:inherit}.wishlist-task-label small{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.wishlist-timeline{position:relative;background:repeating-linear-gradient(90deg,transparent 0,transparent 41px,var(--line) 42px)}.wishlist-bar{position:absolute;top:14px;height:30px;border-radius:8px;padding:7px 9px;color:white;font-style:normal;font-size:.68rem;font-weight:800;text-transform:capitalize;white-space:nowrap;overflow:hidden}.wishlist-bar.status-released{background:#547363}.wishlist-bar.status-in_progress{background:#1f6f9d}.wishlist-bar.status-planned{background:#9a6a22}.wishlist-bar.status-requested{background:#687178}.wishlist-dependencies{position:absolute;left:210px;top:50px;pointer-events:none;overflow:visible}.wishlist-dependencies path{fill:none;stroke:#b34837;stroke-width:2}.wishlist-list>button{width:100%;display:flex;justify-content:space-between;align-items:center;gap:12px;padding:14px 4px;border:0;border-bottom:1px solid var(--line);background:transparent;text-align:left}.wishlist-list>button>span:first-child{display:grid;gap:4px}.wishlist-status{border-radius:999px;padding:5px 9px;background:#e4e9e6;font-size:.7rem;font-weight:800;text-transform:capitalize;white-space:nowrap}.wishlist-detail-backdrop{position:fixed;inset:0;background:#08130fb8;z-index:80}.wishlist-detail{position:fixed;z-index:81;inset:0 0 0 auto;width:min(520px,100%);background:var(--surface);padding:26px;overflow-y:auto;box-shadow:-18px 0 45px #0003}.wishlist-detail-meta{display:flex;flex-wrap:wrap;gap:8px 14px;color:var(--muted);margin:12px 0 24px}.wishlist-history{list-style:none;padding:0;margin:0}.wishlist-history li{display:grid;grid-template-columns:18px 1fr;gap:10px}.wishlist-history li>span{width:10px;height:10px;margin-top:7px;border-radius:50%;background:var(--accent);box-shadow:0 18px 0 -4px var(--line)}.wishlist-history li div{border-left:2px solid var(--line);padding:0 0 18px 14px}.wishlist-history time{display:block;color:var(--muted);font-size:.75rem}.wishlist-history p{margin:6px 0}.wishlist-readonly,.wishlist-empty{padding:14px;border-radius:10px;background:color-mix(in srgb,var(--surface) 85%,var(--accent) 15%);color:var(--muted)}

@media(max-width:600px){.wishlist-create{grid-template-columns:1fr}.wishlist-toolbar,.wishlist-section-heading{align-items:flex-start}.wishlist-gantt-header,.wishlist-gantt-row{grid-template-columns:170px var(--wishlist-width)}.wishlist-gantt-grid{width:calc(170px + var(--wishlist-width))}.wishlist-dependencies{left:170px}.wishlist-list>button{align-items:flex-start}.wishlist-status{max-width:100px;white-space:normal;text-align:center}}

.daily-report-section-nav button small{display:block;font-size:.58rem;line-height:1;text-transform:uppercase;letter-spacing:.04em;color:var(--muted)}.daily-report-section-nav button.sync-conflict{border-color:#b53d35;background:#fff0ee}.daily-report-section-nav button.sync-conflict span,.daily-report-section-nav button.sync-conflict small{color:#a62e27}.daily-report-section-nav button.sync-error{border-color:#b77a27}.daily-report-section-nav button.sync-saving{opacity:.72}
.daily-report-date-start{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px;align-items:end;margin-top:14px}.daily-report-date-start label{display:grid;gap:5px;color:var(--muted);font-size:.62rem;font-weight:850}.daily-report-date-start input{width:100%;min-height:44px;padding:8px 10px;border:1px solid var(--line);border-radius:9px;background:#fff;color:var(--ink);font:inherit;font-size:16px}.daily-report-photo-error{max-width:100%;margin:8px 0;padding:10px;border:1px solid #c85b50;border-radius:9px;background:#fff0ee;color:#7f211b;overflow-wrap:anywhere;word-break:break-word}.daily-report-photo-error strong{display:block;font-size:.68rem}.daily-report-photo-error p{margin:4px 0;font-size:.62rem;line-height:1.45;white-space:normal}.daily-report-photo-error small{display:block;margin-top:8px;font-size:.58rem;font-weight:800}
.daily-report-sync-notice{padding:14px;border:1px solid #b77a27;border-radius:12px;background:#fff8e8}.daily-report-sync-notice.conflict{border-color:#b53d35;background:#fff0ee}.daily-report-sync-notice p{margin:5px 0 12px}.daily-report-sync-notice>div{display:flex;flex-wrap:wrap;gap:8px}
.daily-text-history{display:grid;gap:5px;margin:6px 0 8px}.daily-text-history>span{color:var(--muted);font-size:.62rem;font-weight:850}.daily-text-history select{width:100%;min-width:0;min-height:42px;padding:8px 10px;border:1px solid var(--line);border-radius:9px;background:var(--surface);color:var(--ink);font:inherit;font-size:16px}.daily-text-history select:disabled{opacity:.7}

@media (max-width: 430px) {
  .connection-pill { width: 36px; justify-content: center; padding-inline: 0; }
  .connection-label { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; }
  .map-heading { align-items: start; }
  .map-heading-actions { align-items: end; flex-direction: column-reverse; }
  .fleet-map-card:not(.map-expanded) .expand-map-button { width: 35px; justify-content: center; padding-inline: 0; font-size: 0; }
  .fleet-map-card:not(.map-expanded) .expand-map-button > span { font-size: 1rem; }
}

.impersonation-banner { position: fixed; z-index: 260; right: max(8px, env(safe-area-inset-right)); bottom: calc(82px + env(safe-area-inset-bottom)); max-width: min(320px, calc(100vw - 16px)); display: flex; align-items: center; gap: 8px; padding: 6px 7px 6px 10px; border: 1px solid #76251f; border-radius: 999px; background: #fff0ee; color: #641b16; box-shadow: 0 4px 16px #1806033d; }
.impersonation-banner div { display: block; min-width: 0; }
.impersonation-banner strong { display: block; overflow: hidden; font-size: .72rem; text-overflow: ellipsis; white-space: nowrap; }
.impersonation-banner span { display: none; }
.impersonation-banner button { min-height: 32px; padding: 5px 10px; border: 0; border-radius: 999px; background: #76251f; color: #fff; font-size: .7rem; font-weight: 850; }
body.impersonation-active .toast { z-index: 261; }
@media (max-width: 759px) {
  body.impersonation-active .toast { bottom: calc(148px + env(safe-area-inset-bottom)); }
}
@media (orientation: landscape) and (max-height: 600px) {
  body.impersonation-active .toast { top: max(8px, env(safe-area-inset-top)); bottom: auto; }
}
.impersonation-settings { border: 2px solid #b77a27; }
.impersonation-settings.active { border-color: #b53d35; background: #fff8f7; }
.impersonation-settings form { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 12px; align-items: end; margin-top: 14px; }
.impersonation-settings label { display: grid; gap: 6px; font-weight: 800; }
.impersonation-settings select { width: 100%; min-height: 52px; font-size: 1.125rem; }
.report-history-panel { display: grid; gap: 14px; margin: 18px 0; padding: 20px; border: 1px solid var(--line); border-radius: 18px; background: var(--paper); color: var(--ink); box-shadow: var(--shadow); }
.report-history-panel > h2 { margin: 0; font-size: 1.35rem; }
.report-history-panel > p { margin: 0; line-height: 1.5; overflow-wrap: anywhere; }
.report-history-panel > button { justify-self: start; }
.report-history-search { display: grid; gap: 6px; font-weight: 800; }
.report-history-search input { width: 100%; min-height: 48px; font-size: 1rem; }
.report-history-inactive { display: flex; align-items: center; gap: 10px; font-size: 1rem; font-weight: 750; }
.report-history-inactive input { width: 22px; height: 22px; accent-color: var(--accent); }
.report-history-count { white-space: nowrap; font-weight: 800; }
.report-history-list { display: grid; gap: 8px; }
.report-history-list button { display: grid; grid-template-columns: auto minmax(0, 1fr) auto; align-items: center; gap: 12px; width: 100%; min-height: 58px; padding: 12px; border: 1px solid var(--line); border-radius: 12px; background: var(--cream); color: var(--ink); text-align: left; font-size: 1rem; }
.report-history-list button[hidden] { display: none; }
.report-history-list button span { min-width: 0; overflow-wrap: anywhere; }
.report-history-fields { display: grid; gap: 10px; }
.report-history-fields section { padding: 12px; border: 1px solid var(--line); border-radius: 10px; background: var(--cream); }
.report-history-fields h3 { margin: 0 0 5px; font-size: .9rem; }
.report-history-fields p { margin: 0; white-space: pre-wrap; overflow-wrap: anywhere; line-height: 1.5; }
.report-history-note { font-size: .85rem; }
.impersonation-error { color: #8a211b !important; font-weight: 750; }
body.impersonation-active #main-content { padding-top: max(42px, env(safe-area-inset-top)); }

@media (max-width: 600px) {
  .impersonation-settings form { grid-template-columns: 1fr; }
  .impersonation-settings form button { width: 100%; }
  body.impersonation-active #main-content { padding-top: max(24px, env(safe-area-inset-top)); }
}
.daily-cost-time-history {
  display: grid;
  gap: .8rem;
  padding: 1rem;
  margin-bottom: 1rem;
  border: 1px solid var(--border, #d7ddd8);
  border-radius: 16px;
  background: #f7faf7;
}
.daily-cost-time-history > div:first-child { display: grid; gap: .2rem; }
.daily-cost-time-history > div:first-child strong { font-size: 1.05rem; }
.daily-cost-time-history > div:first-child span,
.daily-cost-time-history label { font-size: .9rem; color: #46544b; }
.daily-cost-time-history select { width: 100%; margin-top: .35rem; font-size: 1rem; }
.daily-cost-time-preview { display: grid; gap: .65rem; padding: .85rem; border-radius: 12px; background: #fff; }
.daily-cost-time-preview > span { overflow-wrap: anywhere; }
.daily-cost-time-confirm { display: flex; gap: .6rem; align-items: flex-start; font-weight: 650; }
.daily-cost-time-confirm input { flex: 0 0 auto; margin-top: .15rem; }
.daily-cost-time-status { color: #52635a; }
.daily-cost-time-error { margin: 0; padding: .75rem; border-radius: 10px; background: #fff0ef; color: #8b2924; overflow-wrap: anywhere; }
.daily-safety-copy { display: grid; gap: .65rem; padding: 1rem; border: 1px solid var(--border, #d7ddd8); border-radius: 16px; background: #f7faf7; }
.daily-safety-copy strong { font-size: 1.05rem; }
.daily-safety-copy p { margin: 0; color: #46544b; line-height: 1.45; }
.daily-safety-copy label { display: grid; gap: .35rem; font-weight: 650; }
.daily-safety-copy select { width: 100%; min-height: 44px; font-size: 1rem; }
.daily-safety-copy-preview { display: grid; gap: .55rem; padding: .8rem; border-radius: 12px; background: #fff; }
.project-ap-shell { padding: 1rem; display: grid; gap: 1rem; }
.project-ap-filters { display: grid; grid-template-columns: repeat(auto-fit,minmax(145px,1fr)); gap: .75rem; align-items: end; }
.project-ap-filters label { display: grid; gap: .3rem; font-weight: 650; }
.project-ap-filters input, .project-ap-filters select { min-height: 46px; padding: .65rem .7rem; font-size: 1rem; }
.project-ap-table-wrap { overflow: auto; border: 1px solid #d7ddd8; border-radius: 14px; background: #fff; }
.project-ap-table { border-collapse: collapse; width: 100%; min-width: 900px; }
.project-ap-table th,.project-ap-table td { padding: .7rem; border-bottom: 1px solid #e3e7e4; text-align: left; white-space: nowrap; }
.project-ap-table th { position: sticky; top: 0; z-index: 2; background: #eef3ef; }
.project-ap-table thead tr:first-child th { top: 0; }
.project-ap-table thead tr:nth-child(2) th { top: 43px; padding: .35rem; }
.project-ap-table th > button { display: flex; align-items: center; gap: .35rem; width: 100%; min-height: 30px; padding: 0; border: 0; background: transparent; color: inherit; font: inherit; font-weight: 800; text-align: left; }
.project-ap-table th > button span { margin-left: auto; color: var(--muted); font-size: .65rem; }
.project-ap-column-filters input { width: 100%; min-width: 110px; min-height: 38px; padding: .45rem .55rem; border: 1px solid var(--line); border-radius: 8px; font-size: .9rem; }
.project-ap-table th:first-child,.project-ap-table td:first-child { position: sticky; left: 0; z-index: 1; background: inherit; }
.project-ap-table td:first-child button { border: 0; background: none; color: #176445; text-decoration: underline; font-weight: 750; }
.project-ap-error { padding: .75rem; background: #fff0ef; color: #8b2924; overflow-wrap: anywhere; }
.project-ap-review-backdrop { position: fixed; z-index: 280; inset: 0; background: #071a1488; }
.project-ap-review { position: fixed; z-index: 281; inset: max(12px, env(safe-area-inset-top)) max(10px, env(safe-area-inset-right)) max(12px, env(safe-area-inset-bottom)) max(10px, env(safe-area-inset-left)); overflow: auto; padding: 1rem; border: 2px solid #244d3c; border-radius: 18px; background: #fff; color: #17231e; box-shadow: 0 18px 50px #071a14aa; }
.project-ap-review > header { display: flex; justify-content: space-between; gap: 12px; align-items: start; }
.project-ap-review > header button { min-width: 44px; min-height: 44px; border: 1px solid var(--line); border-radius: 50%; background: white; font-size: 1.35rem; }
.project-ap-review dl { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 10px; margin: 1rem 0; }
.project-ap-review dl div { padding: .7rem; border: 1px solid var(--line); border-radius: 10px; }
.project-ap-review dt { color: var(--muted); font-size: .7rem; font-weight: 800; text-transform: uppercase; }
.project-ap-review dd { margin: .25rem 0 0; overflow-wrap: anywhere; font-weight: 750; }
.project-ap-review-lines { display: grid; gap: 6px; }
.project-ap-review-lines article { display: grid; grid-template-columns: minmax(0,1fr) minmax(0,1fr) auto; gap: 8px; padding: .65rem; border-bottom: 1px solid var(--line); }
.project-ap-review-note { margin-top: 1rem; padding: .75rem; border-radius: 10px; background: var(--paper); color: var(--muted); }
.project-ap-review-loading { display: grid; place-items: center; padding: 1rem; color: var(--muted); text-align: center; }
.project-ap-document { margin: 1rem 0; }
.project-ap-document iframe, .project-ap-document img { display: block; width: 100%; min-height: min(62vh, 620px); border: 1px solid var(--line); border-radius: 12px; background: #f5f5f5; object-fit: contain; }
.project-ap-review footer { display: flex; justify-content: end; margin-top: 1rem; }
.project-ap-job-picker { min-width: 0; gap: .35rem !important; }
.project-ap-job-picker input + select, #project-ap-job-search + select { margin-top: .2rem; }
.project-ap-job-results { display: grid; width: 100%; max-width: 100%; max-height: 180px; overflow: auto; border: 1px solid var(--line); border-radius: 10px; background: #fff; box-shadow: var(--shadow); }
.project-ap-job-results[hidden] { display: none; }
.project-ap-job-results button { min-width: 0; min-height: 44px; padding: .65rem; overflow-wrap: anywhere; border: 0; border-bottom: 1px solid var(--line); background: #fff; color: var(--ink); text-align: left; }
.project-ap-job-results span { padding: .7rem; color: var(--muted); }
.project-ap-allocation-total { display: flex; justify-content: space-between; gap: .75rem; margin: .7rem 0; padding: .75rem; border-radius: 10px; }
.project-ap-allocation-total.balanced { background: #e9f5ed; color: #215b3b; }
.project-ap-allocation-total.unbalanced { background: #fff0ee; color: #7b261f; }
.project-ap-allocation-total span { text-align: right; }
.project-ap-selected-value { display: block; min-height: 1.1rem; overflow: hidden; color: var(--muted); font-size: .76rem; font-weight: 700; text-overflow: ellipsis; white-space: nowrap; }
.project-workspace-notice { margin: 0 0 1rem; padding: .75rem; border: 1px solid #b77a27; border-radius: 10px; background: #fff8e8; color: #65420e; }
.settings-link-button { display: inline-flex; align-items: center; justify-content: center; text-decoration: none; }
.notification-list { max-height: 360px; overflow: auto; }
.notification-list article { padding: 12px 14px; border-bottom: 1px solid var(--line); }
.notification-list article:last-child { border-bottom: 0; }
.notification-list strong, .notification-list small { display: block; }
.notification-list p { margin: 4px 0; font-size: .75rem; line-height: 1.4; white-space: normal; }
.notification-list small { color: var(--muted); font-size: .64rem; }
.notification-list .notification-item.unread { border-left: 4px solid var(--forest-650); background: var(--forest-100); }
.notification-item-actions { display: flex; gap: 8px; flex-wrap: wrap; margin-top: 10px; }
.notification-item-actions button { min-height: 36px; padding: 6px 10px; border: 1px solid var(--line); border-radius: 8px; background: var(--paper); color: var(--ink); font: inherit; font-size: .76rem; font-weight: 750; }
.notification-item-actions button:disabled { opacity: .55; }
.notification-action-error { margin: 8px; padding: 8px; border-radius: 8px; background: #fff0ee; color: #8a211b; overflow-wrap: anywhere; }
.receipt-symbol { display: grid; place-items: center; width: 38px; height: 38px; padding: 0; border: 1px solid var(--line); border-radius: 10px; background: var(--forest-100); color: var(--forest-800); }
.receipt-symbol:disabled { opacity: .45; }
.receipt-image-backdrop { position: fixed; z-index: 284; inset: 0; background: rgba(6,18,13,.7); }
.receipt-image-viewer { position: fixed; z-index: 285; inset: max(12px, env(safe-area-inset-top)) max(10px, env(safe-area-inset-right)) max(12px, env(safe-area-inset-bottom)) max(10px, env(safe-area-inset-left)); display: grid; grid-template-rows: auto minmax(0,1fr); overflow: hidden; padding: 1rem; border-radius: 18px; background: #fff; }
.receipt-image-viewer header { display: flex; justify-content: space-between; gap: 12px; }
.receipt-image-viewer header button { width: 44px; height: 44px; border: 1px solid var(--line); border-radius: 50%; background: #fff; }
.receipt-image-viewer img, .receipt-image-viewer iframe { width: 100%; height: 100%; min-height: 0; border: 1px solid var(--line); border-radius: 12px; object-fit: contain; }
.project-ap-adjustment, .project-ap-notes, .project-ap-budget, .project-ap-approve { margin-top: 1rem; padding: 1rem; border: 1px solid #cbd8d1; border-radius: 14px; background: #f8faf8; }
.project-ap-adjustment fieldset { display: grid; grid-template-columns: minmax(140px,1fr) minmax(160px,1.4fr) minmax(100px,.6fr) auto; gap: .6rem; align-items: end; margin: .65rem 0; padding: .7rem; border: 1px solid var(--line); border-radius: 10px; background: #fff; }
.project-ap-adjustment fieldset label, .project-ap-notes label, .project-ap-approve label { display: grid; gap: .3rem; font-weight: 750; }
.project-ap-adjustment select, .project-ap-adjustment input, .project-ap-notes textarea, .project-ap-approve textarea { width: 100%; min-height: 44px; padding: .55rem; border: 1px solid var(--line); border-radius: 8px; background: #fff; color: #17231e; font-size: 1rem; }
.project-ap-adjustment fieldset > button { min-height: 44px; border: 1px solid #9d3b32; border-radius: 8px; background: #fff; color: #8a211b; }
.project-ap-adjustment-actions, .project-ap-approve { display: flex; flex-wrap: wrap; justify-content: end; gap: .6rem; }
.project-ap-approve label { flex: 1 1 260px; }
.project-ap-notes article { margin: .5rem 0; padding: .65rem; border-left: 3px solid #6a8a7b; background: #fff; }
.project-ap-notes article span { display: block; color: var(--muted); font-size: .72rem; }
.project-ap-impersonation-warning { padding: .75rem; border: 1px solid #a93b32; border-radius: 10px; background: #fff0ee; color: #721f19; font-weight: 800; }
@media (max-width: 700px) { .project-ap-adjustment fieldset { grid-template-columns: 1fr; } .project-ap-review dl { grid-template-columns: 1fr; } }
.today-job-grid { display: grid; gap: 14px; }
.today-job-card { margin: 0; }
.today-dashboard-manager { display: grid; gap: 12px; margin-bottom: 16px; padding: 14px; border: 1px solid var(--line); border-radius: 14px; background: var(--paper); }
.dashboard-notification-toggle { display: flex; gap: 10px; align-items: start; font-weight: 750; line-height: 1.4; }
.dashboard-notification-toggle input, .today-dashboard-job-list input { width: 20px; height: 20px; flex: 0 0 auto; }
.today-dashboard-job-list { display: grid; gap: 8px; }
.today-dashboard-job-list article { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 10px; align-items: center; padding: 10px; border: 1px solid var(--line); border-radius: 11px; background: var(--surface); }
.today-dashboard-job-list label { display: flex; gap: 9px; align-items: center; min-width: 0; }
.today-dashboard-job-list label span { overflow-wrap: anywhere; }
.today-dashboard-job-list article > div { display: flex; gap: 6px; }
.today-dashboard-job-list button { min-width: 40px; min-height: 40px; border: 1px solid var(--line); border-radius: 9px; background: white; color: var(--ink); font-size: 1rem; }
.dashboard-notification-list { padding: 12px; border: 1px solid var(--line); border-radius: 14px; background: var(--paper); }
.dashboard-notification-copy { color: var(--muted); }
.today-task-list { display: grid; gap: 8px; }
.today-task-list a { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 12px; align-items: center; padding: 12px 14px; border: 1px solid var(--line); border-radius: 10px; background: var(--frame-2); color: var(--ink); text-decoration: none; }
.today-task-summary { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.today-task-list a > span:last-child { color: var(--forest-650); font-size: 1.25rem; }
.task-list { display: grid; gap: 14px; }
.task-list .section-heading { display: flex; justify-content: space-between; gap: 12px; align-items: center; }
.task-list-card { display: grid; gap: 14px; min-width: 0; padding: 16px; border: 1px solid var(--line); border-radius: 14px; background: var(--paper); }
.task-list-card.focused { border-color: var(--forest-650); box-shadow: 0 0 0 2px var(--forest-100); }
.task-list-card h3 { margin: 6px 0; font-size: 1.1rem; }
.task-list-card p, .task-list-card small, .task-message { overflow-wrap: anywhere; }
.task-list-card footer { display: flex; justify-content: space-between; align-items: center; flex-wrap: wrap; gap: 10px; }
.task-status { text-transform: capitalize; font-weight: 700; }
.task-review-backdrop { position: fixed; z-index: 290; inset: 0; background: rgba(4, 15, 10, .72); }
.task-review-sheet { position: fixed; z-index: 291; inset: max(8px, env(safe-area-inset-top)) max(8px, env(safe-area-inset-right)) max(8px, env(safe-area-inset-bottom)) max(8px, env(safe-area-inset-left)); width: min(680px, calc(100vw - 16px)); margin: auto; overflow-y: auto; padding: 18px; border-radius: 18px; background: var(--paper); color: var(--ink); box-shadow: 0 18px 50px rgba(0, 0, 0, .35); }
.task-review-sheet > header { display: flex; justify-content: space-between; gap: 12px; align-items: start; }
.task-review-sheet > header button { flex: 0 0 44px; height: 44px; border: 1px solid var(--line); border-radius: 50%; background: var(--paper); color: var(--ink); font-size: 1.4rem; }
.task-review-sheet h2, .task-review-sheet p, .task-review-sheet li { overflow-wrap: anywhere; }
.task-review-sheet dl { display: grid; gap: 8px; }
.task-review-sheet dl > div { padding: 9px; border-radius: 9px; background: var(--forest-100); }
.task-review-sheet dt { color: var(--muted); font-size: .8rem; }
.task-review-sheet dd { margin: 3px 0 0; font-weight: 700; }
.task-review-sheet form { display: grid; gap: 12px; margin-top: 18px; }
.task-review-sheet label { display: grid; gap: 5px; font-weight: 700; }
.task-review-sheet select, .task-review-sheet input, .task-review-sheet textarea { box-sizing: border-box; width: 100%; min-height: 44px; padding: 10px; border: 1px solid var(--line); border-radius: 9px; background: #fff; color: #17231e; font: inherit; }
.task-review-sheet > footer { margin-top: 18px; }
.card-charge-shell { min-width: 0; }
.card-charge-shell > label, .card-charge-editor label { display: grid; gap: 6px; max-width: 540px; font-weight: 750; }
.card-charge-shell select, .card-charge-editor select, .card-charge-editor input, .card-charge-editor textarea { box-sizing: border-box; width: 100%; min-height: 44px; padding: 10px; border: 1px solid var(--line); border-radius: 9px; background: #fff; color: #17231e; font: inherit; }
.card-charge-table-wrap { max-width: 100%; margin: 14px 0; overflow-x: auto; border: 1px solid var(--line); border-radius: 12px; }
.card-charge-table-wrap table { width: 100%; min-width: 580px; border-collapse: collapse; background: var(--paper); }
.card-charge-table-wrap th, .card-charge-table-wrap td { padding: 12px; border-bottom: 1px solid var(--line); text-align: left; white-space: nowrap; }
.card-charge-row { cursor: pointer; }
.card-charge-row.expanded { background: var(--frame-2); }
.card-charge-row td:nth-child(2) { white-space: normal; }
.card-charge-row td button { padding: 0; border: 0; background: none; color: var(--forest-650); font: inherit; font-weight: 800; text-align: left; text-decoration: underline; }
.card-charge-detail-row > td { padding: 0; white-space: normal; }
.card-charge-detail-row .card-charge-editor { margin: 0; border: 0; border-radius: 0; }
.card-charge-editor { display: grid; gap: 12px; min-width: 0; margin-top: 18px; padding: 16px; border: 1px solid var(--line); border-radius: 14px; background: var(--paper); }
.card-charge-editor form { display: grid; gap: 12px; }
.card-charge-editor .section-heading { display: flex; justify-content: space-between; gap: 12px; flex-wrap: wrap; }
.card-charge-editor p { overflow-wrap: anywhere; }
.card-charge-receipt { display: grid; gap: 10px; margin-top: 16px; padding-top: 14px; border-top: 1px solid var(--line); }
.card-charge-receipt h3, .card-charge-receipt p { margin: 0; }
.card-charge-receipt button { justify-self: start; }

/* Theme hierarchy: dark shell, tinted first-level frames, pale inner frames. */
.page-header { color: var(--shell-text); }
.content-section > .section-heading,
.more-feature-section > .section-heading,
.project-selector-heading,
.wishlist-toolbar,
.task-list > .section-heading { color: var(--shell-text); }
.content-section > .section-heading .section-kicker,
.more-feature-section > .section-heading .section-kicker,
.project-selector-heading .section-kicker { color: var(--shell-muted); }
.project-selector > div:first-child > p:last-child,
.project-selector-heading > div > p:last-child,
.project-selector > .project-selector-heading > div > p:last-child { color: var(--shell-muted); }

:is(.attention-card, .project-card, .empty-state, .receipt-entry-card, .recent-receipts,
    .settings-card, .feature-link-card, .project-selector-controls, .selected-project-preview,
    .dashboard-manager, .project-choice-list button, .project-pane, .daily-report-project-card,
    .daily-report-progress, .daily-report-scroll-section, .pm-today-job, .task-list-card,
    .today-dashboard-manager, .fleet-map-card, .equipment-section, .wishlist-create,
    .wishlist-schedule-card, .wishlist-list, .project-ap-shell, .card-charge-shell,
    .policy-page, .notification-panel) {
  background: var(--frame-1);
  color: var(--ink);
}
:is(.attention-card, .project-card, .receipt-entry-card, .recent-receipts, .settings-card,
    .feature-link-card, .project-selector-controls, .selected-project-preview, .dashboard-manager,
    .project-choice-list button, .project-pane, .daily-report-project-card, .daily-report-progress,
    .daily-report-scroll-section, .pm-today-job, .task-list-card, .today-dashboard-manager,
    .fleet-map-card, .equipment-section, .wishlist-create, .wishlist-schedule-card,
    .wishlist-list, .project-ap-shell, .card-charge-shell) { border-color: var(--line); }
:is(.project-capability-grid button, .daily-report-card-metrics div,
    .daily-report-cost-code-list > label, .daily-report-mobile-form,
    .receipt-split-line, .pm-today-previous, .pm-today-current,
    .pm-today-report, .pm-today-gallery, .pm-today-gallery-track figure,
    .today-dashboard-job-list article, .dashboard-notification-list,
    .theme-option, .navigation-option,
    .daily-report-list > button,
    .card-charge-editor, .wishlist-gantt-scroll) {
  background: var(--frame-2);
  color: var(--ink);
}
.project-capability-grid button,
.daily-report-cost-code-list > label,
.today-dashboard-job-list article { border: 1px solid var(--line); }

.daily-reports-mobile-intro { background: var(--frame-1); color: var(--ink); border: 1px solid var(--line); }
.schedule-overview,
.project-overview-hero { background: var(--frame-2); color: var(--ink); border: 1px solid var(--line); }
.daily-reports-mobile-intro p:last-child,
.schedule-overview small,
.project-overview-hero > p:not(.section-kicker) { color: var(--muted); }
.daily-reports-mobile-intro .section-kicker,
.schedule-overview .section-kicker,
.project-overview-hero .section-kicker { color: var(--forest-800); }
.daily-reports-mobile-intro > span { background: var(--frame-2); color: var(--forest-800); }
.schedule-ring::after { background: var(--frame-2); }
.daily-report-section-nav { background: var(--shell-bg); }
.daily-report-dashboard-back,
.daily-report-open-strip > div:first-child span { color: var(--shell-muted); }
.receipt-image-viewer,
.wishlist-detail { color: var(--ink); }

.tab-bar { border-top-color: color-mix(in srgb, var(--shell-text) 22%, transparent); background: var(--shell-bg); }
.nav-item { color: var(--shell-muted); }
.nav-item[aria-current="page"] { color: var(--shell-text); }
.nav-item[aria-current="page"] .nav-icon { background: var(--forest-650); color: white; }
.primary-button { background: var(--forest-650); border-color: var(--forest-650); color: white; }
.primary-button:disabled { opacity: .62; }
.hero-card .primary-button { background: var(--forest-650); border-color: var(--forest-650); color: white; }

.time-clock-page { display: grid; gap: 1rem; max-width: 960px; margin: 0 auto; padding: 1rem; color: var(--ink); }
.time-clock-heading { display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: center; gap: .75rem; border-bottom: 1px solid var(--line); padding-bottom: 1rem; }
.time-clock-heading-main { display: flex; align-items: center; gap: .75rem; min-width: 0; }
.time-clock-heading h1 { margin: 0; }
.time-clock-stopwatch-icon { width: 3rem; height: 3rem; flex: none; fill: none; stroke: var(--forest-650); stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; }
.time-clock-summary-date { display: block; font-size: 1.05rem; line-height: 1.3; }
.time-clock-summary { display: grid; gap: .1rem; text-align: right; font-weight: 700; }
.time-clock-day-total { display: block; font-size: clamp(1.7rem, 6vw, 2.5rem); font-variant-numeric: tabular-nums; line-height: 1.05; color: var(--forest-650); }
.time-clock-page > section, .time-clock-policy-footer { background: var(--frame-1); border: 1px solid var(--line); border-radius: 14px; padding: 1rem; }
.time-clock-page h1, .time-clock-page h2, .time-clock-page h3 { margin: 0 0 .65rem; }
.time-clock-page button { min-height: 44px; margin: .25rem; }
.time-clock-page label { display: grid; gap: .35rem; margin: .7rem 0; }
.time-clock-page input, .time-clock-page select { min-height: 44px; max-width: 100%; }
.time-clock-controls { display: grid; gap: .55rem; margin: 1rem 0; }
.time-clock-controls h2 { margin-bottom: 0; }
.time-clock-card-title { border-top: 1px solid var(--line); padding-top: 1rem; }
.time-clock-action { display: block; width: 100%; min-height: 3.5rem !important; margin: .2rem 0 !important; padding: .7rem 1rem; border: 2px solid transparent; border-radius: 12px; color: #fff; font-size: 1.15rem; font-weight: 800; text-align: center; }
.time-clock-action-in { background: #17623a; border-color: #17623a; }
.time-clock-action-switch { background: #175a83; border-color: #175a83; }
.time-clock-action-out { background: #b42318; border-color: #b42318; }
.time-clock-action:disabled { background: #737d83; border-color: #737d83; color: #fff; opacity: .7; }
.time-clock-policy summary, .time-clock-history > button { cursor: pointer; font-weight: 700; }
.time-clock-policy-footer { margin-top: .5rem; }
.time-clock-policy-footer > p { color: var(--muted); margin: 0 0 .5rem; }
.time-clock-policy-ack { display: flex !important; align-items: center; gap: .5rem; }
.time-clock-policy-ack input { min-height: 0; }
.time-clock-job-picker { min-width: 0; }
.time-clock-job-picker label { font-size: 1.08rem; font-weight: 700; }
.time-clock-job-picker input, .time-clock-job-picker select { min-height: 3.4rem; padding: .65rem .75rem; font-size: 1.12rem; line-height: 1.3; }
.time-clock-job-choice { display: flex; align-items: end; gap: .5rem; }
.time-clock-job-choice label { flex: 1; min-width: 0; }
.time-clock-job-choice select { width: 100%; }
.time-clock-job-choice select[size] { max-height: 15rem; overflow-y: auto; overscroll-behavior: contain; }
.time-clock-favorite { min-width: 3.4rem; min-height: 3.4rem !important; font-size: 1.7rem; color: var(--forest-650); }
.time-clock-table-scroll { max-width: 100%; overflow-x: auto; -webkit-overflow-scrolling: touch; }
.time-clock-table { border-collapse: collapse; table-layout: fixed; width: 100%; }
.time-clock-table th, .time-clock-table td { border-bottom: 1px solid var(--line); padding: .45rem .3rem; text-align: left; vertical-align: middle; overflow-wrap: anywhere; }
.time-clock-table th { white-space: nowrap; }
.time-clock-segment { font-size: clamp(.76rem, 3.1vw, 1rem); font-variant-numeric: tabular-nums; }
.time-clock-segment, .time-clock-job-row { background: #f7fbf6; color: #112b1c; }
.time-clock-segment.time-clock-shift-alt, .time-clock-job-row.time-clock-shift-alt { background: #c9e4ce; color: #102819; }
.time-clock-segment > td, .time-clock-job-row > td { border-left: 6px solid #236d3e; }
.time-clock-segment > td { border-top: 5px solid var(--frame-1); border-bottom: 0; padding-bottom: .1rem; }
.time-clock-job-row > td { padding-top: .1rem; padding-bottom: .3rem; border-bottom: 2px solid #659975; }
.time-clock-entry-details { display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: center; gap: .4rem; }
.time-clock-entry-lines { min-width: 0; font-size: .84rem; line-height: 1.25; }
.time-clock-equipment-summary { font-size: .8rem; }
.time-clock-entry-actions { display: flex; flex-direction: column; align-items: flex-end; gap: .2rem; }
.time-clock-entry-actions button { min-height: 2rem; margin: 0; padding: .2rem .4rem; font-size: .75rem; line-height: 1.15; white-space: nowrap; }
.time-clock-job-row .time-clock-note-marker { min-height: 1.4rem; margin: 0; padding: 0 .2rem; border: 0; background: transparent; color: inherit; font: inherit; font-weight: 900; }
.time-clock-note-message:not([hidden]) { display: block; margin: .15rem 0; font-size: .8rem; white-space: pre-wrap; }
.time-clock-equipment-editor form { display: grid; gap: .7rem; padding: .8rem; border: 1px solid #659975; border-radius: 10px; background: #f7fbf6; }
.time-clock-equipment-editor form > label { display: grid; gap: .3rem; font-weight: 700; }
.time-clock-equipment-editor input[type=search] { min-height: 44px; width: 100%; }
.time-clock-equipment-options { max-height: 15rem; overflow-y: auto; border: 1px solid #92baa0; border-radius: 8px; }
.time-clock-equipment-option { display: flex; align-items: center; gap: .4rem; padding: .25rem .5rem; border-bottom: 1px solid #d5e7d9; }
.time-clock-equipment-option[hidden] { display: none; }
.time-clock-equipment-option label { flex: 1; display: flex; align-items: center; gap: .35rem; min-height: 44px; }
.time-clock-equipment-option input { width: 20px; height: 20px; flex: 0 0 auto; }
.time-clock-equipment-option button { min-width: 44px; min-height: 44px; font-size: 1.4rem; }
.time-clock-equipment-actions { display: flex; gap: .5rem; flex-wrap: wrap; }
.time-clock-equipment-prompt { margin: 1rem 0; padding: 1rem; border: 2px solid #315f43; border-radius: 12px; background: #f7fbf6; display: grid; gap: .7rem; }
.time-clock-equipment-prompt h2 { margin: 0; font-size: 1.2rem; }
.time-clock-equipment-prompt > label { display: grid; gap: .35rem; font-weight: 700; }
.time-clock-equipment-prompt input[type=search] { min-height: 48px; width: 100%; font-size: 1rem; }
.time-clock-equipment-prompt-options { max-height: 16rem; overflow-y: auto; border: 1px solid #74967d; border-radius: 8px; background: #fff; }
.time-clock-equipment-prompt-options > label, .time-clock-equipment-prompt-options > div { display: flex; gap: .55rem; align-items: center; min-height: 48px; padding: .5rem; border-bottom: 1px solid #d6e4da; font-size: 1rem; }
.time-clock-equipment-prompt-options > div label { display: flex; gap: .55rem; align-items: center; flex: 1; min-height: 44px; }
.time-clock-equipment-prompt-options > div.time-clock-equipment-yesterday label { color: #17623a; font-weight: 800; }
.time-clock-equipment-prompt-options > div button { min-width: 44px; min-height: 44px; font-size: 1.4rem; }
.time-clock-equipment-prompt-options [hidden] { display: none; }
.time-clock-equipment-prompt-options input { width: 22px; height: 22px; flex: none; }
.time-clock-equipment-prompt-actions { display: flex; gap: .5rem; flex-wrap: wrap; }
.time-clock-equipment-prompt-actions button { min-height: 48px; font-size: 1rem; }
.time-clock-segment.time-clock-approved, .time-clock-job-row.time-clock-approved { background: #e5e7eb; color: #111; }
.time-clock-approved .time-clock-punch, .time-clock-approved .time-clock-punch-plain, .time-clock-approved button, .time-clock-approved-label { color: #111 !important; }
.time-clock-approved button:disabled { opacity: 1; }
.time-clock-approved-label { font-weight: 700; }
.time-clock-auto-note { margin: .1rem 0 .35rem; color: #473919; font-size: .9rem; }
.time-clock-approved .time-clock-auto-note { color: #111; }
.time-clock-table tfoot th, .time-clock-table tfoot td { border-top: 2px solid var(--line); font-weight: 700; }
.time-clock-punch { background: transparent; border: 0; font: inherit; font-weight: 700; padding: 0; text-align: left; text-decoration: underline dotted; }
.time-clock-punch.aligned, .time-clock-punch.switch_source, .time-clock-punch.switch_destination { color: #17623a; }
.time-clock-punch.mismatch, .time-clock-punch.uncertain { color: #833803; }
.time-clock-punch-plain { color: var(--ink); }
.time-clock-punch-message:not([hidden]) { display: block; font-size: .8rem; font-weight: 400; max-width: 13rem; text-decoration: none; white-space: normal; }
.time-clock-prior { color: var(--muted); opacity: .72; font-size: .9em; }
.time-clock-gap { background: #fff7d6; }
.time-clock-overlap, .time-clock-error { background: #ffd9d9; color: #8e1515; }
.time-clock-edit-form { display: grid; gap: .3rem; padding: .6rem; border: 1px solid var(--line); border-radius: 8px; }
.time-clock-history article { padding: .8rem 0; border-top: 1px solid var(--line); }
.time-clock-history-day h3 { margin: .2rem 0 .65rem; font-size: 1rem; }
.time-clock-history-card-status { display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: .5rem; padding: .35rem .2rem; color: var(--ink); font-size: .72rem; }
.time-clock-history-card-status + .time-clock-history-card-status { border-top: 1px solid var(--line); }
.time-clock-week-total { display: flex; justify-content: space-between; gap: 1rem; margin: .9rem 0 0; padding: .85rem .25rem .2rem; border-top: 2px solid var(--line); font-size: 1.1rem; font-weight: 800; }
.time-clock-week-total strong { font-variant-numeric: tabular-nums; color: var(--forest-650); }
@media (max-width: 480px) {
  .time-clock-page { padding: .5rem; }
  .time-clock-page > section, .time-clock-policy-footer { padding: .7rem; }
  .time-clock-heading { gap: .35rem; }
  .time-clock-heading-main { gap: .4rem; }
  .time-clock-heading h1 { font-size: 1.1rem; }
  .time-clock-stopwatch-icon { width: 2rem; height: 2rem; }
  .time-clock-summary-date { font-size: .8rem; }
  .time-clock-summary { font-size: .75rem; }
  .time-clock-day-total { font-size: 1.45rem; }
}

/* iOS zooms the entire WebView when a focused text control renders below 16px. */
@supports (-webkit-touch-callout: none) {
  #main-content input:not([type="checkbox"]):not([type="radio"]):not([type="range"]):not([type="color"]),
  #main-content select,
  #main-content textarea,
  #main-content [contenteditable="true"],
  #modal-root input:not([type="checkbox"]):not([type="radio"]):not([type="range"]):not([type="color"]),
  #modal-root select,
  #modal-root textarea { font-size: max(16px, 1em); }
}
.daily-report-clock-suggestions { margin: 14px 0; padding: 12px 14px; border: 2px solid #486c58; border-radius: 12px; background: #f2f7f2; color: #142d1e; }
.daily-report-clock-live-list { margin: 14px 0; padding: 12px 14px; border: 2px solid #286044; border-radius: 12px; background: #eaf6ec; color: #102b1c; }
.daily-report-clock-live-list h2 { margin: 0 0 6px; font-size: 1rem; }
.daily-report-clock-live-list h3 { margin: 12px 0 5px; font-size: .8rem; }
.daily-report-clock-live-list p { font-size: .75rem; line-height: 1.45; }
.daily-report-clock-live-list ul { margin: 0 0 12px; padding: 0; list-style: none; }
.daily-report-clock-live-list li { display: flex; align-items: center; flex-wrap: wrap; gap: .5rem; padding: .6rem 0; border-top: 1px solid #9bbca3; }
.daily-report-clock-live-list li strong { min-width: 12rem; }
.daily-report-clock-live-list li span { flex: 1; font-size: .75rem; }
.daily-report-clock-live-list .daily-report-clock-equipment-review { padding: .7rem; border: 1px solid #9b7400; border-radius: 8px; background: #fff1b8; color: #332600; }
.daily-report-clock-suggestions summary { cursor: pointer; font-size: .9rem; font-weight: 850; }
.daily-report-clock-suggestions p { margin: 12px 0; font-size: .68rem; line-height: 1.45; }
.daily-report-clock-suggestions h3 { margin: 12px 0 5px; font-size: .75rem; }
.daily-report-clock-suggestions ul { margin: 0; padding: 0; list-style: none; }
.daily-report-clock-suggestions li { display: flex; justify-content: space-between; align-items: center; flex-wrap: wrap; gap: 9px; padding: 9px 0; border-top: 1px solid #b7c8b9; }
.daily-report-clock-suggestions li strong, .daily-report-clock-suggestions li small { display: block; }
.daily-report-clock-suggestions li strong { font-size: .74rem; }
.daily-report-clock-suggestions li small { margin-top: 3px; color: #334a39; font-size: .64rem; }
.daily-report-clock-review-list { margin: 14px 0; padding: 12px; border: 2px solid #a27300; border-radius: 12px; background: #fff6cf; color: #292000; }
.daily-report-clock-review-list h2 { margin: 0 0 6px; font-size: 1rem; }
.daily-report-clock-review-list > p { font-size: .75rem; }
.daily-report-clock-review { display: grid; gap: .5rem; margin: .5rem 0; padding: .75rem; border: 1px solid #a38a44; border-radius: 8px; background: #fffdf5; }
.daily-report-clock-review.pending { background: #ffe985; border-color: #8a6500; }
.daily-report-clock-review.approved { background: #e4f5e8; border-color: #287347; }
.daily-report-clock-review.disputed { background: #fff0de; border-color: #a15b1d; }
.daily-report-clock-review strong, .daily-report-clock-review small { display: block; }
.daily-report-clock-review small { margin-top: .25rem; }
.daily-report-clock-review-actions { display: flex; flex-wrap: wrap; gap: .5rem; }
.daily-report-clock-review textarea { display: block; width: 100%; min-height: 4rem; }
.daily-report-clock-hours-frame { display: grid; gap: 3px; width: calc(100% - 24px); margin: 12px; padding: 12px 14px; border: 2px solid #a27300; border-radius: 10px; background: #ffe985; color: #292000; text-align: left; cursor: pointer; }
.daily-report-clock-hours-frame span { font-size: .78rem; font-weight: 750; }
.daily-report-clock-hours-frame strong { font-size: 1.35rem; font-variant-numeric: tabular-nums; }
.daily-report-clock-hours-frame small { font-size: .7rem; }
.daily-report-clock-hours-frame:focus-visible { outline: 3px solid #214f8b; outline-offset: 2px; }
.daily-report-clock-day-backdrop { position: fixed; z-index: 159; inset: 0; background: #040a0fa6; }
.daily-report-clock-day-dialog { position: fixed; z-index: 160; inset: max(12px, env(safe-area-inset-top)) 12px max(12px, env(safe-area-inset-bottom)); max-width: 640px; margin: auto; padding: 16px; overflow-y: auto; border: 2px solid #a27300; border-radius: 14px; background: #fffdf5; color: #292000; box-shadow: 0 20px 60px #0007; }
.daily-report-clock-day-dialog > header { display: flex; align-items: start; justify-content: space-between; gap: 12px; }
.daily-report-clock-day-dialog h2 { margin: 0; font-size: 1.2rem; }
.daily-report-clock-day-dialog header p { margin: 4px 0 12px; font-size: .75rem; }
.daily-report-clock-day-total { display: grid; gap: 3px; padding: 12px; border-radius: 9px; background: #ffe985; }
.daily-report-clock-day-total strong { font-size: 1.3rem; font-variant-numeric: tabular-nums; }
.daily-report-clock-legend { display: flex; flex-wrap: wrap; gap: 8px 14px; font-size: .72rem; }
.daily-report-clock-legend .aligned { color: #17623a; font-weight: 750; }
.daily-report-clock-legend .mismatch { color: #833803; font-weight: 750; }
.daily-report-clock-shift { display: grid; gap: 10px; margin: 12px 0; padding: 12px; border: 1px solid #bea965; border-radius: 9px; background: #fff; }
.daily-report-clock-shift > div:first-child { display: flex; justify-content: space-between; gap: 8px; }
.daily-report-clock-shift small { color: #50492d; }
.daily-report-clock-punch-row { display: flex; flex-wrap: wrap; gap: 10px 24px; font-size: .85rem; }
.daily-report-clock-shift details summary { cursor: pointer; font-weight: 700; }
.daily-report-clock-pings { margin: 8px 0 0; padding-left: 24px; }
.daily-report-clock-pings li { display: flex; justify-content: space-between; flex-wrap: wrap; gap: 6px 14px; padding: 7px 0; border-bottom: 1px solid #e4ddc2; }
.daily-report-clock-pings li small { font-size: .72rem; }
.daily-report-clock-split { display: grid; gap: 10px; margin: 14px 0; padding: 14px; border: 1px solid #bea965; border-radius: 9px; background: #fff; }
.daily-report-clock-split h3, .daily-report-clock-split p { margin: 0; }
.daily-report-clock-split-line { display: grid; grid-template-columns: minmax(92px, 1fr) minmax(150px, 2fr); gap: 10px; align-items: end; }
.daily-report-clock-split-line input, .daily-report-clock-split-line select { width: 100%; min-height: 44px; font-size: 1rem; }
@media (max-width: 420px) { .daily-report-clock-split-line { grid-template-columns: 1fr; } }
.time-clock-equipment-option { flex-wrap: wrap; }
.time-clock-meter-reading, .daily-report-meter-reading { display: block; margin: 8px 12px; padding: 10px; border: 1px solid #a9b9ad; border-radius: 9px; color: #173d2b; font-size: .85rem; font-weight: 800; }
.time-clock-equipment-option .time-clock-meter-reading { flex: 0 0 100%; margin: 0 0 6px; }
.time-clock-meter-reading summary, .daily-report-meter-reading summary { cursor: pointer; text-decoration: underline; text-underline-offset: 3px; font-weight: 900; }
.time-clock-meter-reading[open] > label, .daily-report-meter-reading[open] > label { display: grid; gap: 6px; margin-top: 10px; }
.time-clock-meter-reading:not([open]) > :not(summary), .daily-report-meter-reading:not([open]) > :not(summary) { display: none; }
.time-clock-meter-reading input, .daily-report-meter-reading input { width: 100%; min-height: 44px; font-size: 1rem; }
.time-clock-meter-reading.meter-reading-requested, .daily-report-meter-reading.meter-reading-requested { border-color: #a72027; background: #fff0f0; color: #a72027; }
.time-clock-meter-reading small, .daily-report-meter-reading small { line-height: 1.35; font-size: .75rem; }
