/* Dayfari — D2 "The Mosaic" system (selected by the owner 2026-11-05;
   teachers: Pinterest + Only In Your State, via design-round-2026-11-04/d2).
   Composition: the page is a photo wall. Pictures touch, text whispers.
   White chrome, bold tight sans, Lagoon #0891B2 as energy (chips, badges,
   the app handoff), depth from photography itself, shadows ~zero.
   Browse walls mix 3:2 and 4:5 plates at 10px gutters — the owner's
   fenced exception to the one-ratio rule; heroes and fact stacks stay
   3:2. Image FILES stay 3:2; the wall's portrait plates are CSS crops. */
:root{
  --canvas:#FFFFFF; --soft:#F6F4EE; --ink:#152327; --ink-2:#5A6B6F; --ink-3:#93A1A4;
  --line:#E8E4DA; --lagoon:#0891B2; --lagoon-deep:#0B5563; --lagoon-tint:#E0F0F5;
  --sand:#F1E7D3; --amber:#FFB54D;
  --sans:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;
  --r:16px;
}
*{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth}
body{background:var(--canvas);color:var(--ink);font-family:var(--sans);
  font-size:16px;line-height:1.5;-webkit-font-smoothing:antialiased}
a{color:var(--lagoon);text-decoration:none}
a:hover{text-decoration:underline}
img{display:block;max-width:100%}

/* ---------- shell: slim rail (desktop) + top bar (mobile) ---------- */
.wrap{display:grid;grid-template-columns:88px minmax(0,1fr);min-height:100vh}
.rail{border-right:1px solid var(--line);display:flex;flex-direction:column;align-items:center;
  padding:20px 0;gap:6px;position:sticky;top:0;height:100vh;background:#fff;overflow-y:auto}
.mark{width:46px;height:46px;border-radius:14px;background:var(--lagoon);color:#fff;
  font-weight:800;font-size:1.35rem;display:flex;align-items:center;justify-content:center;margin-bottom:16px;flex:none}
.rail a{writing-mode:vertical-rl;font-size:.74rem;font-weight:700;letter-spacing:.12em;
  text-transform:uppercase;color:var(--ink-2);padding:12px 4px;border-radius:8px}
.rail a:hover{color:var(--lagoon-deep);text-decoration:none}
.rail a.on{color:var(--lagoon)}
.rail a.app{margin-top:auto;writing-mode:vertical-rl;background:var(--ink);color:#fff;
  border-radius:999px;padding:14px 8px;font-size:.74rem;letter-spacing:.1em;flex:none}
.rail a.app:hover{color:#fff;background:var(--lagoon-deep)}
.rail .ad-slot.side{writing-mode:vertical-rl;margin:10px 0 2px;padding:12px 5px;font-size:.62rem;flex:none}
.topbar{display:none}
.col{padding:0 34px;max-width:1460px;width:100%;margin:0 auto;min-width:0}
.head{display:flex;align-items:baseline;gap:16px;padding:26px 0 4px;flex-wrap:wrap}
.wordmark{font-size:1.5rem;font-weight:800;letter-spacing:-.03em;color:var(--ink)}
.wordmark b{color:var(--lagoon);font-weight:800}
a.wordmark:hover{text-decoration:none}
.head .tag{color:var(--ink-2);font-size:.92rem}
.head .go{margin-left:auto;background:var(--lagoon);color:#fff;font-weight:700;
  font-size:.9rem;padding:10px 18px;border-radius:999px}
.head .go:hover{background:var(--lagoon-deep);text-decoration:none}

/* ---------- app bar + store badges (app_promo.py markup, D2 dress) ---------- */
.appbar{background:#fff;color:var(--ink);border-bottom:1px solid var(--line);display:flex;
  align-items:center;justify-content:center;gap:10px 16px;flex-wrap:wrap;padding:8px 16px}
.appbar-text{font-size:.88rem;margin:0;line-height:1.35;color:var(--ink-2)}
.appbar-badges{display:flex;gap:8px;flex-wrap:wrap;justify-content:center}
.storebadge{display:inline-flex;flex-direction:row;align-items:center;gap:9px;background:var(--ink);
  color:#fff!important;text-decoration:none;border-radius:999px;padding:7px 16px 7px 12px}
a.storebadge:hover{background:var(--lagoon-deep);text-decoration:none}
.storebadge .sb-icon{width:22px;height:22px;flex:none}
.storebadge .sb-text{display:flex;flex-direction:column;align-items:flex-start;line-height:1.25;text-align:left}
.storebadge .sb-small{font-size:.58rem;text-transform:uppercase;letter-spacing:.06em;opacity:.75}
.storebadge .sb-big{font-size:.95rem;font-weight:700}
.appbar .storebadge{background:var(--lagoon);padding:4px 13px 4px 10px}
.appbar .storebadge .sb-icon{width:17px;height:17px}
.appbar .storebadge .sb-big{font-size:.85rem}
.appbar .storebadge .sb-small{font-size:.52rem}
.apppromo{margin:0}
.apppromo-title{font-size:1rem;font-weight:700;margin:0 0 4px}
.apppromo-sub{font-size:.88rem;color:var(--ink-2);margin:0 0 12px}
.apppromo-badges{display:flex;gap:10px;flex-wrap:wrap}
.apppromo-hero{background:var(--ink);color:#fff;border-radius:20px;padding:34px 38px;margin:44px 0 0}
.apppromo-hero .apppromo-title{color:#fff;font-size:1.3rem;font-weight:800;letter-spacing:-.02em}
.apppromo-hero .apppromo-sub{color:#B9C8CB;font-size:.95rem;margin-bottom:16px}
.apppromo-hero .storebadge{background:transparent;border:1.5px solid #fff}
.apppromo-hero a.storebadge:hover{background:#fff;color:var(--ink)!important}

/* ---------- type roles ---------- */
section{padding:44px 0 6px}
section.lead{padding-top:18px}
.eyebrow{font-size:.72rem;font-weight:800;letter-spacing:.15em;text-transform:uppercase;
  color:var(--lagoon);margin-bottom:8px}
h1{font-size:2.6rem;font-weight:800;letter-spacing:-.03em;line-height:1.05}
h1.page-title{margin-top:26px}
h2.sec{font-size:1.65rem;font-weight:800;letter-spacing:-.025em;line-height:1.12;margin-bottom:8px}
.lede{color:var(--ink-2);font-size:1.08rem;max-width:36em;margin-top:10px}
.standfirst{color:var(--ink-2);font-size:1.08rem;max-width:36em;margin-top:10px}
.sec-intro{color:var(--ink-2);max-width:44em}
.byline{color:var(--ink-2);font-size:.92rem;margin-top:8px}
.credit{font-size:.72rem;color:var(--ink-3);margin-top:6px}
.disclosure{font-size:.86rem;color:var(--ink-2);border-left:3px solid var(--amber);
  padding:6px 0 6px 12px;margin:18px 0;max-width:46em}
.disclaimer{font-size:.86rem;color:var(--ink-2);margin-top:36px;max-width:46em}

/* ---------- mosaic hero (3:2 discipline; the wall exception is below) ---------- */
.mosaic{display:grid;grid-template-columns:repeat(4,1fr);grid-auto-rows:150px;gap:10px;margin-top:26px}
.lead .mosaic{grid-auto-rows:132px}
.mosaic figure{border-radius:var(--r);overflow:hidden;position:relative;background:var(--soft)}
.mosaic .big{grid-column:span 2;grid-row:span 2}
.mosaic .tall{grid-row:span 2}
.mosaic img{width:100%;height:100%;object-fit:cover}
.mosaic figcaption{position:absolute;left:10px;bottom:10px;background:rgba(255,255,255,.92);
  border-radius:999px;padding:4px 12px;font-size:.78rem;font-weight:700;color:var(--ink)}
.mosaic.one{grid-template-columns:1fr;grid-auto-rows:auto}
.mosaic.one figure{aspect-ratio:3/2}
.treat{aspect-ratio:3/2;border-radius:var(--r);
  background:linear-gradient(135deg,var(--lagoon-tint),var(--sand));
  display:flex;align-items:flex-end;padding:16px}
.treat span{font-weight:800;font-size:1.5rem;letter-spacing:-.02em;color:var(--lagoon-deep);line-height:1.1}
.mosaic .treat{aspect-ratio:auto;height:100%;border-radius:0}

/* ---------- chips ---------- */
.chips{display:flex;gap:8px;flex-wrap:wrap;margin:22px 0 4px}
.chip{border-radius:999px;background:var(--soft);border:1px solid var(--line);
  padding:8px 16px;font-size:.88rem;font-weight:600;color:var(--ink)}
a.chip:hover{border-color:var(--lagoon);text-decoration:none}
.chip.on{background:var(--ink);color:#fff;border-color:var(--ink)}
.chip.app{background:var(--lagoon);border-color:var(--lagoon);color:#fff}
.jumpnav{display:flex;flex-wrap:wrap;gap:8px;margin:22px 0 6px}
.jumpnav a{border-radius:999px;background:var(--soft);border:1px solid var(--line);
  padding:8px 16px;font-size:.88rem;font-weight:600;color:var(--ink)}
.jumpnav a:hover{border-color:var(--lagoon);text-decoration:none}

/* ---------- browse walls: borderless cards, mixed 3:2 / 4:5 plates ---------- */
.cards{display:grid;grid-template-columns:repeat(4,1fr);gap:22px 10px;margin-top:20px}
.card{display:block}
.card a{color:inherit;display:block}
.card a:hover{text-decoration:none}
.card .ph{border-radius:var(--r);overflow:hidden;aspect-ratio:3/2;background:var(--soft)}
.card .ph img{width:100%;height:100%;object-fit:cover}
.cards .card:nth-child(4n+2) .ph,.cards .card:nth-child(4n+4) .ph{aspect-ratio:4/5}
.card .tile{aspect-ratio:3/2;border-radius:var(--r);
  background:linear-gradient(135deg,var(--lagoon-tint),var(--sand));
  display:flex;align-items:flex-end;padding:16px}
.cards .card:nth-child(4n+2) .tile,.cards .card:nth-child(4n+4) .tile{aspect-ratio:4/5}
.card .tile span{font-weight:800;font-size:1.5rem;letter-spacing:-.02em;color:var(--lagoon-deep);line-height:1.1}
.card .body{padding:6px 2px 0}
.catlabel{display:block;font-size:.72rem;font-weight:800;letter-spacing:.13em;
  text-transform:uppercase;color:var(--lagoon);margin-bottom:4px}
.card h3{font-size:1.02rem;font-weight:700;letter-spacing:-.01em;margin-top:2px;line-height:1.3;color:var(--ink)}
.card p{color:var(--ink-2);font-size:.87rem;margin-top:2px;line-height:1.45}
.card .facts{display:flex;gap:6px;flex-wrap:wrap;margin-top:8px}
.card .facts .chip{padding:3px 10px;font-size:.74rem;font-weight:600}
.card .credit{display:block;font-size:.7rem;color:var(--ink-3);margin-top:3px}

/* ---------- stats strip (city hub factstrip) ---------- */
.stats{display:flex;gap:34px;flex-wrap:wrap;margin-top:24px}
.stat .n{font-size:1.9rem;font-weight:800;letter-spacing:-.02em;color:var(--lagoon-deep);
  line-height:1;font-variant-numeric:tabular-nums}
.stat .k{font-size:.74rem;font-weight:700;letter-spacing:.1em;text-transform:uppercase;
  color:var(--ink-2);margin-top:5px}

/* ---------- event rows + fact pills ---------- */
.evlist{margin-top:6px}
.ev-item{padding:20px 0;border-top:1px solid var(--line)}
.ev-item h3{font-size:1.15rem;font-weight:700;letter-spacing:-.01em}
.ev-item h3 a{color:inherit}
.ev-item h3 a:hover{color:var(--lagoon-deep)}
.ev-item .desc{color:var(--ink-2);margin-top:3px;max-width:44em}
.triple{display:flex;gap:8px;flex-wrap:wrap;margin-top:10px}
.triple>div{background:var(--soft);border:1px solid var(--line);border-radius:10px;
  padding:6px 12px;font-size:.85rem}
.triple .lab{font-weight:700;color:var(--lagoon-deep)}
.triple .lab::after{content:" ·"}
.appendix .ev-item{padding:12px 0}
.appendix .ev-item h3{font-size:1rem}
.dayhead{font-size:1.3rem;font-weight:800;letter-spacing:-.02em;margin:38px 0 2px}
.scanrow{display:flex;justify-content:space-between;gap:16px;padding:10px 0;
  border-top:1px solid var(--line);font-size:.94rem}
.scanrow a{color:var(--ink);font-weight:600}
.scanrow a:hover{color:var(--lagoon-deep)}
.scanmeta{color:var(--ink-2);text-align:right;font-size:.86rem}
.factline{margin-top:10px}
.factline>div{background:var(--soft);border:1px solid var(--line);border-radius:10px;
  padding:6px 12px;font-size:.85rem;display:inline-block;margin:0 8px 8px 0}
.factline .lab{font-weight:700;color:var(--lagoon-deep)}
.factline .lab::after{content:" ·"}

/* ---------- event detail fact stack (cells; h2 labels fixed by blueprint) ---------- */
.stack{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-top:30px}
.stack .cell{background:var(--soft);border-radius:var(--r);padding:22px}
.stack .cell.wide{grid-column:span 2;background:#fff;border:1px solid var(--line)}
.stack h2{font-size:.7rem;font-weight:800;letter-spacing:.14em;text-transform:uppercase;
  color:var(--lagoon);margin-bottom:8px}
.stack p{color:#33454B;margin-bottom:8px}
.stack p:last-child{margin-bottom:0}
.stack .priceline{font-size:1.02rem;font-weight:600;color:var(--ink)}
.stack a{color:var(--lagoon);font-weight:700}
.mapblock{margin-top:4px}
.poster{margin:22px 0 6px}
.poster .ph{aspect-ratio:3/2;overflow:hidden;border-radius:var(--r);background:var(--soft)}
.poster .ph img{width:100%;height:100%;object-fit:cover}

/* ---------- guides / prose ---------- */
.prose{max-width:46em}
.prose p{margin:0 0 14px;line-height:1.62}
.entry{margin:34px 0;padding-bottom:26px;border-bottom:1px solid var(--line)}
.entry h2{font-size:1.35rem;font-weight:800;letter-spacing:-.02em;margin:0 0 8px}
.entry .num{color:var(--lagoon);margin-right:8px}
.entry p{max-width:46em;margin:0 0 10px;line-height:1.62}
.entry .ph{aspect-ratio:3/2;overflow:hidden;border-radius:var(--r);background:var(--soft);
  max-width:640px;margin:12px 0}
.entry .ph img{width:100%;height:100%;object-fit:cover}
.verdict{background:var(--lagoon-tint);border-radius:12px;padding:16px 20px;margin:22px 0;max-width:46em}
.verdict h2{margin:0 0 8px;font-size:1.05rem;color:var(--lagoon-deep)}
.verdict ul{margin:0;padding-left:18px}
.booking{background:var(--soft);border-radius:var(--r);padding:22px;margin:34px 0;max-width:46em}
.booking p{margin:0 0 8px}
.booking .disc{font-size:.8rem;color:var(--ink-2);margin:6px 0 0}
.btn{display:inline-block;background:var(--lagoon);color:#fff;font-weight:700;
  border-radius:999px;padding:10px 18px;font-size:.9rem}
.btn:hover{background:var(--lagoon-deep);text-decoration:none}
.nearlist{list-style:none;margin:8px 0;padding:0;max-width:46em}
.nearlist li{padding:10px 0;border-top:1px solid var(--line);font-size:.95rem}
.nearlist a{color:var(--ink);font-weight:600}
.nearlist a:hover{color:var(--lagoon-deep)}
.nearlist .nf{color:var(--ink-2);font-size:.86rem}
.indexstrip{font-size:.95rem;line-height:2;color:var(--ink-3);max-width:60em}
.indexstrip a{color:var(--ink);font-weight:600;white-space:nowrap}
.indexstrip a:hover{color:var(--lagoon-deep)}

/* ---------- ad placeholders (labelled, post-approval) ---------- */
.ad-slot{border:1.5px dashed #CFC8B8;border-radius:12px;color:var(--ink-3);
  font-size:.75rem;letter-spacing:.08em;text-transform:uppercase;text-align:center;
  padding:18px;margin:36px 0 0}
.ad-slot.side{border:1.5px dashed #CFC8B8;border-radius:12px;color:var(--ink-3);
  font-size:.62rem;letter-spacing:.08em;text-transform:uppercase;text-align:center}

/* ---------- app band + footer ---------- */
.band{background:var(--ink);color:#fff;border-radius:20px;padding:38px;margin-top:48px;
  display:flex;gap:26px;align-items:center;flex-wrap:wrap}
.band h2{color:#fff;font-size:1.65rem;font-weight:800;letter-spacing:-.025em;line-height:1.12}
.band p{color:#B9C8CB;max-width:34em;margin-top:6px}
.band .apppromo{margin-left:auto}
.band .apppromo-title{display:none}
.band .apppromo-sub{display:none}
.band .storebadge{background:transparent;border:1.5px solid #fff}
.band a.storebadge:hover{background:#fff;color:var(--ink)!important}
.footer{margin-top:64px;border-top:1px solid var(--line);padding:34px 0 50px;
  color:var(--ink-2);font-size:.9rem}
.footer .cols{display:grid;grid-template-columns:repeat(3,1fr);gap:24px;margin-bottom:22px}
.footer h4{font-size:.7rem;letter-spacing:.13em;text-transform:uppercase;color:var(--ink-3);margin-bottom:9px}
.footer a{display:block;padding:2px 0;color:var(--ink-2)}
.footer a:hover{color:var(--lagoon-deep)}
.footer .fine{font-size:.82rem;color:var(--ink-3);max-width:60em}

/* ---------- responsive (D2 breakpoints + production middle step) ---------- */
@media (max-width:1100px){.cards{grid-template-columns:repeat(3,1fr)}}
@media (max-width:1023px){
  .wrap{grid-template-columns:1fr}
  .rail{display:none}
  .topbar{display:flex;gap:16px;align-items:center;background:#fff;
    border-bottom:1px solid var(--line);padding:12px 16px;position:sticky;top:0;
    z-index:5;overflow-x:auto;white-space:nowrap}
  .topbar .wordmark{font-size:1.2rem}
  .topbar a{font-size:.86rem;font-weight:600;color:var(--ink-2)}
  .topbar a.on{color:var(--lagoon)}
  .col{padding:0 16px}
  h1{font-size:1.95rem}
  .head .go{display:none}
  .mosaic{grid-template-columns:repeat(2,1fr);grid-auto-rows:118px}
  .mosaic .big{grid-column:span 2}
  .mosaic.one{grid-template-columns:1fr}
  .cards{grid-template-columns:repeat(2,1fr)}
  .stack{grid-template-columns:1fr}
  .stack .cell.wide{grid-column:span 1}
  .band{padding:28px 22px}
  .band .apppromo{margin-left:0}
  .apppromo-hero{padding:26px 22px}
  .footer .cols{grid-template-columns:1fr 1fr}
  .scanrow{flex-direction:column;gap:2px}
  .scanmeta{text-align:left}
}
@media (prefers-reduced-motion:reduce){*{scroll-behavior:auto}html{scroll-behavior:auto}}
