:root{font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;color:#18212b;background:#eef2f5;--navy:#17324d;--blue:#0e5bb5;--line:#d9e1e7;--muted:#66717c;--card:#fff;--shadow:0 8px 28px rgba(20,39,58,.08)}*{box-sizing:border-box}body{margin:0;background:#eef2f5}button,input,select{font:inherit}.shell{min-height:100vh;padding-bottom:82px}.topbar{background:var(--navy);color:#fff;padding:16px 18px;position:sticky;top:0;z-index:10;box-shadow:0 3px 10px rgba(0,0,0,.15)}.brand{font-size:19px;font-weight:800;letter-spacing:.02em}.subtitle{font-size:12px;opacity:.78;margin-top:2px}.page{max-width:920px;margin:0 auto;padding:18px}.page-title{font-size:30px;margin:0 0 4px}.page-sub{color:var(--muted);margin-bottom:16px}.card{background:var(--card);border:1px solid #e3e9ee;border-radius:14px;box-shadow:var(--shadow);padding:16px;margin-bottom:16px}.section-title{font-size:15px;font-weight:800;letter-spacing:.04em;text-transform:uppercase;color:#42515e;margin:0 0 12px}.row{display:flex;align-items:center;gap:12px;padding:12px 0;border-top:1px solid #eef1f4}.row:first-of-type{border-top:0}.grow{flex:1;min-width:0}.main-text{font-weight:750}.sub-text{font-size:13px;color:var(--muted);margin-top:3px}.time{font-weight:800;min-width:78px}.dot{width:11px;height:11px;border-radius:999px;flex:0 0 auto}.file-pill{display:inline-block;background:#edf4fb;border:1px solid #d5e5f5;padding:8px 10px;border-radius:10px;margin:4px 6px 4px 0;font-weight:700;font-size:13px}.priority{width:52px;height:40px;border-radius:10px;border:1px solid #bdc9d3;background:#f7fafc;font-weight:900;font-size:16px;cursor:pointer;flex:0 0 auto}.priority.A{background:#fff1f0;border-color:#efb5b1;color:#a41e18}.priority.B{background:#fff8e5;border-color:#efd899;color:#795900}.priority.C{background:#edf5ff;border-color:#b9d5f3;color:#145493}.done-btn,.primary-btn,.secondary-btn,.danger-btn{border:0;border-radius:10px;padding:10px 13px;font-weight:800;cursor:pointer}.done-btn,.primary-btn{background:#0d63c8;color:#fff}.secondary-btn{background:#edf2f6;color:#273746;border:1px solid #d6dfe6}.danger-btn{background:#fff0f0;color:#9e1d1d;border:1px solid #efc1c1}.toolbar{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:12px}.search{width:100%;padding:12px 14px;border:1px solid #cfd8df;border-radius:11px;background:#fff}.segmented{display:flex;border:1px solid #cad5de;border-radius:10px;overflow:hidden;background:#fff}.segmented button{border:0;background:#fff;padding:9px 12px;cursor:pointer;font-weight:750;color:#465460}.segmented button.active{background:var(--navy);color:#fff}.matter-card{cursor:pointer}.progress{height:8px;background:#e8edf1;border-radius:999px;overflow:hidden;margin-top:10px}.progress>div{height:100%;background:#0d63c8}.status-line{display:flex;justify-content:space-between;gap:10px;font-size:13px;color:var(--muted);margin-top:7px}.step{display:flex;gap:12px;align-items:flex-start;padding:13px 0;border-top:1px solid #edf1f4}.step:first-of-type{border-top:0}.step-marker{width:28px;height:28px;border-radius:999px;border:2px solid #bdc8d0;display:grid;place-items:center;font-weight:900;flex:0 0 auto}.step.complete .step-marker{background:#e5f5eb;border-color:#5ea873;color:#1a6a35}.step.available .step-marker{border-color:#0d63c8;color:#0d63c8}.step.locked{opacity:.52}.history-item{padding:10px 0;border-top:1px solid #edf1f4}.history-item:first-of-type{border-top:0}.history-time{font-size:12px;color:var(--muted)}.balance{font-weight:850}.tabs{position:fixed;left:0;right:0;bottom:0;background:#fff;border-top:1px solid #d8e0e6;display:flex;z-index:20;padding-bottom:max(4px,env(safe-area-inset-bottom))}.tabs button{flex:1;border:0;background:transparent;padding:10px 4px 8px;color:#66717c;font-size:12px;font-weight:700;cursor:pointer}.tabs button.active{color:#0d63c8}.tab-icon{display:block;font-size:20px;line-height:22px}.modal-backdrop{position:fixed;inset:0;background:rgba(15,28,40,.45);display:grid;place-items:end center;z-index:50}.modal{background:#fff;width:min(100%,520px);border-radius:18px 18px 0 0;padding:20px;box-shadow:0 -10px 30px rgba(0,0,0,.18)}.modal input,.modal select{width:100%;padding:12px;border:1px solid #cbd5dd;border-radius:10px;margin:6px 0 12px}.modal-actions{display:flex;gap:8px;justify-content:flex-end}.toast{position:fixed;left:50%;transform:translateX(-50%);bottom:90px;background:#1d2e3c;color:#fff;padding:12px 14px;border-radius:12px;z-index:60;box-shadow:var(--shadow);display:flex;gap:12px;align-items:center}.toast button{border:0;background:#fff;color:#17324d;border-radius:8px;padding:7px 10px;font-weight:850;cursor:pointer}.color-row{display:grid;grid-template-columns:1fr 64px;gap:12px;align-items:center;padding:10px 0;border-top:1px solid #edf1f4}.empty{padding:20px;text-align:center;color:var(--muted)}@media(max-width:600px){.page{padding:13px}.topbar{padding:13px 14px}.page-title{font-size:24px}.card{padding:13px;border-radius:12px}.row{gap:9px}.time{min-width:62px;font-size:13px}.priority{width:46px;height:38px;font-size:15px}.done-btn{padding:9px 10px;font-size:13px}.section-title{font-size:13px}.hide-mobile{display:none}.main-text{font-size:14px}.sub-text{font-size:12px}}
.completed-toggle{display:flex;justify-content:space-between;align-items:center;width:100%;border:0;background:transparent;padding:0;color:#283846;font:inherit;cursor:pointer;text-align:left}.count-badge{display:inline-grid;place-items:center;min-width:24px;height:24px;padding:0 7px;border-radius:999px;background:#e8eef3;color:#354654;font-size:12px;margin-left:5px}.completed-row{opacity:.82}.completed-check{width:26px;height:26px;border-radius:999px;background:#e5f5eb;color:#1a6a35;display:grid;place-items:center;font-weight:900;flex:0 0 auto}.static-priority{display:grid;place-items:center;cursor:default}.intake-card{border-left:4px solid #cbd6de}.intake-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:10px}.channel-badge{display:inline-flex;align-items:center;gap:7px;border:1px solid #cad5dd;border-radius:999px;padding:6px 10px;font-weight:800;font-size:12px}.intake-from{font-size:18px;font-weight:850;margin-top:4px}.intake-subject{font-weight:800;margin-top:12px}.intake-body{margin-top:6px;line-height:1.42;color:#3f4f5c;background:#f7f9fb;border-radius:10px;padding:11px}.attention-badge{display:inline-block;background:#fff0f0;color:#a11e1e;border:1px solid #efb8b8;border-radius:999px;padding:3px 7px;font-size:11px;margin-left:6px;vertical-align:middle}.suggested-matter{margin-top:10px;font-size:13px;background:#edf5ff;border-radius:9px;padding:9px 10px;color:#214f79}.intake-status{margin-top:10px;font-size:12px;color:#66717c}.triage-actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:14px}.ghost-btn{border:0;background:transparent;color:#6b7680;padding:10px 8px;font-weight:750;cursor:pointer}.source-summary{background:#f3f6f8;border-radius:10px;padding:10px;margin-bottom:12px}.triage-tabs{overflow-x:auto;max-width:100%}.triage-tabs button{white-space:nowrap}@media(max-width:600px){.triage-actions{display:grid;grid-template-columns:1fr 1fr}.triage-actions .primary-btn{grid-column:1/-1}.intake-from{font-size:16px}.completed-row .secondary-btn{padding:8px 9px}}

.matter-actions{margin-top:14px;display:flex;gap:8px}.source-reference{margin-top:12px}.source-title{margin-top:8px}.reason-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:8px 0 14px}.reason-btn{border:1px solid #cbd5dd;background:#fff;border-radius:10px;padding:10px;font-weight:750;color:#334553;cursor:pointer}.reason-btn.selected{background:#17324d;color:#fff;border-color:#17324d}.option-stack{display:grid;gap:10px}.nearby-item{display:flex;align-items:center;gap:10px;padding:12px 0;border-top:1px solid #edf1f4}.nearby-item:first-of-type{border-top:0}.nearby-modal{max-height:85vh;overflow:auto}@media(max-width:600px){.reason-grid{grid-template-columns:1fr 1fr}.nearby-item{align-items:flex-start}.nearby-item .secondary-btn{padding:8px 9px}}

.financial-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:10px;margin-bottom:16px}.metric-card{background:#fff;border:1px solid #e3e9ee;border-radius:14px;padding:14px;box-shadow:var(--shadow)}.primary-metric{grid-column:span 1;background:#17324d;color:#fff}.metric-label{font-size:12px;font-weight:800;text-transform:uppercase;letter-spacing:.03em;opacity:.78}.metric-value{font-size:26px;font-weight:900;margin-top:5px}.metric-value.small{font-size:21px}.metric-note{font-size:12px;margin-top:4px;opacity:.75}.cash-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-bottom:10px}.cash-grid>div{background:#f5f8fa;border-radius:11px;padding:12px}.cash-label{font-size:12px;font-weight:800;text-transform:uppercase;color:#5e6973}.cash-value{font-size:24px;font-weight:900;margin-top:4px}.aging{min-width:78px;text-align:center;border-radius:999px;padding:6px 8px;font-size:11px;font-weight:850}.aging.on-time{background:#e8f5e9;color:#256b2b}.aging.late{background:#fff8e1;color:#7c5b00}.aging.very-late{background:#fff1e6;color:#9a4f00}.aging.critical{background:#fdeaea;color:#9b2020}.client-finance{border-top:1px solid #e9eef2;padding:14px 0}.client-finance:first-of-type{border-top:0}.client-finance-head{display:flex;justify-content:space-between;gap:10px}.client-stats{display:flex;gap:8px;flex-wrap:wrap;margin:10px 0}.client-stats span{background:#f2f5f7;border-radius:999px;padding:6px 9px;font-size:11px;color:#53606a}.finance-history-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:9px 0;border-top:1px solid #f0f3f5}@media(max-width:760px){.financial-grid{grid-template-columns:1fr 1fr}.primary-metric{grid-column:1/-1}.cash-grid{grid-template-columns:1fr}.tabs button{font-size:10px;padding-left:2px;padding-right:2px}.tab-icon{font-size:18px}}

.client-card{cursor:pointer}.client-list-head{display:flex;gap:12px;align-items:center}.client-name{font-size:17px}.client-badges{display:flex;gap:6px;flex-wrap:wrap;justify-content:flex-end}.mini-badge{background:#edf2f6;border-radius:999px;padding:5px 8px;font-size:11px;font-weight:800;color:#42515e}.mini-badge.alert{background:#fff1e6;color:#934900}.mini-badge.money{background:#fdeaea;color:#922}.client-hero{background:#17324d;color:#fff;border-radius:14px;padding:18px;margin-bottom:16px;display:flex;justify-content:space-between;gap:14px;align-items:flex-start;box-shadow:var(--shadow)}.client-hero .page-sub{color:rgba(255,255,255,.78)}.client-health{display:flex;gap:7px;flex-wrap:wrap;justify-content:flex-end}.client-health span{background:rgba(255,255,255,.12);border-radius:999px;padding:6px 9px;font-size:11px;font-weight:800}.quick-actions{display:flex;gap:8px;flex-wrap:wrap}.link-btn{text-decoration:none;display:inline-block}.client-matter-row{cursor:pointer}.client-fin-summary{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin-bottom:12px}.client-fin-summary>div{background:#f5f8fa;border-radius:10px;padding:10px}.client-fin-summary span{display:block;color:#66717c;font-size:11px;text-transform:uppercase;font-weight:800}.client-fin-summary strong{display:block;margin-top:4px;font-size:16px}.tabs{overflow-x:auto}.tabs button{min-width:54px}@media(max-width:600px){.client-list-head,.client-hero{align-items:flex-start}.client-hero{display:block}.client-health{justify-content:flex-start;margin-top:12px}.client-badges{justify-content:flex-start;margin-top:8px}.client-fin-summary{grid-template-columns:1fr 1fr}.quick-actions{display:grid;grid-template-columns:1fr 1fr}.quick-actions .primary-btn{grid-column:1/-1}}
.payment-plan-box{background:#f3f7fb;border:1px solid #dbe6ef;border-radius:10px;padding:11px;margin-top:10px}.payment-history{margin-top:12px}.subheading{font-size:12px;font-weight:850;text-transform:uppercase;color:#5b6872;margin-bottom:4px}.financial-actions{display:flex;gap:6px;flex-wrap:wrap}.form-grid{display:grid;grid-template-columns:2fr 1fr 1fr;gap:8px}.check-row{display:flex;align-items:center;gap:9px;margin:4px 0 14px;font-weight:750}.check-row input{width:auto!important;margin:0!important}@media(max-width:600px){.form-grid{grid-template-columns:1fr 1fr}.financial-actions{width:100%;margin-top:6px}.financial-actions .secondary-btn{flex:1}.row:has(.financial-actions){flex-wrap:wrap}}

/* v0.7: client names are universal navigation links backed by immutable ClientID. */
.client-link{appearance:none;border:0;background:transparent;color:inherit;font:inherit;font-weight:700;padding:0;margin:0;text-align:left;text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:2px;cursor:pointer;min-height:unset;min-width:unset}
.client-link:hover{text-decoration-thickness:2px}
.page-client-link{font-size:inherit;font-weight:inherit;text-decoration:none}
.page-client-link:hover{text-decoration:underline}
.finance-record{border-top:1px solid var(--border);padding-top:8px;margin-top:8px}
.form-grid.two{grid-template-columns:1fr 1fr}
@media(max-width:520px){.form-grid.two{grid-template-columns:1fr}}

/* v0.8: Microsoft Entra sign-in + live Azure Triage */
.topbar{display:flex;align-items:center;justify-content:space-between;gap:12px}.brand-wrap{min-width:0}.auth-controls{display:flex;align-items:center;justify-content:flex-end;gap:8px;min-width:0}.auth-user{max-width:220px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:12px;color:rgba(255,255,255,.84)}.auth-state{font-size:12px;color:rgba(255,255,255,.75)}.auth-btn{border:1px solid rgba(255,255,255,.55);background:#fff;color:#17324d;border-radius:9px;padding:7px 10px;font-weight:800;cursor:pointer;white-space:nowrap}.auth-btn.subtle{background:transparent;color:#fff}.auth-prompt{border-left:4px solid #0d63c8}.toolbar button:disabled{opacity:.55;cursor:wait}@media(max-width:600px){.auth-user{display:none}.auth-btn{padding:7px 8px;font-size:11px}}

.auth-gate{min-height:100vh;display:grid;place-items:center;padding:24px;background:linear-gradient(180deg,#17324d 0,#17324d 34%,#eef2f5 34%,#eef2f5 100%)}
.auth-gate-card{width:min(92vw,460px);background:#fff;border:1px solid #dfe6ec;border-radius:18px;box-shadow:0 18px 50px rgba(10,30,48,.18);padding:34px 32px;text-align:center}
.auth-gate-brand{font-size:24px;font-weight:900;letter-spacing:.04em;color:#17324d}
.auth-gate-subtitle{font-size:14px;color:#66717c;margin-top:4px;margin-bottom:28px}
.auth-gate-card h1{font-size:28px;margin:0 0 10px;color:#18212b}
.auth-gate-card p{color:#596775;line-height:1.5;margin:0 auto 22px;max-width:360px}
.auth-gate-button{width:100%;padding:13px 16px;font-size:16px}
.auth-gate-note{margin-top:20px;font-size:12px;color:#7b8792}
.auth-spinner{width:34px;height:34px;margin:24px auto;border:4px solid #dce7f1;border-top-color:#0d63c8;border-radius:50%;animation:authspin .8s linear infinite}
@keyframes authspin{to{transform:rotate(360deg)}}
@media(max-width:600px){.auth-gate{padding:16px;background:linear-gradient(180deg,#17324d 0,#17324d 28%,#eef2f5 28%,#eef2f5 100%)}.auth-gate-card{padding:28px 22px}.auth-gate-card h1{font-size:24px}}

/* v1.1 responsive analytics and travel */
.insight-metrics{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin:16px 0}.insight-columns{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;margin:16px 0}.insight-click{text-align:left;cursor:pointer;border:1px solid #d9e1e8;font-family:inherit}.insight-click:hover{outline:2px solid #b8d3e8}.insight-click .metric-value{display:block}.insight-line{display:flex;justify-content:space-between;gap:15px;padding:12px 0;border-bottom:1px solid #e8edf2}.insight-bar-row{margin:14px 0;font-size:14px}.insight-track{height:10px;background:#e9eff5;border-radius:8px;overflow:hidden;margin-top:6px}.insight-track>div{height:100%;background:#377da9}.insight-selected{outline:2px solid #377da9}.travel-form{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin:16px 0}.travel-form label{display:flex;flex-direction:column;gap:5px;font-size:13px;font-weight:600}.travel-form input,.travel-form select{padding:10px;border:1px solid #ccd5df;border-radius:7px;min-width:0}.insight-toolbar{margin-top:14px}@media(max-width:800px){.insight-metrics{grid-template-columns:repeat(2,minmax(0,1fr))}.insight-columns,.travel-form{grid-template-columns:1fr}}@media(max-width:440px){.insight-metrics{grid-template-columns:1fr 1fr;gap:8px}.insight-metrics .metric-value{font-size:21px}}

/* v1.2 dense month layout */
.month-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:3px}.month-grid>strong{text-align:center;font-size:12px}.month-cell{min-width:0;min-height:150px;background:#f4f7fa;border:1px solid #dce4eb;border-radius:6px;padding:3px;overflow:hidden}.month-cell.outside{opacity:.55}.month-day{border:0;background:transparent;font-weight:700;cursor:pointer}.month-event{color:white;font-size:11px;padding:3px 2px;margin:2px 0;border-radius:3px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.month-cell button{cursor:pointer}@media(max-width:650px){.month-grid{gap:1px}.month-cell{min-height:154px;padding:1px}.month-event{font-size:10px;padding:3px 1px}.month-day{font-size:12px;padding:2px}}

/* v1.3: accessible modal scrolling and compact travel/referral views */
.modal-backdrop{overflow-y:auto;overscroll-behavior:contain;align-items:end;padding:0;}
.modal{max-height:calc(100dvh - 16px);overflow-y:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch;min-height:0;}
.modal textarea{width:100%;min-height:85px;border:1px solid #cbd5dd;border-radius:10px;padding:10px;margin:6px 0 12px;font:inherit;}
.modal-actions{position:sticky;bottom:-20px;background:white;padding:12px 0;flex-wrap:wrap;z-index:1;}
.travel-mile-value{font-size:38px;font-weight:850;margin:12px 0;}.travel-mile-value span{font-size:16px;font-weight:500;color:var(--muted)}
.tracking-state{background:#fff3dc;color:#754c00;padding:10px;border-radius:9px;font-size:13px;font-weight:700;margin:10px 0;}
.referral-filter{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.referral-filter select,.card input[type=date]{padding:9px;border:1px solid #cbd5dd;border-radius:8px;max-width:100%;}
.referral-bars{display:grid;gap:9px;margin:16px 0}.referral-bar{display:grid;grid-template-columns:minmax(115px,1fr) minmax(80px,3fr) 90px;align-items:center;gap:10px;width:100%;border:0;border-radius:8px;padding:10px;background:#f5f8fb;text-align:left;cursor:pointer;color:#243747;font:inherit;}
.referral-bar:hover,.referral-bar:focus-visible{outline:2px solid #0d63c8;background:#eaf3ff}.referral-name{font-weight:700;overflow-wrap:anywhere}.referral-track{height:22px;background:#e1eaf1;border-radius:5px;overflow:hidden}.referral-track span{display:block;height:100%;background:#3478a6;border-radius:5px}.referral-bar strong{text-align:right}.referral-bar small{font-size:11px;color:#566474;font-weight:500}
@media(max-width:500px){.referral-bar{grid-template-columns:minmax(90px,1fr) minmax(50px,2fr) 65px;gap:5px;padding:8px;font-size:12px}.referral-bar small{display:block}.modal{max-height:calc(100dvh - 8px);}}

/* v1.4 UAT scheduling */
.suggest-slot-list{display:grid;gap:8px;margin:10px 0 16px}.suggest-slot{width:100%;text-align:left;border:1px solid #cbd5dd;background:#f7fafc;border-radius:10px;padding:12px;color:#18212b;cursor:pointer}.suggest-slot.selected{border:2px solid #0d63c8;background:#edf5ff}.suggest-slot small{display:block;color:#526474;margin-top:5px}.scheduling-actions{flex-wrap:wrap;justify-content:stretch}.scheduling-actions button{flex:1 1 140px;min-height:44px}.modal details{padding:10px 0}.modal summary{cursor:pointer;font-weight:750;color:#145493}

/* v1.5.1: Unified Outlook calendar */
.calendar-status{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:10px 12px;margin:10px 0;background:#f0f5f9;border:1px solid #d9e4ec;border-radius:8px;font-size:13px}
.calendar-error{color:#9a2e2e}
.cal-event{display:block;min-width:0;border:1px solid #d9e3ec;border-left:4px solid #2368a4;background:#e9f2fc;border-radius:5px;padding:5px 7px;margin:3px 0;color:#18364e;text-decoration:none;font-size:12px;overflow-wrap:anywhere}
.cal-event.local-event{background:#f1f6f2;border-left-color:#3b8561}
.cal-event-time{font-weight:700;white-space:nowrap}.cal-event-title{font-weight:600}.cal-event-location{font-weight:400;color:#526578}.cal-event .secondary-btn{margin-left:8px}
.day-slot{display:grid;grid-template-columns:85px minmax(0,1fr);border-top:1px solid #e1e8ed;min-height:56px}.day-hour{padding:8px 6px;font-size:12px;color:#526578}.day-events{padding:2px 4px}
.week-scroll{overflow-x:auto}.week-calendar{display:grid;grid-template-columns:75px repeat(7,minmax(120px,1fr));min-width:915px}.week-times,.week-day{min-width:0;border-right:1px solid #dce4eb}.week-day-header{height:46px;width:100%;font-size:12px;font-weight:700;text-align:center;border:0;background:#f0f5fa;padding:6px;cursor:pointer}.week-all-day{height:54px;overflow:auto;border-bottom:1px solid #dce4eb;font-size:11px}.week-hour{min-height:78px;border-bottom:1px solid #e0e8ee;padding:3px;font-size:11px}.week-times .week-hour{padding:8px 3px;color:#526578}
.month-cell .cal-event{font-size:10px;padding:3px 4px;line-height:1.3;white-space:normal;overflow-wrap:anywhere}.month-cell .cal-event-time{display:block}.month-cell .cal-event-title{display:block}.month-cell .more-events{border:0;background:transparent;color:#195d9c;font-size:11px}
@media(max-width:650px){.calendar-status{align-items:flex-start}.day-slot{grid-template-columns:68px minmax(0,1fr)}.month-cell .cal-event{font-size:9px;padding:2px 1px}.month-cell .cal-event-time{font-size:9px}.month-cell .cal-event-title{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}}

/* v1.5.2: Keep weekday labels and the time heading visible while scrolling
   the week schedule. One scroll container handles both axes so labels
   remain aligned with the appointment columns on mobile and desktop. */
.week-scroll{max-height:clamp(340px,65dvh,820px);overflow:auto;overscroll-behavior:contain;position:relative}
.week-day-header{position:sticky;top:0;z-index:4;box-shadow:0 2px 3px rgba(23,50,77,.15);border-bottom:1px solid #cad8e3}
.week-times .week-day-header{z-index:5}

/* v1.5.3: Day and Month retain their date labels during vertical scrolling. */
.day-timeline{max-height:clamp(340px,65dvh,820px);overflow-y:auto;overscroll-behavior:contain;position:relative}
.day-sticky-header{display:grid;grid-template-columns:85px minmax(0,1fr);position:sticky;top:0;z-index:5;background:#f0f5fa;border-bottom:1px solid #cad8e3;padding:12px 6px;box-shadow:0 2px 3px rgba(23,50,77,.15);font-size:13px}
.month-scroll{max-height:clamp(340px,65dvh,820px);overflow-y:auto;overscroll-behavior:contain;position:relative}
.month-weekday{position:sticky;top:0;z-index:5;background:#f0f5fa;border-bottom:1px solid #cad8e3;padding:10px 1px;box-shadow:0 2px 3px rgba(23,50,77,.15)}
@media(max-width:650px){.day-sticky-header{grid-template-columns:68px minmax(0,1fr)}}

/* v1.6.2: Keep the signed-in calendar identity visible on narrow devices. */
@media(max-width:600px){.topbar{align-items:flex-start}.auth-controls{flex-direction:column;align-items:flex-end;gap:3px}.auth-user{display:block;max-width:min(57vw,245px);font-size:10px;overflow-wrap:anywhere;white-space:normal;text-align:right}.auth-btn{padding:5px 8px}.calendar-reconciliation{scroll-margin-top:85px}}
.calendar-error .secondary-btn{margin-left:8px;margin-top:6px}

/* v1.6.4: true time-positioned events, including half-hour starts and durations. */
.day-timed-grid{display:grid;grid-template-columns:85px minmax(0,1fr)}
.day-hour-labels .day-hour{height:64px;box-sizing:border-box;border-top:1px solid #e1e8ed}
.day-timed-column{position:relative;min-width:0}
.day-timed-hour{height:64px;box-sizing:border-box;border-top:1px solid #e1e8ed}
.day-timed-overlay{position:absolute;inset:0 5px;pointer-events:none}
.timed-event{position:absolute;left:0;right:0;box-sizing:border-box;pointer-events:auto;z-index:1;min-height:0;overflow:hidden}
.timed-event .cal-event{height:100%;box-sizing:border-box;margin:0;overflow:hidden;padding:3px 5px}
.week-hours{position:relative}
.week-hour{height:78px;min-height:0;box-sizing:border-box}
.week-timed-overlay{position:absolute;top:0;left:3px;right:3px;height:1872px;pointer-events:none}
.week-timed-overlay .cal-event-location{display:none}
.week-timed-overlay .cal-event{font-size:10px;line-height:1.2}
@media(max-width:650px){.day-timed-grid{grid-template-columns:68px minmax(0,1fr)}}

/* v1.6.5 TEST: keep the time ruler visible during horizontal week scrolling.
   Sticky left column stays aligned with the hour rows as the week scrolls. */
.week-times{position:sticky;left:0;z-index:6;background:#fff;box-shadow:2px 0 4px rgba(23,50,77,.15)}
.week-times .week-day-header{position:sticky;top:0;z-index:7;background:#f0f5fa}
.week-times .week-hour{background:#fff;white-space:nowrap;font-variant-numeric:tabular-nums}
/* v1.6.6: Calendar events open in-app details instead of navigating away. */
button.cal-event{width:100%;text-align:left;cursor:pointer;font-family:inherit}
button.cal-event:focus-visible,.calendar-event-link:focus-visible{outline:3px solid #2368a4;outline-offset:2px}
.calendar-event-link{background:none;border:0;padding:0;color:#195d9c;font:inherit;font-weight:600;text-align:left;cursor:pointer}

/* v1.6.11 TEST - live scheduling progress and conflict results */
.scheduling-overlay{position:fixed;inset:0;z-index:99999;background:rgba(12,22,35,.66);display:flex;align-items:center;justify-content:center;padding:18px;box-sizing:border-box}
.scheduling-panel{width:min(100%,430px);max-height:90vh;overflow:auto;background:#fff;color:#17243b;border-radius:16px;padding:24px;box-sizing:border-box;box-shadow:0 15px 45px #0005}
.scheduling-panel h2{font-size:21px;margin:0 0 18px}
.scheduling-stage{display:flex;align-items:center;gap:12px;padding:10px 0;font-size:14px}
.scheduling-stage>span:first-child{font-size:21px;min-width:25px;text-align:center}
.scheduling-stage.complete{color:#236344}.scheduling-stage.active{font-weight:700;color:#174d9b}.scheduling-stage.pending{color:#758093}
.scheduling-stage.active>span:first-child{animation:schedulingPulse 1s infinite alternate}
@keyframes schedulingPulse{from{opacity:.3}to{opacity:1}}
.scheduling-elapsed{border-top:1px solid #e2e6ec;margin-top:12px;padding-top:14px;font-size:13px;color:#56657a}
.scheduling-metrics{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin:16px 0}
.scheduling-metrics>div{border:1px solid #dbe2ec;border-radius:9px;padding:10px 6px;text-align:center}
.scheduling-metrics small{display:block;font-size:11px;color:#53627a}.scheduling-metrics strong{display:block;font-size:20px;margin-top:5px}
.scheduling-metrics>div:nth-child(n+2) strong{color:#b52c35}
.scheduling-result .primary-btn{margin-top:10px;width:100%;min-height:44px}
