/* Calendar (#events): spec/page-calendar.md. Built on dibs.css: the Plan week grid (.wk, .wk-block, .wk-chip),
   .seg, .menu, .modal with Plan's export rows (.ex-row), the detail frame (.dframe, .dh, .db, .df, .props).
   Only page layout and the neutral source mark live here. */

/* neutral mark for every source that is not a class or final (spec 6.2): surface-2 tint, line-strong bar, ink */
.ev-n { --bf: var(--surface-2); --bh: var(--line-strong); --bi: var(--ink); }
/* Campus holidays carry their own calendar color, as Cron's holiday calendar chips do (C72: the holiday chip keeps its
   calendar's green bar), so MLK Day reads apart from "Finals week begins" or "Quarter ends" at a glance. */
.ev-holm { --bf: var(--positive-subtle); --bh: var(--positive); }
.ev { padding-bottom: var(--s-4); }

/* A: title row (C74 period title, N381 controls). 32 tall, controls on the title's center line. */
.ev-head { display: flex; flex-wrap: wrap; align-items: center; gap: var(--s-3) var(--s-2); min-height: 32px; }
.ev-title { display: flex; align-items: baseline; gap: var(--s-3); flex: 1; min-width: 0; }
.ev-title h1 { margin: 0; font: var(--t-title); color: var(--ink); white-space: nowrap; }
.ev-yr { font-weight: 400; }
.ev-wkno { font: var(--t-meta); color: var(--muted); white-space: nowrap; }
.ev-nav { display: flex; gap: 2px; }
.ev-nav .icon-btn { width: 32px; height: 32px; min-height: 32px; color: var(--ink-2); }
.ev-seg { flex-shrink: 0; margin-left: var(--s-2); }
.ev-today-m, .ev-finals-m { display: none; }

/* Holidays and deadlines in the all-day lane (owner ruling 23 Oct; C72 holiday chips, L80 milestone diamond).
   A deadline leads with a small outline diamond in its own ink; holidays and term dates stay plain. */
.ev-dlm { flex-shrink: 0; width: 7px; height: 7px; margin: 0 1px; border: 1.5px solid currentColor; transform: rotate(45deg); color: var(--ink); }
.ev-rtitle .ev-dlm { display: inline-block; margin: 0 8px 1px 1px; vertical-align: middle; }
.ev-chip.is-selected .ev-dlm { color: var(--surface); }
/* A class on a holiday keeps its slot as a declined event (C74): no fill, the class's own solid stripe at the left, its
   color in the dashed outline, and the code and time struck (Cron's declined event keeps its blue bar and strikes
   "9 - 10 AM"), so two classes still tell apart that day. "No class" is a third line when the block has the room. */
.wk-block.ev-off, .wk-block.ev-off:hover, .wk-chip.ev-off, .wk-chip.ev-off:hover { background: var(--surface); outline: 1px dashed var(--bh, var(--line-strong)); outline-offset: -1px; }
.wk-block.ev-off .wk-code, .wk-chip.ev-off .wk-code { color: var(--bi, var(--ink-2)); }
.wk-block.ev-off .wk-code s, .wk-block.ev-off .wk-time s { text-decoration-thickness: 1px; }
.wk-block.ev-off .wk-time { color: var(--ink-2); }
.wk-block.ev-off .ev-offword { display: none; }
.wk-block.ev-off.is-tall .ev-offword { display: block; }
.ev-wk .wk-col .wk-block.ev-off.is-selected { background: var(--surface-2); outline: 2px solid var(--ink-2); outline-offset: 1px; }
.wk-block.ev-off.is-selected .wk-code, .wk-block.ev-off.is-selected .wk-time { color: var(--ink); }
/* m2: the dashed outline is drawn with outline, so keyboard focus puts the system ring back over it (sys 9.1) */
.ev-wk .wk-col .wk-block.ev-off:focus-visible, .wk-chip.ev-off:focus-visible { outline: 2px solid var(--focus); outline-offset: 2px; }
.ev-row.is-off .ev-rtitle, .ev-row.is-off .ev-rt { color: var(--muted); }
.ev-row.is-off .ev-rbar { background: none; border-left: 1px dashed var(--bh, var(--line-strong)); width: 0; }
.ev-fact-off { color: var(--ink); }

/* B: toolbar. Sources at the left, counts 16 apart, Add to my calendar at the right (sys 8). */
.ev-bar { display: flex; align-items: center; gap: var(--s-2) var(--s-4); margin-top: var(--s-4); }
.ev-src-btn[aria-expanded="true"], .ev-src-btn[aria-expanded="true"]:hover { background: var(--surface-2); border-color: var(--ink-2); }
.ev-src-btn > span { max-width: 240px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.ev-notes { display: flex; flex-wrap: wrap; align-items: center; column-gap: var(--s-4); row-gap: var(--s-1); flex: 1; min-width: 0; font: var(--t-meta); color: var(--muted); }
.ev-notegrp { display: inline-flex; align-items: center; gap: var(--s-2); }
.ev-note-act.text-btn { min-height: 28px; padding: 4px var(--s-2); margin: 0 0 0 calc(-1 * var(--s-1)); }
.ev-notegrp .d-ext { font: var(--t-meta); }
.ev-add { flex-shrink: 0; margin-left: auto; }
.ev-jumps { display: contents; }
.ev-body { margin-top: var(--s-4); }

/* C: Week. The Plan grid with seven days (or three on phones), today as a 22px ink circle (C74, N381). */
.ev-wk { --gut: 52px; margin-top: 0; }
.ev-wk .wk-body { height: calc(2 * 8px + var(--rows) * var(--pitch)); } /* the last hour label sits inside the frame */
.ev-wk .wk-head, .ev-wk .wk-lane, .ev-wk .wk-body { grid-template-columns: var(--gut) repeat(var(--ndays, 7), minmax(0, 1fr)); }
.ev-dh { gap: 6px; }
.ev-dnum { display: inline-flex; align-items: center; justify-content: center; min-width: 22px; height: 22px; padding: 0 4px; border-radius: var(--r-pill); color: var(--ink); font-variant-numeric: tabular-nums; }
.ev-dnum.is-today { background: var(--ink); color: var(--surface); font-weight: 600; }
.ev-lane { grid-auto-rows: 22px; padding: 1px 0; }
.ev-lane .wk-chip { margin: 1px 2px; min-width: 0; }
.ev-wk .wk-col:nth-child(n+7) { background-color: transparent; }
.ev-chip { gap: 6px; }
.ev-chip .ev-ct { min-width: 0; font: 400 13px/18px var(--font-ui); color: var(--bi, var(--ink)); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.ev-chip .wk-code + .ev-ct { color: var(--ink-2); }
.ev-ct.is-dl { font-weight: 600; }
/* All-day Registrar chips keep their whole name: a long one wraps to a second line instead of cutting "Drop without
   a transcript notation" to "Drop without a tra..." (which drop it is matters). Class chips stay one line. */
.ev-lane { grid-auto-rows: minmax(22px, auto); }
.ev-lane .wk-chip.ev-n, .ev-cell .wk-chip.ev-n { height: auto; min-height: 20px; align-items: flex-start; padding-top: 1px; padding-bottom: 1px; }
.ev-cell .wk-chip.ev-n .ev-ct { display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 2; white-space: normal; overflow-wrap: anywhere; }
/* m3: in the week's all-day lane the name wraps as far as it needs, at word breaks, so a 1024 column (about 100px)
   still reads "Drop without a transcript notation" whole; the lane row grows with it */
.ev-lane .wk-chip.ev-n .ev-ct { display: block; white-space: normal; overflow: visible; text-overflow: clip; overflow-wrap: break-word; }
.ev-lane .wk-chip.ev-n .ev-dlm, .ev-cell .wk-chip.ev-n .ev-dlm { margin-top: 5px; }
.ev-cell .wk-chip.ev-n .ev-t { line-height: 18px; }
.ev-chip .ev-t { flex-shrink: 0; font: var(--t-small); color: var(--muted); font-variant-numeric: tabular-nums; }
.ev-chip.is-selected .ev-ct, .ev-chip.is-selected .ev-t { color: var(--surface); }
.wk-block.ev-n .wk-code { color: var(--ink); }
.ev-wk .wk-block.is-tall .wk-code { display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 2; white-space: normal; }
/* b7r3 m1: a time that does not fit wraps when the block has the height (C74 puts "9 to 11 AM" on its own line), else
   the block drops it, as Plan's phone grid does; plan.js measures and sets is-wrap or is-narrow */
#wk-body .wk-block.is-wrap .wk-time, .ev-wk .wk-block.is-wrap .wk-time { white-space: normal; }
#wk-body .wk-block.is-narrow .wk-time, .ev-wk .wk-block.is-narrow .wk-time { display: none; }
/* b7r4 m2: the range itself is a .nowrap span, so a wrapped line breaks only between the section and the range */
/* b7r4 m1: a code too wide for one line wraps at a word onto a second line when the block has the height (C74
   "Weekly Team / Catchup"); plan.js sets is-codewrap only when the longest word fits and the block holds both lines */
#wk-body .wk-block.is-codewrap .wk-code, .ev-wk .wk-block.is-codewrap .wk-code { display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 2; white-space: normal; }
.wk-block.ev-n.is-selected .wk-code, .wk-block.ev-n.is-selected .wk-time { color: var(--surface); }
/* a final keeps the Plan tint, "Final:" at 600 and a 4px bar; solid stays reserved for the selected block (C120, C74) */
.wk-block.ev-final::before, .wk-chip.ev-final::before { width: 4px; }
/* a later overlapping event sits indented over the earlier one with a 1px surface outline (C74, C120 cascade) */
.ev-wk .wk-block.is-stack:not(:focus-visible) { outline: 1px solid var(--surface); outline-offset: 0; }
/* a later cascaded block always sits above the earlier one, busy hatch included (dibs.css puts .wk-busy at 1 and the
   rest at 2; --lvl is the cascade level from events.js). Selection and keyboard focus keep that order: the selected
   block turns solid (C120) and carries a ring, it never lifts over the later block's label. */
.ev-wk .wk-col .wk-block, .ev-wk .wk-col .wk-block:hover, .ev-wk .wk-col .wk-block:focus-visible { z-index: calc(2 + var(--lvl, 0)); }
.ev-wk .wk-col .wk-block.is-selected { outline: 2px solid var(--bi, var(--accent)); outline-offset: 1px; }
.ev-wk .wk-col .wk-block.is-selected:focus-visible { outline-color: var(--focus); }
.ev-more {
  justify-content: flex-start; height: 20px; min-height: 0; margin: 1px 2px; padding: 0 6px;
  border: 0; border-radius: var(--r-control); background: none; color: var(--muted); font: var(--t-label);
}
.ev-more:hover { background: var(--surface-2); color: var(--ink); }

/* C: Month. N381 grid: muted centered weekday labels, hairline cells, the day number top right. */
.ev-mhead { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); }
.ev-mhead span { padding: 0 0 var(--s-2); font: var(--t-label); color: var(--muted); text-align: center; }
.ev-month { background: var(--surface); border: 1px solid var(--line); border-radius: var(--r-panel); overflow: hidden; }
.ev-mrow { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); }
.ev-mrow + .ev-mrow { border-top: 1px solid var(--line); }
.ev-cell { display: flex; flex-direction: column; gap: 2px; min-width: 0; min-height: 112px; padding: var(--s-1) var(--s-1) 6px; container-type: inline-size; }
@container (max-width: 119px) { .ev-cell .ev-chip .ev-t { display: none; } }
.ev-cell + .ev-cell { border-left: 1px solid var(--line); }
.ev-dn {
  align-self: flex-end; min-width: 22px; height: 22px; min-height: 0; margin-bottom: 2px; padding: 0 6px;
  border: 0; border-radius: var(--r-pill); background: none; color: var(--ink-2); font: var(--t-label); font-variant-numeric: tabular-nums;
}
button.ev-dn:hover { background: var(--surface-2); color: var(--ink); }
.ev-cell.is-out .ev-dn { color: var(--muted); }
.ev-dn.is-today, button.ev-dn.is-today:hover { background: var(--ink); color: var(--surface); font-weight: 600; }
.ev-cell .wk-chip { width: 100%; margin: 0; }
.ev-cell .ev-more { margin: 0; }

/* C: Agenda. C124 day headings with a Today label; SH102 one-line rows, no rules, no boxes. */
/* the list runs the full content width, so the source column ends on the toolbar's right edge (SH102) and the
   title row and toolbar stay put when the view changes (final round 3, owner note 4) */
.ev-body > .ev-empty { max-width: 880px; }
.ev-earlier { margin-bottom: var(--s-2); }
.ev-later { margin-top: var(--s-4); }
.ev-day + .ev-day { margin-top: var(--s-6); }
.ev-dayh { display: flex; align-items: baseline; gap: var(--s-3); margin: 0 0 var(--s-1); font: var(--t-item); color: var(--ink); }
.ev-tag { font: var(--t-label); color: var(--muted); }
.ev-rows { list-style: none; margin: 0; padding: 0; }
.ev-row {
  display: grid; grid-template-columns: 96px 3px minmax(0, 1fr) auto; align-items: center; column-gap: var(--s-3);
  width: 100%; height: 36px; min-height: 36px; padding: 0 var(--s-2); margin: 0 0 0 calc(-1 * var(--s-2));
  border: 0; border-radius: var(--r-control); background: transparent; color: var(--ink); font: var(--t-body); text-align: left;
  box-sizing: content-box;
}
.ev-row:hover { background: var(--surface-2); }
.ev-row.is-selected, .ev-row.is-selected:hover { background: var(--surface-2); box-shadow: inset 0 0 0 1px var(--line-strong); }
.ev-rt { font: var(--t-meta); color: var(--ink-2); font-variant-numeric: tabular-nums; white-space: nowrap; }
.ev-rbar { width: 3px; height: 20px; background: var(--bh, var(--line-strong)); }
.ev-rbar.is-busy, .ev-sq.is-busy, .ev-mark i.is-busy { background: repeating-linear-gradient(135deg, var(--line-strong) 0 2px, var(--bg) 2px 4px); }
.ev-rmain { display: flex; align-items: baseline; gap: var(--s-4); min-width: 0; }
.ev-rtitle { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.ev-rtitle.is-dl { font-weight: 600; }
.ev-rloc { flex-shrink: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font: var(--t-meta); color: var(--muted); }
.ev-rsrc { font: var(--t-label); font-weight: 400; color: var(--muted); white-space: nowrap; text-align: right; }
.ev-row.is-past .ev-rt, .ev-row.is-past .ev-rtitle, .ev-dayh.is-past { color: var(--muted); }
.ev-row.is-past .ev-rtitle.is-dl { font-weight: 400; } /* a past deadline no longer reads as live (C124) */
.ev-rsub { display: none; }
.ev-empty { margin-top: var(--s-6); }

/* D: event detail (C120 order) in the shared detail frame */
.ev-db > * + * { margin-top: var(--s-6); }
.ev-dsec .d-title { margin-bottom: var(--s-3); }
.ev-facts { display: grid; gap: var(--s-2); }
.ev-fact { display: flex; align-items: flex-start; gap: var(--s-3); margin: 0; font: var(--t-body); color: var(--ink); }
.ev-fact > .icon { flex-shrink: 0; width: 16px; height: 16px; margin-top: 3px; color: var(--muted); }
.ev-dur { margin-left: var(--s-2); font: var(--t-meta); }
.ev-src { display: flex; align-items: center; gap: var(--s-2); margin: 0; font: var(--t-meta); color: var(--ink); }
.ev-sq { width: 10px; height: 10px; flex-shrink: 0; background: var(--bh, var(--line-strong)); }
.ev-srcline { display: flex; flex-wrap: wrap; align-items: center; column-gap: var(--s-4); margin: var(--s-1) 0 0 18px; font: var(--t-label); font-weight: 400; color: var(--muted); }
.ev-sep { display: none; }
.ev-srcline .d-ext, .ev-db .props .d-ext, .ev-db .props .ev-in { font: var(--t-meta); }

.ev-detail .dh { height: auto; min-height: 56px; padding-top: var(--s-2); padding-bottom: var(--s-2); }
.ev-detail .dh h2 { display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 2; white-space: normal; overflow-wrap: anywhere; }

@media (min-width: 1280px) {
  #drawer.ev-detail.as-pane { width: 360px; }
  body.pane-open.ev-pane .shell { --dock: 360px; } /* W22: the dock width, dibs.css --dock */
}

/* Sources menu (owner 2 Nov 2026, U5): a macOS menu with checkmarks (the Sonoma View menu; the Calendar app's calendar
   list; select.js's csel-check). Per row: a 16 px check slot on the left, the label, a colour only where a colour
   means something, then the count in quiet tabular figures when it is not 0. No checkbox controls, no note. */
.ev-menu { position: fixed; z-index: 45; width: 232px; }
.ev-mi { gap: var(--s-2); cursor: default; }
.ev-mi-ck { display: inline-flex; flex: none; width: 16px; height: 16px; color: var(--ink); }
.ev-mi-check { display: block; }
.ev-mi-l { flex: 0 1 auto; min-width: 0; }
.ev-mi-sw { display: inline-flex; flex: none; gap: 2px; align-items: center; }
.ev-mi-sw i { width: 8px; height: 8px; border-radius: 50%; background: var(--bh, var(--line-strong)); }
.ev-mi-sw i.is-busy { width: 10px; height: 10px; border-radius: 2px; box-shadow: inset 0 0 0 1px var(--line-strong); background: repeating-linear-gradient(135deg, var(--line-strong) 0 2px, var(--bg) 2px 4px); }
.ev-mi-n { margin-left: auto; padding-left: var(--s-2); min-width: 2ch; text-align: right; font: var(--t-label); font-weight: 400; color: var(--muted); font-variant-numeric: tabular-nums; }
.ev-mi[aria-checked="false"] .ev-mi-sw { opacity: .45; }
/* off the preview dibs holds no club or campus events: the row is greyed and carries no count */
.ev-mi.is-none .ev-mi-l { color: var(--muted); }
.ev-mi-sub { padding-left: calc(var(--s-2) + 16px + var(--s-2)); font: var(--t-meta); color: var(--ink-2); }
.ev-mi-sub .ev-mi-ck { margin-left: calc(-16px - var(--s-2)); }
.ev-mi-sub:disabled { color: var(--muted); cursor: not-allowed; }
.ev-mark { display: inline-flex; gap: 2px; width: 22px; flex-shrink: 0; }
.ev-mark i { width: 4px; height: 14px; background: var(--bh, var(--line-strong)); }
.ev-mark i.ev-n { width: 3px; }
.ev-mark i.is-busy { width: 10px; }

/* Add to my calendar (Plan's export modal rows; sp-link from Share) */
.ev-sub { width: min(480px, calc(100vw - 32px)); }
.ev-sub:focus-visible { outline: none; }
.ev-sub .ex-row dt { display: flex; flex-direction: column; }
.ev-sub .ex-row dt label { font: var(--t-meta); color: var(--ink); }
.ev-sub-note { font: var(--t-label); font-weight: 400; color: var(--muted); }
.ev-sub-left { margin: var(--s-3) 0 0; }
.ev-sub-l { display: block; margin: var(--s-4) 0 var(--s-1); font: var(--t-label); color: var(--ink-2); }
.ev-linkrow { display: flex; gap: var(--s-2); }
.ev-linkrow .sp-link { flex: 1; min-width: 0; margin: 0; }
.ev-linkrow button { flex-shrink: 0; }
.ev-sub-foot .text-btn { margin-right: auto; margin-left: calc(-1 * var(--s-2)); }

/* below the docked pane width the toolbar label stays; phones (spec 8, provisional) */
@media (max-width: 599px) {
  .ev-head { flex-wrap: wrap; row-gap: var(--s-3); }
  .ev-title { flex-wrap: wrap; row-gap: 0; }
  .ev-nav .icon-btn { width: 44px; height: 44px; min-height: 44px; }
  .ev-today, .ev-finals { display: none; }
  .ev-finals-m { display: inline-flex; }
  .ev-seg { order: 3; flex-basis: 100%; margin-left: 0; height: 44px; }
  .ev-seg { padding: 0; border-width: 0; box-shadow: inset 0 0 0 1px var(--line-strong); }
  .ev-seg > button { flex: 1; height: 44px; min-height: 44px; background-clip: content-box; padding: 3px; }
  .ev-seg > button:hover, .ev-seg > button[aria-pressed="true"] { background-clip: content-box; box-shadow: none; }
  .ev-today-m { display: inline-flex; }
  /* Today and Finals week are one pair of jumps: beside Sources on wider phones; under it, together, on the
     narrowest (never Finals week alone on a row with the Add icon) */
  .ev-bar { flex-wrap: wrap; row-gap: var(--s-2); column-gap: var(--s-2); }
  .ev-jumps { display: inline-flex; gap: var(--s-2); }
  .ev-notes { order: 4; flex-basis: 100%; }
  .ev-add { width: 44px; padding: 0; }
  .ev-add-l { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
  .ev-src-btn > span { max-width: 150px; }
  /* agenda rows: 44 tall, time and title on line 1, place and source muted on line 2 */
  .ev-row { grid-template-columns: 64px 3px minmax(0, 1fr); align-items: start; height: auto; min-height: 44px; padding: 4px var(--s-2); }
  .ev-rbar { align-self: stretch; height: auto; }
  .ev-rmain { flex-direction: column; align-items: stretch; gap: 0; }
  .ev-rmain > .ev-rloc, .ev-row > .ev-rsrc { display: none; }
  .ev-rsub { display: flex; gap: var(--s-4); min-width: 0; font: var(--t-label); font-weight: 400; color: var(--muted); }
  .ev-rsub > span { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
  .ev-rsub > span:last-child { flex-shrink: 0; }
  /* a long title wraps on phones (320: "Drop without a transcript notation") rather than cutting mid-word */
  .ev-rtitle { white-space: normal; overflow-wrap: anywhere; }
  .ev-rt { padding-top: 1px; font-size: 13px; }
  /* three-day grid: the time line stays (Plan's 5-day phone grid hides it) */
  .ev-wk { --gut: 40px; }
  .ev-wk .wk-block .wk-code { white-space: nowrap; }
  /* b11r4 m1: a time the fitter dropped (is-narrow) stays dropped on phones too, so no time is cut mid-value (C74) */
  .ev-wk .wk-block:not(.is-short):not(.is-narrow) .wk-time { display: block; }
  /* month: the date grid with counts; tapping a day scrolls the list under it */
  .ev-month.is-phone .ev-cell { min-height: 52px; }
  button.ev-pcell {
    align-items: center; justify-content: flex-start; gap: 0; height: auto; min-height: 52px; padding: var(--s-1) 0;
    border: 0; border-radius: 0; background: none; color: var(--ink);
  }
  .ev-mrow > button.ev-pcell + button.ev-pcell { border-left: 1px solid var(--line); }
  button.ev-pcell:hover { background: var(--surface-2); }
  .ev-pcell .ev-dn { align-self: center; margin: 0; }
  .ev-pc { font: var(--t-label); font-weight: 400; color: var(--muted); min-height: 18px; }
  .ev-ag--month { margin-top: var(--s-6); }
  .ev-day { scroll-margin-top: 56px; }
  .ev-wk .wk-dh { font-size: 13px; }
  /* sheet header: the title keeps the first row with Close; the n / total counter and steps sit under it (C120) */
  .ev-detail .dh { flex-wrap: wrap; column-gap: var(--s-2); row-gap: 0; padding-top: var(--s-1); padding-bottom: 0; }
  .ev-detail .dh-nav { display: contents; }
  .ev-detail .dh h2 { order: 1; flex: 1 1 calc(100% - 52px); -webkit-line-clamp: 3; }
  .ev-detail .dh-nav .close { order: 2; margin-left: 0; }
  .ev-detail .dh-count { order: 3; margin-right: 0; }
  .ev-detail .dh-nav [data-ev-step] { order: 4; }
}
@media (max-width: 379px) {
  .ev-jumps { order: 3; flex-basis: 100%; }
}
@media (max-width: 360px) {
  .ev-mhead, .ev-month.is-phone { margin-left: -16px; margin-right: -16px; }
  .ev-month.is-phone { border-left: 0; border-right: 0; border-radius: 0; }
}
@media (pointer: coarse), (max-width: 599px) {
  .ev-more { min-height: 0; }
  .ev-menu .menu-item { min-height: 44px; }
  .ev-sub .modal-foot button { min-height: 44px; }
  .ev-sub .modal-foot button::before { display: none; }
  .ev-sub .modal-head .icon-btn { width: 44px; height: 44px; min-height: 44px; margin-right: calc(-1 * var(--s-2)); }
  .ev-sub .modal-head .icon-btn::before { display: none; }
  /* the whole switch row is the hit area, 44 tall: the label covers the row */
  .ev-sub .ex-row--toggle { position: relative; min-height: 44px; padding: 0; }
  .ev-sub .ex-row--toggle dt label::after { content: ''; position: absolute; inset: 0; }
  .ev-sub .ex-row--toggle dd { position: relative; pointer-events: none; }
  .ev-note-act.text-btn { min-height: 44px; }
  .ev-mi { min-height: 44px; }
  .ev-db .props .ev-in { display: inline-flex; align-items: center; min-height: 44px; }
}
