/* Calendar page v2 (ui/calendar). Same tokens, type scale and density as the equities and crypto tables, scoped to
   .cal and .cal-sheet so the rest of the site is unaffected; the theme follows html[data-theme].
   ?calendar=classic keeps the classic page. */
body.calendar-v2 #calendar-view > :is(.market-calendar-summary, .market-calendar-workspace){display:none!important}
body.calendar-v2 main > .market-calendar-view{padding-bottom:40px}

.cal, .cal-sheet{
  --e-bg: oklch(0.155 0.014 258); --e-bg-2: oklch(0.19 0.016 258); --e-bg-3: oklch(0.235 0.018 258);
  --e-line: oklch(0.9 0.03 258 / 0.09); --e-line-2: oklch(0.9 0.03 258 / 0.17);
  --e-fg: oklch(0.96 0.008 258); --e-fg-2: oklch(0.77 0.018 258); --e-fg-3: oklch(0.6 0.02 258);
  --e-accent: oklch(0.71 0.15 263); --e-on-accent: oklch(0.2 0.04 263);
  --e-up: oklch(0.83 0.22 152); --e-down: oklch(0.71 0.22 22); --e-warn: oklch(0.84 0.15 85);
  --e-shadow: oklch(0 0 0 / 0.5);
  --e-ui: "Instrument Sans", "Manrope", ui-sans-serif, system-ui, -apple-system, "Segoe UI", sans-serif;
  --e-num: "Martian Mono", "DM Mono", ui-monospace, "SF Mono", Menlo, Consolas, monospace;
  --cal-l: 0.78; --cal-c: 0.13;
  --cal-bg: var(--paper, var(--e-bg)); --cal-tools-h: var(--cal-sticky-h, 62px);
}
html[data-theme="light"] :is(.cal, .cal-sheet){
  --e-bg: oklch(0.985 0.005 258); --e-bg-2: oklch(0.962 0.008 258); --e-bg-3: oklch(0.93 0.011 258);
  --e-line: oklch(0.3 0.03 258 / 0.1); --e-line-2: oklch(0.3 0.03 258 / 0.19);
  --e-fg: oklch(0.2 0.02 258); --e-fg-2: oklch(0.42 0.02 258); --e-fg-3: oklch(0.54 0.02 258);
  --e-accent: oklch(0.49 0.22 264); --e-on-accent: oklch(0.99 0.01 264);
  --e-up: oklch(0.55 0.17 150); --e-down: oklch(0.55 0.21 25); --e-warn: oklch(0.58 0.13 75);
  --e-shadow: oklch(0.2 0.02 258 / 0.2);
  --cal-l: 0.52; --cal-c: 0.14;
}
.cal{position:relative;color:var(--e-fg);font-family:var(--e-ui);font-size:15px;line-height:normal;font-variant-numeric:tabular-nums;-webkit-font-smoothing:antialiased}
.cal *, .cal-sheet *{box-sizing:border-box}
.cal button, .cal-sheet button{font:inherit;color:inherit;min-height:0;min-width:0}
.cal-sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}

/* Event types: one hue each, used by badges, month-grid bars and the phone row edge */
.cal, .cal-sheet{--ty: var(--e-fg-3)}
.t-macro{--ty:oklch(var(--cal-l) var(--cal-c) 250)} .t-policy{--ty:oklch(var(--cal-l) var(--cal-c) 300)}
.t-tech{--ty:oklch(var(--cal-l) var(--cal-c) 215)} .t-ai{--ty:oklch(var(--cal-l) var(--cal-c) 170)}
.t-quantum{--ty:oklch(var(--cal-l) var(--cal-c) 330)} .t-space{--ty:oklch(var(--cal-l) var(--cal-c) 275)}
.t-crypto{--ty:oklch(var(--cal-l) var(--cal-c) 85)} .t-civic{--ty:oklch(var(--cal-l) var(--cal-c) 20)}
.t-climate{--ty:oklch(var(--cal-l) var(--cal-c) 140)} .t-seasonal{--ty:oklch(var(--cal-l) 0.05 110)}
.t-ipo{--ty:oklch(var(--cal-l) var(--cal-c) 355)}
.t-earnings{--ty:oklch(var(--cal-l) var(--cal-c) 100)} .t-rates{--ty:oklch(var(--cal-l) var(--cal-c) 195)}
.t-derivatives{--ty:oklch(var(--cal-l) 0.09 285)}
.cal-ty{display:inline-grid;place-items:center;min-width:3.4rem;height:1.3rem;padding:0 6px;border-radius:6px;font:600 .6rem/1 var(--e-num);font-stretch:82%;letter-spacing:.06em;text-transform:uppercase;white-space:nowrap;color:var(--ty);background:color-mix(in oklch,var(--ty) 14%,transparent);box-shadow:inset 0 0 0 1px color-mix(in oklch,var(--ty) 30%,transparent)}

/* Calendar pulse */
.cal-pulse{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;padding-bottom:14px;border-bottom:1px solid var(--e-line)}
.cal-tile{min-width:0;padding:9px 14px 10px;border:1px solid var(--e-line);border-radius:14px;background:var(--e-bg-2);text-align:left}
.cal .cal-tile-btn{display:block;width:100%;cursor:pointer;transition:border-color .15s}
.cal .cal-tile-btn:hover:not(:disabled){border-color:var(--e-line-2)}
.cal .cal-tile-btn:hover:not(:disabled) .cal-v{color:var(--e-accent)}
.cal .cal-tile-btn:disabled{cursor:default}
.cal .cal-tile-btn:focus-visible{outline:2px solid var(--e-accent);outline-offset:2px}
.cal-k{display:block;font:500 .58rem/1.2 var(--e-num);letter-spacing:.1em;text-transform:uppercase;color:var(--e-fg-3);white-space:nowrap}
.cal-v{display:flex;align-items:center;gap:8px;margin-top:8px;font:500 1.2rem/1.1 var(--e-num);font-stretch:82%;letter-spacing:-.02em;color:var(--e-fg);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transition:color .15s}
.cal-v em{font:500 .66rem/1 var(--e-num);font-style:normal;font-stretch:82%;letter-spacing:0;color:var(--e-fg-3);align-self:flex-end;padding-bottom:2px}
.cal-s{display:block;margin-top:7px;font:500 .66rem/1.2 var(--e-num);font-stretch:82%;color:var(--e-fg-3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cal-sep{margin:0 .35em;color:var(--e-fg-3)}
@media (max-width:1279px){.cal-wide{display:none}}
.cal-dot{flex:0 0 auto;width:8px;height:8px;border-radius:50%;background:var(--e-fg-3)}
.cal-dot.open{background:var(--e-up);box-shadow:0 0 8px var(--e-up);animation:calPulse 2s ease-in-out infinite}
.cal-dot.pre, .cal-dot.after{background:var(--e-warn)}
@keyframes calPulse{50%{opacity:.45}}

/* Toolbar: stays in reach while the agenda scrolls */
.cal-tools{position:sticky;top:0;z-index:20;display:flex;flex-wrap:wrap;align-items:center;gap:8px;padding-block:11px;background:var(--cal-bg);box-shadow:0 1px 0 var(--e-line)}
.cal-tools:focus{outline:0}
.cal-nav, .cal-filters{display:flex;align-items:center;gap:6px;flex:0 0 auto}
.cal .cal-btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;height:40px;padding:0 12px;border:1px solid var(--e-line);border-radius:12px;background:var(--e-bg-2);color:var(--e-fg);font:550 .8rem/1 var(--e-ui);white-space:nowrap;cursor:pointer}
.cal .cal-btn:hover:not(:disabled){border-color:var(--e-line-2)}
.cal .cal-btn:disabled{opacity:.4;cursor:default}
.cal .cal-btn[aria-pressed="true"]{border-color:color-mix(in oklch,var(--e-accent) 55%,transparent);color:var(--e-accent)}
.cal .cal-btn span{font-size:.62rem;color:var(--e-fg-3)}
.cal .cal-btn:focus-visible, .cal-seg button:focus-visible, .cal-menu button:focus-visible{outline:2px solid var(--e-accent);outline-offset:2px}
.cal .cal-icon{width:40px;padding:0;font-size:1.15rem;line-height:1}
.cal .cal-month{min-width:156px;justify-content:space-between;font-weight:650}
.cal-search{flex:1 1 200px;max-width:300px;min-width:150px}
.cal-search input{width:100%;height:40px;padding:0 12px;border:1px solid var(--e-line);border-radius:12px;background:var(--e-bg-2);color:var(--e-fg);font:500 .8rem var(--e-ui);outline:0}
.cal-search input::placeholder{color:var(--e-fg-3)}
.cal-search input:focus-visible{border-color:color-mix(in oklch,var(--e-accent) 55%,transparent);outline:2px solid var(--e-accent);outline-offset:2px}
.cal-seg{display:inline-flex;height:40px;border-radius:12px;background:var(--e-bg-2);box-shadow:inset 0 0 0 1px var(--e-line)}
.cal .cal-seg button{height:40px;padding:0 11px;border:0;border-radius:12px;background:none;color:var(--e-fg-3);font:550 .76rem/1 var(--e-ui);cursor:pointer}
.cal .cal-seg button[aria-pressed="true"]{background:var(--e-bg-3);color:var(--e-fg);box-shadow:inset 0 0 0 1px var(--e-line-2)}
.cal .cal-seg button:disabled{opacity:.4;cursor:default}
.cal-meta{display:grid;justify-items:end;gap:5px;margin-left:auto;padding-left:4px;font:500 .62rem/1 var(--e-num);font-stretch:82%;color:var(--e-fg-3);white-space:nowrap}
.cal-fresh::before{content:"";display:inline-block;width:6px;height:6px;margin-right:6px;border-radius:50%;background:var(--e-up);vertical-align:1px}
.cal-fresh.stale{color:var(--e-accent)}
.cal-fresh.stale::before{background:var(--e-accent)}

/* Menus */
.cal-menu-wrap{position:relative}
.cal-menu{position:absolute;z-index:30;top:calc(100% + 6px);left:0;min-width:220px;max-height:min(520px,calc(100dvh - 200px));overflow-y:auto;overscroll-behavior:contain;padding:6px;border:1px solid var(--e-line-2);border-radius:12px;background:var(--e-bg-2);box-shadow:0 20px 50px -20px var(--e-shadow)}
.cal-menu[hidden]{display:none}
.cal-monthmenu{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:3px;width:330px}
.cal .cal-monthmenu button{display:grid;grid-template-columns:1fr auto;grid-template-rows:auto auto;align-items:center;gap:3px 6px;padding:8px 9px;border:0;border-radius:9px;background:none;text-align:left;cursor:pointer}
.cal .cal-monthmenu button:hover{background:var(--e-bg-3)}
.cal .cal-monthmenu button.on{background:var(--e-bg-3);box-shadow:inset 0 0 0 1px color-mix(in oklch,var(--e-accent) 55%,transparent)}
.cal-monthmenu span{font:600 .82rem/1 var(--e-ui)}
.cal-monthmenu small{font:500 .62rem var(--e-num);color:var(--e-fg-3)}
.cal-monthmenu em{grid-column:1;font:500 .62rem/1 var(--e-num);font-style:normal;color:var(--e-fg-3)}
.cal-monthmenu b{grid-row:1;grid-column:2;min-width:18px;padding:3px 4px;border-radius:5px;font:600 .58rem/1 var(--e-num);text-align:center;color:var(--e-on-accent);background:var(--e-accent)}
.cal-typemenu label{display:flex;align-items:center;gap:10px;min-height:38px;padding:0 8px;border-radius:8px;cursor:pointer;font:500 .8rem var(--e-ui)}
.cal-typemenu label:hover{background:var(--e-bg-3)}
.cal-typemenu input{accent-color:var(--e-accent)}
.cal-typemenu em{margin-left:auto;font:500 .66rem var(--e-num);font-style:normal;color:var(--e-fg-3)}
.cal .cal-menu-reset{width:100%;margin-top:4px;padding:9px;border:1px solid var(--e-line);border-radius:9px;background:var(--e-bg-3);font:550 .76rem var(--e-ui);cursor:pointer}
.cal .cal-menu-reset:disabled{opacity:.45;cursor:default}

/* Agenda with the month at a glance beside it */
.cal-split{display:grid;grid-template-columns:304px minmax(0,1fr);gap:28px;align-items:start;padding-top:14px}
.cal-side{position:sticky;top:calc(var(--cal-tools-h) + 14px)}
.cal-mini{display:grid;grid-template-columns:repeat(7,minmax(40px,1fr));gap:3px}
.cal-mini-wd{padding-bottom:5px;font:500 .56rem/1 var(--e-num);letter-spacing:.1em;text-align:center;color:var(--e-fg-3)}
.cal .cal-mini-day{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:space-between;height:44px;padding:5px 0 4px;border:0;border-radius:9px;background:var(--e-bg-2);cursor:pointer}
.cal .cal-mini-day.blank{background:none}
.cal .cal-mini-day.we{background:color-mix(in oklch,var(--e-bg-2) 45%,transparent)}
.cal .cal-mini-day:disabled{cursor:default}
.cal .cal-mini-day:hover:not(:disabled){box-shadow:inset 0 0 0 1px var(--e-line-2)}
.cal .cal-mini-day:focus-visible{outline:2px solid var(--e-accent);outline-offset:1px}
.cal-mini-day .n{display:block;font:500 .66rem/1 var(--e-num);color:var(--e-fg-2)}
.cal-mini-day.we .n{color:var(--e-fg-3)}
.cal-mini-day .c, .cal-mini-day .x{min-width:17px;padding:3px 4px;border-radius:5px;font:600 .58rem/1 var(--e-num);text-align:center}
.cal-mini-day.lvl-high .c{background:var(--e-accent);color:var(--e-on-accent)}
.cal-mini-day.lvl-medium .c{background:var(--e-bg-3);color:var(--e-fg);box-shadow:inset 0 0 0 1px var(--e-line-2)}
.cal-mini-day.lvl-low .c{color:var(--e-fg-3);box-shadow:inset 0 0 0 1px var(--e-line)}
.cal-mini-day .x{font-size:.5rem;letter-spacing:.06em;color:var(--e-fg-3)}
.cal .cal-mini-day.off{background:repeating-linear-gradient(135deg,var(--e-bg-2) 0 5px,transparent 5px 9px)}
.cal-mini-day .e, .cal-mini-key .e{position:absolute;top:5px;right:5px;width:5px;height:5px;border-radius:50%;background:var(--e-warn)}
/* Today: accent ring and tint everywhere it appears; a picked day gets a neutral ring so the two never look alike. */
.cal .cal-mini-day.sel{background:var(--e-bg-3);box-shadow:inset 0 0 0 1.5px var(--e-fg-2)}
.cal .cal-mini-day.today{background:color-mix(in oklch,var(--e-accent) 16%,var(--e-bg-2));box-shadow:inset 0 0 0 2px var(--e-accent)}
.cal-mini-day.today .n{color:var(--e-accent);font-weight:700}
.cal-mini-day.past:not(.sel):not(.today){opacity:.5}
.cal .cal-mini-toggle{display:none}
.cal-mini-foot{display:grid;grid-template-columns:repeat(3,1fr);margin:14px 0 0;border-top:1px solid var(--e-line);border-bottom:1px solid var(--e-line)}
.cal-mini-foot>div{padding:9px 0}
.cal-mini-foot dt{font:500 .54rem/1.2 var(--e-num);letter-spacing:.1em;text-transform:uppercase;color:var(--e-fg-3)}
.cal-mini-foot dd{margin:5px 0 0;font:500 .95rem/1 var(--e-num);font-stretch:82%}
.cal-mini-key{display:flex;flex-wrap:wrap;gap:12px;margin:10px 0 0;font:500 .6rem/1 var(--e-num);font-stretch:82%;color:var(--e-fg-3)}
.cal-mini-key span{position:relative;display:inline-flex;align-items:center;gap:5px}
.cal-mini-key .k{width:9px;height:9px;border-radius:3px}
.cal-mini-key .k.high{background:var(--e-accent)} .cal-mini-key .k.medium{background:var(--e-bg-3);box-shadow:inset 0 0 0 1px var(--e-line-2)} .cal-mini-key .k.low{box-shadow:inset 0 0 0 1px var(--e-line-2)}
.cal-mini-key .e{position:static}

.cal-agenda{min-width:0}
.cal-day{scroll-margin-top:calc(var(--cal-tools-h) + 4px)}
.cal-dayhead{position:sticky;top:var(--cal-tools-h);z-index:5;display:flex;align-items:center;gap:8px;height:38px;padding:0 8px;background:var(--cal-bg);box-shadow:inset 0 -1px 0 var(--e-line)}
.cal-dayhead h3{margin:0;font:600 .66rem/1 var(--e-num);letter-spacing:.1em;text-transform:uppercase;color:var(--e-fg-2)}
.cal-dayhead h3 small{margin-left:.5em;font-size:inherit;font-weight:500;color:var(--e-fg-3)}
.cal-day.past .cal-dayhead h3{color:var(--e-fg-3)}
.cal-day.sel .cal-dayhead h3{color:var(--e-fg)}
.cal-day.today{background:color-mix(in oklch,var(--e-accent) 5%,transparent)}
.cal-day.today .cal-dayhead{background:color-mix(in oklch,var(--e-accent) 11%,var(--cal-bg));box-shadow:inset 0 -1px 0 color-mix(in oklch,var(--e-accent) 35%,transparent)}
.cal-day.today .cal-dayhead h3{color:var(--e-accent)}
.cal-day.today .cal-row{border-bottom-color:color-mix(in oklch,var(--e-accent) 14%,var(--e-line))}
.cal-row.done{opacity:.5}
.cal-row.done:hover{opacity:.85}
.cal-now{display:flex;align-items:center;gap:8px;height:22px;padding:0 8px 0 11px}
.cal-now::after{content:"";flex:1;height:2px;border-radius:1px;background:var(--e-accent)}
.cal-now span{padding:3px 6px;border-radius:5px;font:600 .56rem/1 var(--e-num);letter-spacing:.06em;text-transform:uppercase;color:var(--e-on-accent);background:var(--e-accent)}
.cal-day-empty{margin:0;padding:14px 11px;font:500 .78rem var(--e-ui);color:var(--e-fg-3)}
.cal-rel{padding:3px 6px;border-radius:5px;font:600 .56rem/1 var(--e-num);letter-spacing:.06em;text-transform:uppercase;color:var(--e-fg-2);background:var(--e-bg-3)}
.cal-rel.now{color:var(--e-on-accent);background:var(--e-accent)}
.cal-sess{padding:3px 6px;border-radius:5px;font:500 .58rem/1 var(--e-num);font-stretch:82%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cal-sess.off{color:var(--e-down);background:color-mix(in oklch,var(--e-down) 13%,transparent)}
.cal-sess.early{color:var(--e-warn);background:color-mix(in oklch,var(--e-warn) 13%,transparent)}
.cal-daycount{margin-left:auto;font:500 .6rem/1 var(--e-num);color:var(--e-fg-3)}

.cal-row{position:relative;display:grid;grid-template-columns:58px 74px minmax(0,1fr) auto 26px 30px;align-items:center;column-gap:12px;height:58px;padding:0 8px;border-bottom:1px solid var(--e-line);cursor:pointer;transition:background .12s}
.cal-row:hover, .cal-row.open{background:var(--e-bg-2)}
/* The row's button covers it; only the source link is raised above it. */
.cal .cal-hit{position:absolute;inset:0;width:100%;height:100%;padding:0;border:0;background:none;cursor:pointer;z-index:1}
.cal .cal-hit:focus-visible{outline:2px solid var(--e-accent)!important;outline-offset:-2px}
.cal-row>:not(.cal-hit){pointer-events:none}
.cal-row>a.cal-src{position:relative;z-index:2;pointer-events:auto}
.cal-time{font:500 .82rem/1 var(--e-num);font-stretch:82%;color:var(--e-fg)}
.cal-time.allday{font-size:.58rem;letter-spacing:.08em;text-transform:uppercase;color:var(--e-fg-3)}
.cal-time small{display:block;margin-top:3px;font-size:.52rem;color:var(--e-fg-3)}
.cal-main{display:grid;gap:4px;min-width:0}
.cal-title{display:block;min-width:0;font:550 .9rem/1.2 var(--e-ui);color:var(--e-fg-2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.imp-high .cal-title{font-weight:650;color:var(--e-fg)}
.imp-low .cal-title{font-weight:500;color:var(--e-fg-3)}
.cal-sub{font:500 .7rem/1.2 var(--e-ui);word-spacing:.12em;color:var(--e-fg-3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cal-status b, .cal-chip{display:inline-block;padding:4px 6px;border-radius:6px;font:600 .56rem/1 var(--e-num);letter-spacing:.06em;text-transform:uppercase;white-space:nowrap;color:var(--e-fg-2);background:var(--e-bg-3)}
.st-confirmed{color:var(--e-up)!important;background:color-mix(in oklch,var(--e-up) 12%,transparent)!important}
.st-filed{color:oklch(var(--cal-l) var(--cal-c) 250)!important;background:color-mix(in oklch,oklch(var(--cal-l) var(--cal-c) 250) 13%,transparent)!important}
.st-postponed{color:var(--e-down)!important;background:color-mix(in oklch,var(--e-down) 13%,transparent)!important}
.st-expected, .st-tentative{color:var(--e-warn)!important;background:color-mix(in oklch,var(--e-warn) 12%,transparent)!important}
.st-reported, .st-legacy, .st-reminder{color:var(--e-fg-3)!important}
.st-reminder{background:none!important;box-shadow:inset 0 0 0 1px var(--e-line-2)}
/* Reminders (watch windows, recesses, seasonal notes) stay visible but quiet. */
.cal-row.reminder .cal-title{font-weight:500;color:var(--e-fg-3)}
.cal-row.reminder .cal-ty{opacity:.6}
.cal-imp{display:inline-flex;align-items:flex-end;gap:2px;height:12px}
.cal-imp i{display:block;width:3px;border-radius:1px;background:var(--e-line-2)}
.cal-imp i:nth-child(1){height:5px} .cal-imp i:nth-child(2){height:8px} .cal-imp i:nth-child(3){height:12px}
.imp-low .cal-imp i:nth-child(1), .cal-imp.imp-low i:nth-child(1){background:var(--e-fg-3)}
.imp-medium .cal-imp i:nth-child(-n+2), .cal-imp.imp-medium i:nth-child(-n+2){background:var(--e-fg-2)}
.imp-high .cal-imp i, .cal-imp.imp-high i{background:var(--e-accent)}
.cal .cal-src{display:grid;place-items:center;width:30px;height:30px;border-radius:8px;color:var(--e-fg-3);text-decoration:none;font-size:.9rem}
.cal a.cal-src:hover{color:var(--e-accent);background:var(--e-bg-3)}
.cal a.cal-src:focus-visible{outline:2px solid var(--e-accent);outline-offset:1px}
.cal .cal-earlier{display:flex;align-items:center;gap:10px;width:100%;height:44px;margin-bottom:6px;padding:0 12px;border:1px dashed var(--e-line-2);border-radius:12px;background:none;cursor:pointer;text-align:left}
.cal-earlier span{font:600 .62rem/1 var(--e-num);letter-spacing:.1em;text-transform:uppercase;color:var(--e-fg-2)}
.cal-earlier em{font:500 .66rem/1 var(--e-num);font-style:normal;color:var(--e-fg-3)}
.cal-earlier b{margin-left:auto;font:600 .74rem var(--e-ui);color:var(--e-accent)}
.cal .cal-earlier:hover{border-color:var(--e-fg-3)}
.cal-results{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:0 8px 10px;font:500 .72rem var(--e-num);font-stretch:82%;color:var(--e-fg-2)}
.cal-empty{display:grid;justify-items:start;gap:10px;padding:28px 8px;color:var(--e-fg-2)}
.cal-empty strong{font:600 .95rem var(--e-ui);color:var(--e-fg)}
.cal-empty p{margin:0;font-size:.84rem}
.cal-skel{background:linear-gradient(90deg,transparent,var(--e-bg-2),transparent) 0 0/200% 100%;animation:calSkel 1.4s linear infinite}
@keyframes calSkel{to{background-position:-200% 0}}

/* Full month grid */
.cal-mv{display:grid;grid-template-columns:.62fr repeat(5,minmax(0,1fr)) .62fr;margin-top:14px;border-top:1px solid var(--e-line);border-left:1px solid var(--e-line)}
.cal-mv-wd{padding:9px 8px;border-right:1px solid var(--e-line);border-bottom:1px solid var(--e-line);font:500 .58rem/1 var(--e-num);letter-spacing:.1em;text-transform:uppercase;color:var(--e-fg-3)}
.cal-mv-day{display:flex;flex-direction:column;gap:2px;min-width:0;min-height:118px;padding:5px;border-right:1px solid var(--e-line);border-bottom:1px solid var(--e-line)}
.cal-mv-day.we, .cal-mv-day.blank{background:color-mix(in oklch,var(--e-bg-2) 45%,transparent)}
.cal-mv-day.off{background:repeating-linear-gradient(135deg,color-mix(in oklch,var(--e-bg-2) 70%,transparent) 0 6px,transparent 6px 12px)}
.cal-mv-day.past{opacity:.55}
.cal-mv-day.today{background:color-mix(in oklch,var(--e-accent) 9%,transparent);box-shadow:inset 0 0 0 2px var(--e-accent)}
.cal .cal-mv-head{display:flex;align-items:center;gap:6px;width:100%;padding:3px;border:0;border-radius:6px;background:none;cursor:pointer}
.cal .cal-mv-head:hover{background:var(--e-bg-3)}
.cal-mv-head .n{font:500 .72rem/1 var(--e-num);color:var(--e-fg-2)}
.cal-mv-day.today .cal-mv-head .n{display:grid;place-items:center;width:22px;height:22px;margin:-3px 0;border-radius:50%;background:var(--e-accent);color:var(--e-on-accent);font-weight:700}
.cal-mv-head .tag{font:600 .52rem/1 var(--e-num);letter-spacing:.06em;text-transform:uppercase}
.cal-mv-head .tag.off{color:var(--e-down)} .cal-mv-head .tag.early{color:var(--e-warn)}
.cal-mv-head .c{margin-left:auto;font:500 .58rem/1 var(--e-num);color:var(--e-fg-3)}
.cal-mv-hol{padding:0 3px 2px;font:500 .62rem/1.2 var(--e-ui);color:var(--e-down);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cal .cal-mv-ev{display:flex;align-items:baseline;gap:5px;min-width:0;height:22px;padding:0 5px 0 6px;border:0;border-radius:5px;background:color-mix(in oklch,var(--ty) 9%,transparent);box-shadow:inset 2px 0 0 var(--ty);text-align:left;cursor:pointer;line-height:22px}
.cal .cal-mv-ev:hover{background:color-mix(in oklch,var(--ty) 18%,transparent)}
.cal-mv-ev time{flex:0 0 auto;font:500 .58rem var(--e-num);font-stretch:82%;color:var(--e-fg-3)}
.cal-mv-ev span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font:550 .7rem var(--e-ui);color:var(--e-fg-2)}
.cal-mv-ev.imp-high span{font-weight:650;color:var(--e-fg)}
.cal .cal-mv-more{align-self:flex-start;padding:2px 6px;border:0;border-radius:5px;background:none;font:500 .62rem var(--e-num);color:var(--e-fg-3);cursor:pointer}
.cal .cal-mv-more:hover{color:var(--e-accent)}

/* Detail sheet (bottom sheet on phones, centred dialog from 700px) */
.cal-sheet{color:var(--e-fg);font-family:var(--e-ui);line-height:normal;margin:auto auto 0;width:100%;max-width:34rem;max-height:88dvh;padding:0;border:0;border-radius:22px 22px 0 0;background:var(--e-bg-2);box-shadow:0 -20px 60px -20px var(--e-shadow);transition:transform .38s cubic-bezier(.2,.8,.2,1),overlay .38s allow-discrete,display .38s allow-discrete}
.cal-sheet::backdrop{background:oklch(0 0 0 / .45);-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px)}
.cal-sheet:not([open]){transform:translateY(100%)}
@starting-style{.cal-sheet[open]{transform:translateY(100%)}}
@media (min-width:700px){.cal-sheet{margin:auto;border-radius:22px;max-height:84dvh}.cal-sheet:not([open]){transform:translateY(24px);opacity:0}@starting-style{.cal-sheet[open]{transform:translateY(24px);opacity:0}}}
.cal-sheet .sh{max-height:88dvh;overflow:auto;padding:8px 20px calc(20px + env(safe-area-inset-bottom,0px))}
.cal-sheet .grab{width:38px;height:4px;border-radius:2px;background:var(--e-line-2);margin:4px auto 12px}
@media (min-width:700px){.cal-sheet .grab{visibility:hidden;margin-bottom:4px}}
.cal-sheet .sh-head{display:flex;align-items:center;gap:12px}
.cal-sheet .sh-tags{display:flex;flex-wrap:wrap;align-items:center;gap:7px}
.cal-sheet .sh-tags small{font:500 .62rem var(--e-num);color:var(--e-fg-3)}
.cal-sheet .close{margin-left:auto;height:38px;min-width:38px;border-radius:12px;background:var(--e-bg-3);border:1px solid var(--e-line);color:var(--e-fg-2);cursor:pointer}
.cal-sheet h2{margin:14px 0 0;font:650 1.35rem/1.2 var(--e-ui);color:var(--e-fg);text-wrap:balance}
.cal-sheet .sh-when{margin:8px 0 0;font:500 .76rem/1.3 var(--e-num);font-stretch:82%;color:var(--e-fg-2)}
.cal-sheet .sh-note{margin:14px 0 0;padding:13px 14px;border-radius:14px;background:var(--e-bg-3);font-size:.88rem;line-height:1.45;color:var(--e-fg)}
.cal-sheet .stats{display:grid;grid-template-columns:1fr 1fr;margin:14px 0 0;border-top:1px solid var(--e-line)}
.cal-sheet .stats>div{padding:11px 0;border-bottom:1px solid var(--e-line);min-width:0}
.cal-sheet .stats>div:nth-child(odd):not(.full){padding-right:12px}
.cal-sheet .stats>div:first-child, .cal-sheet .stats .full{grid-column:1/-1}
.cal-sheet dt{font:500 .58rem/1.2 var(--e-num);letter-spacing:.1em;text-transform:uppercase;color:var(--e-fg-3)}
.cal-sheet dd{margin:6px 0 0;font:500 .84rem/1.25 var(--e-num);font-stretch:82%}
.cal-sheet .sh-tagsrow{display:flex;flex-wrap:wrap;gap:6px;margin-top:14px}
.cal-sheet .sh-tagsrow span{padding:5px 8px;border:1px solid var(--e-line);border-radius:8px;font:500 .72rem var(--e-ui);color:var(--e-fg-2)}
.cal-sheet .acts{display:flex;flex-wrap:wrap;gap:8px;margin-top:16px}
.cal-sheet .acts>*{flex:1 1 auto;display:inline-flex;align-items:center;justify-content:center;gap:8px;font:600 .82rem var(--e-ui);padding:12px 14px;border-radius:12px;background:var(--e-bg-3);color:var(--e-fg);border:1px solid var(--e-line-2);cursor:pointer;text-decoration:none;white-space:nowrap}
.cal-sheet .acts .primary{background:var(--e-accent);color:var(--e-on-accent);border-color:transparent}
.cal-sheet .acts>*:focus-visible{outline:2px solid var(--e-accent);outline-offset:2px}

/* Narrower screens: a slimmer month beside the agenda, then the pulse in two rows, then one column */
@media (max-width:1099px){
  .cal-split{grid-template-columns:304px minmax(0,1fr);gap:20px}
  .cal-meta{display:flex;gap:10px;margin-left:0}
  .cal-row{grid-template-columns:52px 70px minmax(0,1fr) auto 22px 30px;column-gap:10px}
}
@media (max-width:899px){
  .cal-pulse{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
}
@media (max-width:859px){
  .cal-split{grid-template-columns:minmax(0,1fr);gap:16px}
  .cal-side{position:static;max-width:560px}
}
@media (max-width:759px){
  .cal{--cal-tools-h:0px!important}
  .cal-tools{position:static;gap:6px;padding-block:10px}
  .cal-nav{flex:1 1 100%}
  .cal .cal-month{flex:1 1 auto;min-width:0}
  .cal-search{flex:1 1 100%;max-width:none}
  .cal-filters{flex:1 1 100%}
  .cal-filters .cal-seg:last-child{margin-left:auto}
  .cal-meta{flex:1 1 100%;justify-content:space-between}
  .cal-side{max-width:none}
  .cal .cal-mini-day{height:44px}
  .cal-mini-key, .cal-mini-foot{display:none}
  .cal-mini.collapsed .cal-mini-day:not(.inweek){display:none}
  .cal .cal-mini-toggle{display:flex;align-items:center;justify-content:space-between;width:100%;height:40px;margin-bottom:6px;padding:0 10px;border:1px solid var(--e-line);border-radius:12px;background:none;color:var(--e-fg-2);font:550 .76rem var(--e-ui);cursor:pointer}
  .cal-time.allday{font-size:.5rem;letter-spacing:.04em;white-space:nowrap}
  .cal-dayhead{position:static}
  .cal-row{grid-template-columns:46px minmax(0,1fr) 16px;column-gap:10px;padding:0 6px 0 9px;box-shadow:inset 3px 0 0 var(--ty)}
  .cal-row .cal-ty, .cal-row .cal-status, .cal-row .cal-src{display:none}
  .cal .cal-title{font-size:.86rem}
  .cal-time{font-size:.74rem}
  .cal-tile{padding:8px 11px 9px}
  .cal-v{font-size:1rem;gap:6px}
  .cal-wide{display:none}
  .cal-k, .cal-s{font-stretch:75%}
  .cal-mv-day{min-height:52px;padding:3px}
  .cal .cal-mv-ev, .cal-mv-hol, .cal .cal-mv-more{display:none}
  .cal .cal-mv-head{flex-direction:column;align-items:flex-start;gap:4px;height:100%}
  .cal-mv-head .c{margin-left:0}
  .cal-mv-day.lvl-high .cal-mv-head .c{padding:2px 4px;border-radius:4px;background:var(--e-accent);color:var(--e-on-accent);font-weight:600}
  .cal-monthmenu{width:min(330px,calc(100vw - 32px))}
}
/* Month grid entries are dense pointer targets; touch screens keep the site's 40px minimum. */
@media (pointer:fine){
  .cal .cal-mv-head{min-height:26px!important}
  .cal .cal-mv-ev{min-height:24px!important;height:24px;line-height:24px}
  .cal .cal-mv-more{min-height:22px!important;min-width:0!important}
}
@media (prefers-reduced-motion:reduce){.cal *, .cal-sheet{animation:none!important;transition:none!important}}
