/* HinduCalendar.in — calm by construction.
   The competitive premise is that the category leader feels like a reference
   database. That is a layout claim as much as a content one, so this sheet
   holds to a short list of rules: one column, generous line height, at most
   one accent colour per screen, and nothing revealed that the reader did not
   ask for. Progressive disclosure is implemented with <details>, which means
   it works with CSS and JS both off. */

:root{
  /* Palette adopted 2026-08-26. Roughly 80% ivory/neutral, 15% saffron/red,
     5% gold and semantics — the ratio is the point. Making everything saffron
     is the fastest way to make a daily-use product exhausting, and gold only
     communicates significance while it stays rare. */
  --ink:#29251F; --ink-2:#70685D; --muted:#8A8175;
  --bg:#FFF9EE;            /* warm ivory  */
  --card:#FFFDF7;          /* soft cream  */
  --line:#EADFCB;
  --primary:#C84B16;       /* deep saffron — brand, today, primary action */
  --primary-soft:#FBEDE4;
  --sacred:#A62626;        /* kumkum red — festivals, religious emphasis */
  --sacred-soft:#FBECEC;
  --gold:#C6922E;          /* temple gold — special observances only */
  --gold-soft:#FBF3E2;
  --teal:#39734A;          /* deep green — auspicious / available */
  --teal-soft:#EDF5EF;
  --warn:#A86D16;          /* ochre — cautions, advisories */
  --warn-soft:#FBF2E3;
  --stop:#A62626;
  --stop-soft:#FBECEC;
  --radius:14px; --shadow:0 1px 2px rgba(41,37,31,.05),0 8px 24px -18px rgba(41,37,31,.28);
  --font:ui-sans-serif,-apple-system,"Segoe UI",Roboto,"Noto Sans","Noto Sans Devanagari",Arial,sans-serif;
  --serif:ui-serif,Georgia,"Noto Serif","Noto Serif Devanagari","Times New Roman",serif;
}
@media (prefers-color-scheme:dark){
  :root{
    --ink:#F2EBDF; --ink-2:#CFC5B4; --muted:#9A9082;
    --bg:#1A1713; --card:#241F1A; --line:#3A322A;
    --primary:#E8834F; --primary-soft:#2E1F16;
    --sacred:#D9736F; --sacred-soft:#2C1817;
    --gold:#D6AC5E; --gold-soft:#2A2318;
    --teal:#6FB183; --teal-soft:#16241A;
    --warn:#D0A059; --warn-soft:#2A2114;
    --stop:#D9736F; --stop-soft:#2C1817;
    --shadow:0 1px 2px rgba(0,0,0,.45),0 8px 24px -18px rgba(0,0,0,.85);
  }
}

*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--bg);color:var(--ink);font-family:var(--font);
  font-size:17px;line-height:1.65;-webkit-font-smoothing:antialiased}
.wrap{max-width:44rem;margin:0 auto;padding:0 1.15rem}
a{color:var(--primary);text-underline-offset:2px}
h1,h2,h3{line-height:1.25;margin:0 0 .5rem}
h1{font-family:var(--serif);font-size:1.75rem;font-weight:600;letter-spacing:-.01em}
h2{font-size:1.2rem;font-weight:650;margin-top:2rem}
h3{font-size:1rem;font-weight:650}
p{margin:0 0 1rem}
.muted{color:var(--muted)}
.skip{position:absolute;left:-9999px}
.skip:focus{left:1rem;top:1rem;background:var(--card);padding:.6rem 1rem;border-radius:8px;z-index:99}

/* header */
header.site{background:var(--card);border-bottom:1px solid var(--line)}
.bar{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding-top:.85rem;padding-bottom:.6rem}
.brand{display:flex;align-items:center;gap:.5rem;text-decoration:none;color:var(--ink)}
.brand .mark{font-size:1.35rem}
.brand-text strong{font-family:var(--serif);font-weight:600;font-size:1.15rem}
.brand-text .tld{color:var(--muted);font-size:.95rem}
.place{font-size:.88rem;color:var(--ink-2);text-decoration:none;background:var(--bg);
  border:1px solid var(--line);border-radius:999px;padding:.3rem .75rem;white-space:nowrap}
.main-nav{display:flex;gap:.25rem;overflow-x:auto;padding-bottom:.55rem;scrollbar-width:none}
.main-nav::-webkit-scrollbar{display:none}
.main-nav a{font-size:.9rem;color:var(--ink-2);text-decoration:none;padding:.35rem .7rem;
  border-radius:999px;white-space:nowrap}
.main-nav a.active{background:var(--primary-soft);color:var(--primary);font-weight:600}

main{padding-top:1.5rem;padding-bottom:3rem;min-height:60vh}

/* the daily brief */
.greeting{font-size:.95rem;color:var(--muted);margin-bottom:.15rem}
.brief{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);
  box-shadow:var(--shadow);padding:1.25rem 1.25rem .5rem;margin-bottom:1.25rem}
.brief .lunar{font-family:var(--serif);font-size:1.3rem;color:var(--ink);margin:0 0 .2rem}
.brief .lunar .ends{font-family:var(--font);font-size:.82rem;color:var(--muted);font-weight:400}
.brief .where{font-size:.88rem;color:var(--muted);margin-bottom:1rem}
.rows{display:grid;gap:.1rem}
.row{display:grid;grid-template-columns:7.5rem 1fr;gap:.75rem;padding:.55rem 0;
  border-top:1px solid var(--line);align-items:baseline}
.row:first-child{border-top:0}
.row .k{font-size:.82rem;color:var(--muted);text-transform:uppercase;letter-spacing:.04em}
.row .v{font-size:.98rem}
.row.avoid .v{color:var(--stop)}
.row.good  .v{color:var(--teal)}

/* what matters today */
.matters{margin-bottom:1.25rem}
.matter{display:block;background:var(--card);border:1px solid var(--line);
  border-left:4px solid var(--primary);border-radius:var(--radius);
  padding:.9rem 1.1rem;margin-bottom:.6rem;text-decoration:none;color:inherit;box-shadow:var(--shadow)}
.matter .name{font-family:var(--serif);font-size:1.12rem;font-weight:600;color:var(--ink)}
.matter .line{font-size:.9rem;color:var(--ink-2);margin-top:.15rem}
.matter .cue{font-size:.82rem;color:var(--primary);margin-top:.4rem;display:inline-block}
/* Where an observance is most kept. Deliberately quieter than .line: it
   qualifies the observance, it does not describe it, and a reader for whom
   this is THE festival of the year should not be told twice that it is
   regional. */
.matter .emphasis{font-size:.82rem;color:var(--muted);margin-top:.25rem;display:block;font-style:italic}
.matter.quiet{border-left-color:var(--line)}
.matter.gov{border-left-color:var(--teal)}

.nothing{background:var(--card);border:1px dashed var(--line);border-radius:var(--radius);
  padding:1.1rem;color:var(--ink-2);font-size:.95rem}

/* badges */
.badge{display:inline-block;font-size:.7rem;font-weight:650;letter-spacing:.04em;
  text-transform:uppercase;padding:.15rem .5rem;border-radius:999px;vertical-align:.1em;margin-left:.4rem}
.badge-gov{background:var(--teal-soft);color:var(--teal)}
.badge-bank{background:var(--teal-soft);color:var(--teal)}
.badge-vrat{background:var(--primary-soft);color:var(--primary)}
.badge-moon{background:var(--warn-soft);color:var(--warn)}
.badge-state{background:var(--warn-soft);color:var(--warn)}

/* progressive disclosure */
details.more{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);
  margin-bottom:.7rem;overflow:hidden}
details.more>summary{cursor:pointer;padding:.85rem 1.1rem;font-weight:600;font-size:.96rem;
  list-style:none;display:flex;justify-content:space-between;align-items:center;gap:.5rem}
details.more>summary::-webkit-details-marker{display:none}
details.more>summary::after{content:"›";transform:rotate(90deg);color:var(--muted);font-size:1.2rem;line-height:1}
details.more[open]>summary::after{transform:rotate(-90deg)}
details.more>summary:hover{background:var(--primary-soft)}
.more-body{padding:0 1.1rem 1rem;border-top:1px solid var(--line)}
.more-body>*:first-child{margin-top:1rem}

/* tappable terms */
button.term{font:inherit;color:inherit;background:none;border:0;padding:0;cursor:pointer;
  border-bottom:1px dotted var(--muted);text-align:left}
button.term:hover{color:var(--primary);border-bottom-color:var(--primary)}

/* term sheet */
.sheet{position:fixed;inset:0;background:rgba(27,22,20,.45);display:flex;align-items:flex-end;
  justify-content:center;z-index:50;padding:0}
.sheet[hidden]{display:none}
.sheet-inner{background:var(--card);border-radius:var(--radius) var(--radius) 0 0;
  max-width:44rem;width:100%;padding:1.4rem 1.25rem 2rem;position:relative;max-height:80vh;overflow:auto}
.sheet-close{position:absolute;top:.6rem;right:.9rem;background:none;border:0;font-size:1.6rem;
  color:var(--muted);cursor:pointer;line-height:1}
.sheet-short{font-weight:600;color:var(--ink)}
.sheet-long{color:var(--ink-2);font-size:.95rem}
@media (min-width:640px){.sheet{align-items:center}.sheet-inner{border-radius:var(--radius);max-width:34rem}}

/* guide pages */
.layers{counter-reset:layer}
.layer{margin:2rem 0}
.layer>h2{display:flex;align-items:baseline;gap:.6rem}
.layer>h2 .tag{font-size:.7rem;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);font-weight:600}
ol.steps{padding-left:1.2rem;margin:0 0 1rem}
ol.steps li{margin-bottom:.55rem}
ul.plain{list-style:none;padding:0;margin:0 0 1rem}
ul.plain li{padding:.4rem 0;border-top:1px solid var(--line);font-size:.96rem}
ul.plain li:first-child{border-top:0}
.mantra{background:var(--primary-soft);border-radius:var(--radius);padding:1rem 1.1rem;margin-bottom:1rem}
.mantra .dev{font-size:1.35rem;line-height:1.7;margin:0 0 .25rem}
.mantra .iast{font-style:italic;color:var(--ink-2);margin:0 0 .25rem}
.mantra .mean{font-size:.92rem;color:var(--ink-2);margin:0}
.mantra .note{font-size:.82rem;color:var(--muted);margin:.5rem 0 0}
.source{font-size:.9rem;color:var(--ink-2);padding:.5rem 0;border-top:1px solid var(--line)}
.source .cite{font-weight:600;color:var(--ink)}
.faq dt{font-weight:650;margin-top:1rem}
.faq dd{margin:.3rem 0 0;color:var(--ink-2)}
.kids{background:var(--teal-soft);border-radius:var(--radius);padding:1rem 1.1rem;font-size:.98rem}
.review{font-size:.85rem;border-radius:10px;padding:.75rem .9rem;margin:1.25rem 0}
.review.unreviewed{background:var(--warn-soft);color:var(--warn)}
.review.reviewed{background:var(--teal-soft);color:var(--teal)}

/* why-this-date */
.why-date{background:var(--card);border:1px solid var(--line);border-left:4px solid var(--teal);
  border-radius:var(--radius);padding:1rem 1.1rem;margin:1rem 0;font-size:.94rem;color:var(--ink-2)}
.why-date strong{color:var(--ink)}

/* month calendar */
table.cal{width:100%;border-collapse:collapse;background:var(--card);
  border:1px solid var(--line);border-radius:var(--radius);overflow:hidden}
table.cal th{font-size:.72rem;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);
  padding:.6rem .2rem;font-weight:600;border-bottom:1px solid var(--line)}
table.cal td{border:1px solid var(--line);vertical-align:top;padding:.3rem .35rem;height:4.4rem;width:14.28%}
table.cal td a{text-decoration:none;color:inherit;display:block;height:100%}
table.cal .d{font-size:.9rem;font-weight:600}
table.cal .t{font-size:.66rem;color:var(--muted);line-height:1.25;display:block}
table.cal .ev{font-size:.66rem;color:var(--primary);line-height:1.25;display:block;margin-top:.15rem}
table.cal td.today{background:var(--primary-soft)}
table.cal td.blank{background:transparent;border-color:transparent}
.cal-nav{display:flex;justify-content:space-between;align-items:center;margin-bottom:.9rem;gap:1rem}
.cal-nav a{text-decoration:none;font-size:.9rem;background:var(--card);border:1px solid var(--line);
  border-radius:999px;padding:.3rem .8rem}

/* lists */
.list{list-style:none;padding:0;margin:0}
.list li{border-top:1px solid var(--line)}
.list li:first-child{border-top:0}
.list a{display:flex;justify-content:space-between;gap:1rem;align-items:baseline;
  padding:.8rem .2rem;text-decoration:none;color:inherit}
.list .n{font-weight:600}
.list .sub{font-size:.82rem;color:var(--muted);display:block;font-weight:400}
.list .when{font-size:.85rem;color:var(--ink-2);white-space:nowrap;text-align:right}
.list .when em{display:block;font-style:normal;font-size:.76rem;color:var(--muted)}

/* section headers with the personal split */
.split-head{display:flex;align-items:baseline;justify-content:space-between;gap:1rem;
  margin:2rem 0 .4rem}
.split-head h2{margin:0}
.split-head .hint{font-size:.8rem;color:var(--muted)}

/* forms */
.field{margin-bottom:1.15rem}
.field label{display:block;font-weight:600;font-size:.9rem;margin-bottom:.3rem}
.field .help{font-size:.82rem;color:var(--muted);margin:.25rem 0 .4rem}
.field select,.field input[type=text]{width:100%;font:inherit;padding:.6rem .7rem;
  border:1px solid var(--line);border-radius:10px;background:var(--card);color:var(--ink)}
button.primary{font:inherit;font-weight:600;background:var(--primary);color:#fff;border:0;
  border-radius:10px;padding:.7rem 1.4rem;cursor:pointer}
.results{list-style:none;padding:0;margin:.5rem 0 0;border:1px solid var(--line);border-radius:10px;
  overflow:hidden;background:var(--card)}
.results li button{width:100%;text-align:left;font:inherit;background:none;border:0;
  padding:.6rem .8rem;cursor:pointer;border-top:1px solid var(--line);color:var(--ink)}
.results li:first-child button{border-top:0}
.results li button:hover{background:var(--primary-soft)}

/* footer */
footer.site{background:var(--card);border-top:1px solid var(--line);padding:2rem 0 2.5rem;font-size:.9rem}
.foot-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(9rem,1fr));gap:1.5rem;margin-bottom:1.5rem}
.foot-grid h3{font-size:.75rem;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);margin-bottom:.5rem}
.foot-grid a{display:block;color:var(--ink-2);text-decoration:none;padding:.18rem 0}
.foot-grid a:hover{color:var(--primary)}
.calc-note{font-size:.82rem;color:var(--muted);border-top:1px solid var(--line);padding-top:1rem}
.copy{font-size:.8rem;color:var(--muted)}
.notice{background:var(--warn-soft);color:var(--warn);border-radius:var(--radius);
  padding:.9rem 1.1rem;font-size:.9rem;margin-bottom:1.25rem}
.notice a{color:inherit;font-weight:600}

/* ── trust ──────────────────────────────────────────────────────────────
   The confidence chip is deliberately quiet. A large green badge would read
   as a guarantee, and the honest default state — date governed, guide not yet
   reviewed — is not a guarantee. Tone carries the distinction; the label
   carries the meaning. */
.trust-row{display:flex;align-items:center;gap:.6rem;flex-wrap:wrap;margin:.2rem 0 1rem}
button.trust{font:inherit;font-size:.82rem;font-weight:600;border-radius:999px;
  padding:.28rem .8rem;cursor:pointer;border:1px solid transparent;letter-spacing:.01em}
.trust-good{background:var(--teal-soft);color:var(--teal);border-color:var(--teal)}
.trust-neutral{background:var(--card);color:var(--ink-2);border-color:var(--line)}
.trust-warn{background:var(--warn-soft);color:var(--warn);border-color:var(--warn)}
button.trust:hover{filter:brightness(.97)}

details.why-date-panel>summary{color:var(--primary)}
.why-date-panel .rule{font-size:.95rem;color:var(--ink-2);background:var(--bg);
  border-left:3px solid var(--gold);border-radius:0 8px 8px 0;padding:.75rem .9rem}
ul.trust-lines{list-style:none;padding:0;margin:1rem 0}
ul.trust-lines li{display:grid;grid-template-columns:1.2rem 1fr;gap:.5rem;
  padding:.4rem 0;font-size:.93rem;border-top:1px solid var(--line)}
ul.trust-lines li:first-child{border-top:0}
.tl-yes span{color:var(--teal)} .tl-no span{color:var(--sacred)}
.tl-warn span{color:var(--warn)} .tl-info span{color:var(--muted)}
.tl-info{color:var(--ink-2)}
.divergence{background:var(--warn-soft);border-radius:10px;padding:.85rem 1rem;
  font-size:.92rem;color:var(--ink-2)}
.divergence strong{display:block;color:var(--warn);margin-bottom:.3rem}

/* Festivals use the sacred accent; gold is reserved for genuinely special
   observances so that it keeps meaning anything at all. */
.matter{border-left-color:var(--sacred)}
.matter.gov{border-left-color:var(--teal)}
.badge-vrat{background:var(--primary-soft);color:var(--primary)}
.badge-moon{background:var(--gold-soft);color:var(--gold)}
table.cal td.today{background:var(--primary-soft);box-shadow:inset 0 0 0 2px var(--primary)}
table.cal .ev{color:var(--sacred)}

/* ── date navigation ────────────────────────────────────────────────────
   Every control here is an <a> to a real URL. The picker is rendered
   server-side and hidden with [hidden] rather than built in JS, so the month
   is crawlable and the whole thing works with scripting off — the button just
   becomes inert and the arrows still navigate. */
.daynav{display:flex;align-items:center;justify-content:space-between;gap:.5rem;
  background:var(--card);border:1px solid var(--line);border-radius:999px;
  padding:.3rem .4rem;margin-bottom:.6rem}
.dn-arrow{text-decoration:none;color:var(--ink-2);font-size:1.3rem;line-height:1;
  padding:.25rem .8rem;border-radius:999px}
.dn-arrow:hover{background:var(--primary-soft);color:var(--primary)}
.dn-date{font:inherit;font-weight:650;font-size:.95rem;background:none;border:0;
  color:var(--ink);cursor:pointer;padding:.35rem .6rem;border-radius:999px}
.dn-date:hover{background:var(--primary-soft);color:var(--primary)}
.dn-today{font-size:.85rem;margin:-.2rem 0 1rem}
.dn-today a{color:var(--primary)}

.picker{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);
  padding:.9rem;margin-bottom:1rem;box-shadow:var(--shadow)}
.picker[hidden]{display:none}
.pk-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:.6rem}
.pk-nav{text-decoration:none;color:var(--ink-2);font-size:1.2rem;padding:0 .6rem;border-radius:8px}
.pk-nav:hover{background:var(--primary-soft);color:var(--primary)}
.pk-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:2px;text-align:center}
.pk-dow{font-size:.68rem;color:var(--muted);text-transform:uppercase;padding:.2rem 0}
.pk-blank{visibility:hidden}
.pk-day{display:block;padding:.42rem 0;font-size:.86rem;text-decoration:none;
  color:var(--ink);border-radius:8px}
.pk-day:hover{background:var(--primary-soft);color:var(--primary)}
.pk-today{box-shadow:inset 0 0 0 1.5px var(--primary);color:var(--primary);font-weight:650}
.pk-selected{background:var(--primary);color:#fff;font-weight:650}
.pk-selected:hover{background:var(--primary);color:#fff}
.pk-jump{display:flex;align-items:center;gap:.6rem;margin-top:.7rem;padding-top:.6rem;
  border-top:1px solid var(--line);font-size:.8rem}
.pk-jump label{color:var(--muted)}
.pk-jump span{display:flex;gap:.3rem;flex-wrap:wrap}
.pk-jump a{text-decoration:none;color:var(--ink-2);padding:.15rem .5rem;border-radius:999px}
.pk-jump a:hover{background:var(--primary-soft);color:var(--primary)}
.pk-jump a.on{background:var(--primary-soft);color:var(--primary);font-weight:650}
.pk-foot{display:flex;justify-content:space-between;margin-top:.6rem;font-size:.85rem}
.pk-foot a{color:var(--primary);text-decoration:none}

/* ── month grid ─────────────────────────────────────────────────────────
   Mobile: compact grid, then the selected day beneath it. Desktop: grid left,
   day right. Same markup either way — the panel is not a separate mobile
   component, so the two cannot drift. */
.cal-layout{display:grid;gap:1rem}
@media (min-width:900px){
  .wrap:has(.cal-layout){max-width:64rem}
  .cal-layout{grid-template-columns:minmax(0,1.55fr) minmax(15rem,1fr);align-items:start}
  .cal-day-col{position:sticky;top:1rem}
}
table.cal td{padding:0;height:auto}
table.cal td .cell{display:block;padding:.32rem .3rem .38rem;min-height:3.6rem;
  text-decoration:none;color:inherit;border-radius:8px}
table.cal td .cell:hover{background:var(--primary-soft)}
table.cal .d{display:block;font-size:.9rem;font-weight:600;line-height:1.1}
table.cal .t{display:block;font-size:.63rem;color:var(--muted);line-height:1.2;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
table.cal .mk{display:block;margin-top:.15rem;font-size:.6rem;letter-spacing:.1em}
table.cal td.today .cell{box-shadow:inset 0 0 0 2px var(--primary);background:var(--primary-soft)}
table.cal td.today .d{color:var(--primary)}
table.cal td.sel .cell{background:var(--primary);color:#fff}
table.cal td.sel .t,table.cal td.sel .d{color:#fff}
table.cal td.sel .mk i{color:#fff}
.mk-festival{color:var(--sacred)} .mk-vrat{color:var(--primary)}
.mk-puja{color:var(--gold)} .mk-solar{color:var(--warn)} .mk-moon{color:var(--ink-2)}
.legend{list-style:none;display:flex;flex-wrap:wrap;gap:.15rem 1rem;padding:.7rem 0 0;
  margin:0;font-size:.72rem;color:var(--muted)}
.legend i{font-style:normal;margin-right:.25rem}

/* selected-day panel */
.cal-day-col{background:var(--card);border:1px solid var(--line);
  border-radius:var(--radius);padding:1rem 1.1rem;box-shadow:var(--shadow)}
.dp-date{font-size:.82rem;color:var(--muted);margin:0 0 .3rem;text-transform:uppercase;
  letter-spacing:.04em}
.dp-today{background:var(--primary-soft);color:var(--primary);border-radius:999px;
  padding:.05rem .45rem;font-size:.68rem;margin-left:.3rem;letter-spacing:0}
.dp-tithi{font-family:var(--serif);font-size:1.2rem;margin:0 0 .1rem}
.dp-nak{font-size:.88rem;color:var(--ink-2);margin:0 0 .8rem}
ul.dp-obs{list-style:none;padding:0;margin:0 0 .8rem}
ul.dp-obs li{padding:.4rem 0;border-top:1px solid var(--line);font-size:.95rem}
ul.dp-obs li:first-child{border-top:0}
ul.dp-obs a{color:var(--sacred);text-decoration:none;font-weight:600}
ul.dp-obs a:hover{text-decoration:underline}
.dp-none,.dp-else{font-size:.88rem;margin:0 0 .8rem}
.dp-go a{color:var(--primary);font-weight:600;text-decoration:none}
