
.tf-more{text-align:center;margin-top:20px}
.tf-more .btn-ghost{display:none}          /* the panel already links to the calendar */


/* ---------------------------------------------------------------- the day
   One panel: invocation | tithi grid | daily windows, in a row governed by
   the tallest column. See tools/merge-day-panel.py for the measurements this
   layout came from. Below ~1100px it becomes two columns, and on a phone one.

   Height is reserved on the two columns whose contents arrive from JavaScript
   so that filling them in shifts nothing - this panel is the first thing on
   the page and a shift here would be the worst place for one. */
.day{background:var(--cream);padding:18px 0 30px}
.day-eyebrow{font-family:'Marcellus SC','Marcellus',serif;text-transform:uppercase;
  letter-spacing:.24em;font-size:.72rem;color:var(--gold-deep);margin:0 0 4px}
/* The date arrives from JavaScript and the placeholder is a different length,
   so the line was growing after load and taking the whole panel with it.
   Reserve the tallest it renders at each width - one line on a laptop, up to
   three on a narrow phone with a long nakshatra name. */
.day-line{font-family:'Marcellus',Georgia,serif;font-weight:400;line-height:1.25;
  font-size:clamp(1.15rem,2.1vw,1.5rem);color:var(--espresso);margin:0 0 13px;
  min-height:30px}
@media (max-width:760px){ .day-line{min-height:48px} }
@media (max-width:400px){ .day-line{min-height:72px} }
.day-line .day-sep{color:var(--gold-text)}
.day-line #tSub{color:var(--muted-2)}

.day-grid{display:grid;grid-template-columns:1.02fr 1fr 1fr;gap:18px;align-items:stretch}
/* Every block in this panel is filled in by JavaScript, and the panel is the
   first thing on the page - so each one holds its own space open from the
   start. The numbers are the tallest measured content at that layout, across
   all eleven invocations. tools/merge-day-panel.py records how they were taken. */
/* The two almanac columns are empty until the engine fills them, and an older
   rule collapses any empty one to display:none - which defeated every reserve
   set here and was most of a 0.70 layout shift on a phone. Inside this panel
   they keep their box whether or not there is anything in it yet. */
.day-grid .today-panch:empty,.day-grid .today-win:empty{
  display:block;border:1px solid var(--line-gold);padding:14px 17px}
/* Anchor the festival strip to the BOTTOM of its reserved box. The "coming up"
   alert is hidden until the engine finds one, and when it appears it fills the
   empty space above the strip instead of pushing it down - so there is no
   shift, and no empty dashed box on a day with nothing coming up. */
.day-ahead{min-height:382px;display:flex;flex-direction:column;justify-content:flex-end}

/* the invocation keeps its own quiet centre inside the row */
.day-rm{display:flex;flex-direction:column;justify-content:center;text-align:center;
  background:linear-gradient(180deg,#fffdf8,#fdf7ec)}
.day-rm .rm-eyebrow{margin:0 0 10px}
.day-rm .rm-name{font-size:clamp(1.6rem,2.4vw,2.05rem);margin:0}
.day-rm .rm-also{margin:4px 0 0}
.day-rm .rm-why{margin:8px 0 0}
.day-rm .rm-mantra{font-size:clamp(1.15rem,1.9vw,1.45rem);line-height:1.6;margin:10px 0 3px}
.day-rm .rm-translit{font-size:.94rem}
.day-rm .rm-gloss{font-size:.86rem;line-height:1.55;margin:7px auto 0;max-width:34ch}
.day-rm .rm-note{font-size:.8rem;margin:10px auto 0;max-width:38ch}
.day-rm .rm-actions{margin:12px 0 0}
.day-rm .rm-more{margin:11px 0 0;font-size:.83rem}

/* Inside the row the tithi grid is a narrow column, so its six cells go two
   across rather than three, and the column's own border is dropped - the
   .day-col frame around it is the card now. */
.day-grid .today-panch{grid-template-columns:1fr 1fr;background:transparent;gap:0}
.day-grid .today-panch .tp{padding:8px 4px;background:transparent;
  border-bottom:1px dashed var(--cream-2)}
.day-grid .today-panch .tp:nth-last-child(-n+2){border-bottom:0}
.day-grid .today-panch .tp-k{font-size:.72rem}
.day-grid .today-panch .tp-v{font-size:.95rem}
.day-grid .today-win .tw-h{margin-bottom:6px}
.day-grid .today-win .tw{font-size:.88rem;padding:4px 0}
.day-grid .today-win .tw.live{margin:0 -6px;padding:4px 6px}

.today-fest{margin-top:11px}
.tf-more{text-align:left;margin-top:8px;font-size:.85rem}
.tf-more .btn-ghost{display:none}
.today-now{margin-top:12px}
.today-qual{margin-top:10px}
.today-qual .q-h{display:inline;margin-right:8px}
.today-qual .q-s{display:inline}

/* the day's verse, full width under the row */
.day-learn{margin:22px 0 0;padding:22px 0 0;border-top:1px solid var(--line);text-align:center}
/* The band inside it is prose in columns, not a centred title block: a
   74ch sentence and a verse with its translation under it both read badly
   centred. The rule above is left as it was for anything else that lands
   in this slot. */
.day-learn .rm-thread,.day-learn .rm-band,.day-learn .rm-more{text-align:left}
.day-learn:empty{display:none;border:0;padding:0;margin:0}
@media (max-height:830px) and (min-width:761px){
  .day{padding:14px 0 26px}
  .day-line{margin-bottom:10px}
  .day-grid{gap:14px}
  .day-rm .rm-also{margin-top:2px}
  .day-rm .rm-why{margin-top:5px}
  .day-rm .rm-mantra{margin:7px 0 2px}
  .day-rm .rm-gloss{line-height:1.45;margin-top:5px}
  .day-rm .rm-more{margin-top:7px}
  .today-fest{margin-top:7px}
  .day-ahead{min-height:370px}
}

@media (max-width:1100px){
  .day-grid{grid-template-columns:1fr 1fr}
  .day-rm{grid-column:1/-1;min-height:0;padding:22px 20px}
}
/* stacked: each block reserves only what it needs, or the shortest would sit
   in a 330px box and the page would be full of holes */
@media (max-width:760px){
  .day{padding:18px 0 26px}
  .day-grid{grid-template-columns:1fr;gap:12px}
  .day-rm{min-height:318px}
  .day-grid .today-panch{min-height:310px}
}

/* The contact bar wrapped to three lines on a phone - 125px of the 598px a
   visitor has before scrolling, spent on a tagline and two phone numbers.
   One line, scrolled sideways if it has to be. */
@media (max-width:720px){
  .utility .wrap{flex-wrap:nowrap;overflow-x:auto;-webkit-overflow-scrolling:touch;
    scrollbar-width:none;gap:14px}
  .utility .wrap::-webkit-scrollbar{display:none}
  .utility .u-left{flex-wrap:nowrap;gap:14px}
  .utility .u-left span,.utility .u-left a{white-space:nowrap}
  .utility .om{display:none}
}


/* ------------------------------------------------------------------ about
   Hero, "In short" and "About the Gurukkal" merged. Each fact is stated once.
   .answer wraps the introduction because it is the speakable target in the
   structured data - the sentence a voice assistant reads is now the same
   sentence a visitor reads, instead of the two being written separately. */
.ab{padding:52px 0 46px}
.ab-top{display:grid;grid-template-columns:1.25fr .85fr;gap:44px;align-items:center}
.ab-intro{background:none;border:0;padding:0;margin:0}
.ab-intro .eyebrow{margin:0 0 10px}
.ab-intro h1{margin:0 0 6px}
.ab-name{font-family:'Marcellus',Georgia,serif;font-size:1.18rem;color:var(--saffron-dark);margin:0 0 14px}
.ab-intro .lede{margin:0;font-size:1.06rem;line-height:1.75;max-width:56ch;color:var(--ink)}
.ab-intro .lede strong{color:var(--espresso)}
.ab-cta{display:flex;align-items:center;gap:20px;flex-wrap:wrap;margin-top:24px}

.ab-facts{list-style:none;display:grid;grid-template-columns:repeat(4,1fr);gap:14px;
  margin:40px 0 0;padding:26px 0 0;border-top:1px solid var(--line)}
.ab-facts li{display:flex;flex-direction:column;gap:3px}
.ab-facts b{font-family:'Marcellus',Georgia,serif;font-weight:400;font-size:1.02rem;color:var(--espresso)}
.ab-facts b a{color:inherit;text-decoration:none;border-bottom:1px solid var(--gold-soft)}
.ab-facts b a:hover{border-bottom-color:var(--saffron-dark)}
.ab-facts span{font-size:.85rem;color:var(--muted);line-height:1.5}

.ab-cards{display:grid;grid-template-columns:1.35fr 1fr;gap:18px;margin:34px 0 0}
.ab-card{background:var(--surface);border:1px solid var(--line-gold);border-radius:14px;
  padding:20px 22px;display:flex;flex-direction:column}
.ab-card-do{background:linear-gradient(180deg,#fffdf8,#fbf2e2);border-color:var(--gold-soft)}
.ab-card dt{font-family:'Marcellus SC','Marcellus',serif;text-transform:uppercase;
  letter-spacing:.16em;font-size:.72rem;color:var(--gold-deep);margin:0 0 10px}
.ab-card dd{margin:0;font-size:.94rem;line-height:1.65;color:var(--ink);
  flex:1 1 auto;display:flex;flex-direction:column}
.ab-warm{display:block;margin-top:10px;color:var(--muted);font-size:.9rem}
.ab-more{margin-top:auto;padding-top:14px;font-size:.88rem;color:var(--saffron-dark);
  display:inline-flex;align-items:center;min-height:24px;align-self:flex-start}

.ab-line{grid-column:1/-1;display:grid;grid-template-columns:auto 1fr;gap:6px 18px;
  margin-top:4px;padding-top:18px;border-top:1px solid var(--line);font-size:.88rem}
.ab-line dt{font-family:'Marcellus SC','Marcellus',serif;text-transform:uppercase;
  letter-spacing:.14em;font-size:.68rem;color:var(--muted);padding-top:3px;white-space:nowrap}
.ab-line dd{margin:0;color:var(--muted-2);line-height:1.6}

/* the deep credentials: present and readable, but plainly secondary */
/* Visible, not behind a click: the families who most want to read this - the
   ones vetting a priest for a Kumbhābhiṣekam - should not have to find it.
   It is simply quieter than everything above it. */
.ab-cred{margin:30px 0 0;border-top:1px solid var(--line);padding-top:22px}
.ab-cred-body{display:grid;grid-template-columns:1fr 1fr;gap:34px;margin-top:20px}
.ab-cred-body h2{font-family:'Marcellus',Georgia,serif;font-weight:400;font-size:1.02rem;
  color:var(--saffron-dark);margin:0 0 8px}
.ab-cred-body h2+p{margin-top:0}
.ab-cred-body p{font-size:.94rem;line-height:1.7;color:var(--ink)}
/* supporting image, not a second hero - a landscape frame carrying both the
   shrine and Gurukkal, so it gets its own 4:3 box and is shown whole rather
   than cropped down to a portrait sliver */
.ab-cred-body .about-media{margin-top:18px;border-radius:14px;overflow:hidden;
  max-width:460px;border:1px solid var(--line-gold);box-shadow:var(--shadow)}
.ab-cred-body .about-media img{display:block;width:100%;height:auto;
  aspect-ratio:4/3;object-fit:cover;object-position:50% 50%}

@media (max-width:980px){
  .ab-top{grid-template-columns:1fr;gap:28px}
  .ab-top .portrait{max-width:380px}
  .ab-facts{grid-template-columns:1fr 1fr}
  .ab-cards{grid-template-columns:1fr}
  .ab-cred-body{grid-template-columns:1fr;gap:24px}
}
@media (max-width:560px){
  .ab{padding:34px 0 32px}
  .ab-facts{grid-template-columns:1fr;gap:16px}
  .ab-line{grid-template-columns:1fr;gap:2px}
  .ab-line dt{padding-top:10px}
}

.obs-row{display:grid;grid-template-columns:repeat(5,1fr);gap:10px;min-height:76px}
.obs{display:flex;flex-direction:column;gap:2px;background:var(--surface);
  border:1px solid var(--line-gold);border-radius:11px;padding:9px 11px;text-decoration:none}
.obs:hover{border-color:var(--gold)}
.obs .o-n{font-family:'Marcellus',Georgia,serif;font-size:.92rem;color:var(--espresso);line-height:1.2}
.obs .o-d{font-size:.8rem;color:var(--saffron-dark)}
.obs .o-w{font-size:.74rem;color:var(--muted)}
.obs.is-today{background:#fbf2e2;border-color:var(--gold)}
.obs.is-today .o-w{color:var(--saffron-dark)}
@media (max-width:1100px){ .day-ahead{min-height:478px} }
@media (max-width:760px){ .day-ahead{min-height:762px} }
@media (max-width:560px){ .day-ahead{min-height:996px} }
@media (max-width:980px){ .obs-row{grid-template-columns:repeat(3,1fr);min-height:162px} }
@media (max-width:560px){ .obs-row{grid-template-columns:repeat(2,1fr);min-height:248px} }


/* ------------------------------------------------------------- the day, v2
   Three containers, not sixteen. Everything else is grouped by hairlines and
   space. See tools/apple-day-panel.py for the measurements behind this. */
.day-grid{display:grid;grid-template-columns:0.82fr 1fr;gap:20px;align-items:stretch}
.day-card{background:var(--surface);border:1px solid var(--line-gold);
  border-radius:16px;padding:20px 22px}

/* the almanac: grid on top, windows beneath, status line at the foot */
.day-alm{display:flex;flex-direction:column}
.day-grid .today-panch{grid-template-columns:1fr 1fr 1fr;background:transparent;
  gap:0;border:0;border-radius:0;padding:0}
.day-grid .today-panch .tp{padding:0 10px 12px 0;background:transparent;border:0}
.day-grid .today-panch .tp-k{font-size:.68rem;letter-spacing:.1em;color:var(--muted-2)}
.day-grid .today-panch .tp-v{font-size:.98rem}
.alm-rule{height:1px;background:var(--line);margin:4px 0 14px}
.day-grid .today-win{border:0;padding:0;background:transparent}
.day-grid .today-win .tw-h{margin-bottom:8px;font-size:.68rem;letter-spacing:.1em;color:var(--muted-2)}
.day-grid .today-win .tw{font-size:.9rem;padding:6px 0;border-top:1px solid var(--cream-2)}
.day-grid .today-win .tw.live{margin:0 -8px;padding:6px 8px}

/* the live-window line, inside the windows, filling what the stacking freed */
.day-alm .today-now{margin:auto 0 0;padding:14px 0 0;background:transparent;
  border:0;border-top:1px solid var(--line);font-size:.85rem;line-height:1.55;
  color:var(--muted-2);border-radius:0}
.day-alm .today-now .dot{top:0}

/* The standing disclaimer is a footnote, not an announcement - it was louder
   than the live Rāhu Kālam warning, which is the one actionable thing on the
   screen. Keyed on the id because the Panchāṅgam script rewrites className. */
#tQual{margin:12px 2px 0;font-size:.78rem;line-height:1.55;color:var(--muted-2);
  background:none!important;border:0!important;padding:0!important;border-radius:0}
#tQual .q-h{display:none}
#tQual .q-s{display:inline}

/* ---------------------------------------------------------- what's ahead
   One card, one list pattern. A name and a time on every row, so the coming
   festival, the next festivals and the monthly observances all read as the
   same kind of thing - because they are. */
.day-ahead{margin:20px 0 0}
.ahead-h{font-family:'Marcellus SC','Marcellus',serif;text-transform:uppercase;
  letter-spacing:.2em;font-size:.7rem;color:var(--muted-2);margin:0 0 4px;font-weight:400}
.ahead-lab{font-family:'Marcellus SC','Marcellus',serif;text-transform:uppercase;
  letter-spacing:.18em;font-size:.66rem;color:var(--muted-2);margin:18px 0 2px;font-weight:400}

.day-ahead .today-fest{margin:6px 0 0;background:transparent;border:0;border-radius:0;
  padding:10px 0;border-bottom:1px solid var(--line)}

/* The strip renders one spare card and trims whichever the "coming up" line
   has already claimed. It stays invisible - space still reserved - until the
   trim is done, and a fixed height clips the spare so it can never open a
   fourth row in the meantime. Both together are what hold CLS at zero here. */
.day-ahead .fstrip{display:block;grid-template-columns:none;overflow:hidden;margin:0}
.day-ahead .fs-card{display:flex;align-items:baseline;gap:14px;background:transparent;
  border:0;border-bottom:1px solid var(--cream-2);border-radius:0;box-shadow:none;
  padding:11px 0;transform:none}
.day-ahead .fs-card:hover{transform:none;box-shadow:none;background:#fffaf0}
.day-ahead .fs-chip{flex:0 0 74px;display:flex;align-items:baseline;gap:5px;
  background:transparent;border:0;border-radius:0;padding:0;text-align:left}
.day-ahead .fs-chip .m,.day-ahead .fs-chip .d{display:inline;line-height:1.2}
.day-ahead .fs-chip .d{font-size:1rem;color:var(--espresso)}
.day-ahead .fs-b{display:flex;align-items:baseline;gap:12px;flex:1;min-width:0}
.day-ahead .fs-b h3{order:1;flex:1;min-width:0;margin:0;font-size:.98rem}
.day-ahead .fs-din{order:2;font-size:.8rem;color:var(--muted)}
.day-ahead .fs-tag{order:3;font-size:.62rem;padding:2px 7px;margin:0;flex:0 0 auto}

.day-ahead .obs-row{display:block;grid-template-columns:none;min-height:0}
/* the tiles were a COLUMN flex; as rows they have to be reset explicitly */
.day-ahead .obs{display:flex;flex-direction:row;align-items:baseline;gap:14px;
  background:transparent;border:0;border-bottom:1px solid var(--cream-2);
  border-radius:0;padding:9px 0}
.day-ahead .obs:hover{background:#fffaf0;border-color:var(--cream-2)}
.day-ahead .obs .o-n{flex:1;min-width:0;order:2;font-size:.95rem}
.day-ahead .obs .o-d{order:1;flex:0 0 74px;font-size:.88rem;color:var(--espresso)}
.day-ahead .obs .o-w{order:3;font-size:.8rem;color:var(--muted)}
.day-ahead .obs.is-today{background:#fbf2e2}
.day-ahead .tf-more{text-align:left;margin-top:14px;font-size:.85rem}
.day-ahead .tf-more .btn-ghost{display:none}

/* ------------------------------------------------------------------ reserves
   Every block here is filled in by JavaScript and the panel is the first thing
   on the page, so each one holds its own space open from the start. The numbers
   are the tallest measured content at that layout, across all eleven
   invocations and eight screen widths. Without them the panel scored 0.19 on
   layout shift - roughly twice Google's "poor" threshold. */
/* #remember was reserving 602px for a card that also held the verse and the
   teaching. Those moved to the band below it, and the reserve went with them:
   re-measured across all eleven invocations at eleven widths by
   tools/measure_reserves.js, which is committed so this cannot be guessed
   again. The old number was holding 175px of dead space above and below a
   centred invocation.

   #learn deliberately reserves nothing. It renders below the fold at every
   width measured, so the shift it causes is outside the viewport and does not
   count against CLS - and holding a 1023px blank open on a phone to prevent a
   shift nobody can see would be strictly worse. tools/verify_interactive.js
   measures the real figure rather than trusting this paragraph. */
#remember{min-height:370px}
@media (max-width:1280px){ #remember{min-height:368px} }
@media (max-width:1100px){ #remember{min-height:359px} }
@media (max-width:900px){ #remember{min-height:354px} }
@media (max-width:560px){ #remember{min-height:346px} }
@media (max-width:320px){ #remember{min-height:366px} }
#tPanch{min-height:168px}
/* #tWin was reserved at 220px, which is the height of the windows list on a
   day when Abhijit Muhūrta is clear. It is not clear on most days: measured
   over 21 consecutive days at this anchor, Abhijit runs into Rāhu Kālam,
   Yamagaṇḍam or a Durmuhūrtam on 12 of them, and the sentence explaining that
   adds about 80px. So the list overflowed its reserve on the majority of days
   and pushed everything below it down — a real shift that only appeared when
   the note happened to render inside the measurement window, which is why it
   survived this long. Re-measured on a clash day at eleven widths, +20px for
   the wording used when two periods clash at once. */
#tWin{min-height:330px}
@media (max-width:1100px){ #tWin{min-height:345px} }
@media (max-width:1000px){ #tWin{min-height:305px} }
@media (max-width:560px){ #tWin{min-height:325px} }
@media (max-width:430px){ #tWin{min-height:370px} }
@media (max-width:375px){ #tWin{min-height:390px} }
@media (max-width:320px){ #tWin{min-height:435px} }
#tFest{min-height:66px}
#fstrip{height:138px}
#obsRow{min-height:220px}
/* An older rule collapses an empty .today-now to display:none, which made the
   reserve below it meaningless - it rendered at 0 and then jumped to 57. And
   the footnote is [hidden] until there are notes, so its space is held by a
   wrapper instead of by the element itself. */
.day-alm #tNow:empty{display:block}
.day-alm #tNow{min-height:60px}
.day-foot-slot{min-height:24px}
@media (max-width:1100px){ .day-alm #tNow{min-height:82px} }
@media (max-width:1000px){ #tPanch{min-height:230px} #remember{min-height:355px} }
@media (max-width:760px){ #tFest{min-height:112px} }
@media (max-width:560px){ #tFest{min-height:156px} .day-alm #tNow{min-height:82px} }

@media (max-width:400px){ #tPanch{min-height:258px} #tWin{min-height:246px}
  #tFest{min-height:236px} #fstrip{height:170px} .day-alm #tNow{min-height:104px} }

@media (max-width:1000px){
  .day-grid{grid-template-columns:1fr;gap:14px}
  .day-grid .today-panch{grid-template-columns:1fr 1fr}
}
@media (max-width:560px){
  .day-card{padding:16px 16px;border-radius:14px}
  .day-grid .today-panch{grid-template-columns:1fr 1fr}
  .day-ahead .fs-chip,.day-ahead .obs .o-d{flex-basis:62px}
  .day-ahead .fs-tag{display:none}
}


/* --------------------------------------------- the verse, inside the card
   Today's sacred learning now sits in the remembrance card, under a hairline -
   the invocation and the passage are one act of practice, so they are one
   container. The card is a narrower column than the full-width block it came
   from, so the verse and its meaning are set a step smaller to suit it.

   The two cards also stop stretching to match each other. Forcing a short card
   to the height of a tall one is precisely what manufactured the 113px of dead
   space in the almanac; each card now ends where its content ends. */
.day-grid{align-items:start}
.day-rm .rm-src{font-size:.76rem;margin:0 0 10px}
.day-rm .rm-verse{font-size:1rem;line-height:1.85}
.day-rm .rm-verse[lang=sa]{font-size:1.02rem;line-height:1.8}
.day-rm .rm-vtr{font-size:.84rem;line-height:1.75;margin-top:8px}
.day-rm .rm-meaning{font-size:.92rem;line-height:1.65;max-width:44ch;margin:14px auto 0}
.day-rm .rm-expl{font-size:.88rem;margin:10px auto 0;max-width:46ch}
.day-rm .rm-note{font-size:.8rem;margin:14px auto 0;max-width:42ch}
.day-rm .rm-more{margin-top:20px}


.muh-disclaimer{max-width:760px;margin:0 auto 22px;padding:16px 20px;background:var(--cream-2,#f7ebd8);border:1px solid var(--gold-soft,#e7cf9c);border-left:4px solid var(--saffron,#c65a22);border-radius:10px}
.muh-disclaimer h3{margin:0 0 6px;font-family:'Marcellus',serif;font-size:1rem;color:var(--saffron-dark,#a8481a)}
.muh-disclaimer p{margin:0;font-size:.9rem;line-height:1.6;color:var(--espresso,#38220f)}
.muh-personal-note{font-size:.85rem;color:var(--muted,#6f5a41);font-style:italic;margin:4px 0 0}
.muh-group.ctx h4{color:var(--gold-deep,#8a6320)}
.muh-group.ctx{background:#faf3e6;border-color:var(--gold-soft,#e7cf9c)}
.muh-assess.neutral{background:var(--surface,#fffdf8);border-color:var(--gold-soft,#e7cf9c)}
.muh-reftext{font-size:.82rem;color:var(--muted,#6f5a41);line-height:1.55;margin-top:8px}
.muh-resultdisc{margin-top:16px;padding:12px 16px;background:var(--cream-2,#f7ebd8);border-left:3px solid var(--saffron,#c65a22);border-radius:0 8px 8px 0;font-size:.88rem;line-height:1.55;color:var(--espresso,#38220f)}

/* --- WCAG 2.2 AA 2.5.8 target size: give small controls a 24px hit area --- */
.utility a{display:inline-flex;align-items:center;min-height:24px;padding:3px 0}
summary{min-height:24px;display:flex;align-items:center;gap:8px}
input[type=checkbox],input[type=radio]{width:20px;height:20px;margin:2px}
label:has(> input[type=checkbox]),label:has(> input[type=radio]){min-height:24px;display:inline-flex;align-items:center;gap:8px}
.chat-sug button{min-height:24px;padding:6px 12px}

/* plain-language explanation under a timing window (e.g. why Abhijit is
   set aside today). Full width, so it does not fight the flex row above. */
.tw-note,.krow-note{margin:2px 0 8px;padding:7px 10px;border-left:3px solid var(--gold-soft);background:#fdf7ea;border-radius:0 6px 6px 0;font-size:.84rem;line-height:1.5;color:var(--muted)}

/* The homepage lookup reads a day; muhurtham.html chooses one. They are
   different questions, and the lookup used to imply it could answer the second
   by offering the same ceremony dropdown with none of the rules behind it. */
.muh-handoff{max-width:760px;margin:20px auto 0;font-size:.92rem;line-height:1.7;
  color:var(--muted,#6f5a41);text-align:center}
.muh-handoff a{color:var(--saffron-dark,#a8481a)}
.muh-handoff-s{display:block;margin-top:4px;font-size:.86rem}
