/* Base */
.u-container{max-width:1120px;margin-inline:auto;padding-inline:clamp(12px,4vw,24px)}
.u-panel{background:var(--panel);border:1px solid var(--edge);border-radius:var(--radius)}
.u-panel-alt{background:var(--panel-alt)}
.u-shadow-sm{box-shadow:var(--shadow-sm)}
.u-shadow-md{box-shadow:var(--shadow-md)}

/* Spacing (margin/padding) */
.p-0{padding:var(--s-0)} .p-1{padding:var(--s-1)} .p-2{padding:var(--s-2)} .p-3{padding:var(--s-3)} .p-4{padding:var(--s-4)} .p-5{padding:var(--s-5)}
.px-2{padding-left:var(--s-2);padding-right:var(--s-2)} .px-3{padding-left:var(--s-3);padding-right:var(--s-3)} .px-4{padding-left:var(--s-4);padding-right:var(--s-4)}
.py-2{padding-top:var(--s-2);padding-bottom:var(--s-2)} .py-3{padding-top:var(--s-3);padding-bottom:var(--s-3)} .py-4{padding-top:var(--s-4);padding-bottom:var(--s-4)}
.m-0{margin:var(--s-0)} .mt-3{margin-top:var(--s-3)} .mb-3{margin-bottom:var(--s-3)} .mb-4{margin-bottom:var(--s-4)} .my-3{margin-block:var(--s-3)}

/* Typography */
.text-sm{font-size:var(--fs-sm)} .text-base{font-size:var(--fs-base)} .text-lg{font-size:var(--fs-lg)}
.text-muted{color:var(--muted)} .text-ink{color:var(--ink)} .text-link{color:var(--link)}
.font-bold{font-weight:700}

/* Colors */
.bg-brand{background:var(--brand)} .bg-brand-dk{background:var(--brand-dk)}
.text-brand{color:var(--brand)} .border-edge{border:1px solid var(--edge)}

/* Layout */
.flex{display:flex} .grid{display:grid}
.items-center{align-items:center} .justify-center{justify-content:center} .justify-between{justify-content:space-between}
.gap-2{gap:var(--s-2)} .gap-3{gap:var(--s-3)} .gap-4{gap:var(--s-4)}
.rounded{border-radius:var(--radius)} .rounded-lg{border-radius:var(--radius-lg)}

/* Responsive grid helpers */
.grid-1{grid-template-columns:1fr}
@media (min-width:900px){ .md\:grid-2{grid-template-columns:repeat(2,minmax(0,1fr))} }
@media (min-width:1200px){ .lg\:grid-3{grid-template-columns:repeat(3,minmax(0,1fr))} }

/* Buttons */
.btn{appearance:none;border:0;border-radius:6px;cursor:pointer;text-decoration:none;display:inline-block;min-width:120px;text-align:center;padding:10px 18px;font:600 14px/1 var(--font-sans);transition:background-color .3s,transform .2s,box-shadow .3s}
.btn--primary{background:var(--brand-dk);color:#fff}
.btn--primary:hover{background:#001533;transform:scale(1.05);box-shadow:0 4px 10px rgba(0,0,0,.3)}
.btn--primary:active{transform:scale(.97);box-shadow:0 2px 4px rgba(0,0,0,.2)}

/* Add-to-Calendar */
.atc-btn{appearance:none;border:1px solid #0f172a;background:#0f172a;color:#fff;padding:.65rem 1rem;border-radius:.6rem;font:600 14px/1.2 system-ui,sans-serif;cursor:pointer;transition:opacity .15s;display:inline-flex;gap:.5rem;align-items:center}
.atc-btn:hover{opacity:.92}
.atc-menu{position:absolute;z-index:9999;background:#fff;border:1px solid var(--edge);border-radius:.6rem;box-shadow:var(--shadow-md);padding:.35rem;min-width:220px;display:none}
.atc-menu a{display:block;padding:.55rem .7rem;border-radius:.45rem;color:var(--ink);text-decoration:none}
.atc-menu a:hover{background:#f3f4f6}

/* Calendar key dots using tokens */
.dot{display:inline-block;width:14px;height:14px;border-radius:50%;margin-right:6px;vertical-align:middle}
.dot.blue{background:var(--cal-blue)} .dot.orange{background:var(--cal-orange)} .dot.green{background:var(--cal-green)}
.dot.purple{background:var(--cal-purple)} .dot.yellow{background:var(--cal-yellow)} .dot.gray{background:var(--cal-gray)}@charset "UTF-8";
/* CSS Document */

