/* SBCAD Core — front-end components.
   Inherits the design tokens declared in the Header template part. */

/* These components carry a top margin for when they follow a heading. When one
   opens a section by itself, the section's own padding is the whole gap. */
.sbcad-wrap > .sbcad-calendar:first-child,
.sbcad-wrap > .sbcad-empty:first-child,
.sbcad-wrap > .sbcad-doc-filter:first-child,
.sbcad-wrap > .sbcad-doc-list:first-child,
.sbcad-wrap > .sbcad-event-cards:first-child,
.sbcad-wrap > .sbcad-map-tool:first-child{margin-top:0}

/* ---------- Empty states ---------- */
.sbcad-empty{border:1px dashed var(--sbcad-line,#d9d8d3);background:#fff;padding:44px 38px;margin-top:48px;text-align:center}
.sbcad-empty h3{margin:0 0 10px;color:var(--sbcad-navy,#182541);font-size:1.3rem}
.sbcad-empty p{margin:0 auto;max-width:60ch;color:var(--sbcad-muted,#5b6575);line-height:1.7}
.sbcad-section--cream .sbcad-empty{background:var(--sbcad-paper,#fffdfa)}

/* ---------- Calendar ---------- */
.sbcad-calendar{margin-top:48px}
.sbcad-calendar__bar{display:flex;align-items:center;gap:12px;margin-bottom:20px;flex-wrap:wrap}
.sbcad-calendar__label{margin:0;flex:1 1 auto;font-size:clamp(1.4rem,2.4vw,2rem);font-weight:820;letter-spacing:-.03em;color:var(--sbcad-navy,#182541)}
.sbcad-calendar__nav,.sbcad-calendar__today{background:#fff;border:2px solid var(--sbcad-navy,#182541);color:var(--sbcad-navy,#182541);font-weight:800;min-height:42px;min-width:42px;padding:0 14px;cursor:pointer;font-family:inherit;font-size:.95rem}
.sbcad-calendar__nav:hover,.sbcad-calendar__today:hover,.sbcad-calendar__nav:focus-visible,.sbcad-calendar__today:focus-visible{background:var(--sbcad-navy,#182541);color:#fff}
.sbcad-calendar__grid{display:grid;grid-template-columns:repeat(7,1fr);gap:1px;background:var(--sbcad-line,#d9d8d3);border:1px solid var(--sbcad-line,#d9d8d3)}
.sbcad-calendar__dow{background:var(--sbcad-navy,#182541);color:#fff;padding:10px 6px;text-align:center;font-size:.72rem;font-weight:850;letter-spacing:.12em;text-transform:uppercase}
.sbcad-calendar__cell{background:#fff;min-height:112px;padding:8px 9px;display:flex;flex-direction:column;gap:4px}
.sbcad-calendar__cell.is-empty{background:#faf9f6}
.sbcad-calendar__cell.has-event{cursor:pointer}
.sbcad-calendar__cell.has-event:hover,.sbcad-calendar__cell.has-event:focus-visible{background:#f0f8fc;outline:2px solid var(--sbcad-cyan,#13a8d5);outline-offset:-2px}
.sbcad-calendar__cell.is-today{box-shadow:inset 0 0 0 3px var(--sbcad-orange,#f28b2b)}
.sbcad-calendar__num{font-weight:800;color:var(--sbcad-navy,#182541);font-size:.95rem}
.sbcad-calendar__cell.is-empty .sbcad-calendar__num{color:transparent}
.sbcad-calendar__pip{display:block;background:var(--sbcad-cyan,#13a8d5);color:#04202b;font-size:.7rem;font-weight:750;line-height:1.25;padding:3px 5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.sbcad-calendar__more{font-size:.66rem;color:var(--sbcad-muted,#5b6575);font-weight:700}
.sbcad-calendar__hint{margin-top:14px;font-size:.85rem;color:var(--sbcad-muted,#5b6575)}
.sbcad-calendar__detail{margin-top:24px;background:#fff;border:1px solid var(--sbcad-line,#d9d8d3);border-left:6px solid var(--sbcad-orange,#f28b2b);padding:28px 30px;position:relative}
.sbcad-calendar__detail h4{margin:0 0 18px;color:var(--sbcad-navy,#182541);font-size:1.15rem}
.sbcad-calendar__close{position:absolute;top:10px;right:12px;background:none;border:0;font-size:1.6rem;line-height:1;cursor:pointer;color:var(--sbcad-muted,#5b6575);padding:4px 8px}
.sbcad-calendar__close:hover{color:var(--sbcad-navy,#182541)}
.sbcad-calendar__event+.sbcad-calendar__event{margin-top:20px;padding-top:20px;border-top:1px solid var(--sbcad-line,#d9d8d3)}
.sbcad-calendar__event h5{margin:0 0 6px;color:var(--sbcad-navy,#182541);font-size:1.08rem}
.sbcad-calendar__event p{margin:0 0 6px;color:var(--sbcad-muted,#5b6575);line-height:1.65}
.sbcad-calendar__meta{font-weight:700;color:var(--sbcad-cyan-ink,#087c9d)!important}

/* ---------- Event cards ---------- */
.sbcad-event-cards{display:grid;grid-template-columns:repeat(2,1fr);gap:1px;background:var(--sbcad-line,#d9d8d3);border:1px solid var(--sbcad-line,#d9d8d3);margin-top:48px}
.sbcad-event-card{background:#fff;display:grid;grid-template-columns:auto minmax(0,1fr);gap:24px;padding:30px}
.sbcad-event-card__date{background:var(--sbcad-navy,#182541);color:#fff;padding:12px 14px;text-align:center;align-self:start;min-width:74px}
.sbcad-event-card__mon{display:block;font-size:.7rem;font-weight:850;letter-spacing:.14em;text-transform:uppercase;color:var(--sbcad-cyan,#13a8d5)}
.sbcad-event-card__day{display:block;font-size:1.9rem;font-weight:900;line-height:1.05;letter-spacing:-.03em}
.sbcad-event-card__yr{display:block;font-size:.68rem;color:#bfcadd;letter-spacing:.1em}
.sbcad-event-card__body h3{margin:0 0 8px;color:var(--sbcad-navy,#182541);font-size:1.2rem;line-height:1.25}
.sbcad-event-card__body p{margin:0 0 8px;color:var(--sbcad-muted,#5b6575);line-height:1.65}
.sbcad-event-card__meta{font-size:.82rem;font-weight:750;color:var(--sbcad-cyan-ink,#087c9d)!important;letter-spacing:.02em}
.sbcad-event-card__link{color:var(--sbcad-cyan-ink,#087c9d);font-weight:800}

/* ---------- Documents ---------- */
.sbcad-doc-filter{display:flex;flex-wrap:wrap;gap:8px;margin-top:44px}
.sbcad-doc-filter__btn{background:#fff;border:2px solid var(--sbcad-line,#d9d8d3);color:var(--sbcad-navy,#182541);font-family:inherit;font-weight:800;font-size:.82rem;padding:9px 16px;cursor:pointer;min-height:42px}
.sbcad-doc-filter__btn:hover,.sbcad-doc-filter__btn:focus-visible{border-color:var(--sbcad-cyan,#13a8d5)}
.sbcad-doc-filter__btn.is-active{background:var(--sbcad-navy,#182541);border-color:var(--sbcad-navy,#182541);color:#fff}
.sbcad-doc-list{margin-top:24px;border-top:2px solid var(--sbcad-navy,#182541)}
.sbcad-doc{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:22px;align-items:center;padding:22px 4px;border-bottom:1px solid var(--sbcad-line,#d9d8d3);text-decoration:none;color:inherit}
.sbcad-doc:hover,.sbcad-doc:focus-visible{background:#fff}
.sbcad-doc__type{background:var(--sbcad-navy,#182541);color:#fff;font-size:.68rem;font-weight:850;letter-spacing:.08em;padding:9px 10px;min-width:52px;text-align:center}
.sbcad-doc__main{display:block;min-width:0}
.sbcad-doc__title{display:block;color:var(--sbcad-navy,#182541);font-weight:800;font-size:1.08rem;line-height:1.3}
.sbcad-doc__meta{display:block;margin-top:5px;font-size:.8rem;color:var(--sbcad-muted,#5b6575)}
.sbcad-doc__desc{display:block;margin-top:7px;font-size:.9rem;color:var(--sbcad-muted,#5b6575);line-height:1.6}
.sbcad-doc__action{font-size:.74rem;font-weight:850;letter-spacing:.12em;text-transform:uppercase;color:var(--sbcad-cyan-ink,#087c9d);white-space:nowrap}
.sbcad-doc:hover .sbcad-doc__action{color:var(--sbcad-navy,#182541);text-decoration:underline;text-decoration-thickness:2px}

/* ---------- Map ---------- */
.sbcad-map-tool{margin-top:44px}
.sbcad-map-search label{display:block;font-size:.78rem;font-weight:850;letter-spacing:.14em;text-transform:uppercase;color:var(--sbcad-cyan-ink,#087c9d);margin-bottom:10px}
.sbcad-map-search__row{display:flex;gap:10px;flex-wrap:wrap}
.sbcad-map-search__row input{flex:1 1 300px;min-width:0;border:2px solid var(--sbcad-navy,#182541);background:#fff;padding:0 16px;min-height:52px;font-family:inherit;font-size:1rem;color:var(--sbcad-ink,#172033)}
.sbcad-map-search__row input:focus-visible{outline:3px solid var(--sbcad-cyan,#13a8d5);outline-offset:2px}
.sbcad-map-search__row .sbcad-button{min-height:52px;border-width:2px;cursor:pointer}
.sbcad-map-search__status{margin:12px 0 0;font-size:.95rem;line-height:1.6;min-height:1.4em}
.sbcad-map-search__status.is-ok{color:#0f6b3f;font-weight:750}
.sbcad-map-search__status.is-warn{color:#8a4b00;font-weight:750}
.sbcad-map-search__status.is-error{color:#a02128;font-weight:750}
.sbcad-map{height:clamp(360px,52vh,560px);margin-top:22px;border:2px solid var(--sbcad-navy,#182541);background:#e8e6e1;z-index:0}
.sbcad-map-legend{display:flex;flex-wrap:wrap;gap:10px 24px;margin-top:16px;align-items:center}
.sbcad-map-legend__item{display:inline-flex;align-items:center;gap:9px;font-size:.85rem;font-weight:750;color:var(--sbcad-navy,#182541)}
.sbcad-map-legend__note{font-size:.85rem;color:var(--sbcad-muted,#5b6575);font-style:italic;flex:1 1 320px}
.sbcad-swatch{width:17px;height:17px;display:inline-block;border:2px solid var(--sbcad-navy,#182541)}
.sbcad-swatch--district{background:rgba(19,168,213,.55)}
.sbcad-map-credit{margin-top:14px;max-width:78ch}
.sbcad-map-num{background:transparent!important;border:0!important;box-shadow:none!important;color:#0e1930;font-weight:900;font-size:1.05rem;text-shadow:0 0 4px #fff,0 0 4px #fff}
.leaflet-container{font-family:inherit}

/* ---------- Responsive ---------- */
@media(max-width:960px){
	.sbcad-event-cards{grid-template-columns:1fr}
	.sbcad-calendar__cell{min-height:92px}
}
@media(max-width:700px){
	.sbcad-calendar__grid{gap:1px}
	.sbcad-calendar__cell{min-height:64px;padding:5px}
	.sbcad-calendar__dow{font-size:.6rem;padding:8px 2px;letter-spacing:.04em}
	.sbcad-calendar__num{font-size:.82rem}
	/* Titles never fit in a phone-width cell — show a dot, details on tap. */
	.sbcad-calendar__pip{font-size:0;padding:0;height:6px;width:6px;border-radius:50%;margin-top:2px}
	.sbcad-calendar__more{font-size:0}
	.sbcad-calendar__bar{gap:8px}
	.sbcad-calendar__label{flex:1 1 100%;order:-1}
	.sbcad-event-card{grid-template-columns:1fr;gap:16px;padding:24px}
	.sbcad-event-card__date{justify-self:start;display:flex;align-items:baseline;gap:8px;min-width:0;padding:8px 12px}
	.sbcad-event-card__day{font-size:1.3rem}
	.sbcad-doc{grid-template-columns:auto minmax(0,1fr);gap:14px;padding:20px 2px}
	.sbcad-doc__action{grid-column:2;justify-self:start}
	.sbcad-empty{padding:32px 22px}
}
