.dc-calendar-shell{position:relative;min-height:calc(100vh - 100px);color:#14213a;overflow:hidden}.dc-calendar-shell button,.dc-calendar-shell input,.dc-calendar-shell select,.dc-calendar-shell textarea{font:inherit}.dc-cal-title{display:flex;align-items:flex-end;justify-content:space-between;gap:24px;margin:0 0 14px}.dc-cal-title h2{font-size:31px;margin:3px 0}.dc-cal-title p{margin:0;color:#6a7890}.dc-cal-title>div:last-child{display:flex;gap:9px;flex:0 0 auto}.dc-cal-title button,.dc-cal-toolbar button,.dc-cal-syncbar button{border:1px solid #cfdaea;background:#fff;color:#2b4a78;border-radius:9px;padding:10px 14px;font-weight:750;cursor:pointer}.dc-calendar-shell button.primary{color:#fff;background:#2f6ee5;border-color:#2f6ee5}.dc-cal-syncbar{display:flex;align-items:center;gap:18px;min-height:44px;padding:8px 13px;border:1px solid #d7e0ed;background:#fff;border-radius:10px;margin-bottom:12px;font-size:13px}.dc-cal-syncbar>span{display:flex;align-items:center;gap:8px;font-weight:800}.dc-cal-syncbar>span i{width:8px;height:8px;border-radius:50%;background:#8996a8}.dc-cal-syncbar>span.good i{background:#159f76}.dc-cal-syncbar>span.bad i{background:#d84949}.dc-cal-syncbar b{font-size:12px;color:#66748b}.dc-cal-syncbar small{margin-left:auto;color:#758198}.dc-cal-syncbar button{padding:7px 11px}.dc-cal-error{display:grid;grid-template-columns:auto 1fr;gap:4px 12px;background:#fff4e8;border:1px solid #f4c68e;border-radius:10px;padding:11px 14px;margin-bottom:12px;color:#8b5014}.dc-cal-error small{grid-column:2;color:#795d41}.dc-cal-toolbar{height:54px;display:flex;align-items:center;gap:8px;background:#fff;border:1px solid #d7e0ed;border-radius:12px 12px 0 0;padding:7px 11px}.dc-cal-toolbar h3{font-size:19px;margin:0 12px;min-width:260px}.dc-cal-toolbar input{border:1px solid #d4deeb;border-radius:8px;padding:8px;color:#3b4b65}.dc-cal-view-tabs{display:flex;margin-left:auto;border:1px solid #cdd8e7;border-radius:8px;overflow:hidden}.dc-cal-view-tabs button{border:0;border-right:1px solid #d7e0ed;border-radius:0;padding:8px 13px}.dc-cal-view-tabs button:last-child{border-right:0}.dc-cal-view-tabs button.active{background:#eaf1ff;color:#205fc9}.dc-cal-filters{display:grid;grid-template-columns:1.7fr repeat(3,1fr);gap:8px;padding:9px 11px;background:#f7f9fc;border:solid #d7e0ed;border-width:0 1px 1px}.dc-cal-filters label{display:grid;grid-template-columns:auto 1fr;align-items:center;gap:7px}.dc-cal-filters span{text-transform:uppercase;font-size:10px;font-weight:800;color:#77849a}.dc-cal-filters input,.dc-cal-filters select{width:100%;min-width:0;padding:7px;border:1px solid #d6dfeb;border-radius:7px;background:#fff;color:#32445e}.dc-cal-canvas{position:relative;height:690px;background:#fff;border:solid #d7e0ed;border-width:0 1px 1px;border-radius:0 0 12px 12px;overflow:auto}.dc-cal-loading,.dc-cal-empty{display:grid;place-items:center;height:100%;font-weight:700;color:#718097}.dc-cal-time-head{position:sticky;top:0;z-index:5;display:grid;grid-template-columns:65px repeat(var(--calendar-days,7),1fr);background:#fff;border-bottom:1px solid #dfe5ee}.dc-cal-time-head>span{border-right:1px solid #e4e9f1}.dc-cal-time-head button{height:60px;border:0;border-right:1px solid #e4e9f1;background:#fff;color:#3d4e68}.dc-cal-time-head button small{display:block;text-transform:uppercase;font-size:10px}.dc-cal-time-head button strong{display:inline-grid;place-items:center;width:30px;height:30px;font-size:17px}.dc-cal-time-head button.today strong{border-radius:50%;color:#fff;background:#2f6ee5}.dc-cal-time-body{position:relative;display:grid;grid-template-columns:65px repeat(var(--calendar-days,7),minmax(100px,1fr));height:1050px}.dc-cal-hours{position:relative;border-right:1px solid #dfe5ee}.dc-cal-hours span{position:absolute;right:9px;transform:translateY(-50%);font-size:10px;color:#7b8798}.dc-cal-day-column{position:relative;border-right:1px solid #dfe5ee;background:repeating-linear-gradient(to bottom,#fff 0,#fff calc(8.333% - 1px),#e8edf3 calc(8.333% - 1px),#e8edf3 8.333%)}.dc-cal-empty-time{position:absolute;inset:0;width:100%;height:100%;border:0;background:transparent;cursor:crosshair}.dc-cal-now{position:absolute;left:0;right:0;border-top:2px solid #e33d46;z-index:3}.dc-cal-now i{position:absolute;left:-4px;top:-5px;width:8px;height:8px;border-radius:50%;background:#e33d46}.dc-cal-event{position:absolute;z-index:2;left:3px;right:3px;min-height:31px;overflow:visible;text-align:left;border:0;border-left:4px solid var(--event-color);border-radius:5px;background:color-mix(in srgb,var(--event-color) 14%,#fff);color:#15233a;padding:3px 5px 4px;cursor:pointer;box-shadow:0 1px 2px #172a4a1a}.dc-cal-event:hover,.dc-cal-event:focus{z-index:12;box-shadow:0 4px 15px #1b31542b}.dc-cal-event time{font-size:10px;font-weight:800;margin-right:5px}.dc-cal-event>strong{display:block;font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.dc-cal-event>span{display:block;font-size:10px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:#52637b}.dc-cal-event>i{position:absolute;right:3px;top:3px;color:#dc892f;font-size:8px}.dc-cal-event.danger{background:#fff0f0;border-left-color:#d74848}.dc-cal-event.warning{box-shadow:inset 0 0 0 1px #e5a64e}.dc-cal-event.ready{box-shadow:inset 0 0 0 1px #62ad8e}.dc-cal-hover{position:absolute;z-index:30;left:calc(100% + 8px);top:0;width:340px;padding:13px;background:#fff;border:1px solid #cdd9e8;border-radius:12px;box-shadow:0 15px 42px #1729423d;color:#17243a;text-transform:none}.dc-cal-day-column:nth-last-child(-n+2) .dc-cal-hover{left:auto;right:calc(100% + 8px)}.dc-cal-hover header{display:flex;justify-content:space-between;gap:10px}.dc-cal-hover header strong{display:block;font-size:15px}.dc-cal-hover header span{display:block;font-size:11px;color:#718098}.dc-cal-hover header button{border:0;background:#f0f4f9;border-radius:6px;padding:5px 7px;font-size:10px}.dc-cal-hover-status{display:flex;flex-wrap:wrap;gap:5px;margin:10px 0}.dc-cal-badge{display:inline-block;padding:3px 7px;border-radius:999px;background:#eef2f8;color:#50617a;font-size:9px;font-weight:800;text-transform:capitalize}.dc-cal-badge.ready{background:#dff6ec;color:#087858}.dc-cal-badge.warning{background:#fff0d3;color:#9b5c02}.dc-cal-badge.danger{background:#ffe1e1;color:#ab2929}.dc-cal-hover dl,.dc-cal-detail dl{display:grid;grid-template-columns:80px 1fr;gap:6px;margin:0}.dc-cal-hover dt,.dc-cal-detail dt{font-size:10px;text-transform:uppercase;font-weight:800;color:#77839a}.dc-cal-hover dd,.dc-cal-detail dd{font-size:11px;margin:0}.dc-cal-attention{display:grid;gap:3px;margin-top:10px;padding:8px;background:#fff5e5;border-radius:7px;color:#82551e}.dc-cal-attention span{font-size:10px}.dc-cal-hover footer{display:flex;gap:5px;margin-top:10px}.dc-cal-hover footer button{border:1px solid #c9d7e8;background:#fff;border-radius:6px;padding:5px;font-size:9px}.dc-cal-month-weekdays{position:sticky;top:0;z-index:4;display:grid;grid-template-columns:repeat(7,1fr);background:#fff;border-bottom:1px solid #dce4ef}.dc-cal-month-weekdays span{text-align:center;text-transform:uppercase;font-size:10px;font-weight:800;color:#778399;padding:8px}.dc-cal-month-grid{display:grid;grid-template-columns:repeat(7,minmax(120px,1fr));grid-template-rows:repeat(6,1fr);min-height:650px}.dc-cal-month-day{position:relative;min-height:105px;border-right:1px solid #e1e7ef;border-bottom:1px solid #e1e7ef;padding:30px 5px 5px}.dc-cal-month-day.muted{background:#f7f8fb;color:#a0a8b5}.dc-cal-month-number{position:absolute;top:5px;left:7px;border:0;background:transparent;width:25px;height:25px;border-radius:50%;font-weight:800}.dc-cal-month-day.today .dc-cal-month-number{color:#fff;background:#2f6ee5}.dc-cal-month-create{position:absolute;right:5px;top:5px;border:0;background:transparent;color:#587296;font-size:17px;opacity:0}.dc-cal-month-day:hover .dc-cal-month-create{opacity:1}.dc-cal-event.compact{position:relative;display:grid;grid-template-columns:auto minmax(0,1fr);gap:4px;left:auto;right:auto;top:auto;height:auto;min-height:22px;margin:2px 0;padding:3px 4px}.dc-cal-event.compact time{font-size:9px}.dc-cal-event.compact>strong{font-size:10px}.dc-cal-more{border:0;background:transparent;color:#49698f;font-size:10px;font-weight:750}.dc-cal-agenda{max-width:1120px;margin:auto;padding:10px 20px}.dc-cal-agenda section{margin-bottom:17px}.dc-cal-agenda section>header{display:flex;justify-content:space-between;border-bottom:1px solid #dce3ec;padding:8px 0;color:#465975}.dc-cal-agenda section>button{display:grid;grid-template-columns:90px 5px 1fr auto;gap:12px;align-items:center;width:100%;border:0;border-bottom:1px solid #edf0f5;background:#fff;text-align:left;padding:12px 8px}.dc-cal-agenda section>button i{height:35px;border-radius:4px}.dc-cal-agenda section>button div strong,.dc-cal-agenda section>button div span{display:block}.dc-cal-agenda section>button div span{font-size:11px;color:#718097}.dc-cal-detail{position:absolute;z-index:25;top:0;right:0;width:min(420px,94%);height:100%;display:flex;flex-direction:column;background:#fff;border-left:1px solid #cad6e5;box-shadow:-14px 0 36px #2438542b}.dc-cal-detail>header{display:flex;justify-content:space-between;padding:20px;border-bottom:1px solid #e0e6ee}.dc-cal-detail h3{font-size:23px;margin:4px 0}.dc-cal-detail header p,.dc-cal-detail header small{margin:0;color:#718097}.dc-cal-detail header button{border:0;border-radius:50%;background:#eef2f7;width:35px;height:35px;font-size:20px}.dc-cal-detail-scroll{overflow:auto;padding:0 20px}.dc-cal-detail section{padding:15px 0;border-bottom:1px solid #e7ebf1}.dc-cal-detail section h4{margin:0 0 9px;font-size:14px}.dc-cal-detail section p{font-size:12px;color:#66758c}.dc-cal-detail section.attention{color:#86571f}.dc-cal-detail>footer{display:flex;flex-wrap:wrap;gap:7px;padding:14px 20px;margin-top:auto;border-top:1px solid #e0e6ee}.dc-cal-detail>footer button,.dc-cal-detail>footer a{border:1px solid #cbd7e6;background:#fff;color:#2f5e9d;border-radius:7px;padding:8px;text-decoration:none;font-weight:750;font-size:11px}.dc-cal-match{display:grid;gap:6px;margin-top:12px}.dc-cal-match select,.dc-cal-match button{padding:8px;border:1px solid #ced9e7;border-radius:7px}.dc-cal-create-backdrop{position:fixed;z-index:100;inset:0;display:grid;place-items:center;background:#12213c75}.dc-cal-create{width:min(650px,92vw);max-height:88vh;overflow:auto;background:#fff;border-radius:15px;box-shadow:0 22px 70px #12213c4d}.dc-cal-create>header,.dc-cal-create>footer{display:flex;align-items:center;justify-content:space-between;padding:18px 22px;border-bottom:1px solid #e0e6ef}.dc-cal-create>header h3{margin:3px 0}.dc-cal-create>header button{border:0;background:#eef2f7;border-radius:50%;width:34px;height:34px;font-size:20px}.dc-cal-create>label,.dc-cal-create>.two,.dc-cal-rollout-note{margin:14px 22px}.dc-cal-create label{display:grid;gap:5px}.dc-cal-create label span{font-size:11px;font-weight:800;text-transform:uppercase;color:#617089}.dc-cal-create input,.dc-cal-create select,.dc-cal-create textarea{width:100%;box-sizing:border-box;border:1px solid #cfd9e7;border-radius:8px;padding:10px}.dc-cal-create textarea{min-height:70px}.dc-cal-create .two{display:grid;grid-template-columns:1fr 1fr;gap:12px}.dc-cal-create>footer{justify-content:flex-end;border-top:1px solid #e0e6ef;border-bottom:0}.dc-cal-create>footer button{padding:10px 16px;border:1px solid #cad6e5;border-radius:8px;background:#fff}.dc-cal-rollout-note{background:#eef5ff;border:1px solid #c9dcfa;border-radius:8px;padding:10px;color:#315d99;font-size:12px}
@media(max-width:1250px){.dc-cal-title p{display:none}.dc-cal-filters{grid-template-columns:1.5fr 1fr}.dc-cal-syncbar b{display:none}.dc-cal-toolbar h3{min-width:190px;font-size:16px}.dc-cal-month-grid{grid-template-columns:repeat(7,minmax(95px,1fr))}.dc-cal-detail{width:min(400px,96%)}}
@media(max-width:900px){.dc-cal-title{align-items:flex-start}.dc-cal-title>div:last-child{flex-direction:column}.dc-cal-toolbar{height:auto;flex-wrap:wrap}.dc-cal-toolbar h3{order:2;width:100%;margin:4px}.dc-cal-view-tabs{margin-left:0}.dc-cal-filters{grid-template-columns:1fr}.dc-cal-time-body,.dc-cal-time-head{min-width:760px}.dc-cal-month-grid,.dc-cal-month-weekdays{min-width:800px}.dc-cal-syncbar{flex-wrap:wrap}.dc-cal-syncbar small{margin-left:0}.dc-cal-create .two{grid-template-columns:1fr}}

/* PVT2 calendar parity: compact Google-calendar-inspired day grid. */
.dc-calendar-pvt2{min-height:calc(100vh - 92px);overflow:visible;color:#111827}
.dc-cal-pvt2-toolbar{display:flex;align-items:center;gap:5px;height:42px;margin-bottom:6px;white-space:nowrap}
.dc-cal-pvt2-toolbar>button{height:30px;min-width:30px;padding:0 9px;border:1px solid #d7dce4;border-radius:6px;background:#fff;color:#374151;font-weight:700;cursor:pointer}
.dc-cal-pvt2-toolbar>button:hover{background:#f3f4f6}.dc-cal-pvt2-toolbar h2{font-size:18px;font-weight:600;min-width:155px;margin:0 10px}
.dc-cal-pvt2-toolbar>input{width:150px;height:30px;box-sizing:border-box;border:1px solid #d7dce4;border-radius:6px;padding:0 10px;font-size:12px}
.dc-cal-spacer{flex:1}.dc-cal-duration{display:flex;align-items:center;height:30px;padding:2px;background:#f1f3f6;border-radius:6px}
.dc-cal-duration button{height:26px;padding:0 10px;border:0;border-radius:4px;background:transparent;color:#6b7280;font-size:11px;font-weight:700;cursor:pointer}
.dc-cal-duration button.active{background:#fff;color:#111827;box-shadow:0 1px 2px #00000018}
.dc-cal-weekends{display:flex!important;align-items:center;gap:6px}.dc-cal-weekends i{position:relative;width:32px;height:18px;border-radius:999px;background:#d1d5db}
.dc-cal-weekends i:after{content:"";position:absolute;top:2px;left:2px;width:14px;height:14px;border-radius:50%;background:#fff;box-shadow:0 1px 2px #0003;transition:left .12s}
.dc-cal-weekends.on i{background:#10b981}.dc-cal-weekends.on i:after{left:16px}.dc-cal-sync-icon.good{color:#07865f!important}.dc-cal-sync-icon.bad{color:#b63c3c!important}
.dc-cal-pvt2-type-pills{display:flex;align-items:center;gap:6px;height:30px;margin-bottom:6px;overflow:hidden}
.dc-cal-pvt2-type-pills button{display:flex;align-items:center;gap:5px;padding:4px 11px;border:1px solid #d7dce4;border-radius:999px;background:#f9fafb;color:#9ca3af;font-size:11px;font-weight:700;cursor:pointer;opacity:.55}
.dc-cal-pvt2-type-pills button.active{background:#fff;color:#111827;opacity:1}.dc-cal-pvt2-type-pills i{width:8px;height:8px;border-radius:50%}
.dc-calendar-pvt2 .dc-cal-canvas{height:calc(100vh - 185px);min-height:540px;overflow:hidden;border:1px solid #e5e7eb;border-radius:8px}
.dc-cal-pvt2-grid{display:flex;flex-direction:column;height:100%;background:#e5e7eb;gap:1px}
.dc-cal-pvt2-weekdays{display:grid;grid-template-columns:repeat(var(--calendar-columns),1fr);gap:1px;background:#e5e7eb;flex:0 0 27px}
.dc-cal-pvt2-weekdays span{display:grid;place-items:center;background:#f9fafb;color:#6b7280;text-transform:uppercase;font-size:10px;font-weight:800;letter-spacing:.5px}
.dc-cal-pvt2-days{display:grid;grid-template-columns:repeat(var(--calendar-columns),minmax(0,1fr));grid-template-rows:repeat(var(--calendar-rows),minmax(0,1fr));gap:1px;flex:1;min-height:0;background:#e5e7eb}
.dc-cal-pvt2-day{position:relative;display:flex;flex-direction:column;min-width:0;min-height:0;padding:5px 6px;background:#fff;overflow:hidden;cursor:default}
.dc-cal-pvt2-day:hover{background:#fafbfc}.dc-cal-pvt2-day.muted{background:#fafafa}.dc-cal-pvt2-day.muted .dc-cal-pvt2-number{color:#9ca3af}
.dc-cal-pvt2-number{align-self:flex-start;display:grid;place-items:center;min-width:24px;height:24px;padding:0 3px;color:#1f2937;font-size:14px;font-weight:700;border-radius:999px}
.dc-cal-pvt2-day.today .dc-cal-pvt2-number{background:#1a73e8;color:#fff}
.dc-cal-pvt2-events{display:flex;flex-direction:column;gap:1px;min-height:0;margin-top:2px;overflow:hidden}
.dc-cal-pvt2-event{position:relative;display:flex;align-items:center;gap:4px;width:100%;min-width:0;height:22px;padding:1px 3px;border:0;border-radius:3px;background:transparent;color:#1f2937;text-align:left;cursor:pointer}
.dc-cal-pvt2-event:hover{background:#f0f2f5}.dc-cal-pvt2-event>i{width:9px;height:9px;flex:0 0 9px;border-radius:50%;background:var(--event-color)}
/* CONFIRMED APPOINTMENT INDICATOR — #419 2a (David's ruling, 2026-09-09): a small
   green circle-check BESIDE the dot; the dot itself keeps --event-color in every
   state (its colour is clinical meaning). Green is the exact confirmed-reminder-pill
   token (styles.css .p3-remstat-confirmed, #15803d), reused not reinvented. The
   08-24 grown-and-greened dot (.dc-cal-dot-confirmed) is retired. */
.dc-cal-confirm-mark{width:12px;height:12px;flex:0 0 12px;border-radius:50%;background:#15803d;display:grid;place-items:center;margin-left:-2px;box-sizing:border-box}
.dc-cal-confirmed-check{width:8px;height:8px;flex:0 0 8px;display:block}
/* #423 — the SENT state: the same 12 px circle, HOLLOW with a gray ring and a gray check (reminder sent by text or e-mail,
   patient not yet confirmed). Solid green above = confirmed. The dot beside either is never touched. */
/* #423 (found by the size fixture): `@media(max-width:1180px){.dc-cal-pvt2-event>span{display:none}}` below hides EVERY direct
   span of a row on a laptop-width screen — the #419 mark is a span, so it vanished at 1180 px and under (the #419 proofs ran at
   1440 / 1920 and never saw it). Same cure the envelope badge needed (line ~389): the marks win on specificity. */
.dc-cal-pvt2-event>span.dc-cal-confirm-mark{display:grid;overflow:visible;white-space:normal;min-width:12px;flex:0 0 12px;font-size:inherit;color:inherit}
.dc-cal-confirm-mark.dc-cal-mark-sent{background:transparent;border:1.5px solid #6b7280}
.dc-cal-confirm-mark.dc-cal-mark-sent .dc-cal-confirmed-check{width:7px;height:7px;flex:0 0 7px}
.dc-cal-confirm-mark.dc-cal-mark-sent .dc-cal-confirmed-check path{stroke:#6b7280}
.dc-cal-phone.dc-cal-phone-confirmed{color:#15803d}
.dc-cal-pvt2-event time{font-size:11px;font-weight:700;flex:0 0 auto}.dc-cal-pvt2-event strong{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:11px;font-weight:650}
.dc-cal-pvt2-event>span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#6b7280;font-size:10px}.dc-cal-pvt2-event>b{margin-left:auto;color:#d18b2c;font-size:8px}
.dc-cal-pvt2-event .dc-cal-hover{left:12px;top:24px}.dc-cal-more{align-self:flex-start;padding:1px 4px;border:0;background:transparent;color:#2563eb;font-size:10px;font-weight:700;cursor:pointer}
.dc-cal-day-backdrop{position:fixed;z-index:90;inset:0;display:grid;place-items:center;background:#17243a66}.dc-cal-day-panel{width:min(620px,92vw);max-height:78vh;overflow:hidden;background:#fff;border-radius:14px;box-shadow:0 18px 60px #10213d45}
.dc-cal-day-panel>header{display:flex;align-items:center;justify-content:space-between;padding:17px 20px;border-bottom:1px solid #e5e7eb}.dc-cal-day-panel h3{margin:2px 0}.dc-cal-day-panel header small{color:#6b7280}.dc-cal-day-panel header button{width:34px;height:34px;border:0;border-radius:50%;background:#f1f3f6;font-size:20px;cursor:pointer}
.dc-cal-day-panel>div{max-height:62vh;overflow:auto;padding:8px 18px 18px}.dc-cal-day-panel>div>button{display:grid;grid-template-columns:9px 78px 1fr;align-items:start;gap:10px;width:100%;padding:11px 4px;border:0;border-bottom:1px solid #eef0f3;background:#fff;text-align:left;cursor:pointer}.dc-cal-day-panel>div>button>i{height:30px;border-radius:4px}.dc-cal-day-panel>div>button time{font-weight:700}.dc-cal-day-panel>div>button span strong,.dc-cal-day-panel>div>button span small{display:block}.dc-cal-day-panel>div>button span small{margin-top:3px;color:#6b7280}
.dc-cal-patient-lookup,.dc-cal-create-patient{position:relative;display:grid;gap:6px;margin-top:10px}.dc-cal-create-patient{margin:14px 22px}.dc-cal-create-patient>label,.dc-cal-patient-lookup>label{font-size:11px;font-weight:800;text-transform:uppercase;color:#617089}
.dc-cal-patient-lookup>input:not([type=hidden]),.dc-cal-create-patient input:not([type=hidden]){width:100%;box-sizing:border-box;padding:10px;border:1px solid #cfd9e7;border-radius:8px}
.dc-cal-patient-results{display:none;position:absolute;z-index:8;left:0;right:0;top:calc(100% + 4px);max-height:240px;overflow:auto;background:#fff;border:1px solid #cfd9e7;border-radius:8px;box-shadow:0 10px 26px #10213d26}.dc-cal-patient-results.open{display:block}
.dc-cal-patient-results button{display:flex;justify-content:space-between;gap:12px;width:100%;padding:9px 11px;border:0;border-bottom:1px solid #edf0f4;background:#fff;text-align:left;cursor:pointer}.dc-cal-patient-results button:hover,.dc-cal-patient-results button.active{background:#edf4ff}.dc-cal-patient-results button span{color:#6b7280;font-size:11px}
.dc-cal-patient-lookup>button{justify-self:start;padding:8px 12px;border:1px solid #c7d6e8;border-radius:7px;background:#fff;color:#2f5e9d;font-weight:700}.dc-cal-patient-lookup>button:disabled{opacity:.45}
@media(max-width:1180px){.dc-cal-pvt2-toolbar h2{min-width:125px}.dc-cal-pvt2-toolbar>input{width:125px}.dc-cal-duration button{padding:0 7px}.dc-cal-pvt2-event>span:not(.dc-cal-confirm-mark):not(.dc-cal-envelope):not(.dc-cal-clock):not(.dc-cal-ev-type){display:none}}
/* #495 (2026-10-01) — THIRD time this rule hid a mark (the envelope #254, the confirm check #423, and the CLOCK, which it
   still hid at ≤1180 px). It now names the marks it must never touch, so a mark is safe by construction, not by a later
   specificity patch. AND on a row that carries an envelope or clock, the NAME may shorten (with …) as the last resort
   rather than push the mark out of the cell: type gives way first (shrink 8), the subtype before that (60), the name last (1). */
.dc-cal-pvt2-event:has(> .dc-cal-envelope, > .dc-cal-clock) .dc-cal-ev-name{flex-shrink:1}
.dc-cal-empty-time{cursor:default}
.dc-cal-upcoming{position:absolute;z-index:50;top:0;right:0;width:340px;height:100%;display:flex;flex-direction:column;background:#fff;border-left:1px solid #d7dce4;box-shadow:-8px 0 24px #1118271f}.dc-cal-upcoming>header{display:flex;align-items:center;justify-content:space-between;padding:13px 15px;border-bottom:1px solid #e5e7eb;font-size:13px;font-weight:800}.dc-cal-upcoming>header button{width:30px;height:30px;border:0;background:transparent;color:#6b7280;font-size:21px;cursor:pointer}.dc-cal-upcoming>div{flex:1;overflow:auto;padding:9px 13px}.dc-cal-upcoming>div>button{display:grid;grid-template-columns:8px 1fr;gap:9px;width:100%;padding:9px 2px;border:0;border-bottom:1px solid #eef0f3;background:#fff;text-align:left;cursor:pointer}.dc-cal-upcoming>div>button i{height:32px;border-radius:3px}.dc-cal-upcoming>div strong,.dc-cal-upcoming>div small{display:block}.dc-cal-upcoming>div small{margin-top:3px;color:#6b7280}.dc-cal-upcoming>div>p{color:#6b7280;font-size:12px}

/* ── D1/D4/D5/D7/D8 day-square law (2026-08-07) ─────────────────────
   Lives here, not in styles.css: this sheet loads after it and was silently
   winning every one of these rules. */
.dc-cal-pvt2-event .dc-cal-ev-name{font-size:11px;font-weight:650;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
/* D4 — the type is an EQUAL of the name, not a footnote, so it is a size up. */
.dc-cal-pvt2-event .dc-cal-ev-type{font-size:12.5px;font-weight:650;flex:0 0 auto;opacity:.92}
.dc-cal-pvt2-event time{flex:0 0 auto;font-variant-numeric:tabular-nums}
.dc-cal-pvt2-event{height:auto;min-height:22px}

/* D5 — readiness dots */
.dc-cal-dot{width:8px;height:8px;border-radius:50%;display:inline-block;flex:0 0 8px;margin-left:auto}
.dc-cal-dot.green{background:#16a34a}
.dc-cal-dot.amber{background:#f59e0b}
.dc-cal-dot.red{background:#dc2626}
.dc-cal-dot.none{background:transparent;border:1px dashed #cbd5e1}

/* CANCELLED-IS-A-STATE (David's ruling, 2026-08-21): the main appointment
   card (.dc-cal-pvt2-event, used by every timed row including a Meet &
   Greet) had NO cancelled treatment at all — only the band/block-bar
   variants did. "Greyed out with a strikethrough on the time" applies here
   too; only the TIME is struck through, the name/type stay legible. */
.dc-cal-pvt2-event.dc-cal-cancelled{background:#f3f4f6;color:#6b7280}
.dc-cal-pvt2-event.dc-cal-cancelled time{text-decoration:line-through}
.dc-cal-pvt2-event.dc-cal-cancelled .dc-cal-ev-type{opacity:.75}
.dc-cal-event.dc-cal-cancelled{background:#f3f4f6;color:#6b7280}
.dc-cal-event.dc-cal-cancelled time{text-decoration:line-through}

/* D7 — Outside Appointment bands: thin, top of the square, Google all-day style */
.dc-cal-bands{display:flex;flex-direction:column;gap:2px;margin:2px 0 3px}
.dc-cal-outside-band{display:block;width:100%;text-align:left;background:#FEF08A;border:1px solid #EAB308;color:#713F12;border-radius:3px;padding:1px 5px;font-size:11px;font-weight:700;line-height:1.35;cursor:pointer;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.dc-cal-outside-band:hover{background:#FDE047}
.dc-cal-outside-band.dc-cal-cancelled{background:#f3f4f6;border-color:#d1d5db;color:#6b7280;text-decoration:line-through}

/* MEMBERSHIP RENEWAL BAND (2026-08-24) — a bar across the top of the day
   cell, same mechanism as .dc-cal-outside-band, own solid fill so it stands
   out at a glance. O-43's own two-colour law: blue unpaid (SAME blue as a
   normal appointment, #1A73E8), green once paid (#15803d, reused from the
   confirmed-checkmark dot above — not reinvented). White Hand Law (5.21):
   cursor:default explicit, never pointer.
   ROLLOUT (2026-08-24, night 2): Part 1's compact sizing was approved on
   Babrowski, then corrected +10% (font-size 10px->11px, line-height stays the
   1.3 ratio, padding 0 — confirmed by David's own screenshots) — but Part 2
   (rolling it out to every patient) was NEVER ACTUALLY EXECUTED; it got lost
   when the next order (notes/2035/Grossman/Close Out) arrived and was a data
   build, not a CSS rollout. Confirmed by reading the code: the compact values
   were STILL only reachable via `row._docId === 'MR-2026-...'` (Babrowski's
   own doc id) in membershipBand(), so every other patient's bar was still
   rendering at the true ~15px baseline (see the discovery below).
   SPECIFICITY BUG, same root cause found and disclosed during Part 1's own
   proof, now actually fixed: `.dc-calendar-shell button{font-size:inherit}`
   (a broad reset elsewhere in this file) has HIGHER specificity (0,1,1) than
   a bare `.dc-cal-membership-band{font-size:11px}` (0,1,0), so the base rule's
   own declared font-size NEVER actually applied — real rendered size was
   whatever ambient body font-size got inherited (~15px), not 11px. Qualifying
   under `.dc-calendar-shell` (the same ancestor the competing rule targets)
   raises this rule to (0,2,0), which wins. This is now the ONE rule every
   patient's bar reads, not a per-patient class — membershipBand() no longer
   emits a conditional class at all. */
.dc-calendar-shell .dc-cal-membership-band{display:flex;flex-wrap:wrap;align-items:center;column-gap:4px;row-gap:0;width:100%;text-align:left;background:#1A73E8;border:1px solid #1A73E8;color:#fff;border-radius:3px;padding:0 5px;font-size:11px;font-weight:700;line-height:1.3;cursor:default;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.dc-cal-membership-band:hover{filter:brightness(1.08)}
.dc-cal-membership-band.is-paid{background:#15803d;border-color:#15803d}
.dc-cal-membership-band.dc-cal-cancelled{background:#f3f4f6;border-color:#d1d5db;color:#6b7280;text-decoration:line-through}

/* HEADS-UP (David's build order, 2026-08-19, Phase 2c) — a top strip, pinned
   above every timed appointment, shared by amber Heads-up bands and muted
   reminder-class rows. Neither ever shows a clock time. */
.dc-cal-topstrip{display:flex;flex-direction:column;gap:2px;margin:2px 0 3px}
/* HEADS-UP REFINEMENTS (David, 2026-08-19, item 1 — REWORK) — "it must
   whisper, not shout": regular weight, no left stripe, fainter wash, a 1px
   bottom hairline (same color as the text) doing the job the stripe used to
   do. Band height = line-height + 2px padding top/bottom, nothing more.
   SCOPED to .dc-cal-pvt2-days (two classes, specificity 0,2,0) rather than
   bare ".dc-cal-headsup-band" (0,1,0) — MEASURED with getComputedStyle after
   David caught the rendered band at 15px/26.75px tall despite this rule
   correctly saying 11px/~15px: ".dc-calendar-shell button,input,select,
   textarea{font:inherit}" (specificity 0,1,1) was silently winning, the EXACT
   same disease already found and fixed on .dc-cal-block-bar this same day —
   I built this rule after that fix and failed to apply the lesson to it too.
   A bare class selector can never outrank a class+element selector; two
   classes always can. Re-verify with getComputedStyle before trusting this
   comment, the way the block-bar comment above (line ~359) already warns.
   FONT SIZE — MEASURED, not David's assumed number: his order said "11px vs
   their 13px" for the real appointment row; getComputedStyle on the real
   .dc-cal-ev-name in the month grid measures 11px, not 13px (no 13px rule
   for that element exists anywhere in this file). 11px-for-both would render
   IDENTICALLY, failing his explicit, verifiable "band text must be visibly
   SMALLER" screenshot test in the same order — so this is 10px, one step
   below the real measured 11px baseline, to guarantee the visible gap his
   test requires. Flagged in the report; his exact "11px" instruction and the
   measured "13px" assumption cannot both be literally true at once. */
.dc-cal-pvt2-days .dc-cal-headsup-band{display:flex;align-items:center;width:100%;text-align:left;background:rgba(245,158,11,.15);border:0;border-bottom:1px solid #7C4A03;color:#7C4A03;border-radius:0;padding:2px 6px;font-size:10px;font-weight:400;line-height:10px;cursor:pointer}
.dc-cal-pvt2-days .dc-cal-headsup-band:hover{background:rgba(245,158,11,.24)}
.dc-cal-pvt2-days .dc-cal-headsup-band.dc-cal-cancelled{background:#f3f4f6;border-bottom-color:#d1d5db;color:#6b7280;text-decoration:line-through}
/* #491 PART C — the RESULTS REMINDER (the approved mockup's .ev.red): red, slow ~2 s pulse while waiting; still red once
   overdue; quiet grey once a record is linked. Reduced motion: no pulse, still red. */
.dc-cal-results-reminder{display:block;width:100%;text-align:left;font:inherit;font-size:11px;line-height:1.35;border-radius:4px;padding:3px 6px;margin:0 0 4px;background:#fdeceb;color:#a3281c;border:1px solid #f3c4bf;font-weight:650;cursor:default;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.dc-cal-results-reminder.is-due{animation:dcResultsPulse 1.9s ease-in-out infinite}
.dc-cal-results-reminder.is-quiet{background:#f3f5f8;color:#5b6775;border-color:#dfe4ea;font-weight:500}
@keyframes dcResultsPulse{0%,100%{background:#fdeceb}50%{background:#f8c9c3}}   /* #525: background only — the strip's bottom rule stays put */
@media (prefers-reduced-motion:reduce){.dc-cal-results-reminder.is-due{animation:none}}
/* #525 addition (David, 2026-10-08): on the calendar face a Reminder is the SAME slim one-line strip as a Heads-up — the
   heads-up band's own box (padding 2px 6px, 10px text, 10px line, one bottom rule, square corners, no gap) — told apart by
   colour and motion only: red + pulsing vs amber + still. Same spot: both are drawn by headsUpBand() into the day's top strip. */
.dc-cal-pvt2-days .dc-cal-results-reminder{display:block;margin:0;border:0;border-bottom:1px solid #a3281c;border-radius:0;padding:2px 6px;font-size:10px;line-height:10px;font-weight:600}
.dc-cal-pvt2-days .dc-cal-results-reminder.is-quiet{border-bottom-color:#9aa6b6;font-weight:400}
.dc-cal-pvt2-days .dc-cal-headsup-name{font-weight:400}
/* Destination truncates first; the patient name never does (D9's naming rule,
   applied here to Heads-up bands). */
/* REPAIR (David's live review, 2026-08-19): the <strong> tag carries its own
   bold from the browser's default stylesheet regardless of the band's own
   font-weight:400 — "regular weight" has to be said again here or the name
   half of every band stays bold and the whisper-not-shout restyle only
   half-lands. (font-weight itself now lives on the scoped rule above,
   .dc-cal-pvt2-days .dc-cal-headsup-name — same specificity fix as the band.) */
.dc-cal-headsup-name{flex:0 0 auto;white-space:nowrap}
.dc-cal-headsup-dest{flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

/* HEADS-UP Phase 2a — the empty-day-click choice popover.
   RESTYLED 2026-08-24 (David's correction order, chosen from mockups): a plain
   two-row menu — white surface, hairline border, subtle rounded corners,
   ~180px wide, ~36px rows, light neutral hover tint. Each row is a small
   outline icon + a neutral label; ONLY the icon carries a tint (appointment
   blue / heads-up amber). No colored dots, no colored pill backgrounds —
   the old per-row blue/amber fills and the round-dot <i> are gone. */
.dc-cal-daypopover-backdrop{position:fixed;z-index:110;inset:0;background:transparent}
.dc-cal-daypopover{position:fixed;z-index:111;display:flex;flex-direction:column;gap:0;background:#fff;border:1px solid #DADCE0;border-radius:8px;box-shadow:0 4px 18px rgba(0,0,0,.14);padding:4px;width:180px}
.dc-cal-daypopover-btn{display:flex;align-items:center;gap:10px;height:36px;padding:0 10px;border-radius:6px;border:0;background:transparent;font-size:13px;font-weight:600;color:#1e293b;text-align:left;white-space:nowrap;cursor:default}
.dc-cal-daypopover-btn:hover,.dc-cal-daypopover-btn:focus{background:#f1f3f5;outline:none}
.dc-cal-daypopover-ico{display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;flex:0 0 auto}
.dc-cal-daypopover-btn.appt .dc-cal-daypopover-ico{color:#1A73E8}
.dc-cal-daypopover-btn.headsup .dc-cal-daypopover-ico{color:#F59E0B}
/* #525 — a Reminder is not a Heads-up: its own red (the red pulsing reminder's colour), on the menu and on its form */
.dc-cal-daypopover-btn.reminder .dc-cal-daypopover-ico{color:#C5221F}
.dc-day-reminder{border-top:3px solid #C5221F}
.dc-day-reminder header small{color:#a3281c;font-weight:700}

/* HEADS-UP Phase 2b — the quick-capture form (rides .dc-cal-create's compact
   sizing already scoped below; only the pieces unique to this form live here). */
.dc-cal-linklike{background:none;border:0;color:#1A73E8;font-size:12px;font-weight:700;cursor:pointer;padding:4px 0;margin:14px 22px;text-align:left}
.dc-cal-linklike:hover{text-decoration:underline}
/* ONE-SCREEN REWORK (David, 2026-08-21) — WHERE groups the destination
   pills/free-text AND the provider typeahead as PEERS in one visual unit;
   whichever she fills is the destination. Replaces the old "Optional
   details" fieldset (.dc-cal-headsup-details, now unused — the two-screen
   expand + its one-way trap are gone). */
/* #721 (1) — the edit screen's name + Open dossier, and the leave question */
.dc-hu-namerow{display:flex;align-items:baseline;gap:14px;margin-top:4px;font-size:15px;font-weight:700}
.dc-hu-namerow .dc-hu-dz{font-size:13px;font-weight:600}
.dc-hu-leave{margin:8px 22px 0;padding:10px 12px;border:1px solid #f0c36d;background:#fff8e6;border-radius:8px;display:flex;align-items:center;justify-content:space-between;gap:10px;font-size:14px}
.dc-hu-leave[hidden]{display:none}
.dc-hu-leave span{display:flex;gap:8px}
.dc-cal-headsup-where{border:1px solid #DADCE0;background:#F8F9FA;border-radius:8px;padding:8px 10px;margin:10px 22px;display:flex;flex-direction:column;gap:8px}
.dc-cal-headsup-where legend{font-size:11px;font-weight:800;color:#5F6368;padding:0 6px;text-transform:uppercase;letter-spacing:.03em}
.dc-cal-headsup-where>input{width:100%;box-sizing:border-box;padding:10px;border:1px solid #cfd9e7;border-radius:8px}
.dc-cal-headsup-provider-row{margin:0!important}
.dc-cal-headsup-provider-row>label{font-size:11px;font-weight:700;color:#617089;text-transform:none!important}

/* HEADS-UP FIXES (David, 2026-08-19, item 1) — the destination-pill manager,
   a SMALL popover anchored to the gear, never the full Settings modal. Same
   position:fixed technique as .dc-cal-daypopover (reuses its backdrop class)
   so it floats above the still-open heads-up form rather than replacing it. */
.dc-cal-pillmgr{position:fixed;z-index:120;background:#fff;border:1px solid #DADCE0;border-radius:10px;box-shadow:0 8px 26px rgba(0,0,0,.2);padding:10px;width:240px}
.dc-cal-pillmgr>header{display:flex;align-items:center;justify-content:space-between;font-size:12px;font-weight:800;color:#5F6368;text-transform:uppercase;letter-spacing:.03em;margin-bottom:8px}
.dc-cal-pillmgr>header button{border:0;background:transparent;font-size:16px;line-height:1;cursor:pointer;color:#5F6368}
.dc-cal-pillmgr-list{display:flex;flex-direction:column;gap:4px;margin-bottom:8px;max-height:220px;overflow-y:auto}
.dc-cal-pillmgr-row{display:flex;align-items:center;gap:4px}
.dc-cal-pillmgr-row .dc-cal-pillmgr-name{flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:12.5px;color:#1f2937}
.dc-cal-pillmgr .dc-cal-maddrow{margin-bottom:0}
.dc-cal-pillmgr .dc-cal-maddrow input{min-width:0;flex:1 1 auto}

/* D8 — continuous scroll into following weeks, Google-style */
.dc-cal-canvas.month{overflow:hidden}

/* ── F1 NO-SCROLL LAW: the create popup fits, full stop ─────────────
   Measured at 880px in a 1000px viewport with an internal scrollbar, which
   fails the law. Tightened here (this sheet wins over styles.css). */
.dc-cal-create{font-size:12.5px;padding:12px 14px;gap:0;max-height:none}
.dc-cal-create header{margin-bottom:4px}
.dc-cal-create header h3{font-size:15px}
.dc-cal-create label{margin:2px 0}
.dc-cal-create label>span{font-size:10.5px;letter-spacing:.02em}
.dc-cal-create input,.dc-cal-create select,.dc-cal-create textarea{font-size:12.5px;padding:4px 6px}
.dc-cal-create textarea{min-height:34px}   /* #400: the 52 px cap is gone — every textarea grows (law 5.46) */
.dc-cal-create .dc-cal-chiprow{margin:3px 0;gap:4px}
.dc-cal-create .dc-cal-chip{font-size:11.5px;padding:3px 9px}
.dc-cal-create .dc-cal-note{font-size:10.5px;padding:4px 6px;margin:4px 0}
.dc-cal-create .dc-cal-nextvisit{padding:6px 8px;margin:4px 0}
.dc-cal-create .dc-cal-nextvisit dl{font-size:11.5px}
.dc-cal-create .dc-cal-overlap{padding:5px 8px;margin:4px 0}
.dc-cal-create .dc-cal-overlap ul{margin:3px 0 2px}
.dc-cal-create footer{margin-top:6px}
.dc-cal-create .two{gap:8px}

/* ── Grid first, never a blank wait (D9 Google-familiarity) ─────────
   Google draws the calendar instantly and fills events in. A full-screen
   "Loading the protected calendar…" is the opposite: it hides the thing the
   user came for behind a sentence. The grid now renders immediately and this
   subtle hint sits in the corner while appointments arrive. */
.dc-cal-loading-hint{
  position:absolute;right:14px;bottom:12px;z-index:5;
  background:rgba(32,33,36,.88);color:#fff;border-radius:14px;
  padding:5px 12px;font-size:12px;font-weight:600;
  box-shadow:0 2px 8px rgba(0,0,0,.2);pointer-events:none;
  animation:dcCalHintIn .18s ease-out;
}
@keyframes dcCalHintIn{from{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}
.dc-cal-canvas{position:relative}

/* ── Subtype chips: a FAINT wash of the parent type's colour ────────
   The row belongs to the type above it. Tinting from --parent (set on the row)
   makes that visible without adding a second competing colour system. */
.dc-cal-subtype{--parent:#6b7280}
.dc-cal-subtype .dc-cal-chip.sub{
  background:color-mix(in srgb, var(--parent) 8%, #fff);
  border-color:color-mix(in srgb, var(--parent) 35%, #fff);
  color:color-mix(in srgb, var(--parent) 78%, #111827);
}
.dc-cal-subtype .dc-cal-chip.sub:hover{background:color-mix(in srgb, var(--parent) 14%, #fff)}
.dc-cal-subtype .dc-cal-chip.sub.on{
  background:color-mix(in srgb, var(--parent) 16%, #fff);
  border-color:var(--parent);
  box-shadow:inset 0 0 0 1px var(--parent);
  color:color-mix(in srgb, var(--parent) 88%, #111827);
}
.dc-cal-subempty{font-size:11px;color:#9ca3af;font-style:italic;padding:0 4px}
.dc-cal-subedit{display:grid;grid-template-columns:1fr auto auto auto;gap:4px;align-items:center;padding:2px 0}
.dc-cal-subedit input{width:100%}
.dc-cal-subedit button{border:1px solid #d1d5db;background:#fff;border-radius:4px;padding:2px 7px;cursor:pointer;font-size:12px;line-height:1.3}
.dc-cal-subedit button:hover:not(:disabled){border-color:#2563eb;color:#2563eb}
.dc-cal-subedit button:disabled{opacity:.35;cursor:default}

/* ── ONE MANAGER COMPONENT: compact, closable, no scrolling ─────────
   Rebuilt after David found the old one sprawling tall enough to push its own
   Done button off screen. Two columns keep all ten types in one window; the
   dot, the name and the control share a row so nothing floats away from its
   label (rule 4.10, without cramming). */
.dc-cal-manager{max-width:560px}
.dc-cal-manager-sub{font-size:12.5px;color:#4b5563;margin:2px 0 10px}
.dc-cal-manager-x{font-size:20px;line-height:1;background:none;border:0;cursor:pointer;color:#6b7280;padding:0 4px}
.dc-cal-manager-x:hover{color:#111827}
.dc-cal-mgrid{display:grid;grid-template-columns:1fr 1fr;gap:4px 14px;margin-bottom:10px}
.dc-cal-mgrid.subtypes,.dc-cal-mgrid.times{grid-template-columns:1fr}
.dc-cal-mrow{display:flex;align-items:center;gap:8px;padding:5px 8px;border:1px solid #e5e7eb;border-radius:6px;background:#fff;font-size:13px;cursor:pointer}
.dc-cal-mrow:hover{border-color:#c7d2fe;background:#f8fafc}
.dc-cal-mrow i{width:11px;height:11px;border-radius:50%;flex:0 0 11px}
.dc-cal-mrow input[type=checkbox]{margin:0;flex:0 0 auto}
.dc-cal-mname{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
input.dc-cal-mname{border:1px solid #d1d5db;border-radius:4px;padding:3px 6px;font-size:13px}
.dc-cal-mx{border:1px solid #d1d5db;background:#fff;border-radius:4px;padding:1px 7px;cursor:pointer;font-size:13px;line-height:1.4;color:#4b5563;flex:0 0 auto}
.dc-cal-mx:hover:not(:disabled){border-color:#dc2626;color:#dc2626}
.dc-cal-mx:disabled{opacity:.3;cursor:default}
.dc-cal-maddrow{display:flex;gap:8px;align-items:center;margin-bottom:6px}

/* ── M&G books a PROSPECT, not a patient ────────────────────────────
   Green-tinted so the form itself says "this is the M&G variant" before you
   read a word of it. */
.dc-cal-prospect{border:1px solid #86efac;background:#f0fdf4;border-radius:8px;padding:8px 10px;margin:4px 0}
.dc-cal-prospect legend{font-size:11px;font-weight:800;color:#15803d;padding:0 6px;text-transform:uppercase;letter-spacing:.03em}
.dc-cal-prospect-notes{min-height:52px;max-height:78px}
.dc-cal-prospect-read{font-size:12.5px;color:#0f172a;background:#f8fafc;border-left:3px solid #86efac;padding:6px 8px;margin:6px 0;white-space:pre-wrap}
.dc-cal-copypf{margin-top:4px}
.dc-cal-copypf.copied{background:#16a34a;border-color:#16a34a;color:#fff}

/* ── TRUNCATION PRIORITY (David's ruling) ───────────────────────────
   When the row runs out of space: TIME and NAME survive first, then the type,
   and the SUBTYPE gives way first. Previously the name was the only thing that
   shrank, so "2:30 PM F… · Office Visit · Med Review" ate the patient and kept
   the detail — exactly backwards. */
.dc-cal-pvt2-event time{flex:0 0 auto}                    /* never shrinks */
.dc-cal-pvt2-event .dc-cal-ev-name{flex:1 1 auto;min-width:5.5em}  /* protected floor */
.dc-cal-pvt2-event .dc-cal-ev-type{flex:0 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.dc-cal-pvt2-event .dc-cal-ev-sub{
  flex:0 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
  font-size:12.5px;font-weight:600;opacity:.72;   /* first to give way */
}

/* ── Telehealth wears a phone, everything else keeps its square ─────
   Drawn ~1.7x the square marker so a telehealth stands out at a glance without
   introducing another colour (David's final marker ruling). */
.dc-cal-phone{width:15px;height:15px;flex:0 0 15px;color:var(--event-color,#1A73E8);display:block}
.dc-cal-cancelled .dc-cal-phone{color:#9ca3af}

/* ── Blocks: gray bands, Google all-day style ───────────────────────
   A block is not a patient event. It bands across every day it covers, so a
   week of vacation is ONE entry appearing on all five squares.
   REWORK 2026-08-19 (David: "one continuous even bar", ruled before, never
   actually delivered): .dc-cal-block-bar is now ONE real element per block per
   week row — a grid item placed by explicit grid-column/grid-row in the same
   .dc-cal-pvt2-days grid as the day cells (see computeBlockBars/blockBarSegment
   in diamond-calendar.js) — not one element per day glued together with margin
   tricks. See line ~294 below for its full sizing/placement rule. */
.dc-cal-block-bar.dc-cal-cancelled{text-decoration:line-through;opacity:.7}
.dc-cal-blockform{border:1px solid #DADCE0;background:#F8F9FA;border-radius:8px;padding:8px 10px;margin:4px 0}
.dc-cal-blockform legend{font-size:11px;font-weight:800;color:#5F6368;padding:0 6px;text-transform:uppercase;letter-spacing:.03em}
/* Same disease as .dc-cal-blocktoggle, TWICE (David, 2026-08-19 — the first pass here only
   fixed width and missed that display:flex was ALSO losing): the bare ".dc-cal-allday" rule
   (one class, specificity 0,1,0) loses its display:flex to ".dc-cal-create label{display:grid}"
   (0,1,1, higher) exactly like blocktoggle did, so the checkbox was never actually in a flex
   row at all — it just fell back to block-level default sizing (100vw-ish via the separate
   ".dc-cal-create input{width:100%}" rule) with nothing constraining it. Both problems need
   the SAME higher-specificity scoping: display on the label, width on the input. */
.dc-cal-create label.dc-cal-allday{display:flex;align-items:center;gap:8px;margin:6px 0}
.dc-cal-create label.dc-cal-allday input{width:auto;flex:0 0 auto;margin:0}
.dc-cal-allday span{font-size:13px;font-weight:600;color:#3C4043}

/* ── TRUNCATION PRIORITY, ACTUALLY ENFORCED ─────────────────────────
   The previous attempt gave all three flex-shrink:1, so they shrank in
   proportion and the NAME — being longest — lost the most. David saw
   "2:30 PM Rogers, D… · Tele… · Labs Fo…": everything truncated, nothing
   protected. Shrink order is now explicit:
     time  never shrinks
     name  never shrinks (shrink 0)
     type  shrinks second
     subtype shrinks FIRST and may vanish entirely on a tight row */
.dc-cal-pvt2-event time{flex:0 0 auto}
.dc-cal-pvt2-event .dc-cal-ev-name{flex:0 0 auto;flex-shrink:0;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}
.dc-cal-pvt2-event .dc-cal-ev-type{flex:0 1 auto;flex-shrink:8;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.dc-cal-pvt2-event .dc-cal-ev-sub{flex:0 1 auto;flex-shrink:60;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
/* A chunkier phone, a touch larger — noticeable, not shouting. */
.dc-cal-phone{width:17px;height:17px;flex:0 0 17px}

/* ── M&G prospect form ──────────────────────────────────────────────
   Notes resize VERTICALLY only. Dragging it wider tore it out of the modal —
   a textarea's default `resize: both` lets the user break the layout. */
.dc-cal-prospect-notes{resize:vertical;max-width:100%;width:100%;min-height:48px;max-height:120px;box-sizing:border-box}
/* First name beside date of birth, one row per person. */
.dc-cal-person{display:grid;grid-template-columns:1fr 1fr;gap:8px;align-items:end}
.dc-cal-person label{margin:2px 0}

/* Phone: at least the text line's height and visibly heavier than a square. */
.dc-cal-phone{width:18px;height:18px;flex:0 0 18px}

/* #254 PART 2 (David's order, 2026-08-26) — results-email-sent envelope, same fixed-size
   treatment as the phone icon (flex:0 0 18px) so a tight row can NEVER truncate or drop it —
   it sits beside the phone, both markers protected before type/subtype text gives way.
   `.dc-cal-pvt2-event>span.dc-cal-envelope` (not just `.dc-cal-envelope`) is DELIBERATE, found via
   an isolated markup+CSS fixture (_prove254TruncationFixture.mjs): line 50's
   `@media(max-width:1180px){.dc-cal-pvt2-event>span{display:none}}` — written long before this
   icon existed, to hide the type/subtype spans on a narrow TOOLBAR — also matches this envelope
   since it's a span too, and silently deleted it on any screen under 1180px wide (i.e. most of
   them). The extra specificity here (0,2,1 vs that rule's 0,1,1) wins regardless of viewport,
   without touching the pre-existing rule or its intended targets. */
/* #260 CORRECTION (David's live test, 2026-08-26): +10% size (18px→20px) and a FIXED far-right
   position, same anchor principle as the phone icon's fixed far-left position — it must never
   drift left as the row's text truncates. Markup moved the envelope to the LAST child (after the
   readiness dot); `margin-left:auto` on the envelope itself claims all leftover flex space, so it
   is always flush against the row's right edge regardless of how much text is between it and the
   phone icon. The dot's own `margin-left:auto` (its normal, unrelated behavior on every OTHER row)
   would otherwise compete for that same leftover space — scoped OFF only on rows that also carry
   an envelope, via :has(), so no other row's readiness-dot position is touched. */
.dc-cal-pvt2-event:has(.dc-cal-envelope) .dc-cal-dot{margin-left:0}
.dc-cal-pvt2-event>span.dc-cal-envelope{width:20px;height:20px;flex:0 0 20px;margin-left:auto;display:block;padding:0;margin-top:0;margin-right:0;margin-bottom:0;border:0;background:transparent;color:#15803d;cursor:default;line-height:0;overflow:visible;white-space:normal;font-size:inherit}
.dc-cal-envelope-icon{width:100%;height:100%;display:block}
.dc-cal-cancelled .dc-cal-envelope{color:#9ca3af}
/* Hidden parts must really go, not merely shrink (the drop order). */
.dc-cal-pvt2-event .dc-cal-ev-type[hidden],
.dc-cal-pvt2-event .dc-cal-ev-sub[hidden]{display:none}
/* #565 — a visit with no type: a red "Type?" that never shrinks (the name gives way) */
.dc-cal-pvt2-event .dc-cal-ev-type.dc-cal-ev-notype{color:#dc2626;font-weight:800;opacity:1;flex:0 0 auto;overflow:visible}
.dc-cal-pvt2-event:has(.dc-cal-ev-notype) .dc-cal-ev-name{flex:0 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
:root[data-theme="dark"] .dc-cal-pvt2-event .dc-cal-ev-type.dc-cal-ev-notype{color:#f87171;opacity:1}
/* #570 (2) (David, 2026-10-13) — the visit-type label ALWAYS shows: it never shrinks and is never hidden; the NAME gives way
   (shortened to "Hilton, B" by fitEventRows, then an ellipsis if even that will not fit). Later + more specific than the #296
   shrink order above, which let the type shrink second and be hidden. */
.dc-cal-pvt2-event .dc-cal-ev-type{flex:0 0 auto;flex-shrink:0;overflow:visible;text-overflow:clip}
.dc-cal-pvt2-event .dc-cal-ev-type[hidden]{display:inline}
/* and the ≤1180px toolbar rule (line 60) now names the type label as one it must never touch (law 5.38's amendment: the cure is
   to the rule that hides a family, not a patch on one member) */
.dc-cal-pvt2-event .dc-cal-ev-name{flex:0 1 auto;flex-shrink:1;min-width:2.5em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

/* ── Google's top bar, same order and spacing (D9) ──────────────────
   Today pill · chevrons immediately beside it · month label · then search and
   settings on the right. Dr. Becker's hand already knows where these are. */
.dc-cal-pvt2-toolbar{display:flex;align-items:center;gap:6px;padding:8px 12px}
.dc-cal-today-pill{
  border:1px solid #DADCE0;background:#fff;color:#3C4043;
  border-radius:16px;padding:6px 16px;font-size:14px;font-weight:500;cursor:pointer;
}
.dc-cal-today-pill:hover{background:#F1F3F4}
.dc-cal-chev{
  border:0;background:none;color:#5F6368;font-size:22px;line-height:1;
  width:32px;height:32px;border-radius:50%;cursor:pointer;padding:0;
}
.dc-cal-chev:hover{background:#F1F3F4}
.dc-cal-monthlabel{font-size:20px;font-weight:400;color:#3C4043;margin:0 0 0 6px;white-space:nowrap}
.dc-cal-searchwrap{position:relative;display:flex;align-items:center}
.dc-cal-searchicon{position:absolute;left:9px;color:#5F6368;font-size:15px;pointer-events:none}
.dc-cal-searchwrap input{
  border:1px solid #DADCE0;border-radius:8px;padding:6px 10px 6px 28px;
  font-size:14px;width:210px;background:#F1F3F4;
}
.dc-cal-searchwrap input:focus{background:#fff;outline:none;border-color:#1A73E8}

/* SCROLL CANCELLED (David, 2026-08-07). The row-height, auto-height and sticky
   overrides added for it are reverted: the grid fits its window again, exactly
   as it did before the experiment. Chevrons and Today are the navigation. */

.dc-cal-prospect-actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:6px}

/* ── NOTES AUTO-GROW (David: dictated notes run long) ───────────────
   Two caps were hiding text: max-height:120px on the prospect notes and
   max-height:52px on every form textarea. Both are lifted here. The box never
   scrolls internally — its height follows its content — and if that makes the
   form tall, the FORM scrolls with its footer pinned so Create stays reachable
   (rule 4.10). */
.dc-cal-create textarea.dc-cal-autogrow,
.dc-cal-prospect-notes{
  max-height:none;
  overflow-y:hidden;      /* never an inner scrollbar */
  resize:vertical;        /* manual drag still allowed, and now it works */
  min-height:3.4em;       /* ~3 lines to start, so short notes stay compact */
  width:100%;max-width:100%;box-sizing:border-box;
  line-height:1.45;
}
/* The form scrolls as a whole when a note is genuinely long… */
.dc-cal-create{max-height:92vh;overflow-y:auto}
/* …and the action row rides along, so Create is never buried (rule 4.10). */
.dc-cal-create footer{
  position:sticky;bottom:0;z-index:2;
  background:#fff;padding-top:8px;margin-top:8px;
  border-top:1px solid #eef0f3;
}

/* ── ONE CONTINUOUS BAR, Google-style — REWORK 2026-08-19, TWICE ─────
   David's ruling, delivered for real this time: a week off is ONE block, so it
   draws as ONE REAL ELEMENT, not seven day-local buttons stitched with negative
   margins (that approach — still visible in git history — could never actually
   close the seam, because each day is its own overflow:hidden grid cell; a
   margin can slide a box but cannot make it cross into a neighbour's clipped
   box).
   SECOND PASS, same day (David: "greys out the entire day and hides the real
   appointments"): the first fix made this bar a GRID ITEM with an explicit
   grid-column/grid-row span inside .dc-cal-pvt2-days, the SAME grid the day
   cells occupy via plain auto-placement. CSS Grid reserves explicitly-placed
   cells BEFORE running auto-placement, regardless of DOM order — so every day
   cell from the bar's row onward got silently bumped to the next free slot,
   leaving real days (and their real appointments) sitting in the wrong place
   while the grid container's own grey gap-colour showed through the holes left
   behind. position:absolute removes this element from grid layout ENTIRELY —
   it can no longer displace anything, ever, by construction, not by care. It
   is still a child of .dc-cal-pvt2-days (itself position:absolute, already the
   thing the wheel-virtualization transform moves), so it still rides that
   transform for free. Position/width come from plain CSS calc() against
   var(--calendar-columns) and var(--row-h) — see blockBarSegment() — no JS
   measurement, nothing to resync on scroll. */
/* David, 2026-08-19: match Google Calendar's block-bar text EXACTLY — not
   eyeballed. These are the real computed values read directly off a live
   Google Calendar month-view all-day event bar (the public "Holidays in
   United States" calendar, Labor Day, inspected via getComputedStyle — no
   guessing): height 22px, font-size 12px, font-weight 500 (medium, not
   bold), font-family "Google Sans Text","Google Sans",Helvetica,Arial,
   sans-serif, line-height 20px, padding 0 0 0 6px (zero top/bottom/right,
   6px left), border-radius 6px. display:flex + align-items:center centers
   the 20px line-height inside the 22px box exactly the way Google's own
   1px-top/1px-bottom slack does.
   SCOPED to .dc-cal-pvt2-days (two classes, specificity 0,2,0) rather than bare
   ".dc-cal-block-bar" (0,1,0) — found while proving this: ".dc-calendar-shell
   button,input,select,textarea{font:inherit}" (0,1,1) was silently winning over
   every font-size/weight/family/line-height I set here, because a bare class
   selector can never outrank a class+element selector. Every earlier "smaller
   font" pass in this thread changed the DECLARED value but never the RENDERED
   one — confirmed by getComputedStyle reporting the page's own inherited font
   (15px Inter) regardless of what this rule said. This is the actual fix. */
.dc-cal-pvt2-days .dc-cal-block-bar{
  position:absolute; height:22px; box-sizing:border-box; z-index:3;
  display:flex; align-items:center; text-align:left; text-overflow:ellipsis;
  overflow:hidden; white-space:nowrap; cursor:pointer;
  background:var(--block-color,#64748B); border:1px solid var(--block-color,#64748B);
  color:#fff; padding:0 0 0 6px; font-size:12px; font-weight:500; line-height:20px;
  font-family:"Google Sans Text","Google Sans",Helvetica,Arial,sans-serif;
}
.dc-cal-block-bar:hover{filter:brightness(1.08)}
.dc-cal-block-bar{border-radius:0}
.dc-cal-block-bar.is-start{border-top-left-radius:6px;border-bottom-left-radius:6px}
.dc-cal-block-bar.is-end{border-top-right-radius:6px;border-bottom-right-radius:6px}
.dc-cal-block-bar.dc-cal-cancelled{background:#E8EAED;border-color:#DADCE0;color:#5F6368;text-decoration:line-through;opacity:.7}

/* Colour picker on the block form. */
.dc-cal-blockcolors{display:flex;gap:6px;flex-wrap:wrap;margin:6px 0}
.dc-cal-swatch{
  width:22px;height:22px;border-radius:50%;border:2px solid #fff;
  box-shadow:0 0 0 1px #DADCE0;cursor:pointer;padding:0;
}
.dc-cal-swatch:hover{transform:scale(1.08)}
.dc-cal-swatch.on{box-shadow:0 0 0 2px #1A73E8}

/* The empty space a day cell reserves for whatever block bars cover it — the
   bars themselves render as overlay grid items (above), not as children of
   this cell, so this is purely a spacer pushing the day's own events down by
   the same amount the overlaid bar(s) occupy. */
.dc-cal-block-spacer{flex:0 0 auto;margin:2px 0 1px}
.dc-cal-bands{overflow:visible}

/* ── Top bar pinned while the wheel travels through time (4.10) ─────
   Google's rhythm: the bar never moves, only the weeks beneath it do. */
.dc-calendar-pvt2{display:flex;flex-direction:column;height:100%;min-height:0}
.dc-cal-pvt2-toolbar{
  position:sticky;top:0;z-index:20;flex:none;
  background:#fff;border-bottom:1px solid #E8EAED;
  min-height:56px;                 /* Google's bar height */
}
.dc-cal-pvt2-toolbar > *{flex:none}
.dc-cal-pvt2-toolbar .dc-cal-spacer{flex:1 1 auto}
/* Google spacing rhythm: the pill, then the chevrons tight beside it. */
.dc-cal-today-pill{margin-left:8px;margin-right:8px}
.dc-cal-chev{margin:0 2px}
.dc-cal-monthlabel{margin-left:12px}
.dc-cal-pvt2-toolbar button:hover{background:#F1F3F4}
.dc-cal-today-pill:hover{background:#F1F3F4}
/* The grid takes the rest and never scrolls the page itself. */
.dc-cal-canvas.month{flex:1 1 auto;min-height:0;overflow:hidden;overscroll-behavior:contain}

/* ── GOOGLE'S BAR RHYTHM (MC-1b) ────────────────────────────────────
   Bare chevrons, no circles. Icon buttons on the right at Google's weight.
   Our colours; their layout and spacing. */
.dc-cal-chev{
  border:0;background:none;color:#5F6368;font-size:24px;line-height:1;
  width:28px;height:36px;padding:0;cursor:pointer;border-radius:4px;
}
.dc-cal-chev:hover{background:#F1F3F4;color:#202124}
.dc-cal-today-pill{margin-left:4px;margin-right:10px}
.dc-cal-monthlabel{margin-left:10px;font-size:22px;font-weight:400;color:#3C4043}
.dc-cal-iconbtn{
  border:0;background:none;color:#5F6368;font-size:17px;line-height:1;
  width:36px;height:36px;border-radius:50%;cursor:pointer;padding:0;margin:0 1px;
}
.dc-cal-iconbtn:hover{background:#F1F3F4;color:#202124}

/* Search: a glass that becomes a field. */
.dc-cal-searchwrap{position:relative;display:none}
.dc-cal-searchwrap.open{display:flex;align-items:center}
.dc-cal-searchwrap.open input{
  border:1px solid #DADCE0;border-radius:8px;padding:7px 30px 7px 30px;
  font-size:14px;width:280px;background:#fff;
}
.dc-cal-searchwrap.open input:focus{outline:none;border-color:#1A73E8;box-shadow:0 1px 4px rgba(26,115,232,.18)}
.dc-cal-searchclose{position:absolute;right:6px;border:0;background:none;color:#5F6368;font-size:17px;cursor:pointer;line-height:1}
.dc-cal-searchresults{
  position:absolute;top:calc(100% + 6px);right:0;width:340px;z-index:40;
  background:#fff;border:1px solid #DADCE0;border-radius:8px;
  box-shadow:0 4px 16px rgba(0,0,0,.18);max-height:320px;overflow-y:auto;padding:4px;
}
.dc-cal-searchresults button{
  display:flex;align-items:center;gap:9px;width:100%;text-align:left;
  border:0;background:none;padding:7px 9px;border-radius:6px;cursor:pointer;
}
.dc-cal-searchresults button:hover{background:#F1F3F4}
.dc-cal-searchresults i{width:10px;height:10px;border-radius:50%;flex:0 0 10px}
.dc-cal-searchresults span{display:flex;flex-direction:column;min-width:0}
.dc-cal-searchresults strong{font-size:13px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.dc-cal-searchresults small{font-size:11.5px;color:#5F6368}
.dc-cal-searchresults em{display:block;padding:10px;color:#5F6368;font-size:13px}

/* View selector: how many weeks are on screen.
   #482 — a REAL <select> now, not a hand-rolled panel that could be left open.
   It keeps the pill's exact look (same border, radius, padding, dark rules via
   .dc-cal-viewbtn); only the list it drops is the browser's own. The ▾ is drawn
   by the wrapper, since a <select> cannot hold a child span. Law 5.21: the
   cursor is the arrow, never the hand. */
.dc-cal-viewwrap{position:relative;margin-left:4px;display:inline-flex}
.dc-cal-viewwrap::after{
  content:'▾';position:absolute;right:9px;top:50%;transform:translateY(-50%);
  font-size:12px;line-height:1;color:#5F6368;pointer-events:none;
}
.dc-cal-viewbtn{
  border:1px solid #DADCE0;background:#fff;color:#3C4043;border-radius:4px;
  padding:7px 12px;font-size:14px;cursor:default;white-space:nowrap;
}
.dc-cal-viewbtn:hover{background:#F1F3F4}
.dc-cal-viewselect{
  appearance:none;-webkit-appearance:none;-moz-appearance:none;
  padding-right:26px;font-family:inherit;line-height:1.2;
}
.dc-cal-viewselect:focus-visible{outline:2px solid #1A73E8;outline-offset:1px}

/* One settings screen. */
.dc-cal-settings{max-width:620px;max-height:88vh;display:flex;flex-direction:column}
.dc-cal-setbody{overflow-y:auto;flex:1 1 auto;min-height:0;padding-right:4px}
.dc-cal-setsection{border-top:1px solid #E8EAED;padding:12px 0}
.dc-cal-setsection:first-child{border-top:0}
.dc-cal-setsection h4{font-size:12px;text-transform:uppercase;letter-spacing:.05em;color:#5F6368;margin:0 0 6px}
.dc-cal-setrow{display:flex;align-items:center;gap:9px;padding:5px 0;font-size:13px}
.dc-cal-setrow i{width:10px;height:10px;border-radius:50%;flex:0 0 10px}
.dc-cal-setvalue{flex:1;color:#5F6368;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.dc-cal-syncline{font-size:13px;color:#B45309;background:#FFFBEB;border:1px solid #FDE68A;border-radius:6px;padding:8px 10px;margin:0}

/* `.dc-cal-pvt2-toolbar>button` (line 8) is a two-selector rule that was beating
   the single-class chevron/icon styles, which is why the bare arrows still had
   a border, a white fill and a 6px radius. Matched specificity here. */
.dc-cal-pvt2-toolbar > button.dc-cal-chev{
  height:36px;min-width:28px;width:28px;padding:0;
  border:0;border-radius:4px;background:none;color:#5F6368;
  font-size:24px;font-weight:400;line-height:1;
}
.dc-cal-pvt2-toolbar > button.dc-cal-chev:hover{background:#F1F3F4;color:#202124}
.dc-cal-pvt2-toolbar > button.dc-cal-iconbtn{
  height:36px;min-width:36px;width:36px;padding:0;
  border:0;border-radius:50%;background:none;color:#5F6368;
  font-size:17px;font-weight:400;
}
.dc-cal-pvt2-toolbar > button.dc-cal-iconbtn:hover{background:#F1F3F4;color:#202124}
.dc-cal-pvt2-toolbar > button.dc-cal-today-pill{
  height:36px;border:1px solid #DADCE0;border-radius:18px;padding:0 17px;
  background:#fff;color:#3C4043;font-weight:500;font-size:14px;
}
.dc-cal-pvt2-toolbar > button.dc-cal-new-btn{
  height:36px;border:1px solid #DADCE0;border-radius:4px;padding:0 15px;
  background:#fff;color:#3C4043;font-weight:500;font-size:14px;margin-left:6px;
}

/* ── THE CHEAT SHEET (MC-1) ───────────────────────────────────────────
   One card, read top to bottom: is it ready · what is the plan · which
   records are here. Wider than the old detail modal because the records
   list is the point of it, and it must be readable without scrolling on a
   normal visit (rule 4.10 — no scrolling to reach an action). */
.dc-cheat{max-width:720px}
.dc-cheat .dc-cal-detail-body{display:flex;flex-direction:column;gap:14px}
.dc-cheat h4{font-size:11px;text-transform:uppercase;letter-spacing:.04em;color:#6b7280;margin:0 0 6px}

.dc-cheat-readiness{display:flex;align-items:center;gap:8px;padding:8px 14px;border-top:1px solid #e5e7eb;border-bottom:1px solid #e5e7eb;background:#f8fafc;font-size:13px;color:#334155}
.dc-cheat-readiness .dc-cal-dot{margin-left:0;width:10px;height:10px;flex:0 0 10px}
.dc-cheat-readiness b{margin-left:auto;font-size:12px;color:#475569;white-space:nowrap}

.dc-cheat-plan textarea{width:100%;min-height:56px;resize:none;overflow:hidden;font:inherit;font-size:13px;line-height:1.45;padding:8px 10px;border:1px solid #cbd5e1;border-radius:8px;color:#0f172a;background:#fff}
.dc-cheat-plan textarea:focus{outline:none;border-color:#1a73e8;box-shadow:0 0 0 3px rgba(26,115,232,.15)}
.dc-cheat-planrow{display:flex;align-items:center;gap:10px;margin-top:6px}
.dc-cheat-plansaved{font-size:12px;color:#16a34a}

.dc-cheat-recrow{display:flex;align-items:center;gap:10px;padding:7px 0;border-top:1px solid #f1f5f9}
.dc-cheat-recrow:first-of-type{border-top:0}
.dc-cheat-recname{display:flex;flex-direction:column;min-width:0;flex:1 1 auto}
.dc-cheat-recname strong{font-size:13px;color:#0f172a;font-weight:600}
.dc-cheat-recname small{font-size:12px;color:#64748b;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.dc-cheat-icons{display:flex;gap:6px;flex:0 0 auto;align-items:center}
.dc-cheat-status{flex:0 0 auto;font-size:12px;font-weight:600;white-space:nowrap}
.dc-cheat-status.got{color:#16a34a}
.dc-cheat-status.waiting{color:#b45309}
.dc-cheat-attach .dc-cal-note strong{color:#b45309}

/* ── MISSION CONTROL, first slice (David, 2026-08-20, IDEAS.md row 1) ──── */
.dc-cheat-mc{border-top:1px solid #e5e7eb;padding-top:14px}
.dc-cheat-mc dl{display:grid;grid-template-columns:90px 1fr;gap:6px 10px;margin:0 0 12px}
.dc-cheat-mc dt{font-size:10px;text-transform:uppercase;font-weight:800;color:#77839a}
.dc-cheat-mc dd{font-size:13px;margin:0;color:#0f172a}
.dc-cheat-pfstatus{display:flex;align-items:center;gap:8px;font-size:13px;margin:0 0 10px}
.dc-cheat-pfstatus i{width:8px;height:8px;border-radius:50%;flex:0 0 8px;background:#94a3b8}
.dc-cheat-pfstatus.good i{background:#16a34a}
.dc-cheat-pfstatus.pending i{background:#d97706}
.dc-cheat-pfstatus.bad i{background:#dc2626}
.dc-cheat-headsups{margin:0 0 10px;font-size:13px}
.dc-cheat-headsups strong{display:block;font-size:11px;text-transform:uppercase;letter-spacing:.04em;color:#6b7280;margin-bottom:4px}
.dc-cheat-headsups ul{margin:0;padding-left:18px}
.dc-cheat-headsups li{margin:2px 0;color:#334155}
.dc-cheat-staffnote{margin:0 0 10px;font-size:13px}
.dc-cheat-staffnote strong{display:block;font-size:11px;text-transform:uppercase;letter-spacing:.04em;color:#6b7280;margin-bottom:4px}
.dc-cheat-staffnote p{margin:0;color:#334155;white-space:pre-wrap}
.dc-cheat-comingsoon{margin:10px 0 0;padding:8px 10px;border:1px dashed #cbd5e1;border-radius:8px;font-size:12px;color:#64748b;background:#f8fafc}
.dc-cheat-priorvisit{margin:0 0 10px;font-size:13px}
.dc-cheat-priorvisit strong{display:block;font-size:11px;text-transform:uppercase;letter-spacing:.04em;color:#6b7280;margin-bottom:2px}
.dc-cheat-priorvisit small{display:block;color:#8a94a4;font-size:11px;margin-bottom:4px}
.dc-cheat-priorvisit p{margin:2px 0;color:#334155;white-space:pre-wrap}
/* IDEA 10 — THE ROUND TRIP (2026-08-22): drag-a-PDF-onto-the-card feedback. */
.dc-cheat-large.dc-cheat-dragover{outline:3px dashed #2f6ee5;outline-offset:-3px;background:#f2f7ff}

/* ── MC-1a — A SCROLLING SURFACE, NOT A SLIDESHOW ─────────────────────
   The days strip is taller than the window by OVERSCAN rows either side and
   is translated on the compositor, so a wheel gesture slides drawn content
   at frame rate instead of repainting the grid per notch. Rows must be a
   FIXED height (--row-h, measured per render) — 1fr shares would let the
   off-screen rows squash the visible ones. */
.dc-cal-pvt2-viewport{position:relative;flex:1;min-height:0;overflow:hidden;background:#e5e7eb}
.dc-cal-pvt2-days{position:absolute;left:0;right:0;top:0;
  grid-template-rows:none;grid-auto-rows:var(--row-h,120px);
  transform:translate3d(0,calc(-1 * (var(--overscan,4) + var(--slide,0)) * (var(--row-h,120px) + 1px)),0);
  backface-visibility:hidden}

/* Mid-scroll orientation: the 1st of a month says which month it is, so an
   appointment can never be dropped into the wrong one. */
.dc-cal-pvt2-datehead{display:flex;align-items:center;gap:1px;align-self:flex-start;max-width:100%}
.dc-cal-pvt2-datehead .dc-cal-pvt2-number{align-self:auto}
.dc-cal-pvt2-month{font-style:normal;font-weight:800;font-size:12px;letter-spacing:.02em;color:#7B1E1E;margin-left:4px;white-space:nowrap}
.dc-cal-pvt2-day.today .dc-cal-pvt2-month{color:#7B1E1E}

/* Permanent delete — deliberately not styled like Cancel (CX). CX is routine
   clinical history; this one erases. */
.dc-cal-delete-modal{width:min(440px,92vw)}
.dc-cal-deletewho{margin:14px 22px 0;display:flex;flex-direction:column;gap:2px}
.dc-cal-deletewho strong{font-size:15px;color:#0f172a}
.dc-cal-deletewho span{font-size:13px;color:#64748b}
.dc-cal-delete-modal .dc-cal-note{margin:12px 22px}
.dc-calendar-shell button.danger{border-color:#fca5a5;color:#b91c1c;background:#fff}
.dc-calendar-shell button.danger:hover:not(:disabled){background:#fef2f2}
.dc-cal-delete-modal button[type=submit]{background:#dc2626;border-color:#dc2626;color:#fff}
.dc-cal-delete-modal button[type=submit]:hover{background:#b91c1c}
/* #486 — the Cancel (CX) confirmation takes the Delete confirmation's SHAPE (who · when · note), never its red:
   CX is routine clinical history. The one-line difference between the two appears in both dialogs. */
.dc-cal-cancel-modal{width:min(440px,92vw)}
.dc-cal-cancel-modal .dc-cal-note{margin:12px 22px}
.dc-cal-diff{margin:0 22px 10px;font-size:12.5px;color:#475569;line-height:1.45}
.dc-cal-diff b{color:#0f172a}
.dc-cal-cancel-modal>label{margin:0 22px 12px}



/* ── KILL LIST (David's ruling, 2026-08-15): success is never green. Every
   "success" class below is restyled to neutral slate -- the STATE stays
   readable (a badge still says what it says), the celebration color is gone.
   Appended last so it wins without editing the originals. KEPT GREEN on purpose
   (state semantics, not success jewelry): the readiness traffic-light dot
   (green/amber/red -- the legend depends on it), the sync good/bad health
   icon, and the weekends on/off toggle. ── */
.dc-cheat-plansaved{display:none!important}
.dc-cheat-status.got{color:#334155}

/* D2 (calendar sweep 2026-08-17): cheat-sheet footer wraps; buttons never spill or break onto two lines */
.dc-cheat>footer{flex-wrap:wrap;justify-content:flex-start;gap:6px;padding:12px 22px}.dc-cheat>footer button{white-space:nowrap}.dc-cheat>footer .danger{margin-left:auto}.dc-cheat>footer .danger+.danger{margin-left:0}

/* D8 (law 4.9): the instant hover name for day-square chips — one shared element, fixed-positioned by diamond-calendar.js. */
.dc-cal-name-tip{position:fixed;left:0;top:0;bottom:auto;z-index:1400;display:none}
.dc-cal-name-tip.on{display:block}
/* Arrow flips to point up when installInstantChipTips opens the card below its
   target instead of above (no room above — day-1 row, top of the visible grid). */
.dc-cal-name-tip.below::after{top:auto;bottom:100%;border-top-color:transparent;border-bottom-color:#111827}

/* (#404: the calendar-card Package Rail seat (.dc-cheat-lh, calendar-lighthouse-line.js) is gone — the rail is Mission
   Control's own .mc-rail, shown in Extended for every patient visit.) */

/* Reverse-watcher proposals strip — "Booked in Google" (calendar-proposals.js, David's ruling 2026-08-18) */
.cp-strip{margin:0 0 12px;border:1px solid #bfdbfe;border-left:5px solid #2563eb;border-radius:12px;background:#eff6ff;padding:10px 14px}
.cp-head{display:flex;gap:12px;align-items:baseline;flex-wrap:wrap;margin-bottom:6px;color:#1e3a8a}
.cp-head b{font-size:14px}.cp-head span{font-size:12px;color:#334155}
.cp-row{display:flex;gap:12px;align-items:center;justify-content:space-between;padding:8px 0;border-top:1px solid #dbeafe}
.cp-main{min-width:0;flex:1 1 auto}.cp-title{font-size:13px;color:#0f172a}.cp-raw{font-weight:600}
.cp-read{font-size:12.5px;color:#1e293b;margin-top:2px}.cp-why{color:#64748b}
.cp-acts{display:flex;gap:6px;align-items:center;flex:none}
.cp-acts select{border:1px solid #cbd5e1;border-radius:8px;padding:6px 8px;font:inherit;font-size:12.5px;max-width:220px}
.cp-acts button{border:1px solid #cbd5e1;background:#fff;border-radius:8px;padding:7px 12px;font:inherit;font-size:12.5px;cursor:pointer}
.cp-acts button.primary{background:#2563eb;border-color:#2563eb;color:#fff;font-weight:600}
.cp-acts button:disabled{opacity:.55;cursor:default}


/* ── DAVID'S CALENDAR PASS (2026-08-18) ────────────────────────────────────────────── */
/* 1/10: SUPERSEDED 2026-08-19 — .dc-cal-block-bar now has a fixed height:19px (not
   min-height) applied uniformly to every segment; there is no longer an empty-label
   continuation segment that could collapse, since every bar shows its label. */
/* 3/9: reminders (renewals, payroll, license due, calls) are light rows with a dot — never dark slabs */
.dc-cal-pvt2-event.dc-cal-reminder{color:#3c4043}
.dc-cal-pvt2-event.dc-cal-reminder>i{border-radius:50%;background:#7c8aa5}
.dc-cal-pvt2-event.dc-cal-reminder strong{font-weight:600}
/* 12: month marker — the month name owns the top of the 1st's square: extended bold, bright blue (the today blue),
   ~3× the old 12px and a touch taller than the 24px day number */
.dc-cal-pvt2-datehead{display:flex;align-items:baseline;gap:6px;align-self:stretch;max-width:100%;overflow:hidden;margin-bottom:1px}
.dc-cal-pvt2-month{font-style:normal;font-weight:900;font-size:26px;line-height:1;letter-spacing:.06em;color:#1a73e8;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-stretch:expanded;text-transform:uppercase}
.dc-cal-pvt2-day.today .dc-cal-pvt2-month{color:#1a73e8}
.dc-cal-pvt2-datehead .dc-cal-pvt2-number{align-self:auto}
/* 5/6: "+N more" is a real button (opens the day) and appears only when the square is out of room */
.dc-cal-more{align-self:flex-start;padding:1px 4px;border:0;background:transparent;color:#2563eb;font-size:11px;font-weight:700;cursor:pointer;height:20px}
.dc-cal-more:hover{text-decoration:underline}

/* ── MC-6 HOLIDAYS (2026-08-18): decorations in the date-head slot; somber days quiet; popup read-only ── */
.dc-cal-holiday{display:inline-flex;align-items:center;gap:4px;max-width:100%;min-width:0;border:0;background:transparent;padding:0 4px;margin-left:2px;height:24px;border-radius:999px;cursor:pointer;font:inherit;color:#1f2937;overflow:hidden}
.dc-cal-holiday:hover{background:#f1f5f9}
.dc-cal-holiday-icon{font-size:15px;line-height:1}
.dc-cal-holiday-text{font-size:11px;font-weight:700;color:#334155;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.dc-cal-holiday.somber .dc-cal-holiday-text{color:#6b7280;font-weight:600}
.dc-cal-holiday.somber .dc-cal-holiday-icon{filter:grayscale(.6);opacity:.85}
.dc-cal-pvt2-day.dc-cal-somber-day .dc-cal-pvt2-number{color:#374151}
.dc-cal-holiday.icon-only{padding:0 2px}
.dc-cal-holiday-backdrop{position:fixed;inset:0;background:rgba(15,23,42,.45);display:flex;align-items:center;justify-content:center;z-index:9000}
.dc-cal-holiday-modal{width:min(560px,92vw);max-height:84vh;display:flex;flex-direction:column;background:#fff;border-radius:16px;box-shadow:0 30px 80px rgba(2,6,23,.35);overflow:hidden}
.dc-cal-holiday-modal header{display:flex;gap:14px;align-items:center;padding:16px 18px;border-bottom:1px solid #e5e7eb}
.dc-cal-holiday-modal header h3{margin:0;font-size:18px}.dc-cal-holiday-modal header p{margin:2px 0 0;color:#64748b;font-size:13px}
.dc-cal-holiday-big{font-size:34px;line-height:1}
.dc-cal-holiday-x{margin-left:auto;border:0;background:transparent;font-size:24px;line-height:1;cursor:pointer;color:#475569}
.dc-cal-holiday-body{padding:16px 18px;overflow:auto;font-size:14px;line-height:1.55;color:#1f2937}
.dc-cal-holiday-body pre{white-space:pre-wrap;font:inherit}
.dc-cal-holiday-pending{margin:0;color:#64748b;font-style:italic}
.dc-cal-holiday-modal.somber header{background:#f8fafc}.dc-cal-holiday-modal.somber .dc-cal-holiday-big{filter:grayscale(.6)}
/* month marker fits a 7-column (weekends-shown) grid too — narrower squares, slightly smaller word */
.dc-cal-pvt2-days[style*="--calendar-columns:7"] .dc-cal-pvt2-month{font-size:21px;letter-spacing:.04em}

/* ── BOOKING CARD REBUILD (David, 2026-08-19) — header pills + inline bands ── */
/* ── CARD FULL-SIZE, first slice (David, 2026-08-20, IDEAS.md row 1) ──────
   .dc-cheat-large and the .dc-cal-detail-body flex:1 below were laid down
   2026-08-19 as groundwork and never activated — width stayed pinned at
   650px by the base .dc-cal-create rule (same specificity, source order
   lost), and flex:1 was a no-op because the parent was never display:flex.
   Two-class selector wins the specificity fight on sight, same fix pattern
   already used for the heads-up band and block-bar font bugs. Footer stays
   pinned (rule 4.10, no-scroll-to-act) — only .dc-cal-detail-body scrolls. */
.dc-cal-create.dc-cheat-large{width:min(1200px,95vw);max-width:1200px;max-height:92vh;display:flex;flex-direction:column}
.dc-cheat-large>footer{flex:0 0 auto}
.dc-cal-detail-body{flex:1;min-height:0;overflow-y:auto}
.dc-card-pills{display:flex;flex-wrap:wrap;gap:6px;padding:8px 0 4px}
.dc-pill{display:inline-flex;align-items:center;gap:5px;height:28px;padding:0 12px;border:1px solid #DADCE0;border-radius:999px;background:#fff;color:#1f2937;font-size:12.5px;font-weight:600;cursor:pointer}
.dc-pill:hover{background:#f1f3f6}
.dc-pill.on{background:#e8f0fe;border-color:#8ab4f8;color:#1a73e8}
.dc-pill:disabled{opacity:.5;cursor:default}
.dc-pill-static{cursor:default;background:#f8f9fa}
.dc-pill-dot{width:8px;height:8px;border-radius:50%;flex:0 0 8px}
/* CARD SIZE TIERS, PHASE 1 (2026-08-24) — the pencil marks the date/time
   pills as editable (Becker Rule: visible, not hover-only); the segmented
   control sits in the same header row on every tiered card. */
.dc-pill-pencil{font-size:11px;opacity:.55;margin-right:1px}
/* CORRECTION (2026-08-24) — explicit Reschedule pill, accent color so it
   reads as an action distinct from the plain white pills beside it, using
   the same blue already established for an active/open pill (.dc-pill.on)
   rather than inventing a new color. */
.dc-pill-reschedule{background:#eef4ff;border-color:#8ab4f8;color:#1a56db}
.dc-pill-reschedule:hover{background:#e0eaff}
.dc-pill-reschedule.on{background:#1a56db;border-color:#1a56db;color:#fff}
/* (#404: the Quick / Standard / Full tier segment (.dc-tier-seg / .dc-tier-btn) is retired.) */

.dc-resched-band{border:1px solid #e5e7eb;border-radius:10px;background:#f8f9fa;padding:10px;margin:2px 0 8px}
.dc-resched-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.dc-resched-month{min-width:0}
.dc-resched-monthhead{display:flex;align-items:center;justify-content:space-between;font-size:12.5px;font-weight:700;margin-bottom:4px}
.dc-resched-monthhead button{width:22px;height:22px;border:0;background:none;cursor:pointer;font-size:15px;color:#5f6368;border-radius:50%}
.dc-resched-monthhead button:hover{background:#e8eaed}
.dc-resched-weekdays{display:grid;grid-template-columns:repeat(7,1fr);font-size:10px;color:#9aa0a6;text-align:center;margin-bottom:2px}
.dc-resched-days{display:grid;grid-template-columns:repeat(7,1fr);gap:2px}
.dc-resched-day{height:26px;border:0;background:none;border-radius:50%;font-size:11.5px;color:#3c4043;cursor:pointer}
.dc-resched-day:hover{background:#e8eaed}
.dc-resched-day.dim{color:#c0c4c9}
.dc-resched-day.today{font-weight:700;color:#1a73e8}
.dc-resched-day.on{background:#1a73e8;color:#fff;font-weight:700}
.dc-resched-times{max-height:198px;overflow-y:auto;display:grid;grid-template-columns:repeat(3,1fr);gap:4px;align-content:start}
.dc-resched-time{height:26px;border:1px solid #DADCE0;border-radius:6px;background:#fff;font-size:11px;color:#1f2937;cursor:pointer;padding:0 2px}
.dc-resched-time:hover{background:#f1f3f6}
.dc-resched-time.current{border-color:#1a73e8;color:#1a73e8;font-weight:700}
.dc-resched-time.on{background:#1a73e8;border-color:#1a73e8;color:#fff;font-weight:700}
.dc-resched-time.conflict{text-decoration:line-through;color:#9aa0a6}
.dc-resched-commit{display:flex;align-items:center;gap:8px;margin-top:10px}
.dc-resched-reason{flex:1;height:32px;box-sizing:border-box;border:1px solid #DADCE0;border-radius:7px;padding:0 10px;font-size:12.5px}
.dc-resched-buttons{display:flex;gap:6px;flex:0 0 auto}

/* UI SIMPLIFICATION (David, 2026-08-22): Most-Used + time pills both sized
   ~10% smaller than the standard .dc-cal-chip (11.5px/3px 9px baseline). */
.dc-cal-chip.toppick{font-size:10.5px;padding:3px 8px}
.dc-cal-chip.timepill{font-size:10.5px;padding:3px 8px;background:#fff;border-color:#DADCE0}
.dc-cal-chip.timepill.on{background:#1a73e8;border-color:#1a73e8;color:#fff;font-weight:700}
.dc-cal-chip.timepill.othertime{font-style:italic;color:#5f6368}
.dc-cal-chip.timepill.othertime.on{font-style:normal;background:#eef2ff;border-color:#c7d2fe;color:#3730a3}
.dc-cal-timepills{align-items:center}

/* OTHER-TIME PICKER — mini month calendar (reuses .dc-resched-month as-is,
   "the existing calendar's own mini-calendar") + a click-to-select wheel. */
.dc-other-time .dc-resched-grid{grid-template-columns:1fr 1fr}

.dc-details-band label{display:block;margin:6px 0}
.dc-details-band label span{display:block;font-size:11px;color:#6b7280;font-weight:700;margin-bottom:2px}
.dc-details-band input,.dc-details-band select,.dc-details-band textarea{width:100%;box-sizing:border-box;border:1px solid #cbd5e1;border-radius:7px;padding:6px 9px;font:inherit;font-size:12.5px}
.dc-details-band textarea{min-height:50px;resize:vertical}
.dc-details-band .dc-resched-buttons{margin-top:8px}

.dc-cheat-history{margin-top:8px}
.dc-cheat-history ul{list-style:none;margin:0;padding:0;font-size:11.5px;color:#5f6368}
.dc-cheat-history li{padding:3px 0;border-top:1px solid #f1f3f6}
/* #730 — a heads-up's reschedule history (both heads-up windows) and the deleted-heads-up Undo bar */
.dc-hu-hist{margin-top:6px}.dc-hu-hist h4{margin:0 0 4px;font-size:12.5px;font-weight:700;color:#374151}
.dc-hu-hist ul{list-style:none;margin:0;padding:0;font-size:12.5px;color:#4b5563}.dc-hu-hist li{padding:4px 0;border-top:1px solid #f1f3f6}
.dc-hu-hist-undo{border:0;background:transparent;color:#1d4ed8;text-decoration:underline;font:inherit;padding:0 0 0 6px;cursor:default}
.dc-hu-undo-bar{position:fixed;left:50%;bottom:22px;transform:translateX(-50%);z-index:1400;display:flex;align-items:center;gap:12px;max-width:min(760px,calc(100vw - 32px));background:#1f2937;color:#fff;border-radius:10px;padding:10px 14px;box-shadow:0 10px 30px rgba(0,0,0,.3);font-size:14px}
.dc-hu-undo-bar .dc-hu-undo-x{border:0;background:transparent;color:#cbd5e1;font-size:20px;line-height:1;cursor:default}
#dcHeadsUpForm .dc-cal-delete[data-p3-locked]{opacity:.45}

/* David's live find (2026-08-19): the generic ".dc-cal-create label{display:grid}" rule
   (line 1 of this file) out-specifies a bare ".dc-cal-blocktoggle" — checkbox and text
   rendered as two grid rows instead of one control. Matching ".dc-cal-create label.X" beats it. */
.dc-cal-create label.dc-cal-blocktoggle{display:flex;align-items:center;gap:7px;margin:2px 0 8px;cursor:pointer}
/* David's live find #2 (2026-08-19, still detached after the display:flex fix): the
   base ".dc-cal-create input{width:100%}" rule (equal specificity, earlier in source)
   was never overridden for this checkbox, so it stretched to fill the whole row width —
   the checkbox glyph rendered pinned left, the label span pushed/wrapped to the far
   right. width:auto (higher specificity: two classes) beats it outright. */
.dc-cal-create label.dc-cal-blocktoggle input{width:auto;flex:0 0 auto;margin:0}
.dc-cal-create .dc-cal-blocktoggle span{font-size:13px;font-weight:600;color:#3c4043;text-transform:none;letter-spacing:normal}

.dc-drag-confirm{max-width:420px}
.dc-cal-build-marker{align-self:center;margin-left:6px;color:#c0c4c9;font-size:9px;letter-spacing:.02em}

/* ── GLOBAL HOVER CARD (David's ruling, 2026-08-19): phone + DOB on hover, everywhere
   a patient appointment renders. SUPERSEDED 2026-08-19 (David: still clipped by "day
   headers/edges" after the first flip fix — law 5.16, repair vs build): the embedded
   CSS-absolute child + :hover-display rules here got clipped by every day cell's own
   overflow:hidden, independent of where the cell sits in the viewport. Removed. The
   card now renders through the single floating #dcCalNameTip element (.dc-cal-name-tip,
   position:fixed, line 517) driven by installInstantChipTips() in diamond-calendar.js —
   appended to document.body, so no ancestor overflow can ever clip it. */

/* ── TOP-11 FIRST-CLASS PICKS (David's ruling, built out 2026-08-19) ── */
.dc-cal-toppicks-label{display:block;font-size:10px;text-transform:uppercase;letter-spacing:.05em;color:#9aa0a6;font-weight:700;margin:6px 0 3px}
.dc-cal-toppicks{display:flex;flex-wrap:wrap;gap:5px;margin-bottom:6px}
.dc-cal-chip.toppick{font-weight:600;background:#fafbfc}
.dc-cal-chip.toppick.on{font-weight:700}

/* ── MISSION CONTROL, OPTION A "THE COCKPIT" (David's build order, 2026-08-20)
   mockups/mission-control/mission-control-A.html is the spec — column widths,
   the manifest row shape and its tag colors are taken directly from it.
   Phase 1: the center column (the manifest) is real. Left keeps this job's
   existing content (plan/records/attachments/mission-control-block) until
   Phase 2 reshapes it into the mockup's own left-column sections. Right is a
   marked placeholder until Phase 3 — never silently blank (rule 1.4). */
/* .dc-cheat .dc-cal-detail-body{display:flex;...} (booking-card-rebuild CSS)
   is two classes, specificity 0,2,0 — a bare .mc-grid (0,1,0) loses that
   fight regardless of source order, same disease as the heads-up-band /
   block-bar / full-card bugs already fixed this session. Two classes on the
   same element wins it outright. */
.dc-cal-detail-body.mc-grid{display:grid;grid-template-columns:300px 1fr 330px;gap:0;align-items:start}
.mc-col{padding:0 16px;min-width:0}
.mc-col:first-child{padding-left:0}
.mc-col:not(:last-child){border-right:1px solid #e5e7eb}
.mc-col-center,.mc-col-right{padding-top:0}
.mc-sec{margin:0 0 8px;font-size:11px;letter-spacing:.09em;text-transform:uppercase;color:#6b7280;display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.mc-sec .mc-n{background:#eef2f7;color:#334155;border-radius:999px;padding:1px 8px;font-size:11px}
.mc-sec-note{margin-left:auto;font-weight:600;text-transform:none;letter-spacing:0;color:#9aa3b2}
.mc-fcb-btn{margin-left:auto;border:1px solid #d6dde7;border-radius:999px;background:#fff;padding:3px 11px;color:#3d4a5f;font-size:10px;font-weight:700;text-transform:none;letter-spacing:0;cursor:default}
.mc-fcb-btn:hover{background:#f5f7fa}
.mc-sec .mc-sec-note+.mc-fcb-btn{margin-left:10px}
.mc-doc{display:grid;grid-template-columns:34px 1fr auto;gap:10px;align-items:center;padding:9px 10px;border:1px solid #dbe3ee;border-radius:10px;background:#fff;margin-bottom:7px;cursor:pointer}
.mc-doc:hover{border-color:#94a3b8;background:#f8fafc}
.mc-doc .mc-doc-ico{width:34px;height:40px;border-radius:6px;background:linear-gradient(180deg,#fff,#f1f5f9);border:1px solid #dbe3ee;display:grid;place-items:center;font-size:10px;font-weight:900;color:#64748b}
.mc-doc .mc-doc-name{font-weight:750;font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.mc-doc .mc-doc-meta{color:#5b6678;font-size:11.5px}
.mc-doc .mc-tag{font-size:10.5px;font-weight:800;padding:2px 8px;border-radius:999px;background:#eef2f7;color:#334155;white-space:nowrap}
.mc-doc .mc-tag.linked{background:#e8f0fe;color:#1e40af}
.mc-doc .mc-tag.new{background:#fff4e0;color:#b45309}
.mc-attach{display:flex;gap:6px;align-items:center;font-size:11.5px;color:#5b6678;margin-top:2px}
.mc-attach input{accent-color:#2563eb}
.mc-placeholder{border:1px dashed #cbd5e1;border-radius:10px;padding:14px;color:#7a8598;font-size:12.5px;background:#fbfcfe}

/* ── ATTACH TO VISIT — the ask engine (David's build order, 2026-08-20) ── */
.mc-ask-row-controls{margin-bottom:10px}
.mc-ask-pills{position:relative;display:flex;flex-wrap:wrap;gap:5px;align-items:center;margin-bottom:6px}
.mc-ask-gear{width:26px;height:26px;padding:0;font-size:13px}
.mc-ask-pills #dcAskMgr{position:absolute;top:100%;right:0;margin-top:4px;z-index:50}
/* IDEA 11 — THE RECENCY SWEEP (2026-08-21): own positioned wrapper so the
   gear popover anchors correctly regardless of the ask engine's own markup. */
.mc-recency-wrap{position:relative}
.mc-recency-wrap #dcRecencyMgr{position:absolute;top:100%;right:0;margin-top:4px;z-index:50}
.mc-recency-limit{opacity:.75}
.mc-ask-free{display:flex;gap:6px}
.mc-ask-free input{flex:1 1 auto;border:1px solid #dbe3ee;border-radius:8px;padding:7px 9px;font-size:12.5px}
.mc-ask-results{border:1px solid #dbe3ee;border-radius:10px;padding:8px;margin:8px 0 12px;background:#fbfcfe}
.mc-ask-row{display:grid;grid-template-columns:20px 34px 1fr;gap:8px;align-items:center;padding:6px 4px;border-bottom:1px solid #eef2f7}
.mc-ask-row:last-of-type{border-bottom:0}
.mc-ask-row.already{opacity:.7}
.mc-ask-row input[type="checkbox"]{accent-color:#2563eb}
.mc-ask-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:8px}
.mc-tag.attached{background:#e6f6ec;color:#15803d}
/* IDEA 11 "find-only" extension (2026-08-21): distinct from ATTACHED/FILED —
   amber, matching the practice's existing "not yet done" convention, never
   green (green means confirmed/done elsewhere in this app). */
.mc-tag.drive-only{background:#fff4e0;color:#b45309}
.mc-ask-row.drive-only{opacity:.85}
.mc-detach{border:0;background:transparent;color:#94a3b8;font-size:15px;line-height:1;cursor:pointer;padding:2px 4px;margin-left:4px}
.mc-detach:hover{color:#dc2626}

/* ── MISSION CONTROL PHASE 2 — left column (David's build order, 2026-08-20) ── */
.mc-note{background:#fffbeb;border:1px solid #fde68a;border-radius:10px;padding:10px 12px;font-size:13px;color:#1f2937;line-height:1.5}
.mc-note small{display:block;color:#92400e;font-weight:700;font-size:10.5px;letter-spacing:.06em;text-transform:uppercase;margin-bottom:4px}
.mc-nv-line{margin-top:6px;font-size:12.5px}
.mc-expect{list-style:none;padding:0;margin:0;display:grid;gap:6px}
.mc-expect li{display:flex;gap:9px;align-items:flex-start;padding:8px 10px;border:1px solid #dbe3ee;border-radius:9px;background:#fff}
.mc-dot{width:10px;height:10px;border-radius:50%;margin-top:4px;flex:0 0 auto}
.mc-dot.ok{background:#16a34a}.mc-dot.new{background:#f59e0b}.mc-dot.miss{background:#dc2626}
.mc-expect b{display:block;font-size:12.5px}
.mc-expect span{color:#5b6678;font-size:11.5px}
.mc-kv{display:grid;grid-template-columns:auto 1fr;gap:5px 12px;font-size:12.5px;margin:0}
.mc-kv dt{color:#5b6678}
.mc-kv dd{margin:0}
.mc-jump-row{display:flex;gap:8px;flex-wrap:wrap}
.mc-jump{font-size:12px;font-weight:750;color:#2563eb;background:#f5f8ff;border:1px solid #c7d7fe;border-radius:8px;padding:5px 9px;cursor:pointer}
/* MISSION CONTROL PHASE 3 (2026-08-20) — translated from mockups/mission-control/mission-control-A.html:67-71 */
.mc-timeline{list-style:none;margin:0;padding:0;border-left:2px solid #e2e8f0;margin-left:6px}
.mc-timeline li{position:relative;padding:0 0 12px 16px;font-size:12.5px;color:#1f2937}
.mc-timeline li::before{content:"";position:absolute;left:-7px;top:4px;width:10px;height:10px;border-radius:50%;background:#cbd5e1;border:2px solid #fff}
.mc-timeline li.done{color:#1f2937}
.mc-timeline li.done::before{background:#334155}
.mc-timeline li:not(.done){color:#7a8598}
/* #558 F/G — the "results not received" line: red until staff press Done */
.mc-timeline li.mc-alert,.mc-timeline li.mc-alert:not(.done){color:#b91c1c;font-weight:600}
.mc-timeline li.mc-alert::before{background:#dc2626}
[data-theme="dark"] .mc-timeline li.mc-alert,[data-theme="dark"] .mc-timeline li.mc-alert:not(.done){color:#f87171}
.mc-timeline small{display:block;color:#8a94a6;margin-top:2px}
.mc-timeline li.mc-empty{color:#7a8598;padding-left:0}
.mc-timeline li.mc-empty::before{display:none}
/* MISSION CONTROL PHASE 4 (2026-08-20) — translated from mockups/mission-control/mission-control-A.html:72-77 */
.mc-arm{border:1px solid #dbe3ee;border-radius:12px;padding:12px;background:#fff;margin-top:12px}
.mc-arm h4{margin:0 0 8px;font-size:12.5px}
.mc-arm .row{display:flex;justify-content:space-between;align-items:center;gap:8px;padding:6px 0;border-top:1px dashed #dbe3ee;font-size:12.5px}
.mc-arm .row:first-of-type{border-top:0}
.mc-arm select{font:inherit;font-size:12px;border:1px solid #dbe3ee;border-radius:7px;padding:4px 7px;background:#fff}
.mc-arm-custom{font:inherit;font-size:12px;border:1px solid #dbe3ee;border-radius:7px;padding:4px 7px;background:#fff;margin:6px 0 0;width:100%}
.mc-status{display:inline-flex;align-items:center;gap:6px;font-weight:750;font-size:11.5px;padding:3px 9px;border-radius:999px;background:#eef2f7;color:#334155}
.mc-arm-fail{margin-top:8px;padding:8px 10px;background:#fde8e8;border:1px solid #f3b9b9;border-radius:8px;color:#b91c1c;font-size:12px}
.mc-arm-actions{display:flex;gap:8px;margin-top:10px}
.mc-arm-actions button{border:1px solid #dbe3ee;background:#fff;border-radius:9px;padding:7px 12px;font-weight:750;font-size:12.5px;cursor:default;color:#17233b}
.mc-arm-actions button.primary{background:#2563eb;border-color:#2563eb;color:#fff}
.mc-arm-actions button:disabled{opacity:.5;cursor:default}

/* #254 PART 1 (David's order, 2026-08-26) — Confirm Manually, same row/button language as
   the arm panel above it (Reuse Law). */
.mc-manual-confirm-row{border-top:1px dashed #dbe3ee;padding:8px 0}
.mc-manual-confirm{display:flex;flex-direction:column;align-items:flex-end;gap:6px}
.mc-manual-confirm-check{display:flex;align-items:center;gap:6px;font-size:11.5px;font-weight:600;color:#334155;cursor:default}
.mc-manual-confirm button{border:1px solid #dbe3ee;background:#fff;border-radius:9px;padding:7px 12px;font-weight:750;font-size:12.5px;cursor:default;color:#17233b}
.mc-manual-confirm button:disabled{opacity:.5;cursor:default}

/* #254 PART 3 — the envelope-click modal. Reuses the .dc-cal-create panel shell. */
.dc-envelope-modal{max-width:560px}
/* #495 — the clock popup: the same panel shell (its dark theme comes with it), small, read-only, one OK */
.dc-clock-popup{max-width:430px}
.dc-clock-lines p{margin:0 0 10px;font-size:14px;line-height:1.55}
.dc-clock-lines p:last-child{margin-bottom:0}
.dc-clock-popup .dc-clock-foot{display:flex;justify-content:flex-end;margin-top:14px;background:transparent;border:0;box-shadow:none;padding:0;position:static}   /* the shared panel footer is white — dark mode showed a white band (live proof, 2026-10-01) */
.dc-clock-foot .primary{min-width:84px;cursor:default}
.dc-cal-clock[data-clock-open]{cursor:default}
.dc-cal-clock[data-clock-open]:focus-visible{outline:2px solid #1A73E8;outline-offset:2px;border-radius:50%}
.dc-envelope-gmail{display:inline-block;margin:0 0 10px;font-size:12.5px;font-weight:700;color:#2563eb;text-decoration:none}
.dc-envelope-gmail:hover{text-decoration:underline}
.dc-envelope-meta{font-size:12px;color:#5f6368;margin-bottom:4px}
/* #262 — real, viewable attachments (the standing pvt3-pdf icon, not a second glyph). */
.dc-envelope-attachments{display:flex;flex-wrap:wrap;gap:10px;margin:8px 0 12px}
.dc-envelope-attach-fallback{font-size:12px;color:#5f6368}
/* Styled to LOOK like a static screenshot — no scroll-jacking, no interaction, a flat card. */
.dc-envelope-snapshot{border:1px solid #e5e7eb;border-radius:10px;padding:14px;background:#fff;max-height:60vh;overflow:auto}
.dc-envelope-snapshot a{pointer-events:none;color:inherit;text-decoration:none}   /* a frozen record, not a live compose — links in the old body are inert */

/* ── IDEA 6: BECKER'S MOBILE PHONE CALENDAR — CORRECTED 2026-08-23 ──
   David's first build used the wrong model (day-flip + Mission Control on
   tap) and was discarded entirely, including its Mission Control-on-mobile
   media query below — nothing on this page opens that card anymore. The
   corrected model is a plain continuous-scroll glance-ahead agenda
   (mobileAgendaView() in diamond-calendar.js): every day in a fixed 21-day
   window stacks vertically in ONE scrollable list, real visits only
   (office-visit/telehealth/meet-greet — heads-ups/blocks/reminders/outside
   never appear), and tapping a row shows only that visit's note in a small
   sheet, or does nothing if it has none. No card, no editing, no manifest —
   deliberately small scope, per David's own "quick glance-ahead, not a
   working tool." */
.dc-mobile-agenda{max-width:600px;margin:0 auto;padding:8px 10px 24px;color:#14213a}
.dc-agenda-head{display:flex;align-items:baseline;justify-content:space-between;gap:10px;padding:6px 2px 12px;border-bottom:1px solid #e5e7eb;margin-bottom:6px}
.dc-agenda-head strong{font-size:17px;color:#17233b}
.dc-mobile-agenda-scroll{display:flex;flex-direction:column;gap:4px}
.dc-mobile-agenda-scroll section{display:flex;flex-direction:column;gap:6px;margin-bottom:14px}
.dc-agenda-daylabel{font-size:11px;font-weight:800;letter-spacing:.04em;text-transform:uppercase;color:#6b7280;padding:6px 2px 2px}
.dc-mobile-empty{padding:34px 10px;text-align:center;color:#8492a6;font-size:13.5px;background:#f8f9fb;border-radius:12px}
button.dc-agenda-row{display:grid;grid-template-columns:56px 4px 1fr auto;gap:10px;align-items:center;width:100%;border:1px solid #e5e7eb;border-radius:11px;background:#fff;text-align:left;padding:11px 12px;font:inherit;cursor:default}
button.dc-agenda-row i{align-self:stretch;border-radius:3px}
button.dc-agenda-row time{font-size:12.5px;font-weight:750;color:#334155}
.dc-agenda-row-main{display:flex;flex-direction:column;gap:1px;min-width:0}
.dc-agenda-row-main strong{font-size:14.5px;color:#17233b;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.dc-agenda-row-main span{font-size:12px;color:#718097;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.dc-agenda-note-dot{color:#2563eb;font-size:9px}
.dc-mobile-note-backdrop{position:fixed;inset:0;z-index:260;display:grid;place-items:center;background:#12213c75;padding:16px}
.dc-mobile-note-sheet{width:min(420px,94vw);max-height:70vh;overflow:auto;background:#fff;border-radius:14px;box-shadow:0 22px 60px #12213c4d}
.dc-mobile-note-sheet>header{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:14px 16px;border-bottom:1px solid #e5e7eb}
.dc-mobile-note-sheet>header strong{font-size:14.5px;color:#17233b}
.dc-mobile-note-sheet>header button{width:30px;height:30px;border:0;background:#f2f4f7;border-radius:8px;color:#4f5b70;font-size:16px;line-height:1;cursor:pointer}
.dc-mobile-note-sheet>p{padding:14px 16px;margin:0;font-size:13.5px;line-height:1.5;color:#1f2937;white-space:pre-wrap}
/* CONCURRENT-EDIT CONFLICT WARNING (2026-08-24, reliability audit Category 6) —
   law 4.27: stays on screen until dismissed, never auto-vanishes like a toast.
   Law 5.21: no hand cursor anywhere — cursor:default set explicitly on both
   buttons since a bare <button> defaults to the browser's own pointer cursor. */
.dc-cal-conflict-warning{position:fixed;top:16px;left:50%;transform:translateX(-50%);z-index:200;display:flex;align-items:center;gap:14px;max-width:min(640px,92vw);background:#fff4e8;border:1px solid #f4c68e;color:#8b5014;border-radius:10px;padding:12px 16px;box-shadow:0 12px 32px #12213c33;font-size:13px;font-weight:600}
.dc-cal-conflict-warning span{flex:1}
.dc-cal-conflict-warning button{border:1px solid #e0ac5e;border-radius:7px;padding:7px 12px;font-weight:800;font-size:12.5px;cursor:default;background:#fff;color:#8b5014}
.dc-cal-conflict-warning [data-conflict-reload]{background:#8b5014;color:#fff;border-color:#8b5014}
.dc-cal-conflict-warning [data-conflict-dismiss]{padding:7px 10px;font-size:15px;line-height:1}

/* ── CALENDAR HOLD QUEUE, Part 1 (PROMISES #233): the hold block on a held appointment's card ── */
.dc-hold-block{border:1px solid #e0c98a;background:#fff9e8;border-radius:10px;padding:10px 12px;margin:10px 0}
.dc-hold-block .mc-sec{display:flex;align-items:center;gap:8px;margin:0 0 6px}
.dc-hold-state{font-size:10px;font-weight:800;text-transform:uppercase;letter-spacing:.02em;padding:2px 7px;border-radius:999px;background:#fde68a;color:#7c4a03}
.dc-hold-state.solid{background:#dbeafe;color:#1e3a8a}
.dc-hold-reason{margin:0 0 6px;font-size:13px}.dc-hold-reason small{color:#6b7280;font-size:11px}
.dc-hold-notes{list-style:none;margin:0 0 8px;padding:0;max-height:160px;overflow:auto}.dc-hold-notes li{padding:4px 0;border-top:1px solid #f1e4c2;font-size:12px}.dc-hold-notes li:first-child{border-top:0}.dc-hold-notes li small{display:block;color:#7c6a3a;font-size:10px}
.dc-hold-note-form,.dc-hold-place-form{display:flex;gap:6px;align-items:flex-end;flex-wrap:wrap;margin:6px 0}.dc-hold-note-form input,.dc-hold-place-form input,.dc-hold-release-form input{flex:1;min-width:180px;border:1px solid #d6dfeb;border-radius:7px;padding:7px}
.dc-hold-place-form label{display:grid;gap:3px;flex:1}.dc-hold-place-form label span,.dc-hold-release-form label span{font-size:10px;font-weight:800;text-transform:uppercase;color:#77849a}
.dc-hold-block button,.dc-hold-place-form button,.dc-hold-release-form button{border:1px solid #cbd7e6;background:#fff;color:#2f5e9d;border-radius:7px;padding:7px 10px;font-weight:750;font-size:11px;cursor:default}.dc-hold-block button.primary,.dc-hold-place-form button.primary,.dc-hold-release-form button.primary{color:#fff;background:#2f6ee5;border-color:#2f6ee5}
.dc-hold-actions{display:flex;gap:6px;flex-wrap:wrap}

/* ── CALENDAR HOLD QUEUE, Part 2: the header queue between the month label and search ── */
.dc-cal-spacer{position:relative;display:flex;align-items:center;justify-content:center;min-width:0}
.dc-hold-queue{display:flex;align-items:center;gap:6px;flex-wrap:nowrap;max-width:100%;min-width:0}
/* SIZE (David 2026-08-24): 20% smaller than what he saw (which rendered at 15px/30px because `.dc-calendar-shell button{font:inherit}`
   out-specifies a bare class — the same trap the membership bands hit). Qualified under .dc-calendar-shell so THIS rule wins.
   12px / ~24px tall is the standing size for every future queue chip. */
.dc-calendar-shell .dc-hold-chip{display:inline-flex;align-items:center;gap:6px;border:1px solid #e0c98a;background:#fff9e8;color:#5b4304;border-radius:999px;padding:3px 9px;font-size:12px;font-weight:750;line-height:1.2;cursor:default;flex:0 1 auto;min-width:0;max-width:240px;white-space:nowrap;overflow:hidden}
.dc-hold-chip .dc-hold-name{flex:0 0 auto;white-space:nowrap}.dc-hold-chip .dc-hold-why{flex:1 1 auto;min-width:0;color:#8a6d1f;font-weight:600;overflow:hidden;text-overflow:ellipsis}
.dc-hold-dot{width:6px;height:6px;border-radius:50%;background:#d97706;flex:0 0 auto}
.dc-hold-chip.waiting{border-color:#bcd0f5;background:#eef4ff;color:#1e3a8a}.dc-hold-chip.waiting .dc-hold-dot{background:#2f6ee5}.dc-hold-chip.waiting .dc-hold-why{color:#3b5da8}
.dc-hold-chip.blink{border-color:#f59e0b;background:#fff3c4;animation:dcHoldPulse 1.1s ease-in-out infinite}
.dc-hold-chip.blink .dc-hold-dot{background:#dc2626}
@keyframes dcHoldPulse{0%,100%{box-shadow:0 0 0 0 rgba(245,158,11,.75)}50%{box-shadow:0 0 0 6px rgba(245,158,11,0)}}
.dc-hold-chip.open{outline:2px solid #2f6ee5;outline-offset:1px}
.dc-calendar-shell .dc-hold-queue.dense .dc-hold-chip{padding:2px 7px;font-size:10px;max-width:110px}
.dc-hold-more{font-size:10px;font-weight:800;color:#6b7280;padding:2px 6px;border:1px dashed #cbd5e1;border-radius:999px}
.dc-hold-pop{position:absolute;top:calc(100% + 8px);left:50%;transform:translateX(-50%);z-index:40;width:min(420px,92vw);background:#fff;border:1px solid #cdd9e8;border-radius:12px;box-shadow:0 15px 42px #1729423d;padding:12px 14px;text-align:left;color:#17243a}
.dc-hold-pop header{display:flex;align-items:center;gap:8px;margin-bottom:6px}.dc-hold-pop header strong{font-size:14px;flex:1}
.dc-hold-pop-x{border:0;background:#eef2f7;border-radius:50%;width:26px;height:26px;font-size:16px;cursor:default}
.dc-hold-pop .dc-hold-notes{max-height:120px}
.dc-hold-pop button{cursor:default}
.dc-pill-hold{background:#fde68a;color:#7c4a03;font-weight:800}

.dc-hold-nopatient{font-size:11px;color:#8a6d1f;align-self:center}
.dc-hold-block button.primary{color:#fff;background:#2f6ee5;border-color:#2f6ee5}

/* ── HOLD QUEUE Part 4: offered-time reservations on the grid + the offer form ── */
.dc-offer-hold{background:#eceff3!important;color:#4b5563!important;border-left:3px solid #9aa0a6!important;font-style:italic}
.dc-offer-hold strong::before{content:"Reserved · ";font-style:normal;font-weight:800;color:#6b7280}
/* #443 — a HOLD on the face: the muted non-visit family (grey like the reservation), hatched so it never reads as a booked
   visit at month view; the name already carries "Hold — ". Both themes. */
.dc-hold{background:repeating-linear-gradient(135deg,#eef0f3 0 6px,#e2e6ec 6px 12px)!important;color:#374151!important;border-left:3px solid #9aa0a6!important}
.dc-hold .dc-cal-ev-name{font-weight:700}
.dc-cal-daypopover-btn.hold .dc-cal-daypopover-ico{color:#6b7280}
.dc-hold-hint{margin:4px 0 0;font-size:12px;color:#6b7280;line-height:1.35}
.dc-hold-quick .dc-hold-when{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.dc-hold-quick .dc-hold-when label{display:flex;flex-direction:column;gap:4px}
.dc-hold-quick .dc-hold-when input,.dc-hold-quick .dc-hold-when select{font:inherit;padding:8px 10px;border:1px solid #d6dbe3;border-radius:8px;background:#fff}
.dc-hold-card{border:1px dashed #b7bcc6;border-radius:10px;padding:10px 12px;background:repeating-linear-gradient(135deg,#f8f9fb 0 8px,#f1f3f6 8px 16px)}
.dc-hold-card dl{margin:8px 0 0}
[data-theme="dark"] .dc-hold{background:repeating-linear-gradient(135deg,#2a2f3a 0 6px,#232833 6px 12px)!important;color:#e5e7eb!important;border-left-color:#6b7280!important}
[data-theme="dark"] .dc-hold-card{border-color:#4b5563;background:repeating-linear-gradient(135deg,#1f2430 0 8px,#1a1f2a 8px 16px);color:#e5e7eb}
[data-theme="dark"] .dc-hold-card dt,[data-theme="dark"] .dc-hold-card dd,[data-theme="dark"] .dc-hold-card h4{color:#e5e7eb}
[data-theme="dark"] .dc-hold-hint{color:#9ca3af}
[data-theme="dark"] .dc-hold-quick .dc-hold-when input,[data-theme="dark"] .dc-hold-quick .dc-hold-when select{background:#1f2430;border-color:#3b4250;color:#e5e7eb}
.dc-hold-offer{margin:8px 0;padding:8px 10px;border:1px dashed #cbd5e1;border-radius:8px;background:#fff}.dc-hold-offer h4{margin:0 0 4px;font-size:12px}.dc-hold-offer ul{margin:0 0 4px;padding-left:18px;font-size:12px}.dc-hold-offer small{color:#6b7280;font-size:11px}
.dc-hold-offer-form{display:grid;grid-template-columns:1fr 1fr 90px;gap:8px;margin:8px 0;padding:8px 10px;border:1px dashed #cbd5e1;border-radius:8px;background:#fff}.dc-hold-offer-form label{display:grid;gap:3px}.dc-hold-offer-form label span{font-size:10px;font-weight:800;text-transform:uppercase;color:#77849a}.dc-hold-offer-form label.wide,.dc-hold-offer-form small,.dc-hold-offer-form .dc-hold-actions{grid-column:1/-1}.dc-hold-offer-form input{border:1px solid #d6dfeb;border-radius:7px;padding:7px;width:100%;box-sizing:border-box}.dc-hold-offer-form small{color:#6b7280;font-size:11px}

.dc-offer-picker-host{min-height:34px;padding:4px 0}.dc-offer-picker-host .ap-chips{display:flex;flex-wrap:wrap;gap:6px;align-items:center}
.dc-hold-offer-form{grid-template-columns:1fr 110px}

/* #238: a membership bar moved off a weekend carries a small tag naming the real day; the tooltip carries the full date */
.dc-calendar-shell .dc-cal-membership-band .dc-band-actual{display:inline-block;vertical-align:baseline;font-style:normal;font-weight:800;font-size:9px;line-height:1;opacity:.9;margin-left:6px;padding:1px 4px;border-radius:3px;background:rgba(255,255,255,.28)}

/* #316 — renewal bar anatomy: name never truncates; middle shortens first; status tag pinned right with margin */
.dc-calendar-shell .dc-cal-membership-band .dc-band-name{flex:0 0 auto;white-space:nowrap}
.dc-calendar-shell .dc-cal-membership-band .dc-band-mid{flex:1 1 0;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:600;opacity:.95}
.dc-calendar-shell .dc-cal-membership-band .dc-band-tag{flex:0 0 auto;margin-left:auto;line-height:1.2;padding-right:4px;font-size:9.5px;font-weight:800;letter-spacing:.04em;white-space:nowrap;opacity:.95}

/* #319 (David 2026-08-28) — the Today pill: ~5% larger and a translucent tint of the app's primary blue (#1A73E8).
   A see-through tint, not a solid primary button; text stays readable; same pill shape as its neighbours. */
.dc-calendar-shell .dc-cal-pvt2-toolbar .dc-cal-today-pill{height:38px;padding:0 18px;font-size:14.7px;font-weight:600;color:#1656B3;background:rgba(26,115,232,.11);border:1px solid rgba(26,115,232,.38);border-radius:19px}
.dc-calendar-shell .dc-cal-pvt2-toolbar .dc-cal-today-pill:hover{background:rgba(26,115,232,.18);border-color:rgba(26,115,232,.5)}
.dc-calendar-shell .dc-cal-pvt2-toolbar .dc-cal-today-pill:focus-visible{outline:2px solid rgba(26,115,232,.55);outline-offset:2px}

/* #320 — the clock badge (envelope family, far right, never truncated): outline = scheduled, solid = sent & awaiting confirmation */
.dc-cal-clock{width:20px;height:20px;flex:0 0 20px;margin-left:auto;display:block;line-height:0;color:#5b7fb3;cursor:default}
.dc-cal-clock-icon{width:100%;height:100%;display:block}
.dc-cal-clock.is-scheduled .dc-cal-clock-face{fill:#fff}
.dc-cal-clock.is-sent{color:#1A73E8}
.dc-cal-clock.is-sent .dc-cal-clock-face{fill:#1A73E8;stroke:#1A73E8}
.dc-cal-clock.is-sent path{stroke:#fff}
.dc-cal-envelope+.dc-cal-clock{margin-left:4px}
#p3MissionControl.mc-theme-dark .dc-cal-clock.is-scheduled{color:#9db8e6}
#p3MissionControl.mc-theme-dark .dc-cal-clock.is-scheduled .dc-cal-clock-face{fill:#1e2a44}
.mc-timeline li .mc-mini{margin-left:10px;border:1px solid #cfdaea;background:#fff;color:#2b4a78;border-radius:8px;padding:4px 9px;font-size:12px;font-weight:700;cursor:default}
.dc-ss-choices{display:grid;gap:8px;margin:6px 0 4px}
.dc-ss-choices button{text-align:left;border:1px solid #d7dce6;background:#fff;border-radius:10px;padding:10px 12px;font-weight:700;color:#10213d;cursor:default}
.dc-ss-choices button.primary{background:#1A73E8;border-color:#1A73E8;color:#fff}
.dc-ss-choices button small{display:block;font-weight:500;font-size:12px;opacity:.85;margin-top:2px}
/* #343 — the third door on the day-cell picker */
.dc-cal-daypopover-btn.membership .dc-cal-daypopover-ico{color:#0F6E56}
/* #65/#86 A — the fourth day door, Outside Patient: the outside-appointment band colour (#EAB308) on its icon. */
.dc-cal-daypopover-btn.outside .dc-cal-daypopover-ico{color:#CA8A04}

/* #344 — header Weekends switch (default OFF every load, never persisted) + the theme button. Same height/border family as the toolbar buttons. */
.dc-cal-pvt2-toolbar>button.dc-cal-weekends-toggle{display:inline-flex;align-items:center;gap:7px;height:30px;padding:0 10px 0 6px;border:1px solid #d7dce4;border-radius:15px;background:#fff;color:#5f6368;font-size:12.5px;font-weight:600}
.dc-cal-weekends-toggle i{position:relative;display:inline-block;width:26px;height:14px;border-radius:7px;background:#dadce0;transition:background .15s}
.dc-cal-weekends-toggle i::after{content:"";position:absolute;top:2px;left:2px;width:10px;height:10px;border-radius:50%;background:#fff;transition:left .15s}
.dc-cal-pvt2-toolbar>button.dc-cal-weekends-toggle.on{color:#1656B3;border-color:rgba(26,115,232,.38)}
.dc-cal-weekends-toggle.on i{background:#1a73e8}
.dc-cal-weekends-toggle.on i::after{left:14px}
.dc-cal-pvt2-toolbar>button.dc-cal-theme-btn{font-size:15px;line-height:1}
.dc-cal-buildline{margin:8px 0 0;font-size:11px;color:#80868b;font-variant-numeric:tabular-nums}

/* ── #586 DR. BECKER'S PHONE AGENDA — a full-screen layer with its own header (the desktop banner never shows under it).
   Google Calendar's phone agenda: day headers, one row per visit, today highlighted. No hand cursor (law 5.21). ── */
html.pa-active, html.pa-active body{overflow:hidden;height:100%}
.pa-host{position:fixed;inset:0;z-index:9000;display:flex;flex-direction:column;background:#f6f8fa;color:#14213a;font-family:inherit;cursor:default}
.pa-host[hidden]{display:none}
.pa-top{flex:0 0 auto;display:flex;align-items:center;gap:10px;padding:calc(10px + env(safe-area-inset-top)) 16px 10px;background:#3d7d8f;color:#fff;box-shadow:0 2px 6px rgba(0,0,0,.15)}
.pa-top strong{font-size:19px;font-weight:700;flex:1 1 auto}
.pa-mark{font-size:10px;opacity:.75;font-variant-numeric:tabular-nums}
.pa-today{border:1.5px solid rgba(255,255,255,.85);background:transparent;color:#fff;border-radius:999px;padding:7px 16px;font:inherit;font-size:15px;font-weight:700;cursor:default}
.pa-list{flex:1 1 auto;overflow-y:auto;-webkit-overflow-scrolling:touch;overscroll-behavior:contain;padding:0 12px calc(24px + env(safe-area-inset-bottom))}
.pa-more{text-align:center;color:#8492a6;font-size:13px;padding:14px 0}
.pa-day{margin:0 0 6px}
.pa-dayhead{position:sticky;top:0;z-index:1;display:flex;align-items:center;gap:10px;padding:12px 4px 6px;background:#f6f8fa;font-size:13px;font-weight:800;letter-spacing:.03em;text-transform:uppercase;color:#5f6b7a}
.pa-day.is-past .pa-dayhead{color:#9aa4b1}
.pa-day.is-today .pa-dayhead{color:#1a73e8}
.pa-dayhead b{background:#1a73e8;color:#fff;border-radius:999px;padding:2px 10px;font-size:11px;letter-spacing:.04em}
.pa-day.is-today{background:#eaf2fd;border-radius:14px;padding:0 6px 6px;margin:0 -6px 6px}
.pa-day.is-today .pa-dayhead{background:#eaf2fd;border-radius:14px 14px 0 0}
.pa-row{display:grid;grid-template-columns:62px 28px 1fr auto;gap:10px;align-items:center;width:100%;min-height:64px;margin:0 0 8px;padding:10px 12px;border:1px solid #e3e7ec;border-radius:12px;background:#fff;text-align:left;font:inherit;color:inherit;cursor:default}
.pa-day.is-past .pa-row{opacity:.72}
.pa-row time{font-size:15px;font-weight:700;color:#334155;font-variant-numeric:tabular-nums}
.pa-ic{display:inline-flex;width:26px;height:26px}
.pa-ic svg{width:26px;height:26px}
.pa-main{display:flex;flex-direction:column;gap:2px;min-width:0}
.pa-main strong{font-size:17px;font-weight:650;color:#17233b;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pa-main span{font-size:14px;color:#66758a;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pa-check{display:inline-grid;place-items:center;width:26px;height:26px;border-radius:50%;background:#1e8e3e;color:#fff;font-size:15px;font-weight:800}
.pa-empty{padding:12px 6px;color:#8492a6;font-size:15px}
.pa-panelhost:empty{display:none}
.pa-panel{position:fixed;inset:0;z-index:9001;display:flex;flex-direction:column;background:#fff}
.pa-panelhead{flex:0 0 auto;padding:calc(10px + env(safe-area-inset-top)) 12px 8px;border-bottom:1px solid #e3e7ec}
.pa-back{border:0;background:transparent;color:#1a73e8;font:inherit;font-size:17px;font-weight:600;padding:8px 4px;cursor:default}
.pa-panelbody{flex:1 1 auto;overflow-y:auto;padding:16px 18px}
.pa-panelbody h2{margin:0 0 6px;font-size:24px;font-weight:700;color:#17233b}
.pa-when{margin:0 0 6px;font-size:17px;color:#334155}
.pa-type{display:flex;align-items:center;gap:8px;margin:0 0 10px;font-size:16px;color:#4b5563}
.pa-conf{display:inline-block;margin:0 0 16px;padding:5px 12px;border-radius:999px;font-size:15px;font-weight:700}
.pa-conf.is-yes{background:#e6f4ea;color:#1e7b34}
.pa-conf.is-no{background:#f1f3f4;color:#5f6368}
.pa-block{border:1px solid #e3e7ec;border-radius:12px;padding:12px 14px;margin:0 0 12px}
.pa-block h3{margin:0 0 6px;font-size:13px;font-weight:800;letter-spacing:.03em;text-transform:uppercase;color:#5f6b7a}
.pa-block p{margin:0 0 6px;font-size:17px;line-height:1.45;color:#1f2937;white-space:pre-wrap}
.pa-muted{color:#8492a6 !important}
.pa-error{color:#b3261e;font-size:15px;padding:8px 0}
.pa-panelfoot{flex:0 0 auto;display:flex;flex-direction:column;gap:10px;padding:12px 18px calc(14px + env(safe-area-inset-bottom));border-top:1px solid #e3e7ec;background:#fff}
.pa-primary{width:100%;padding:15px;border:0;border-radius:12px;background:#3d7d8f;color:#fff;font:inherit;font-size:18px;font-weight:700;cursor:default}
.pa-primary[disabled]{opacity:.55}
.pa-secondary{width:100%;padding:13px;border:1.5px solid #c9d1da;border-radius:12px;background:#fff;color:#334155;font:inherit;font-size:17px;font-weight:600;cursor:default}
.pa-backpill{position:fixed;left:12px;bottom:calc(14px + env(safe-area-inset-bottom));z-index:8999;padding:11px 18px;border:0;border-radius:999px;background:#3d7d8f;color:#fff;font:inherit;font-size:16px;font-weight:700;box-shadow:0 4px 12px rgba(0,0,0,.25);cursor:default}
.pa-backpill[hidden]{display:none}
/* #588 — the centred phone-width column ONLY on a real computer screen (.pa-wide, set by agendaScale()); a phone in "Desktop site"
   mode is scaled up to fill its screen instead (.pa-scaled) */
.pa-host.pa-wide .pa-list{padding-left:max(12px,calc(50% - 300px));padding-right:max(12px,calc(50% - 300px))}
.pa-host.pa-wide .pa-top{padding-left:max(16px,calc(50% - 300px));padding-right:max(16px,calc(50% - 300px))}
.pa-host.pa-wide .pa-panel{left:max(0px,calc(50% - 320px));right:max(0px,calc(50% - 320px));box-shadow:0 0 0 100vmax rgba(18,33,60,.35)}
.pa-host.pa-scaled .pa-panel{position:absolute}
/* #588 — readable like Google Calendar's phone app: body ≥17 px, names 18 px bold, times 16 px, rows ≥56 px, icons 22 px; a big Today */
.pa-top strong{font-size:22px;font-weight:700}
.pa-today{font-size:17px;padding:10px 20px;min-height:44px}
.pa-mark{font-size:9px;opacity:.6}
.pa-dayhead{font-size:15px}
.pa-row{grid-template-columns:72px 24px 1fr auto;min-height:64px}
.pa-row time{font-size:16px;font-weight:700}
.pa-ic,.pa-ic svg{width:22px;height:22px}
.pa-main strong{font-size:18px;font-weight:700}
.pa-main span{font-size:17px}
.pa-empty{font-size:17px}
.pa-more{font-size:15px}
.pa-when,.pa-type{font-size:18px}
.pa-block p{font-size:18px}

/* #743 A / #744 — "Text an appointment reminder" (new appointment, Reschedule, Offer Times): one plain line + THE Contact-patient When control */
.dc-remind{display:flex;flex-direction:column;gap:10px;margin:10px 0 4px;padding:12px 14px;border:1px solid #d6e3e7;border-radius:10px;background:#f5fafb}
.dc-remind-check{display:flex;align-items:center;gap:9px;font-weight:600;font-size:14px;color:#1f2933;line-height:1.3}
.dc-remind-check input{width:17px;height:17px;margin:0;flex:none;accent-color:#2a8fa3}
.dc-remind-sum{font-weight:500;color:#3c4a52}
.dc-remind-body{display:grid;gap:6px;padding-left:26px}
.dc-remind-lab{font-size:13px;font-weight:600;color:#1f2933}
:root[data-theme="dark"] .dc-remind{background:#132235;border-color:#24344d}:root[data-theme="dark"] .dc-remind-check,:root[data-theme="dark"] .dc-remind-lab{color:#e8eef7}:root[data-theme="dark"] .dc-remind-sum{color:#b8c4d0}
/* #744 — inside the booking form the generic ".dc-cal-create label / label>span / input" rules (grid labels, small capitals, full-width
   inputs) must not reach the reminder block: it reads exactly like the Contact-patient "When" control */
.dc-cal-create .dc-remind label.dc-remind-check,.dc-rs .dc-remind label.dc-remind-check,.dc-remind label.dc-remind-check{display:flex;align-items:center;gap:9px;margin:0;font-size:14px;font-weight:600;text-transform:none;letter-spacing:normal;color:#1f2933}
.dc-cal-create .dc-remind label.dc-remind-check>span,.dc-remind label.dc-remind-check>span{font-size:14px;font-weight:600;text-transform:none;letter-spacing:normal;color:inherit}
.dc-cal-create .dc-remind .dc-remind-sum,.dc-remind .dc-remind-sum{font-size:14px;font-weight:500;text-transform:none;letter-spacing:normal;color:#3c4a52}
.dc-cal-create .dc-remind input[type="checkbox"],.dc-cal-create .dc-remind input[type="radio"]{width:auto;flex:0 0 auto;margin:0;padding:0}
.dc-cal-create .dc-remind .p3-sw-modes label{display:inline-flex;align-items:center;gap:6px;margin:0;white-space:nowrap;font-size:14px;text-transform:none;letter-spacing:normal}
.dc-cal-create .dc-remind .p3-sw-modes label>span{font-size:14px;text-transform:none}
:root[data-theme="dark"] .dc-remind label.dc-remind-check{color:#e8eef7}:root[data-theme="dark"] .dc-remind .dc-remind-sum{color:#b8c4d0}
