:root{--background:#f4f6f8;--surface:#fff;--surface-muted:#f8fafc;--foreground:#17202a;--muted:#667085;--border:#dde3ea;--primary:#0f766e;--primary-hover:#115e59;--primary-soft:#e6f4f1;--danger:#b42318;--shadow:0 1px 2px #1018280f}*{box-sizing:border-box}html,body{min-height:100%}body{background:var(--background);color:var(--foreground);margin:0;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}a{color:inherit;text-decoration:none}button,input,select,textarea{font:inherit}.auth-page{justify-content:center;align-items:center;min-height:100vh;padding:24px;display:flex}.auth-card{background:var(--surface);border:1px solid var(--border);box-shadow:var(--shadow);border-radius:8px;width:100%;max-width:420px;padding:32px}.auth-icon{background:var(--primary-soft);color:var(--primary);border-radius:999px;justify-content:center;align-items:center;width:48px;height:48px;margin-bottom:20px;display:inline-flex}.auth-title{margin:0 0 8px;font-size:26px;line-height:1.2}.auth-copy{color:var(--muted);margin:0 0 24px;line-height:1.5}.auth-link-action{width:100%}.app-shell{grid-template-columns:280px minmax(0,1fr);min-height:100vh;display:grid}.sidebar{background:var(--surface);border-right:1px solid var(--border);flex-direction:column;gap:24px;height:100vh;padding:24px;display:flex;position:sticky;top:0}.brand{align-items:center;gap:12px;font-size:18px;font-weight:700;display:flex}.brand-mark{background:var(--primary);color:#fff;border-radius:8px;justify-content:center;align-items:center;width:36px;height:36px;display:inline-flex}.primary-action,.secondary-action,.danger-action{cursor:pointer;border-radius:6px;justify-content:center;align-items:center;gap:8px;min-height:40px;padding:9px 14px;font-weight:600;display:inline-flex}.primary-action{background:var(--primary);border:1px solid var(--primary);color:#fff}.primary-action:hover{background:var(--primary-hover)}.secondary-action{background:var(--surface);border:1px solid var(--border);color:var(--foreground)}.danger-action{color:var(--danger);background:#fff5f5;border:1px solid #fecdca}.primary-action:disabled,.secondary-action:disabled,.danger-action:disabled{cursor:not-allowed;opacity:.55}.nav-list{gap:6px;display:grid}.nav-section-label{color:var(--muted);letter-spacing:.08em;text-transform:uppercase;padding:8px 10px 2px;font-size:11px;font-weight:700}.sidebar-readonly-badge{justify-content:center;min-height:40px}.nav-item{color:#344054;border-radius:6px;align-items:center;gap:10px;min-height:40px;padding:9px 10px;display:flex}.nav-item:hover{background:var(--surface-muted)}.main-area{min-width:0;padding:32px}.sidebar-footer{border-top:1px solid var(--border);gap:12px;margin-top:auto;padding-top:16px;display:grid}.sidebar-user{gap:4px;display:grid}.sidebar-meta{display:flex}.sidebar-logout{width:100%}.page-header{justify-content:space-between;align-items:flex-start;gap:16px;margin-bottom:24px;display:flex}.page-title{margin:0;font-size:30px;line-height:1.2}.page-description{color:var(--muted);margin:8px 0 0;line-height:1.5}.content-grid,.create-journal-layout{gap:16px;display:grid}.two-column{grid-template-columns:minmax(0,1fr) minmax(320px,420px)}.three-column{grid-template-columns:repeat(3,minmax(0,1fr))}.create-journal-grid{align-items:start}.create-journal-sidebar,.create-journal-scroll-pane{min-width:0}.create-journal-scroll-pane{gap:16px;display:grid}.ks2-preview-panel{gap:12px;display:grid}.users-grid{grid-template-columns:repeat(2,minmax(0,1fr));align-items:start}.card{background:var(--surface);border:1px solid var(--border);box-shadow:var(--shadow);border-radius:8px;min-width:0;padding:20px}.card-title{margin:0 0 14px;font-size:18px}.form-grid{gap:14px;display:grid}.field{gap:6px;min-width:0;display:grid}.label{color:#344054;font-size:14px;font-weight:600}.input,.select,.textarea{color:var(--foreground);background:#fff;border:1px solid #cfd8e3;border-radius:6px;width:100%;min-width:0;min-height:40px;padding:9px 11px}.textarea{resize:vertical;min-height:96px}.checkbox-list{gap:8px;display:grid}.checkbox-row{align-items:center;gap:8px;display:flex}.empty-state{background:var(--surface-muted);color:var(--muted);text-align:center;border:1px dashed #cfd8e3;border-radius:8px;padding:20px;line-height:1.5}.flash{border-radius:8px;margin-bottom:16px;padding:12px 14px;line-height:1.5}.flash-error{color:#b42318;background:#fef3f2;border:1px solid #fecdca}.flash-success{color:#067647;background:#ecfdf3;border:1px solid #abefc6}.flash-info{color:#175cd3;background:#eff8ff;border:1px solid #b2ddff}.tabs{gap:8px;margin-bottom:16px;display:flex}.tab{border:1px solid var(--border);color:#344054;background:#fff;border-radius:6px;padding:8px 12px}.tab-active{background:var(--primary-soft);color:var(--primary-hover);border-color:#9ad7cf;font-weight:700}.table{border-collapse:collapse;width:100%}.table-scroll{width:100%;overflow-x:auto}.table th,.table td{border-bottom:1px solid var(--border);text-align:left;padding:12px}.table th{background:var(--surface-muted);color:#344054;font-size:14px}.clickable-row{cursor:pointer}.clickable-row:hover td,.clickable-row:focus-visible td{background:var(--primary-soft)}.table-user-cell{word-break:break-word;gap:4px;display:grid}.users-table-card{grid-column:1/-1;overflow:hidden}.users-table{min-width:1120px}.badge{background:var(--primary-soft);color:var(--primary-hover);border-radius:999px;padding:4px 10px;font-size:13px;font-weight:700;display:inline-flex}.badge-nowrap{white-space:nowrap}.stack{gap:12px;display:grid}.block-card{border:1px solid var(--border);border-radius:8px;gap:8px;padding:14px;display:grid}.muted{color:var(--muted)}.inline-form{gap:10px;display:grid}.compact-form{flex-wrap:wrap;align-items:center;display:flex}.row-actions{flex-wrap:wrap;gap:10px;display:flex}.users-row-actions{flex-direction:column;align-items:stretch;min-width:160px}.users-row-actions form{display:grid}.users-row-actions .compact-form{gap:8px;display:grid}.users-row-actions .secondary-action,.users-row-actions .danger-action{width:100%;min-height:36px}.checkbox-grid{gap:8px;display:grid}.tag-list{flex-wrap:wrap;gap:8px;display:flex}.template-pick-list{flex-wrap:wrap;gap:8px;margin-top:8px;display:flex}.compact-action{min-height:32px;padding:6px 10px;font-size:12px}.nested-card{background:var(--surface-muted)}.ks2-preview-card{gap:12px}.ks2-preview-frame{background:#fff;border:1px solid #cfd8e3;border-radius:8px;width:100%;min-height:520px}.compact-empty{text-align:left;padding:14px}.hint-card{margin-top:16px}.status-list{color:var(--foreground);margin:12px 0 0;padding-left:18px}.journal-log-filters{grid-template-columns:repeat(auto-fit,minmax(180px,220px));align-items:end;gap:12px;display:grid}.journal-log-filter-actions{flex-wrap:wrap;grid-column:1/-1;justify-content:flex-start;align-items:center;gap:10px;display:flex}.journal-log-add-button{white-space:nowrap;align-self:flex-start;min-height:34px;padding:7px 12px}.journal-entry-editor{border:1px solid var(--border);background:linear-gradient(#f8fafc 0%,#fff 100%);border-radius:8px;gap:16px;padding:18px;display:grid}.journal-attachment-list,.journal-badge-stack,.journal-entry-actions{gap:8px;display:grid}.journal-log-table td{vertical-align:top}.journal-entry-notes{gap:8px;display:grid}.journal-entry-note-block{gap:4px;line-height:1.45;display:grid}.journal-entry-note-block strong{color:#344054;font-size:13px}.journal-entry-note-block p{white-space:pre-wrap;word-break:break-word;margin:0}.journal-entry-note-block.is-muted{color:var(--muted)}.journal-log-row.is-incident td,.journal-log-row.is-warning td{background:#fff7ed}.journal-log-row.is-danger td{background:#fff1f2}.journal-status-badge.is-incident{color:#9a3412;background:#ffedd5;border-color:#fdba74}.journal-status-badge.is-warning{color:#9a3412;background:#ffedd5;border-color:#fb923c}.journal-status-badge.is-danger{color:#991b1b;background:#fee2e2;border-color:#fca5a5}.compact-link{min-height:34px}.schedule-summary-grid{align-items:stretch}.metric-card{gap:8px}.metric-card strong{color:var(--text);font-size:32px;line-height:1}.schedule-toolbar{padding:16px 18px}.schedule-filter-card{grid-template-columns:minmax(260px,1.4fr) repeat(3,minmax(180px,1fr));align-items:end;gap:12px;display:grid}.schedule-filter-actions{flex-wrap:wrap;grid-column:1/-1;align-items:center;gap:10px;display:flex}.schedule-legend{flex-wrap:wrap;align-items:center;gap:10px 16px;display:flex}.schedule-legend span{color:var(--muted);align-items:center;gap:6px;font-size:13px;display:inline-flex}.legend-dot{border:1px solid var(--border);border-radius:999px;width:12px;height:12px;display:inline-block}.legend-dot.is-empty{background:#fff}.legend-dot.is-planned{background:#111827;border-color:#111827}.legend-dot.is-completed{background:#16a34a;border-color:#16a34a}.schedule-card{overflow:hidden}.schedule-table{min-width:1040px}.schedule-table th,.schedule-table td{text-align:center;vertical-align:middle}.schedule-table th:first-child,.schedule-table td:first-child{text-align:left}.schedule-work-cell{min-width:330px}.schedule-work-cell p{margin:6px 0 10px}.schedule-month{border:1px solid var(--border);border-radius:999px;justify-content:center;align-items:center;min-width:58px;min-height:34px;padding:6px 10px;font-size:12px;font-weight:700;text-decoration:none;transition:border-color .15s,box-shadow .15s,transform .15s;display:inline-flex}.schedule-month.is-empty{color:#98a2b3;background:#fff}.schedule-month.is-planned{color:#fff;background:#111827;border-color:#111827}.schedule-month.is-completed{color:#fff;background:#16a34a;border-color:#15803d}.schedule-month.is-clickable:hover{transform:translateY(-1px);box-shadow:0 8px 18px #0f172a2e}.schedule-month:disabled{cursor:not-allowed;opacity:.72}.schedule-approval-hero{color:#fff;background:radial-gradient(circle at 0 0,#14b8a629,#0000 34%),linear-gradient(135deg,#0f172a,#134e4a);border-radius:14px;grid-template-columns:minmax(0,1fr) minmax(280px,.35fr);gap:24px;padding:24px;display:grid}.schedule-approval-hero h2{margin:14px 0 10px;font-size:28px}.schedule-approval-hero p{color:#ffffffc7;max-width:760px;margin:0}.schedule-approval-hero .badge{color:#ccfbf1;background:#ffffff1f}.schedule-approval-legend{flex-wrap:wrap;gap:14px;margin-top:18px;display:flex}.schedule-approval-legend span{color:#ffffffd6;align-items:center;gap:7px;font-size:13px;font-weight:700;display:inline-flex}.schedule-approval-send-card{background:#ffffff1f;border:1px solid #ffffff2e;border-radius:12px;align-self:stretch;gap:12px;padding:18px;display:grid}.schedule-approval-send-card .primary-action:disabled{color:#ffffffb3;background:#ffffff42}.schedule-approval-board{gap:18px;display:grid}.schedule-approval-customer{border:1px solid var(--border);box-shadow:var(--shadow-sm);background:#fff;border-radius:14px;overflow:hidden}.schedule-approval-customer-header{border-bottom:1px solid var(--border);background:linear-gradient(90deg,#f8fafc,#ecfeff);justify-content:space-between;align-items:center;gap:18px;padding:18px;display:flex}.schedule-approval-customer-header h2{margin:10px 0 6px}.schedule-approval-count{color:#fff;background:#0f172a;border-radius:12px;place-items:center;min-width:90px;padding:12px;display:grid}.schedule-approval-count strong{font-size:26px}.schedule-approval-count span{color:#ffffffb8;font-size:12px;font-weight:700}.schedule-approval-recipient{border-bottom:1px solid var(--border);grid-template-columns:minmax(180px,1fr) minmax(220px,1fr) auto;align-items:end;gap:12px;padding:16px;display:grid}.schedule-approval-feedback{color:#0f766e;background:#f0fdfa;border:1px solid #99f6e4;border-radius:10px;margin:16px 16px 0;padding:10px 12px;font-weight:700}.schedule-approval-work-list{gap:12px;padding:16px;display:grid}.schedule-approval-work-card{border:1px solid var(--border);border-radius:12px;gap:14px;padding:14px;display:grid}.schedule-approval-work-header{justify-content:space-between;align-items:start;gap:16px;display:flex}.schedule-approval-work-header p{margin:6px 0 0}.schedule-approval-month-grid{grid-template-columns:repeat(12,minmax(52px,1fr));gap:8px;display:grid}.schedule-approval-month-grid .schedule-month{width:100%;min-width:0}.public-approval-page{background:radial-gradient(circle at 18% 12%,#14b8a62e,#0000 30%),linear-gradient(135deg,#f8fafc,#ecfeff 52%,#f9fafb);gap:18px;min-height:100dvh;padding:clamp(20px,5vw,56px);display:grid}.public-approval-card,.schedule-public-table{width:100%;max-width:1180px;margin:0 auto}.public-approval-card h1{margin:12px 0 10px;font-size:clamp(28px,5vw,48px)}.schedule-public-table .schedule-month{min-width:38px}.success-message{color:#15803d;background:#ecfdf5;border:1px solid #86efac;border-radius:10px;padding:10px 12px;font-weight:800}.schedule-entry-shell{gap:18px;display:grid}.schedule-entry-shell>.row-actions,.schedule-entry-shell>.flash,.schedule-entry-shell>.schedule-entry-context{grid-column:1/-1}.schedule-entry-context{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.schedule-entry-main{grid-template-columns:minmax(300px,.9fr) minmax(420px,1.35fr);gap:18px;display:grid}.journal-entry-main{gap:18px;display:grid}.schedule-entry-shell .journal-entry-editor,.schedule-entry-readonly{grid-area:1/2}.schedule-entry-history{border:1px solid var(--border);background:#f8fafc;border-radius:8px;grid-area:1/1;align-self:start;gap:14px;padding:16px;display:grid}.schedule-history-list{gap:10px;max-height:72vh;padding-right:4px;display:grid;overflow:auto}.schedule-history-card{background:#fff}.schedule-history-card.is-selected{border-color:var(--accent);box-shadow:0 0 0 3px #14b8a624}.schedule-history-card.is-warning,.schedule-history-card.is-incident{border-color:#fdba74}.schedule-history-card.is-danger{border-color:#fca5a5}.schedule-entry-readonly{border:1px solid var(--border);background:#fff;border-radius:8px;gap:14px;padding:16px;display:grid}.schedule-readonly-fields{gap:8px;margin:10px 0 0;display:grid}.schedule-readonly-fields div{border-top:1px solid var(--border);padding-top:8px}.schedule-readonly-fields dt{color:var(--muted);font-size:12px;font-weight:700}.schedule-readonly-fields dd{margin:4px 0 0}@media (max-width:860px){.app-shell{grid-template-columns:1fr}.sidebar{height:auto;position:static}.main-area{padding:20px}.page-header,.two-column,.three-column,.users-grid{grid-template-columns:1fr;display:grid}.journal-log-filters,.schedule-filter-card,.schedule-entry-main,.schedule-approval-recipient,.schedule-approval-hero,.schedule-approval-month-grid{grid-template-columns:1fr}.schedule-approval-customer-header,.schedule-approval-work-header{flex-direction:column;align-items:stretch}.schedule-entry-shell .journal-entry-editor,.schedule-entry-readonly,.schedule-entry-history{grid-area:auto/1}}@media (min-width:861px){.create-journal-sidebar{position:sticky;top:24px}.create-journal-scroll-pane{overscroll-behavior:contain;scrollbar-gutter:stable;max-height:calc(100dvh - 48px);padding-right:6px;overflow-y:auto}}
