:root{--font-sans:system-ui, -apple-system, "Segoe UI", Roboto, Helvetica, Arial, "Noto Sans Oriya", "Noto Sans Telugu", "Noto Sans Devanagari", "Apple Color Emoji", "Segoe UI Emoji", sans-serif;--font-mono:ui-monospace, "SF Mono", "Cascadia Code", "Roboto Mono", Menlo, Consolas, monospace;--script-scale:1;--bg:#faf4e8;--bg-tint:#f3e9d4;--surface:#fffdf8;--ink:#241a12;--ink-2:#5a4a3a;--muted:#8a7a66;--hairline:#e9dec8;--hairline-strong:#dbcbad;--accent:#8c2f1f;--accent-strong:#7a2818;--accent-wash:#f5e7d6;--gold:#b8822a;--gold-strong:#9a6c1e;--gold-wash:#f6ecd6;--moon-full:#fffdf5;--moon-rim:#c9922f;--moon-dark:#2b2016;--sun-mark:#ef9d1f;--good:#1f7a4d;--good-wash:#e6f1e7;--neutral:#9a7b1f;--neutral-wash:#f4ebd3;--bad:#c03a30;--bad-wash:#f7e7e2;--vara-sun:#fdf0dc;--vara-mon:#fbf8f1;--vara-tue:#fbe9e6;--vara-wed:#e9f4ea;--vara-thu:#fdf6da;--vara-fri:#fdeef2;--vara-sat:#ebedf6;--vara-sun-ink:#975a0f;--vara-mon-ink:#6e6455;--vara-tue-ink:#a8322a;--vara-wed-ink:#2e7643;--vara-thu-ink:#7f6516;--vara-fri-ink:#a9476d;--vara-sat-ink:#4a5691;--shadow:0 1px 2px #241a120d, 0 6px 20px #241a120f;--radius:14px;--radius-sm:9px;--pad:clamp(1rem, 3vw, 2rem);--gap:clamp(.9rem, 2vw, 1.35rem);--maxw:1120px;color-scheme:light}:root:lang(or),:root:lang(hi),:root:lang(te){--script-scale:1.18}:root[data-theme=dark]{--bg:#0f1419;--bg-tint:#161c22;--surface:#1a222b;--ink:#f0e9dc;--ink-2:#cfc5b4;--muted:#9a9182;--hairline:#2a333d;--hairline-strong:#384450;--accent:#ffd25a;--accent-strong:#ffde7e;--accent-wash:#2e2717;--gold:#e7b34e;--gold-strong:#f0c36a;--gold-wash:#2a2415;--moon-full:#fffdf5;--moon-rim:#e7b34e;--moon-dark:#0b0e13;--sun-mark:#ffc44d;--good:#4cbe86;--good-wash:#16281f;--neutral:#d3b25c;--neutral-wash:#2c2413;--bad:#e9736b;--bad-wash:#2f1a17;--vara-sun:#2a2015;--vara-mon:#21201d;--vara-tue:#2b1c1a;--vara-wed:#17241a;--vara-thu:#272115;--vara-fri:#2a1c21;--vara-sat:#1a1d28;--vara-sun-ink:#bf7213;--vara-mon-ink:#8f826f;--vara-tue-ink:#d55f57;--vara-wed-ink:#399554;--vara-thu-ink:#a1801c;--vara-fri-ink:#c0688b;--vara-sat-ink:#7581b9;--shadow:0 1px 2px #0000004d, 0 8px 26px #00000059;color-scheme:dark}@media (prefers-color-scheme:dark){:root:not([data-theme]){--bg:#0f1419;--bg-tint:#161c22;--surface:#1a222b;--ink:#f0e9dc;--ink-2:#cfc5b4;--muted:#9a9182;--hairline:#2a333d;--hairline-strong:#384450;--accent:#ffd25a;--accent-strong:#ffde7e;--accent-wash:#2e2717;--gold:#e7b34e;--gold-strong:#f0c36a;--gold-wash:#2a2415;--moon-full:#fffdf5;--moon-rim:#e7b34e;--moon-dark:#0b0e13;--sun-mark:#ffc44d;--good:#4cbe86;--good-wash:#16281f;--neutral:#d3b25c;--neutral-wash:#2c2413;--bad:#e9736b;--bad-wash:#2f1a17;--vara-sun:#2a2015;--vara-mon:#21201d;--vara-tue:#2b1c1a;--vara-wed:#17241a;--vara-thu:#272115;--vara-fri:#2a1c21;--vara-sat:#1a1d28;--vara-sun-ink:#bf7213;--vara-mon-ink:#8f826f;--vara-tue-ink:#d55f57;--vara-wed-ink:#399554;--vara-thu-ink:#a1801c;--vara-fri-ink:#c0688b;--vara-sat-ink:#7581b9;--shadow:0 1px 2px #0000004d, 0 8px 26px #00000059;color-scheme:dark}}*{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{font-family:var(--font-sans);color:var(--ink);background:var(--bg);-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;margin:0;font-size:16px;line-height:1.5}main{max-width:var(--maxw);padding:0 var(--pad) clamp(2.5rem, 6vw, 4rem);margin:0 auto}main.main--wide{max-width:min(1560px,96vw)}h1,h2,h3{margin:0;font-weight:600}button{font:inherit;cursor:pointer}:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:3px}.controls{z-index:20;justify-content:space-between;align-items:flex-start;gap:var(--gap);background:color-mix(in srgb, var(--bg) 86%, transparent);backdrop-filter:saturate(1.4)blur(10px);border-bottom:1px solid var(--hairline);flex-wrap:wrap;margin-bottom:clamp(1.5rem,4vw,2.75rem);padding:.85rem 0;display:flex;position:sticky;top:0}.location-control{flex-wrap:wrap;flex:auto;align-items:center;gap:.5rem;min-width:min(100%,15rem);display:flex;position:relative}.location-control>button{color:var(--accent-strong);background:var(--accent-wash);white-space:nowrap;border:1px solid #0000;border-radius:999px;padding:.5rem .85rem;font-size:.82rem;font-weight:550;transition:background .15s}.location-control>button:hover{background:color-mix(in srgb, var(--accent-wash) 70%, var(--accent) 30%)}.location-control>input{min-width:0;color:var(--ink);background:var(--surface);border:1px solid var(--hairline-strong);border-radius:var(--radius-sm);flex:12rem;padding:.55rem .85rem}.location-control>input::placeholder{color:var(--muted)}.location-control>input:focus-visible{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-wash);outline:none}.location-control__results{z-index:30;background:var(--surface);border:1px solid var(--hairline-strong);border-radius:var(--radius-sm);max-height:18rem;box-shadow:var(--shadow);margin:0;padding:.3rem;list-style:none;position:absolute;top:calc(100% + .4rem);left:0;right:0;overflow-y:auto}.location-control__results li+li{border-top:1px solid var(--hairline)}.location-control__results button{text-align:left;width:100%;color:var(--ink);background:0 0;border:0;border-radius:6px;padding:.55rem .65rem;font-size:.92rem;display:block}.location-control__results button:hover{background:var(--bg-tint);color:var(--accent-strong)}.date-control{border:1px solid var(--hairline-strong);border-radius:var(--radius-sm);background:var(--surface);align-items:stretch;gap:0;display:inline-flex;overflow:hidden}.date-control button{color:var(--ink-2);background:0 0;border:0;padding:0 .9rem;font-size:1.2rem;line-height:1;transition:color .15s,background .15s}.date-control button:hover{color:var(--accent-strong);background:var(--bg-tint)}.date-control input{color:var(--ink);background:var(--surface);border:0;border-left:1px solid var(--hairline);border-right:1px solid var(--hairline);font:inherit;color-scheme:light dark;padding:.5rem .7rem}.date-control input:focus-visible{box-shadow:inset 0 0 0 2px var(--accent);outline:none}.hero{padding:clamp(.5rem,2vw,1.5rem) 0 clamp(1.75rem,4vw,2.75rem)}.hero__eyebrow{letter-spacing:.16em;text-transform:uppercase;color:var(--accent-strong);margin:0 0 .5rem;font-size:.76rem;font-weight:600}.hero__tithi{letter-spacing:-.025em;color:var(--ink);margin:0;font-size:clamp(2.6rem,8vw,4.5rem);font-weight:700;line-height:1.02}.hero__tithi:after{content:"";background:var(--accent);border-radius:2px;width:2.75rem;height:3px;margin-top:.85rem;display:block}.hero__sub{color:var(--ink-2);margin:1rem 0 0;font-size:1.02rem}.hero__sun{font-family:var(--font-mono);font-variant-numeric:tabular-nums;color:var(--muted);flex-wrap:wrap;gap:.4rem 1.4rem;margin:.9rem 0 0;font-size:.9rem;display:flex}.hero__sun span{position:relative}.hero__sun span+span:before{content:"";background:var(--hairline-strong);border-radius:50%;width:3px;height:3px;position:absolute;top:50%;left:-.75rem;transform:translateY(-50%)}.hero__festivals{flex-wrap:wrap;gap:.5rem;margin:1.25rem 0 0;padding:0;list-style:none;display:flex}.hero__next{color:var(--muted);margin:.45rem 0 0;font-size:.9rem}.chip{color:var(--accent-strong);background:var(--accent-wash);border-radius:999px;padding:.3rem .75rem;font-size:.82rem;font-weight:550}.grid{gap:var(--gap);grid-template-columns:1fr;align-items:stretch;display:grid}@media (width>=60rem){.grid{grid-template-columns:repeat(3,1fr)}}.card{background:var(--surface);border:1px solid var(--hairline);border-radius:var(--radius);box-shadow:var(--shadow);padding:clamp(1.1rem,2.5vw,1.5rem)}.card:has(.chogh-group),.card:has(.muhurta-group){grid-column:1/-1}.card:has(.muhurta-group) .card__body{gap:1.25rem var(--gap);grid-template-columns:repeat(auto-fit,minmax(min(100%,16rem),1fr));display:grid}.card__title{border-bottom:1px solid var(--hairline);font-size:calc(.74rem * var(--script-scale));letter-spacing:.12em;text-transform:uppercase;color:var(--muted);align-items:center;gap:.55rem;margin:0 0 .9rem;padding-bottom:.7rem;font-weight:600;display:flex}.card__icon{color:var(--gold);align-items:center;line-height:0;display:inline-flex}.card__body{flex-direction:column;gap:.1rem;display:flex}.muhurta-group{min-width:0}.muhurta-group__title{letter-spacing:.1em;text-transform:uppercase;margin:0 0 .2rem;font-size:.7rem;font-weight:600}.muhurta-group[data-quality=good] .muhurta-group__title{color:var(--good)}.muhurta-group[data-quality=bad] .muhurta-group__title{color:var(--bad)}.row{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:.35rem 1rem;padding:.5rem 0;display:flex}.row+.row{border-top:1px solid var(--hairline)}.row__label{font-size:calc(.9rem * var(--script-scale));color:var(--muted);flex:none}.row__value{text-align:right;min-width:0;font-size:calc(.95rem * var(--script-scale));color:var(--ink);font-variant-numeric:tabular-nums;overflow-wrap:anywhere;flex:auto}.festival-list{flex-direction:column;gap:.35rem;margin:0 0 .35rem;padding:0;list-style:none;display:flex}.festival-list li{color:var(--accent-strong);background:var(--accent-wash);border-radius:var(--radius-sm);padding:.4rem .65rem;font-size:.95rem;font-weight:500}.card:has(.chogh-group) .card__body{gap:1.25rem var(--gap);grid-template-columns:repeat(auto-fit,minmax(min(100%,16rem),1fr));display:grid}.chogh-group__title{letter-spacing:.12em;text-transform:uppercase;color:var(--muted);margin:0 0 .6rem;font-size:.72rem;font-weight:600}.chogh-list{flex-direction:column;gap:.35rem;margin:0;padding:0;list-style:none;display:flex}.chogh-item{border-radius:var(--radius-sm);border-left:3px solid var(--hairline-strong);background:var(--bg-tint);justify-content:space-between;align-items:baseline;gap:.75rem;padding:.4rem .6rem .4rem .75rem;display:flex}.chogh-item__name{font-size:.9rem;font-weight:500}.chogh-item__time{font-family:var(--font-mono);font-variant-numeric:tabular-nums;color:var(--ink-2);white-space:nowrap;font-size:.82rem}.chogh-item[data-quality=good]{border-left-color:var(--good);background:var(--good-wash)}.chogh-item[data-quality=neutral]{border-left-color:var(--neutral);background:var(--neutral-wash)}.chogh-item[data-quality=bad]{border-left-color:var(--bad);background:var(--bad-wash)}.state{padding:clamp(2.5rem, 8vw, 4.5rem) var(--pad);text-align:center;color:var(--muted);font-size:1rem}.state--error{color:var(--bad)}.notice{margin:0 0 var(--gap);color:var(--neutral);background:var(--neutral-wash);border:1px solid color-mix(in srgb, var(--neutral) 30%, transparent);border-radius:var(--radius-sm);padding:.85rem 1.1rem;font-size:.92rem}@media (prefers-reduced-motion:reduce){*{transition-duration:.01ms!important;animation-duration:.01ms!important}}.topbar{max-width:var(--maxw);padding:.6rem var(--pad) 0;justify-content:flex-end;margin:0 auto;display:flex}.theme-toggle{width:2.25rem;height:2.25rem;color:var(--gold-strong);background:var(--gold-wash);border:1px solid var(--hairline-strong);border-radius:999px;place-items:center;transition:background .15s,color .15s;display:inline-grid}.theme-toggle:hover{color:var(--accent-strong);background:color-mix(in srgb, var(--gold-wash) 60%, var(--accent-wash) 40%)}.calendar__bar{margin:0 0 var(--gap);flex-wrap:wrap;align-items:center;gap:.6rem;display:flex}.calendar__title{font-size:clamp(1.3rem,4vw,1.9rem);font-weight:700}.calendar__nav{width:2rem;height:2rem;color:var(--ink-2);background:var(--surface);border:1px solid var(--hairline-strong);border-radius:var(--radius-sm);place-items:center;font-size:1.3rem;display:grid}.calendar__nav:hover{color:var(--accent-strong);background:var(--bg-tint)}.calendar__today,.calendar__back{color:var(--accent-strong);background:var(--accent-wash);border:1px solid #0000;border-radius:999px;padding:.4rem .8rem;font-size:.82rem;font-weight:550;text-decoration:none}.calendar__back{color:var(--gold-strong);background:var(--gold-wash);margin-left:auto}.calendar__layout{gap:var(--gap);grid-template-columns:1fr;display:grid}@media (width>=60rem){.calendar__layout{grid-template-columns:3fr 1fr}}.calendar__main{gap:var(--gap);flex-direction:column;min-width:0;display:flex}.panji-picker{margin:0 0 var(--gap);flex-wrap:wrap;gap:.5rem;display:flex}.panji-picker__item{color:var(--ink);background:var(--surface);border:1px solid var(--hairline-strong);border-radius:999px;padding:.4rem .8rem;font-size:.82rem;font-weight:550;text-decoration:none}.panji-picker__item:hover{color:var(--accent-strong);background:var(--bg-tint)}.panji-picker__item.is-active{color:var(--accent-strong);background:var(--accent-wash);border-color:#0000}.calendar__grid{background:var(--bg-tint);box-shadow:0 0 0 1.5px var(--panji-accent,var(--gold)), var(--shadow);border-radius:16px;grid-template-columns:repeat(7,minmax(0,1fr));gap:4px;padding:16px;display:grid;position:relative}.panji-frame{pointer-events:none;width:calc(100% + 14px);height:calc(100% + 14px);position:absolute;inset:-7px;overflow:visible}.panji-frame__corner{transform-origin:50%}.panji-frame__corner--tr{transform:scaleX(-1)}.panji-frame__corner--bl{transform:scaleY(-1)}.panji-frame__corner--br{transform:scale(-1)}@media (width<=48rem){.panji-frame__edge{display:none}.calendar__marks svg{width:20px;height:20px}}.calendar__wd{color:var(--ink-2)}.calendar__wd[data-vara=sun]{color:var(--vara-sun-ink)}.calendar__wd[data-vara=mon]{color:var(--vara-mon-ink)}.calendar__wd[data-vara=tue]{color:var(--vara-tue-ink)}.calendar__wd[data-vara=wed]{color:var(--vara-wed-ink)}.calendar__wd[data-vara=thu]{color:var(--vara-thu-ink)}.calendar__wd[data-vara=fri]{color:var(--vara-fri-ink)}.calendar__wd[data-vara=sat]{color:var(--vara-sat-ink)}.calendar__wd{text-align:center;text-transform:uppercase;letter-spacing:.08em;padding:.3rem 0;font-size:.7rem;font-weight:600}.calendar__cell{min-width:0;min-height:4.4rem;color:var(--ink);background:var(--cell-bg,var(--surface));border:1px solid var(--hairline);border-radius:var(--radius-sm);flex-direction:column;gap:.15rem;padding:.35rem .4rem;text-decoration:none;display:flex;position:relative}.calendar__cell.is-vara-sun{--cell-bg:var(--vara-sun)}.calendar__cell.is-vara-mon{--cell-bg:var(--vara-mon)}.calendar__cell.is-vara-tue{--cell-bg:var(--vara-tue)}.calendar__cell.is-vara-wed{--cell-bg:var(--vara-wed)}.calendar__cell.is-vara-thu{--cell-bg:var(--vara-thu)}.calendar__cell.is-vara-fri{--cell-bg:var(--vara-fri)}.calendar__cell.is-vara-sat{--cell-bg:var(--vara-sat)}.calendar__cell.has-fest{box-shadow:inset 3px 0 0 var(--accent)}.calendar__cell.has-fest.is-today{box-shadow:inset 3px 0 0 var(--accent), inset 0 0 0 1px var(--accent)}a.calendar__cell:hover{border-color:var(--accent)}.calendar__cell.is-out{opacity:.4}.calendar__cell.is-today{border-color:var(--accent);box-shadow:inset 0 0 0 1px var(--accent)}.calendar__date{font-variant-numeric:tabular-nums;font-size:1rem;font-weight:600}.calendar__marks{align-items:center;gap:.15rem;line-height:0;display:flex;position:absolute;top:.3rem;right:.35rem}.calendar__sun,.calendar__moon{color:var(--gold);line-height:0}.calendar__tithi{font-size:calc(.7rem * var(--script-scale));color:var(--ink-2);overflow-wrap:anywhere}.calendar__dot{background:var(--accent);border-radius:50%;width:6px;height:6px;position:absolute;bottom:.4rem;right:.45rem}.calendar__cell-fests{display:none}.calendar__cell-fest{min-width:0;font-size:calc(.7rem * var(--script-scale));color:var(--accent-strong);text-overflow:ellipsis;white-space:nowrap;font-weight:550;line-height:1.2;display:block;overflow:hidden}.calendar__detail{display:none}.calendar__lunar,.calendar__solar,.calendar__nak{text-overflow:ellipsis;white-space:nowrap;min-width:0;line-height:1.18;overflow:hidden}@media (width>=48rem){.calendar__cell{min-height:clamp(6rem,6.5vw,8.5rem);padding:.5rem .55rem}.calendar__date{font-size:1.15rem}.calendar__tithi{display:none}.calendar__detail{flex-direction:column;gap:2px;min-width:0;margin-top:3px;display:flex}.calendar__lunar{font-size:calc(.8rem * var(--script-scale));color:var(--ink)}.calendar__solar{font-size:calc(.74rem * var(--script-scale));color:var(--gold-strong);font-variant-numeric:tabular-nums;font-weight:600}.calendar__nak{font-size:calc(.72rem * var(--script-scale));color:var(--muted)}.calendar__cell-fests{flex-direction:column;gap:1px;min-width:0;margin-top:auto;display:flex}.calendar__cell .calendar__dot{display:none}}.calendar__fests-h{letter-spacing:.1em;text-transform:uppercase;color:var(--muted);margin:0 0 .6rem;font-size:.88rem;font-weight:600}.calendar__fests-list{flex-direction:column;gap:.35rem;margin:0;padding:0;list-style:none;display:flex}.calendar__fests-list a{color:var(--accent-strong);background:var(--accent-wash);border-radius:var(--radius-sm);align-items:baseline;gap:.5rem;padding:.4rem .6rem;font-size:.9rem;text-decoration:none;display:flex}.calendar__fest-mark{flex:none;align-self:center;align-items:center;gap:.15rem;line-height:0;display:inline-flex}.calendar__fest-date{font-variant-numeric:tabular-nums;min-width:1.4rem;font-weight:700}.calendar__fests-empty{color:var(--muted);font-size:.9rem}.calendar-link{color:var(--gold-strong);background:var(--gold-wash);white-space:nowrap;border-radius:999px;align-self:center;padding:.5rem .85rem;font-size:.82rem;font-weight:550;text-decoration:none}.calendar-link:hover{color:var(--accent-strong);background:var(--accent-wash)}.month-banner{margin:0 0 var(--gap);border-radius:var(--radius);color:var(--ink);background:color-mix(in srgb, var(--panji-accent) 10%, var(--surface));box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--panji-accent) 28%, transparent);grid-template-columns:auto 1fr auto;align-items:center;gap:0 1rem;padding:.9rem 1.1rem;display:grid}.month-banner__moon{line-height:0}.month-banner__lunar{min-width:0}.month-banner__lunar-main{font-size:calc(1.05rem * var(--script-scale));color:var(--ink);margin:0;font-weight:650}.month-banner__lunar-sub,.month-banner__place{font-size:calc(.82rem * var(--script-scale));color:var(--ink-2);margin:.1rem 0 0}.month-banner__place{color:var(--muted)}.month-banner__greg{flex-direction:column;align-items:flex-end;line-height:1.05;display:flex}.month-banner__day{font-variant-numeric:tabular-nums;letter-spacing:-.02em;color:var(--accent-strong);font-size:clamp(2.6rem,5vw,3.4rem);font-weight:700}.month-banner__my{white-space:nowrap;color:var(--ink-2);margin-top:.1rem;font-size:clamp(.95rem,1.4vw,1.1rem);font-weight:600}.month-banner__fest{text-align:center;border-top:1px solid color-mix(in srgb, var(--panji-accent) 22%, transparent);font-size:calc(.9rem * var(--script-scale));grid-column:1/-1;margin:.6rem 0 0;padding-top:.55rem}.month-banner__fest a{color:var(--accent-strong);font-weight:600;text-decoration:none}@media (width<=48rem){.month-banner{grid-template-columns:auto 1fr}.month-banner__greg{grid-column:1/-1;align-items:flex-start;margin-top:.6rem}}
