/* Stylesheet for the /calendar/ section only; independent of main.*.css. */
.cal-app{
  --cal-bg:#f3f5f9;--cal-surface:#fff;--cal-border:#dde2ec;
  --cal-ink:#1b2033;--cal-muted:#5b6478;
  --cal-nav:#141a33;--cal-primary:#4b3fd1;--cal-tint:#eef0ff;
  --cal-accent:#f5b52e;--cal-eclipse-ink:#8a5a00;--cal-retro:#b3341f;--cal-ingress:#2bb36b;--cal-ingress-ink:#1f8a5b;
  --cal-sign-fire:#CF000F;--cal-sign-earth:#007D00;--cal-sign-air:#965F00;--cal-sign-water:#365FCC;
  --cal-radius:12px;--cal-shadow:0 1px 2px rgba(20,26,51,.06),0 4px 12px rgba(20,26,51,.04);
  --cal-pad:clamp(1rem,4vw,2.5rem);
  margin:0;background:var(--cal-bg);color:var(--cal-ink);
  font:16px/1.5 system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans Symbols 2","Noto Sans Symbols",sans-serif;
  -webkit-text-size-adjust:100%;
}
.cal-app *,.cal-app *::before,.cal-app *::after{box-sizing:border-box}
.cal-app a{color:var(--cal-primary);text-underline-offset:.18em}
.cal-app a:focus-visible,.cal-app button:focus-visible,.cal-app select:focus-visible{outline:3px solid var(--cal-primary);outline-offset:2px;border-radius:4px}
.cal-app h1,.cal-app h2,.cal-app h3{line-height:1.2;margin:0}
.cal-app ul,.cal-app ol{margin:0;padding:0;list-style:none}

/* Header: navy strip + white brand bar */
.cal-strip{background:var(--cal-nav);padding:.45rem var(--cal-pad);font-size:.875rem}
.cal-strip a{color:var(--cal-accent);font-weight:700;text-decoration:none;display:inline-flex;gap:.4rem;align-items:center}
.cal-strip a:hover{text-decoration:underline}
.cal-strip-logo{width:18px;height:18px;margin:-2px 0}
.cal-strip a:focus-visible{outline-color:var(--cal-accent)}
.cal-bar{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:.5rem 1.5rem;
  background:var(--cal-surface);border-bottom:1px solid var(--cal-border);padding:.5rem var(--cal-pad)}
.cal-brand{display:flex;align-items:center;gap:.65rem;color:var(--cal-ink)!important;font-weight:800;font-size:1.25rem;text-decoration:none}
.cal-brand img{display:block;width:44px;height:44px}
.cal-bar nav{position:relative;display:flex;flex-wrap:wrap;gap:.25rem;overflow:visible;max-width:100%}
.cal-bar nav>a,.cal-events-menu>summary{display:block;color:var(--cal-ink);text-decoration:none;font-weight:600;padding:.45rem .8rem;border-radius:8px;white-space:nowrap}
.cal-bar nav>a:hover,.cal-events-menu>summary:hover{background:var(--cal-tint);color:var(--cal-primary)}
.cal-bar nav>a[aria-current],.cal-events-menu.is-current>summary{color:var(--cal-primary);box-shadow:inset 0 -3px 0 var(--cal-accent);border-radius:8px 8px 0 0}
.cal-events-menu{position:relative}
.cal-events-menu>summary{list-style:none;cursor:pointer}
.cal-events-menu>summary:focus-visible{outline:3px solid var(--cal-primary);outline-offset:2px;border-radius:8px}
.cal-events-menu>summary::-webkit-details-marker{display:none}
.cal-events-menu>summary::after{content:" ▾";font-size:.8em}
.cal-events-links{position:absolute;top:calc(100% + .25rem);right:0;z-index:20;min-width:12rem;padding:.3rem;background:var(--cal-surface);border:1px solid var(--cal-border);border-radius:10px;box-shadow:var(--cal-shadow)}
.cal-bar nav .cal-events-links a{display:block;padding:.5rem .65rem;border-radius:6px;color:var(--cal-ink);text-decoration:none}
.cal-bar nav .cal-events-links a[aria-current]{color:var(--cal-primary);background:var(--cal-tint);box-shadow:none;border-radius:6px}
.cal-bar-end{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem 1rem;min-width:0;max-width:100%}
.cal-bar-end nav{min-width:0}
.cal-timezone-control{display:inline-flex;align-items:center;gap:.3rem;padding:0 .2rem 0 .55rem;border:1px solid var(--cal-border);border-radius:999px;background:var(--cal-surface);box-shadow:var(--cal-shadow);font-size:.85rem;white-space:nowrap;transition:border-color .15s,background-color .15s}
.cal-timezone-control:hover{border-color:var(--cal-primary);background:var(--cal-tint)}
.cal-timezone-control:has(select:focus-visible){outline:3px solid var(--cal-primary);outline-offset:2px}
.cal-timezone-control label{display:flex;cursor:pointer}
.cal-timezone-control img{display:block;width:22px;height:22px}
.cal-timezone-control select{min-height:2.15rem;padding:.3rem .35rem;border:0;background:transparent;color:var(--cal-ink);font:inherit;font-weight:600;cursor:pointer}
.cal-app .cal-timezone-control select:focus-visible{outline:none}

/* Page frame */
.cal-main{max-width:1240px;margin:0 auto;padding:1.25rem var(--cal-pad) 2.5rem;display:grid;gap:1.25rem}
.cal-toolbar{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:.5rem 1rem;font-size:.9rem}
.cal-crumb{color:var(--cal-muted);margin:0}
.cal-crumb a{color:var(--cal-muted);font-weight:600;text-decoration:none}
.cal-separator{display:inline-block;padding:0 .45rem;color:var(--cal-muted)}
.cal-pager{display:flex;gap:.5rem}
.cal-btn{display:inline-block;background:var(--cal-surface);border:1px solid var(--cal-border);border-radius:8px;padding:.35rem .8rem;font-weight:600;text-decoration:none;box-shadow:var(--cal-shadow)}
.cal-btn:hover{background:var(--cal-tint);border-color:var(--cal-primary)}
.cal-title{font-size:clamp(1.5rem,3.5vw,2.1rem)}
.cal-title .small{font-size:small}
.cal-title .block{display:block}
.headline-date{display:block;font-size:clamp(1.5rem,3.5vw,2.1rem);font-weight:700;line-height:1.2}
.cal-sub{margin:.25rem 0 0;color:var(--cal-muted)}

/* General styles for the calendar */
time.short-time {text-transform:lowercase}
.bold{font-weight:700}

/* Cards and tiles */
.cal-card{background:var(--cal-surface);border:1px solid var(--cal-border);border-radius:var(--cal-radius);box-shadow:var(--cal-shadow);padding:1rem 1.25rem}
.cal-card>h2{font-size:1.05rem;margin-bottom:.75rem}
.cal-kpi{display:flex;flex-wrap:wrap;gap:.8rem;align-items:center}
.cal-moon-summary{display:flex;align-items:center;gap:.5rem;min-width:0}
button.cal-moon-summary{appearance:none;margin:0;padding:0;border:0;background:transparent;color:inherit;font:inherit;text-align:left;opacity:1;cursor:pointer}
button.cal-moon-summary:enabled .cal-value.small{text-decoration:underline dotted;text-underline-offset:4px}
button.cal-moon-summary:enabled:hover{color:var(--cal-primary)}
button.cal-moon-summary:disabled{cursor:default}
.cal-kpi .cal-value.small{font-size:.875rem}
.cal-moon-summary .cal-value{min-width:0}
.cal-moon-dialog{width:34rem;max-width:calc(100% - 2rem);max-height:calc(100dvh - 2rem);overflow:auto;border:1px solid var(--cal-border);border-radius:var(--cal-radius);padding:1.25rem;background:var(--cal-surface);color:var(--cal-ink);font:inherit;box-shadow:0 16px 48px rgba(20,26,51,.25)}
.cal-moon-dialog::backdrop{background:rgba(20,26,51,.55)}
.cal-moon-dialog h2{font-size:1.15rem}
.cal-moon-dialog p{margin:.75rem 0 0}
.cal-moon-dialog .cal-btn{margin-top:1.25rem;color:var(--cal-ink);font:inherit;cursor:pointer}
.cal-badges{display:flex;gap:.4rem}
.cal-badge{flex:none;display:grid;place-items:center;width:2.75rem;height:2.75rem;border-radius:50%;background:var(--cal-tint);color:var(--cal-primary);font-size:1.5rem;line-height:1}
.cal-value{display:block;font-size:1.2rem;font-weight:700;font-variant-numeric:tabular-nums}
.cal-kpi ul{flex-basis:100%;margin:.5rem 0 0;display:grid;gap:.6rem}
.cal-kpi li{display:flex;gap:.4rem;align-items:baseline;font-size:.95rem;padding:.45rem 0 .45rem .6rem;border-left:3px solid var(--cal-border)}
.cal-kpi li.ingress{border-left-color:var(--cal-ingress)}
.cal-kpi li.ingress .cal-glyph:not([data-sign-glyph]){color:var(--cal-ingress-ink)}
.cal-kpi li.station{border-left-color:var(--cal-retro)}
.cal-kpi li.station .cal-glyph:not([data-sign-glyph]){color:var(--cal-retro)}
.cal-kpi li.ingress strong,.cal-kpi li.station strong{font-weight:600}
.cal-kpi .cal-eclipse{color:var(--cal-eclipse-ink);font-weight:700}
.cal-kpi li.ingress,.cal-kpi li.station{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center}
.cal-kpi li.ingress>span,.cal-kpi li.station>span{display:flex;gap:.4rem;align-items:baseline;min-width:0}
.cal-kpi time,.cal-events time{font-weight:700;font-variant-numeric:tabular-nums;text-align:right}
.cal-kpi li.ingress time,.cal-kpi li.station time{white-space:nowrap;font-size:.875rem}
.cal-none{color:var(--cal-muted);font-size:.95rem}
.cal-flush{margin:0}
/* Center the inline eclipse icon against its text line instead of its baseline. */
.cal-eclipse-icon{vertical-align:middle;margin-right:3px}
.cal-aspect-summary{margin:.75rem 0 0}
.cal-day-summary-p{margin:.75rem 0 0}
.cal-instead-link{font-weight:600;text-decoration:underline dotted;text-underline-offset:4px}
.cal-glyph{font-size:1.25rem;line-height:1}
.cal-app [data-sign-glyph="\2648"],.cal-app [data-sign-glyph="\264c"],.cal-app [data-sign-glyph="\2650"]{color:var(--cal-sign-fire)}
.cal-app [data-sign-glyph="\2649"],.cal-app [data-sign-glyph="\264d"],.cal-app [data-sign-glyph="\2651"]{color:var(--cal-sign-earth)}
.cal-app [data-sign-glyph="\264a"],.cal-app [data-sign-glyph="\264e"],.cal-app [data-sign-glyph="\2652"]{color:var(--cal-sign-air)}
.cal-app [data-sign-glyph="\264b"],.cal-app [data-sign-glyph="\264f"],.cal-app [data-sign-glyph="\2653"]{color:var(--cal-sign-water)}
.cal-moon-icon{display:block;flex:none;width:1.25rem;height:1.25rem;align-self:center}
/* Month events: fixed icon column so wrapped text hangs clear of it; the text is wrapped in one <span> to stay a single grid item. */
.cal-month-event{display:grid;grid-template-columns:2.75rem minmax(0,1fr);gap:.5rem;align-items:start;margin:0;padding:.6rem 0;border-bottom:1px solid var(--cal-border)}
.cal-month-event:last-child{border-bottom:0}
.cal-month-event-icon{display:block;margin-top:.125rem}
.cal-month-event-glyphs{display:flex;align-items:center;gap:.2rem;margin-top:.125rem;white-space:nowrap}
.cal-badge .cal-moon-icon{width:1.5rem;height:1.5rem}

.cal-dash{display:grid;gap:1.25rem;grid-template-columns:minmax(0,1fr)}
@media(min-width:62rem){.cal-dash{grid-template-columns:minmax(0,5fr) minmax(0,6fr);align-items:start}.cal-span{grid-column:1/-1}}

/* Exact aspects share the summary tile; a .divider-text rule separates them from highlights. */
.cal-events li{display:grid;grid-template-columns:2rem minmax(0,1fr) 4.5rem;gap:.5rem;align-items:baseline;padding:.6rem 0;border-bottom:1px solid var(--cal-border)}
.cal-events li:last-child{border-bottom:0}
.cal-moon-time-note{margin:0 0 .5rem;color:var(--cal-muted);font-size:.9rem}
.cal-moon-dates li{padding:.6rem 0;border-bottom:1px solid var(--cal-border)}
.cal-moon-dates li:last-child{border-bottom:0}
.cal-retrogrades li{padding:.6rem 0;border-bottom:1px solid var(--cal-border)}
.cal-retrogrades li:last-child{border-bottom:0}
.cal-retrogrades time{font-weight:700;font-variant-numeric:tabular-nums}
.cal-moon-dates .cal-moon-icon{display:inline-block;vertical-align:-.2em;margin-right:.4rem}
.cal-moon-date{margin-right:.4rem;white-space:nowrap;font-weight:700}
.cal-moon-date-time{margin-left:.4rem;white-space:nowrap}
.cal-moon-date-time time{font-variant-numeric:tabular-nums}
.cal-aspects{flex-basis:100%;min-width:0}
.cal-aspects li{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:.75rem;padding:.6rem 0;border-left:0}
.cal-aspect-glyphs{display:inline-flex;align-items:center;gap:.2rem;white-space:nowrap}
.cal-aspect-glyphs .cal-aspect-symbol{margin:0 .4rem}
.cal-aspects time{white-space:nowrap;font-size:.875rem}
/* Horizontal rule with centered label text. */
.divider-text{display:flex;align-items:center;text-align:center;width:100%;margin:1em 0 0 0;font-size:.72rem;letter-spacing:.06em;text-transform:uppercase;color:var(--cal-muted);font-weight:600}
.divider-text:before,.divider-text:after{content:"";flex:1;border-bottom:1px solid var(--cal-border)}
.divider-text:not(:empty):before{margin-right:1em}
.divider-text:not(:empty):after{margin-left:1em}

/* Positions table */
.cal-tablewrap{overflow-x:auto}
.cal-app table{width:100%;border-collapse:collapse;text-align:left;font-variant-numeric:tabular-nums}
.cal-app th{font-size:.72rem;letter-spacing:.06em;text-transform:uppercase;color:var(--cal-muted);padding:.4rem .5rem;border-bottom:2px solid var(--cal-border)}
.cal-app td{padding:.5rem;border-bottom:1px solid var(--cal-border)}
.cal-app tbody tr:nth-child(even){background:#fafbfd}
.cal-app tbody tr:last-child td{border-bottom:0}
.cal-name{white-space:nowrap}
.cal-name .cal-glyph{margin-right:.4rem}
.cal-chip{display:inline-block;border-radius:999px;padding:.1rem .6rem;font-size:.8rem;font-weight:700;background:var(--cal-tint);color:var(--cal-primary)}
.cal-chip.retro{background:#fdecea;color:var(--cal-retro)}

/* Hub / year / month tile grids */
.cal-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,9rem),1fr));gap:.75rem}
/* Sign-change month cards: at most 3 per row (1/3 of width minus 2 gaps), never narrower than 17rem, 1 per row on mobile. */
.cal-sign-change-months{grid-template-columns:repeat(auto-fill,minmax(min(100%,max(17rem,calc((100% - 1.5rem)/3))),1fr))}
/* Sign-change "Group by" segmented radios; :not([hidden]) keeps it hidden until JavaScript reveals it. */
.cal-sign-change-controls:not([hidden]){display:flex;align-items:center;gap:.6rem;justify-self:start;font-size:.9rem}
.cal-sign-change-label{color:var(--cal-muted);font-weight:600}
.cal-segmented{position:relative;display:inline-flex;gap:.2rem;padding:.2rem;border:1px solid var(--cal-border);border-radius:999px;background:var(--cal-surface);box-shadow:var(--cal-shadow)}
/* Visually hide the native radios but keep them focusable for keyboard and screen readers. */
.cal-segmented input{position:absolute;width:1px;height:1px;margin:0;opacity:0;pointer-events:none}
.cal-segmented label{padding:.35rem 1rem;border-radius:999px;color:var(--cal-muted);font-weight:600;cursor:pointer;transition:background-color .15s,color .15s}
.cal-segmented label:hover{background:var(--cal-tint);color:var(--cal-primary)}
.cal-segmented input:checked+label{background:var(--cal-primary);color:#fff;box-shadow:0 1px 2px rgba(20,26,51,.2)}
.cal-segmented input:focus-visible+label{outline:3px solid var(--cal-primary);outline-offset:2px}
.cal-tile{display:block;background:var(--cal-surface);border:1px solid var(--cal-border);border-radius:var(--cal-radius);box-shadow:var(--cal-shadow);padding:.85rem 1rem;text-decoration:none;color:var(--cal-ink);font-weight:700}
.cal-tile:hover{border-color:var(--cal-primary);background:var(--cal-tint)}
.cal-tile small{display:block;font-weight:500;color:var(--cal-muted)}
.cal-tile.today{box-shadow:inset 0 3px 0 var(--cal-accent),var(--cal-shadow)}

/* Seven-column month calendar. Keep the glyph rows small enough for phone widths. */
.cal-app .cal-month-table{table-layout:fixed;border-collapse:collapse;text-align:center}
.cal-app .cal-month-table-caption {font-size:1.05rem;margin-bottom:.75rem;font-weight:700}
.cal-app .cal-month-table th{padding:.1rem 0;border:0;text-align:center}
.cal-month-table th abbr{text-decoration:none}
.cal-app .cal-month-table td{padding:0;border:1px solid var(--cal-border);vertical-align:top;background:var(--cal-surface)}
.cal-app .cal-month-table tbody tr:nth-child(even){background:transparent}
.cal-app .cal-month-table tbody tr:last-child td{border:1px solid var(--cal-border)}
.cal-app a.cal-month-tile,.cal-month-empty{display:grid;align-content:start;justify-items:center;gap:.16rem;min-height:4.1rem;padding:.5rem .02rem;text-decoration:none;color:var(--cal-ink)}
.cal-month-date{margin-bottom:.8rem;font-size:.78rem;font-weight:700;line-height:1.1;font-variant-numeric:tabular-nums}
.cal-month-position{margin-top:.2rem;display:flex;align-items:center;justify-content:center;gap:0;white-space:nowrap;line-height:1}
.cal-month-ingress-arrow{font-size:1rem;line-height:1;color:var(--cal-ingress-ink)}
.cal-month-retrograde{line-height:1;margin-right:2px;color:var(--cal-retro)}
.cal-app a.cal-month-tile:hover{background:var(--cal-tint);border-radius:5px}
.cal-app a.cal-month-tile.today{box-shadow:inset 0 3px 0 var(--cal-accent)}

/* Footer */
.cal-foot{background:var(--cal-nav);color:#c9cde0;padding:1.5rem var(--cal-pad);font-size:.9rem}
.cal-foot-in{max-width:1240px;margin:0 auto;display:flex;flex-wrap:wrap;gap:1rem 2.5rem;align-items:center;justify-content:space-between}
.cal-foot-in a{font-weight:600;text-decoration:none}
.cal-foot-in a:hover{text-decoration:underline}
.cal-foot a{color:#fff}
.cal-foot a:focus-visible{outline-color:var(--cal-accent)}
.cal-foot-brand{display:flex;align-items:center;gap:.6rem;font-weight:700;color:#fff}
.cal-foot-brand img{width:36px;height:36px;background:#fff;border-radius:8px;padding:2px}
.cal-foot nav{display:flex;flex-wrap:wrap;gap:.5rem 1.25rem}
.cal-foot .cal-foot-by{margin-left:-.3rem;font-weight:400;font-style:italic;font-size:.85rem;color:var(--cal-accent);text-decoration:none}
.cal-foot .cal-foot-by:hover{text-decoration:underline}
.cal-foot-about{max-width:1240px;margin:1.5rem auto 0;padding-top:1.5rem;border-top:1px solid rgba(255,255,255,.12);text-align:center}
.cal-foot-about img{display:block;width:116px;height:auto;margin:0 auto .75rem}
.cal-foot-about p{max-width:36rem;margin:0 auto}
.cal-foot-about > p:not(.cal-foot-copy){color:#fff}
.cal-foot-about .cal-foot-copy{margin-top:1.25rem}

@media(max-width:36rem){
  .cal-bar-end{width:100%}
  /* Keep the four primary navigation items together on narrow screens. */
  .cal-bar-end nav{width:100%;flex-wrap:nowrap;justify-content:space-between;gap:0}
  .cal-bar nav>a,.cal-events-menu>summary{font-size:.95rem;padding-right:.15rem;padding-left:.15rem}
  .cal-timezone-control{margin-left:auto}
  .cal-card{padding:.85rem 1rem}
  button.cal-moon-summary{margin:0 -10px} 
  .cal-monthly-view{padding:.85rem 0}
  .cal-app .cal-month-table tbody tr td:first-child{border-left:0}
  .cal-app .cal-month-table tbody tr td:last-child{border-right:0}
  .cal-aspects li{grid-template-columns:minmax(0,1fr) auto;gap:.35rem .5rem}
  .cal-aspects .cal-aspect-description{grid-column:1/-1;grid-row:2;font-size:.9rem}
  .cal-aspects time{grid-column:2;grid-row:1}
  .cal-app a.cal-month-tile,.cal-month-empty{min-height:3.55rem;padding:.4rem 0;gap:.14rem}
  .cal-month-date{font-size:.7rem}
  .cal-month-position .cal-glyph{font-size:.83rem}
  .cal-month-ingress-arrow{font-size:.7rem}
  .cal-month-retrograde{font-size:.75rem}
}
