
  :root{
    --bg:#f4ead6; --paper:#fffdf8; --paper2:#fbf3e4; --side:#f0e3cb;
    --ink:#402f1d; --muted:#8a7456; --line:#e6d6ba; --line2:#efe3cb;
    --brown:#9c6b3b; --brown-dk:#7a4e26;
    --light:#3fae6b;  --light-t:#e4f3e8;
    --medium:#efa636; --medium-t:#fbeed6;
    --heavy:#e0543c;  --heavy-t:#fadfd8;
    --closed:#d6c6a8; --closed-t:#eadfca;
  }
  *{box-sizing:border-box}
  html,body{margin:0;height:100%}
  body{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;background:var(--bg);color:var(--ink)}
  h1,h2,h3,.brand{font-family:"Georgia","Times New Roman",serif}
  button,input,select{font-family:inherit;cursor:pointer}
  input{cursor:text}
  a{color:var(--brown-dk)}
  .container{max-width:1080px;margin:0 auto;padding:0 32px}

  /* ===================== LANDING ===================== */
  #landing{min-height:100vh;display:flex;flex-direction:column;
    background:radial-gradient(900px 420px at 50% -8%,rgba(156,107,59,.14),transparent),linear-gradient(180deg,#f6ecd9,#f1e5cd)}
  .lp-nav{display:flex;justify-content:space-between;align-items:center;height:74px}
  .brand{font-size:21px;font-weight:700;letter-spacing:.2px;color:var(--brown-dk)}
  .brand .ride{color:var(--heavy)}
  .lp-nav .open{background:var(--brown-dk);color:#fbf1df;border:none;border-radius:11px;padding:11px 20px;font-weight:700;font-size:14px}
  .lp-nav .open:hover{background:var(--brown)}
  .hero{text-align:center;padding:60px 0 26px}
  .hero .eyebrow{display:inline-block;font-size:12px;letter-spacing:1.4px;text-transform:uppercase;color:var(--brown);
    background:#fff7e9;border:1px solid var(--line);border-radius:30px;padding:6px 16px;margin-bottom:24px}
  .hero h1{font-size:clamp(34px,5.6vw,60px);line-height:1.06;margin:0 auto 22px;max-width:16ch;color:#2f2113}
  .hero h1 .g1{color:var(--light)} .hero h1 .g2{color:var(--medium)} .hero h1 .g3{color:var(--heavy)}
  .hero p{font-size:clamp(15px,2vw,18.5px);color:var(--muted);max-width:62ch;margin:0 auto 32px;line-height:1.6}
  .cta{display:flex;gap:14px;justify-content:center;flex-wrap:wrap}
  .cta .primary{background:var(--brown-dk);color:#fbf1df;border:none;border-radius:13px;padding:15px 32px;font-weight:700;font-size:16px}
  .cta .primary:hover{background:var(--brown)}
  .cta .ghost{background:#fff;color:var(--brown-dk);border:1px solid var(--line);border-radius:13px;padding:15px 28px;font-weight:600;font-size:16px}
  .cta .ghost:hover{border-color:var(--brown)}
  .keybar{display:flex;justify-content:center;margin:44px auto 0;max-width:560px;border:1px solid var(--line);border-radius:14px;overflow:hidden;background:#fff}
  .keybar div{flex:1;padding:14px 10px;text-align:center;font-size:13px;font-weight:700;color:#fff}
  .keybar .k-light{background:var(--light)} .keybar .k-med{background:var(--medium)} .keybar .k-heavy{background:var(--heavy)}
  .keybar .k-closed{background:var(--closed);color:#5e4d31}
  .features{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:22px;padding:64px 0 8px}
  .feat{background:var(--paper);border:1px solid var(--line);border-radius:18px;padding:26px 24px}
  .feat .ic{width:46px;height:46px;border-radius:13px;display:flex;align-items:center;justify-content:center;font-size:22px;margin-bottom:16px}
  .feat:nth-child(1) .ic{background:var(--light-t)} .feat:nth-child(2) .ic{background:var(--medium-t)} .feat:nth-child(3) .ic{background:var(--heavy-t)}
  .feat h3{margin:0 0 8px;font-size:18px;color:#2f2113}
  .feat p{margin:0;color:var(--muted);font-size:14px;line-height:1.55}
  .strip{display:grid;grid-template-columns:repeat(4,1fr);margin:64px 0 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
  .strip div{text-align:center;padding:28px 12px}
  .strip div+div{border-left:1px solid var(--line)}
  .strip b{display:block;color:var(--brown-dk);font-size:30px;line-height:1;font-family:"Georgia",serif}
  .strip span{display:block;color:var(--muted);font-size:13px;margin-top:8px}
  .lp-foot{text-align:center;color:var(--muted);font-size:12.5px;padding:32px 24px 40px;line-height:1.55}

  .overview-wrap{padding:6px 0 4px}
  .overview-wrap h2{font-size:21px;color:#2f2113;margin:0 0 3px}
  .overview-wrap .ov-sub{color:var(--muted);font-size:13px;margin:0 0 16px;line-height:1.5}
  .overview{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:12px}
  .pcard{position:relative;text-align:left;background:var(--paper);border:1px solid var(--line);border-radius:16px;padding:15px 16px;cursor:pointer;transition:transform .08s,box-shadow .08s;font-family:inherit;overflow:visible}
  .pcard::before,.pcard::after{content:"";position:absolute;top:50%;width:12px;height:12px;border-radius:50%;background:var(--bg);transform:translateY(-50%);pointer-events:none}
  .pcard::before{left:-7px;box-shadow:inset -1px 0 0 var(--line)}
  .pcard::after{right:-7px;box-shadow:inset 1px 0 0 var(--line)}
  .pcard:hover{transform:translateY(-2px);box-shadow:0 8px 20px rgba(120,80,40,.12);border-color:var(--brown)}
  .pcard-top{display:flex;justify-content:space-between;align-items:flex-start;gap:8px}
  .pcard.closed{opacity:.6;filter:grayscale(.4)}
  .pcard.closed:hover{opacity:.85}
  .pcard-nm{font-size:15px;font-weight:700;color:#2f2113;line-height:1.25}
  .pcard-rs{font-size:11.5px;color:var(--muted);margin-top:1px}
  .pcard-badge{font-size:11px;font-weight:800;color:#fff;padding:3px 9px;border-radius:20px;white-space:nowrap;float:right;margin:0 0 4px 8px}
  .pcard-badge.closed{background:var(--closed);color:#5e4d31}
  .pcard-meta{font-size:12px;color:#5e4d31;margin-top:9px;font-weight:600;clear:both}
  /* Empty-state line on a card with no sourced hours/crowd (2026-08-19). Muted and italic so it
     reads as an explanation rather than data — the failure it fixes was a card that showed seven
     grey squares and no reason, which looks broken rather than empty. */
  .pcard-unsourced{font-size:12px;color:#7a6a4f;margin-top:8px;font-style:italic;clear:both}
  .pcard-trend{display:flex;align-items:center;gap:8px;margin-top:11px}
  .pcard-trend-l{font-size:10px;text-transform:uppercase;letter-spacing:.4px;color:var(--muted);font-weight:700}
  .tsq-row{display:flex;gap:3px}
  .tsq{width:14px;height:14px;border-radius:3px;display:inline-block}
  .tsq.t0{outline:2px solid var(--brown-dk);outline-offset:1px}

  /* ===================== APP ===================== */
  #app{display:none;min-height:100vh}
  .app-shell{min-height:100vh}
  .side{background:var(--side);border-right:1px solid var(--line);position:fixed;left:0;top:0;bottom:0;width:256px;overflow-y:auto;padding:16px 14px 30px;z-index:20}
  .side .home{display:flex;align-items:center;gap:8px;width:100%;background:#fff;color:var(--brown-dk);border:1px solid var(--line);
    border-radius:11px;padding:10px 12px;font-weight:700;margin-bottom:12px}
  .side .home:hover{border-color:var(--brown)}
  .search{width:100%;background:#fff;border:1px solid var(--line);border-radius:11px;padding:10px 12px;font-size:13.5px;color:var(--ink);margin-bottom:6px}
  .search:focus{outline:none;border-color:var(--brown)}
  .side .grp{font-size:10.5px;text-transform:uppercase;letter-spacing:.9px;color:var(--muted);margin:14px 8px 7px;font-weight:700}
  .side .pk{display:flex;flex-direction:column;gap:1px;width:100%;text-align:left;background:transparent;color:var(--ink);
    border:1px solid transparent;border-radius:11px;padding:9px 12px;margin-bottom:2px}
  .side .pk:hover{background:#fbf2e0}
  .side .pk.active{background:#fff;border-color:var(--line);box-shadow:inset 3px 0 0 var(--brown)}
  .side .pk .nm{font-size:13.5px;font-weight:700}
  .side .pk .rs{font-size:11px;color:var(--muted)}
  .side .pk .badge{font-size:9.5px;font-weight:700;padding:1px 7px;border-radius:20px;align-self:flex-start;margin-top:4px}
  .badge.season{background:var(--medium-t);color:#9a6a1c} .badge.year{background:var(--light-t);color:#2c7a48}
  .side .nores{color:var(--muted);font-size:12.5px;padding:10px 8px}

  .main{padding:14px 30px 48px;margin-left:256px;display:flex;flex-direction:column;align-items:center}
  .ph,.tabs,.view{width:100%;max-width:960px}
  .ph{display:flex;justify-content:space-between;align-items:flex-end;flex-wrap:wrap;gap:14px}
  .phright{margin-left:auto}
  .ph h2{margin:0;font-size:26px;color:#2f2113}
  .ph .meta{color:var(--muted);font-size:13px;margin-top:5px}
  .ph .meta a{font-weight:600;text-decoration:none;border-bottom:1px solid var(--line)}
  .tabs{display:flex;gap:6px;margin:10px 0 0;border-bottom:1px solid var(--line)}
  .tabs button{background:transparent;border:none;border-bottom:2px solid transparent;color:var(--muted);
    font-weight:700;font-size:14px;padding:10px 14px;margin-bottom:-1px}
  .tabs button:hover{color:var(--brown-dk)}
  .tabs button.active{color:var(--brown-dk);border-bottom-color:var(--brown)}
  .view{display:none} .view.active{display:block}

  .nav{display:flex;gap:8px;align-items:center}
  .nav button{background:#fff;color:var(--ink);border:1px solid var(--line);border-radius:10px;padding:8px 13px}
  .nav button:hover{border-color:var(--brown)}
  .month-label{font-size:16px;font-weight:700;min-width:150px;text-align:center;color:var(--brown-dk)}
  .toolbar{display:flex;justify-content:flex-end;margin:14px 0 0}

  .summary{display:flex;gap:12px;flex-wrap:wrap;margin:16px 0 4px}
  .stat{flex:1;min-width:130px;background:var(--paper);border:1px solid var(--line);border-radius:14px;padding:14px 16px}
  .stat .k{font-size:10.5px;color:var(--muted);text-transform:uppercase;letter-spacing:.5px;font-weight:700}
  .stat .v{font-size:19px;font-weight:700;margin-top:4px;color:var(--brown-dk)}
  .quiet-strip{display:flex;align-items:center;gap:10px 12px;flex-wrap:wrap;background:var(--paper);border:1px solid var(--line);border-radius:14px;padding:12px 16px;margin-top:4px}
  .quiet-strip .qs-lbl{font-size:11px;font-weight:800;letter-spacing:.6px;text-transform:uppercase;color:var(--muted)}
  .quiet-chip{display:inline-flex;align-items:center;gap:7px;background:var(--paper);border:1px solid var(--line);border-radius:999px;padding:7px 13px;cursor:pointer;font-weight:700;color:var(--brown-dk);font-size:14px;font-family:inherit}
  .quiet-chip:hover{border-color:var(--brown);box-shadow:0 1px 6px rgba(0,0,0,.08)}
  .quiet-chip .qdot{width:9px;height:9px;border-radius:50%;flex:0 0 auto}
  .quiet-chip .qstatus{font-weight:600;color:var(--muted);font-size:12px}

  .legend{display:flex;flex-wrap:wrap;gap:16px;align-items:center;margin:16px 0 4px;background:var(--paper);border:1px solid var(--line);border-radius:14px;padding:12px 18px}
  .legend .grp{display:flex;align-items:center;gap:8px;font-size:12.5px;color:var(--ink);font-weight:600}
  .sw{width:15px;height:15px;border-radius:5px;display:inline-block}

  .grid{display:grid;grid-template-columns:repeat(7,1fr);gap:8px;margin-top:14px}
  .dow{font-size:11px;color:var(--muted);text-align:center;text-transform:uppercase;letter-spacing:.5px;padding-bottom:2px;font-weight:700}
  .cell{border:1px solid var(--line);border-radius:13px;min-height:108px;padding:8px 10px;position:relative;transition:transform .08s,box-shadow .08s;overflow:hidden;background:var(--paper)}
  .cell:hover{transform:translateY(-2px);box-shadow:0 6px 16px rgba(120,80,40,.14)}
  .cell.empty{background:transparent;border:none}
  .cell .num{font-size:13px;font-weight:700;color:#3a2a18}
  .cell .bar{position:absolute;left:0;right:0;bottom:0;height:7px}
  .cell .lvl{position:absolute;top:7px;right:8px;font-size:11px;font-weight:800;padding:1px 7px;border-radius:20px;color:#fff}
  .cell .closed-tag{display:inline-block;margin-top:15px;font-size:11px;font-weight:700;color:#6f5b39;background:var(--closed-t);padding:2px 8px;border-radius:7px}
  .cell .resv{position:absolute;left:10px;right:10px;bottom:11px;font-size:10.5px;color:#5e4d31;font-weight:700}
  .cell .hrs{font-size:10px;color:#7a6647;margin-top:1px}
  .cell .ev{margin-top:2px;font-size:9.5px;color:#9a6a1c;font-weight:600;line-height:1.18;max-height:23px;overflow:hidden}
  .cell .cal-wx{font-size:9.5px;color:#6b563c;margin-top:1px;line-height:1.15}
  .cell .cal-wx.cal-wx-typ{color:#9c8767;font-style:italic}
  .cell .cal-verd{display:inline-block;font-size:8.5px;font-weight:800;border-radius:6px;padding:0 5px;margin-top:2px}
  .cell .cal-verd.good{background:#e3f5e9;color:#2e7d4f}
  .cell .cal-verd.bad{background:#fbe4de;color:#b5341f}
  .cell.today{box-shadow:0 0 0 2px var(--brown) inset}

  .chartwrap{margin-top:26px;background:var(--paper);border:1px solid var(--line);border-radius:16px;padding:18px 20px 12px}
  .chartwrap h3{margin:0 0 3px;font-size:16px;color:#2f2113}
  .chartwrap .csub{color:var(--muted);font-size:12px;margin-bottom:8px}
  .chartbox{position:relative;width:100%}
  .chartbox svg{display:block;width:100%;height:auto}
  .ctip{position:absolute;pointer-events:none;background:#fffdf8;border:1px solid var(--line);border-radius:9px;padding:8px 11px;font-size:12px;
    opacity:0;transition:opacity .08s;white-space:nowrap;z-index:5;box-shadow:0 8px 22px rgba(120,80,40,.18);color:var(--ink)}
  .ctip b{display:block;font-size:12.5px;margin-bottom:3px;color:#2f2113}

  /* planner + compare */
  .panel{background:var(--paper);border:1px solid var(--line);border-radius:16px;padding:18px 22px;margin-top:12px}
  .panel h3{margin:0 0 4px;font-size:18px;color:#2f2113}
  .panel .sub{color:var(--muted);font-size:13px;margin-bottom:16px;line-height:1.5}
  .ctrls{display:flex;gap:14px;flex-wrap:wrap;align-items:flex-end}
  .field{display:flex;flex-direction:column;gap:5px}
  .field label{font-size:11px;text-transform:uppercase;letter-spacing:.5px;color:var(--muted);font-weight:700}
  .field input,.field select{background:#fff;border:1px solid var(--line);border-radius:10px;padding:9px 12px;font-size:14px;color:var(--ink);min-width:150px}
  .field input:focus,.field select:focus{outline:none;border-color:var(--brown)}
  .go{background:var(--brown-dk);color:#fbf1df;border:none;border-radius:11px;padding:11px 20px;font-weight:700;font-size:14px}
  .go:hover{background:var(--brown)}
  .results{margin-top:18px;display:flex;flex-direction:column;gap:9px}
  .rrow{display:grid;grid-template-columns:34px 1.2fr 88px 1.15fr 1fr .95fr;gap:12px;align-items:center;
    background:#fff;border:1px solid var(--line);border-radius:12px;padding:11px 14px}
  .rrow.head{background:transparent;border:none;padding:0 14px;color:var(--muted);font-size:11px;text-transform:uppercase;letter-spacing:.5px;font-weight:700}
  .rrow .rank{font-weight:800;color:var(--brown);font-family:"Georgia",serif;font-size:16px}
  .rrow .d{font-weight:700;font-size:13.5px}
  .rrow .d small{display:block;color:var(--muted);font-weight:400;font-size:11.5px}
  .rrow .lvlpill{font-size:11.5px;font-weight:800;padding:3px 9px;border-radius:20px;color:#fff;text-align:center}
  .rrow .hh{font-size:12.5px;color:#5e4d31}
  .rrow .gg{font-size:12.5px;color:#5e4d31;font-weight:600}
  .rrow .ev2{font-size:12px;color:#9a6a1c;font-weight:600;line-height:1.3;padding-left:8px}
  .pl-sum{margin:6px 0 6px;font-size:13.5px;color:#4a3a24;background:rgba(122,78,38,.06);border:1px solid var(--line);border-radius:10px;padding:10px 14px;line-height:1.55}
  .pl-tip{margin:12px 0 0;font-size:13px;color:#5e4a30;background:#fffaf0;border:1px dashed #d9b87f;border-radius:10px;padding:9px 14px;line-height:1.5}
  .pl-tip::before{content:"Tip: ";font-weight:800;color:#b1442e}
  .rrow.best{box-shadow:0 0 0 2px var(--light) inset}
  .rrow.win{box-shadow:0 0 0 2px var(--light) inset}
  .cmprow{grid-template-columns:24px 1.6fr 92px 86px 1fr 1fr}
  .statusdot{font-size:11.5px;font-weight:700}
  .closedrow{opacity:.6}
  .empty-note{color:var(--muted);font-size:13px;padding:14px 2px}
  /* Unified profile renderer (assets/park-profile.js) — one template for every park, tiered by data depth. */
  .pp-head{margin:2px 0 8px}
  .pp-title{margin:0 0 4px;font-family:Georgia,"Times New Roman",serif;color:var(--brown-dk,#5a3d21);font-size:28px}
  .pp-state{font:700 11px system-ui,Arial,sans-serif;text-transform:uppercase;letter-spacing:.4px;color:#8a5a1e;background:#f6ead2;border:1px solid #e6d0a4;border-radius:999px;padding:2px 8px;vertical-align:middle}
  .pp-meta{color:var(--muted,#8a7456);font-size:14px;line-height:1.5}
  .pp-tabs{display:flex;gap:6px;margin:14px 0 0;border-bottom:1px solid var(--line,#e6d6ba);flex-wrap:wrap}
  .pp-tab{background:none;border:none;border-bottom:2px solid transparent;color:var(--muted,#8a7456);font-weight:700;font-size:14px;padding:10px 14px;margin-bottom:-1px;cursor:pointer}
  .pp-tab.on{color:var(--brown-dk,#5a3d21);border-bottom-color:var(--brown,#c9a36f)}
  .pp-view{padding-top:6px}
  .pp-grid{display:grid;gap:8px;margin-top:12px}
  .pp-row,.pp-newsrow{display:flex;justify-content:space-between;align-items:center;gap:12px;border:1px solid var(--line,#e6d6ba);border-radius:10px;padding:10px 14px;background:#fffdf8}
  .pp-newsrow{flex-direction:column;align-items:flex-start;gap:3px}
  .pp-rn{font-weight:600;color:var(--brown-dk,#5a3d21)}
  .pp-card{border:1px solid var(--line,#e6d6ba);border-radius:12px;padding:14px 16px;background:#fffdf8;margin-top:12px}
  .pp-note{color:var(--muted,#8a7456);font-size:13px;margin-top:8px}
  .pp-empty{color:var(--muted,#8a7456);font-size:14px;background:#faf5ea;border:1px dashed #d9c39c;border-radius:10px;padding:14px;margin-top:12px}
  .pp-pill{display:inline-block;font-size:11px;font-weight:800;padding:3px 10px;border-radius:20px}
  .pp-pill--open{background:#eaf6ee;color:#256b41;border:1px solid #bfe3cd}
  .pp-pill--closed{background:#efe7d6;color:#8a7a5a}
  .pp-cta{display:inline-block;background:#7a4e26;color:#fff;text-decoration:none;border-radius:9px;padding:6px 13px;font-weight:700;font-size:13px}
  .pp-link{font-weight:600;color:#7a4e26;text-decoration:none;font-size:13px;white-space:nowrap}

  .detail{position:fixed;inset:0;background:rgba(60,40,20,.4);display:none;align-items:center;justify-content:center;z-index:50;padding:20px}
  .detail.show{display:flex}
  .card{background:var(--paper);border:1px solid var(--line);border-radius:18px;max-width:440px;width:100%;padding:24px 26px;box-shadow:0 24px 60px rgba(60,40,20,.3);max-height:90vh;overflow-y:auto}
  .card h3{margin:0 0 2px;font-size:19px;color:#2f2113}.card .sub{color:var(--muted);font-size:13px;margin-bottom:16px}
  .meter{height:14px;border-radius:8px;background:var(--paper2);overflow:hidden;margin:6px 0 4px;border:1px solid var(--line)}.meter>span{display:block;height:100%}
  .row{display:flex;justify-content:space-between;font-size:13px;padding:8px 0;border-bottom:1px solid var(--line2)}
  .closex{float:right;cursor:pointer;color:var(--muted);font-size:22px;line-height:1;margin-top:-6px}
  .note{font-size:12.5px;color:var(--muted);margin-top:13px;line-height:1.45}
  .tips{list-style:none;padding:0;margin:13px 0 0;display:flex;flex-direction:column;gap:7px}
  .tips li{font-size:12.5px;color:var(--ink);line-height:1.4;padding-left:20px;position:relative}
  .tips li::before{content:"✓";position:absolute;left:0;color:var(--light);font-weight:800}
  .pill{display:inline-block;font-size:11px;font-weight:800;padding:3px 10px;border-radius:20px;color:#fff}
  .disclaimer{margin-top:24px;font-size:12px;color:var(--muted);line-height:1.55;background:var(--paper);border:1px solid var(--line);border-radius:14px;padding:15px 17px}

  .brand{display:flex;align-items:center;gap:9px;line-height:1}
  .brand span .ride{color:var(--heavy)}
  .logo{width:30px;height:30px;flex:0 0 auto}
  .sidebrand{display:flex;flex-direction:column;align-items:flex-start;gap:3px;font-family:"Georgia",serif;font-size:30px;font-weight:700;color:var(--brown-dk);padding:8px 6px 16px;white-space:nowrap;line-height:1}
  .sidebrand{cursor:pointer;border-radius:10px;transition:opacity .12s}
  .sidebrand:hover{opacity:.78}
  .sidebrand .logo{width:66px;height:66px}
  .sidefoot{margin-top:18px;padding:12px 8px 0;border-top:1px solid var(--line);color:var(--muted);font-size:11px;line-height:1.5}
  /* monetization */
  .phright{display:flex;flex-direction:column;align-items:flex-end;gap:10px}
  .tickbtn{display:inline-flex;align-items:center;gap:8px;background:var(--heavy);color:#fff;text-decoration:none;border:none;
    border-radius:11px;padding:11px 18px;font-weight:800;font-size:14px;box-shadow:0 4px 12px rgba(224,84,60,.28)}
  .tickbtn:hover{filter:brightness(1.06)}
  .tickbtn small{font-weight:600;opacity:.9;font-size:10.5px}
  .tickbtn.wide{width:100%;justify-content:center;margin-top:12px}
  .ticketbox{margin-top:14px;background:var(--paper2);border:1px solid var(--line);border-radius:14px;padding:14px 16px}
  .priceline{font-size:14px;color:var(--ink)} .priceline b{color:var(--brown-dk);font-size:16px} .priceline small{color:var(--muted)}
  .deals{margin-top:12px;border-top:1px solid var(--line);padding-top:11px}
  .deals-h{font-size:11px;text-transform:uppercase;letter-spacing:.5px;color:var(--muted);font-weight:700;margin-bottom:7px}
  .deals ul{list-style:none;margin:0 0 8px;padding:0;display:flex;flex-direction:column;gap:5px}
  .deals li{font-size:12.5px;color:var(--ink);padding-left:18px;position:relative;line-height:1.35}
  .deals li::before{content:"";position:absolute;left:0;font-size:11px}
  .deals a{font-size:12.5px;font-weight:600;text-decoration:none;border-bottom:1px solid var(--line)}
  .deals-note{font-size:11px;color:var(--muted);margin-top:7px}
  .aff-note{font-size:11px;color:var(--muted)}
  .ad-slot{display:none;/* placeholders hidden until AdSense approval, restore display:flex when ad units go live */flex-direction:column;align-items:center;justify-content:center;text-align:center;gap:3px;
    background:repeating-linear-gradient(45deg,#f3ead8,#f3ead8 11px,#efe2c9 11px,#efe2c9 22px);
    border:1px dashed #c9b894;border-radius:12px;margin:16px 0}
  .ad-slot .lbl{font-size:9.5px;letter-spacing:1.3px;text-transform:uppercase;color:#b09a6e;font-weight:700}
  .ad-slot .ph2{font-weight:700;color:#8a7456;font-size:13px}
  .ad-slot.leader{min-height:96px}
  .ad-slot.rect{min-height:250px;margin-top:14px}

  .tabs{flex-wrap:wrap}
  .livehead{display:flex;gap:0;flex-wrap:wrap;margin-bottom:6px;border:1px solid var(--line);border-radius:14px;overflow:hidden;background:var(--paper2)}
  .liveread{flex:1;min-width:150px;border-radius:0;padding:12px 15px;color:#fff}
  .liveread span{display:block;font-size:10.5px;text-transform:uppercase;letter-spacing:.5px;opacity:.92;font-weight:700}
  .liveread b{font-size:21px}
  .livekpi{flex:1;min-width:104px;background:transparent;border:0;border-left:1px solid var(--line);border-radius:0;padding:12px 15px}
  .livekpi span{display:block;font-size:10.5px;text-transform:uppercase;letter-spacing:.5px;color:var(--muted);font-weight:700}
  .livekpi b{font-size:18px;color:var(--brown-dk)}
  .liveupd{font-size:11.5px;color:var(--muted);margin:8px 0 12px}
  .linklike{background:none;border:none;color:var(--brown-dk);text-decoration:underline;font-size:11.5px;cursor:pointer;padding:0}
  .ridelist{display:flex;flex-direction:column;gap:6px;max-height:62vh;overflow-y:auto;-webkit-overflow-scrolling:touch;padding-right:3px}
  .ride{display:flex;justify-content:space-between;align-items:center;gap:10px;background:#fff;border:1px solid var(--line);border-radius:11px;padding:10px 14px}
  .ride.click{cursor:pointer}
  .rdname{cursor:pointer;text-decoration:underline;text-decoration-color:#d9c8a6;text-underline-offset:2px}
  .rmask{position:fixed;inset:0;background:rgba(40,28,16,.45);display:none;align-items:center;justify-content:center;z-index:9999;padding:18px}
  .rmask.show{display:flex}
  .rcard{background:#fffaf0;border:1px solid #e6d8bf;border-radius:16px;max-width:440px;width:100%;max-height:85vh;overflow:auto;padding:18px 20px 20px;position:relative;box-shadow:0 18px 50px rgba(0,0,0,.25)}
  .rclose{position:absolute;top:8px;right:12px;border:0;background:none;font-size:24px;color:#8a7456;cursor:pointer;line-height:1}
  .rtitle{margin:2px 30px 12px 0;font:700 20px Georgia,serif;color:#7a4e26}
  .rd-rows{display:flex;flex-direction:column}
  .rd-row{display:flex;justify-content:space-between;gap:14px;padding:9px 0;border-top:1px solid #eee3cc;font-size:14.5px}
  .rd-row:first-child{border-top:none}
  .rd-row>span{color:#8a7456}
  .rd-row>b{color:#3d2b1a;text-align:right}
  .rd-note{margin-top:12px;font-size:12px;color:#8a7456;line-height:1.5}
  .tipcard{margin-top:14px;background:#fffaf0;border:1px solid var(--line);border-left:4px solid #efa636;border-radius:11px;padding:12px 14px}
  .tipcard-h{font-size:10.5px;font-weight:800;text-transform:uppercase;letter-spacing:.5px;color:#b1442e;margin-bottom:5px}
  .tipcard-b{font-size:13.5px;color:#3d2b1a;line-height:1.5}
  .cmpcard{display:flex;align-items:center;gap:12px;background:var(--paper);border:1px solid var(--line);border-radius:14px;padding:12px 14px;margin-top:9px;cursor:pointer;transition:transform .1s,box-shadow .12s}
  .cmpcard:hover{transform:translateY(-2px);box-shadow:0 6px 16px rgba(120,80,40,.13)}
  .cmpcard.win{box-shadow:0 0 0 2px var(--light) inset}
  .cmpcard-rank{flex:0 0 26px;font-family:Georgia,serif;font-size:20px;font-weight:800;color:var(--brown);text-align:center}
  .cmpcard-body{flex:1;min-width:0}
  .cmpcard-nm{font-weight:800;font-size:15px;color:#2f2113}.cmpcard-nm small{display:block;font-weight:400;font-size:11.5px;color:var(--muted)}
  .cmp-best{display:inline-block;font-size:9.5px;font-weight:800;text-transform:uppercase;letter-spacing:.4px;color:#fffdf8;background:#3fae6b;border-radius:20px;padding:1px 8px;margin-left:8px;vertical-align:middle}
  .cmpcard-row{display:flex;flex-wrap:wrap;gap:8px 16px;margin-top:7px}
  .cmpm{display:flex;flex-direction:column;gap:2px}
  .cmpm-l{font-size:9.5px;text-transform:uppercase;letter-spacing:.4px;color:var(--muted);font-weight:700}
  .cmpm-v{font-size:12.5px;color:#5e4d31;font-weight:600}
  .cmpcard .lvlpill{font-size:11px;padding:2px 8px}
  .cmpcard-spark{flex:0 0 132px;text-align:center}
  .cmpspark-l{font-size:9.5px;text-transform:uppercase;letter-spacing:.3px;color:var(--muted);font-weight:700;margin-bottom:3px}
  .cmpspark{width:126px;height:32px}
  @media(max-width:640px){.cmpcard{flex-wrap:wrap}.cmpcard-spark{flex-basis:100%;text-align:left;margin-top:6px}.cmpspark{width:100%}}
  .dartwrap{background:none;border:none}
  .bubblewrap{background:none;border:none}
  .bubble{display:block;width:19px;height:19px;border-radius:50%;background:var(--bc);border:2.5px solid #fffdf8;box-shadow:0 2px 5px rgba(74,46,22,.4);transform:scale(0);animation:bubbleIn .42s cubic-bezier(.34,1.7,.5,1) forwards;animation-delay:var(--d,0s);cursor:pointer}
  .leaflet-marker-icon.bubblewrap:hover .bubble{filter:brightness(1.12)}
  @keyframes bubbleIn{0%{transform:scale(0)}65%{transform:scale(1.3)}100%{transform:scale(1)}}
  .bubble.pop{animation:bubblePop .36s ease-in forwards}
  @keyframes bubblePop{0%{transform:scale(1)}35%{transform:scale(1.4)}100%{transform:scale(0);opacity:0}}
  .bunting{height:18px;margin:2px 0 14px;background:
      linear-gradient(135deg,transparent 49%,#f6eedd 50%) -1px 0/22px 18px repeat-x,
      linear-gradient(-135deg,transparent 49%,#f6eedd 50%) 0 0/22px 18px repeat-x,
      repeating-linear-gradient(90deg,#3fae6b 0 22px,#efa636 22px 44px,#e0543c 44px 66px);
      border-radius:2px;opacity:.9}
    .carny-pill{display:inline-block;font-size:11px;font-weight:800;letter-spacing:.5px;text-transform:uppercase;color:#fffdf8;background:#e0543c;border-radius:20px;padding:2px 10px;vertical-align:middle;margin-left:8px;transform:rotate(-2deg)}
  .eat-grid{display:flex;flex-direction:column;gap:9px;margin:8px 0 4px}
  .eat-card{background:#fffaf0;border:1.5px dashed #d9b87f;border-radius:12px;padding:11px 14px;cursor:pointer;transition:box-shadow .15s,transform .1s}
  .eat-card.open{background:#fffdf7;box-shadow:0 3px 12px rgba(122,78,38,.12)}
  .eat-card:hover{box-shadow:0 4px 14px rgba(122,78,38,.16);transform:translateY(-1px)}
  .eat-card.kid{border-color:#9bbf6f}
  .eat-head{display:flex;align-items:center;gap:10px}
  .eat-place{font-weight:800;color:#3d2b1a;font-size:15px}
  .eat-area{color:#6b5537;font-size:12.5px}
  .eat-chev{margin-left:auto;color:#b1442e;font-weight:800;transition:transform .2s}
  .eat-card.open .eat-chev{transform:rotate(90deg)}
  .eat-body{max-height:0;overflow:hidden;transition:max-height .28s ease;}
  .eat-card.open .eat-body{max-height:320px;margin-top:9px}
  .eat-dish{font-size:14.5px;color:#1f6b3a;font-weight:700;margin-bottom:8px}
  .eat-card.kid .eat-dish{color:#4f7a1e}
  /* 2026-07-20 readability fix: the ticket badges were white text on amber (~1.7:1 contrast — the
     "unreadable dining color scheme"). Dark-brown text on amber reads at ~6:1; the kid badge uses a
     deeper green so its dark text clears WCAG too. */
  .eat-tkt{display:inline-block;font-size:10px;font-weight:800;letter-spacing:.6px;color:#3a2708;background:#efa636;border-radius:5px;padding:1px 7px;margin-right:6px;vertical-align:middle}
  .eat-card.kid .eat-tkt{background:#a9cf6f}
  .eat-menu{display:inline-block;font-size:14px;font-weight:700;color:#7a4e26;margin:2px 14px 2px 0;padding:4px 2px;text-decoration:underline}
  .eat-find{font-size:13px;font-weight:700;color:#b1442e;background:none;border:none;cursor:pointer;padding:0;text-decoration:underline}
  /* 2026-07-15 "leave it as an open poll" mandate additions */
  .eat-votecount{font-size:12px;color:#6b5537;margin-bottom:6px}
  .eat-vote,.eat-report{display:block;font-size:12.5px;font-weight:700;background:#fff;border:1px solid var(--line);color:#3d2b1a;border-radius:9px;padding:6px 10px;margin-top:7px;cursor:pointer;width:100%;text-align:left}
  .eat-vote:hover{border-color:#3fae6b;color:#1f6b3a}
  .eat-vote:disabled{opacity:.6;cursor:default}
  .eat-report{color:#8a7456;border-style:dashed}
  .eat-report:hover{border-color:#b1442e;color:#b1442e}
  .eat-report:disabled{opacity:.6;cursor:default}
  .eat-card.eat-flagged{border-color:#e0543c}
  .eat-removed-flag{font-size:12px;font-weight:700;color:#b1442e;background:#fbeae4;border-radius:8px;padding:5px 9px;margin-bottom:8px}
  .dart-throw{display:block;transform-origin:50% 95%;animation:dartThrow .55s cubic-bezier(.18,.85,.3,1.25) both;animation-delay:var(--d,0s);filter:drop-shadow(0 3px 2px rgba(74,46,22,.35))}
  @keyframes dartThrow{0%{opacity:0;transform:translate(46px,-78px) rotate(58deg) scale(.5)}60%{opacity:1}100%{opacity:1;transform:translate(0,0) rotate(0) scale(1)}}
  .leaflet-marker-icon.dartwrap:hover .dart-throw{transform:scale(1.18);transition:transform .12s}
  .dart-big{filter:drop-shadow(0 4px 4px rgba(74,46,22,.45))}
  .coaster-cart{position:absolute;left:0;top:0;width:30px;height:24px;transform-origin:50% 92%;pointer-events:none;z-index:3;filter:drop-shadow(0 2px 2px rgba(74,46,22,.3));will-change:transform}
  .pingwrap{background:none;border:none}
  .pr-topbar{position:sticky;top:0;z-index:900;align-self:stretch;width:100%;box-sizing:border-box;display:flex;gap:8px;align-items:center;justify-content:flex-end;flex-wrap:wrap;background:rgba(251,242,221,.97);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);padding:9px 6px;margin:0 0 8px;border-bottom:1px solid var(--line)}
  .pr-topbar .tickbtn{margin:0}
  .pr-topbar .sharebtn{margin-left:0;display:inline-flex;align-items:center}
  @media(max-width:620px){.pr-topbar{justify-content:center}.pr-topbar .tickbtn,.pr-topbar .sharebtn{padding:9px 14px;font-size:13px}}
  .sharebtn{margin-left:8px;background:#e0543c;color:#fffdf8;border:none;border-radius:12px;padding:11px 20px;font-weight:800;font-size:14px;cursor:pointer;font-family:inherit;white-space:nowrap;box-shadow:0 2px 8px rgba(224,84,60,.3)}
  .sharebtn::before{content:"\2197  ";font-weight:800}
  .sharebtn:hover{background:#c7472f}
  .sharemodal{position:fixed;inset:0;z-index:100000;background:rgba(40,28,16,.55);display:none;align-items:center;justify-content:center;padding:18px}
  .sharemodal.show{display:flex}
  .sharebox{position:relative;background:var(--bg);border-radius:18px;padding:20px;max-width:420px;width:100%;max-height:92vh;overflow:auto;box-shadow:0 18px 50px rgba(0,0,0,.35)}
  .sharebox h3{margin:0 0 12px;font-size:20px;color:var(--brown)}
  .sharex{position:absolute;top:12px;right:14px;background:none;border:none;font-size:26px;line-height:1;color:#8a7456;cursor:pointer}
  .shareimg{width:100%;border-radius:12px;border:1px solid var(--line);display:block;margin-bottom:14px}
  .sharegrid{display:grid;grid-template-columns:1fr 1fr;gap:9px}
  .shareopt{display:block;text-align:center;text-decoration:none;font-weight:700;font-size:14px;padding:12px;border-radius:11px;cursor:pointer;border:none;font-family:inherit;color:#fffdf8}
  .shareopt.nat{background:#3fae6b;grid-column:1/-1}
  .shareopt.fb{background:#1877f2}.shareopt.tw{background:#111}.shareopt.pin{background:#e60023}.shareopt.wa{background:#25d366}.shareopt.rd{background:#ff4500}
  .shareopt.dl{background:#7a4e26}.shareopt.cp{background:#efa636}
  .shareopt:hover{filter:brightness(1.08)}
  .sharenote{font-size:12px;color:var(--muted);margin-top:12px;line-height:1.5;text-align:center}
  #__toast{position:fixed;left:50%;bottom:26px;transform:translateX(-50%) translateY(20px);background:#3d2b1a;color:#fbf1df;padding:12px 20px;border-radius:12px;font-size:14px;font-weight:600;box-shadow:0 6px 20px rgba(0,0,0,.25);opacity:0;pointer-events:none;transition:opacity .2s,transform .2s;z-index:99999;max-width:90vw;text-align:center}
  #__toast.show{opacity:1;transform:translateX(-50%) translateY(0)}
  .map-ping{display:block;width:14px;height:14px}
  .map-ping i{position:absolute;left:50%;top:50%;border-radius:50%;border:3px solid #e0543c;transform:translate(-50%,-50%);animation:mapping 1.6s ease-out infinite}
  .map-ping i:nth-child(2){animation-delay:.8s}
  @keyframes mapping{0%{width:12px;height:12px;opacity:.95}100%{width:92px;height:92px;opacity:0}}
  sup.tm{font-size:.45em;font-weight:700;color:inherit;opacity:.75;margin-left:1px;vertical-align:super}
  .stay-dirh{margin:20px 0 2px;font-size:15px;color:var(--brown)}
  .stay-dir{display:grid;grid-template-columns:1fr 1fr;gap:6px 14px}
  .sd-tier{grid-column:1/-1;font-size:11px;font-weight:800;letter-spacing:.6px;text-transform:uppercase;color:var(--muted);margin-top:10px}
  .sd-row{display:flex;justify-content:space-between;align-items:center;gap:10px;background:#fff;border:1px solid var(--line);border-radius:9px;padding:7px 11px;text-decoration:none;color:var(--ink);font-size:12.5px}
  .sd-row b{font-weight:700}
  .sd-row span{color:var(--muted);font-size:11.5px;text-align:right;flex-shrink:0}
  .ridefc{display:none;background:#fbf6ea;border:1px solid var(--line);border-top:none;border-radius:0 0 11px 11px;margin:-7px 3px 0;padding:10px 14px 8px}
  .ridefc.on{display:block}
  .fcbars{display:flex;align-items:flex-end;gap:2px;height:34px}
  .fcb{flex:1;background:#d9c79f;border-radius:2px 2px 0 0;min-width:3px}
  .fcb.cur{background:#3fae6b}
  .fckey{font-size:10.5px;color:#8a7456;margin-top:5px}
  .ride .rn{font-size:13.5px;font-weight:600;color:var(--ink)}
  .ride .rw{font-size:12.5px;font-weight:800;color:#fff;padding:3px 10px;border-radius:20px;min-width:64px;text-align:center}
  .ride .rw.closed{background:var(--closed);color:#5e4d31}
  .closedride{opacity:.6}

  .open{background:var(--brown-dk);color:#fbf1df;border:none;border-radius:11px;padding:11px 18px;font-weight:700;font-size:14px;cursor:pointer}
  .open:hover{background:var(--brown)}
  .bunting-top{margin:0 0 6px;border-radius:0;height:16px;opacity:.85}
  .lp-head{display:flex;justify-content:space-between;align-items:center;gap:16px;max-width:1180px;margin:0 auto;padding:20px 30px 6px;flex-wrap:wrap}
  .lp-brand{display:flex;align-items:center;gap:14px}
  .biglogo{width:140px;height:140px;flex:0 0 auto}
  .biglogo-sweep{transform-origin:32px 30px;animation:radarsweep 10s linear infinite}
  .sidelogo-sweep{transform-origin:18px 17px;animation:radarsweep 10s linear infinite}
  @keyframes radarsweep{0%{transform:rotate(0deg)}12%{transform:rotate(360deg)}100%{transform:rotate(360deg)}}
  @media (prefers-reduced-motion: reduce){.biglogo-sweep,.sidelogo-sweep{animation:none}}
  @keyframes radarspin{to{transform:rotate(360deg)}}
  .lp-title{font-family:"Georgia",serif;font-size:52px;font-weight:700;color:var(--brown-dk);line-height:1}
  .rdr{color:var(--heavy)}
  .lp-tag{color:var(--muted);font-size:13.5px;margin-top:6px}
  .lp-actions{display:flex;gap:10px;align-items:center}
  .lp-link{background:transparent;border:1px solid var(--line);color:var(--brown-dk);border-radius:11px;padding:10px 16px;font-weight:700;font-size:13.5px;cursor:pointer}
  .lp-link:hover{border-color:var(--brown)}
  .lp-map-wrap{max-width:1180px;margin:0 auto;padding:2px 30px 12px;position:relative}
  .lp-mapkey{display:flex;gap:16px;flex-wrap:wrap;justify-content:flex-end;font-size:12px;color:var(--muted);margin-bottom:6px;font-weight:600}
  .lp-mapkey span{display:flex;align-items:center;gap:6px}
  .lp-mapkey i{width:11px;height:11px;border-radius:50%;display:inline-block}
  #lp-map{background:radial-gradient(circle at 42% 48%,#fcf4e4,#f1e4ca);border:1px solid var(--line);border-radius:18px;overflow:hidden}
  #lp-map svg{display:block;width:100%;height:auto}
  .mapsweep{animation:radarspin 9s linear infinite;pointer-events:none}
  .blip{cursor:pointer;transition:r .1s}
  .blip-ping{transform-box:fill-box;transform-origin:center;animation:blipping 2.6s ease-out infinite;opacity:0}
  @keyframes blipping{0%{transform:scale(0.5);opacity:0}15%{opacity:.7}100%{transform:scale(2.8);opacity:0}}
  @media (prefers-reduced-motion: reduce){.blip-ping{display:none}}
  .radar-ov{max-width:760px;margin:4px auto 10px;display:flex;align-items:center;flex-wrap:wrap;gap:10px 18px;background:#fffaf0;border:1px solid var(--line);border-radius:12px;padding:11px 16px}
  .ro-scan{display:flex;align-items:center;gap:7px;font-size:11px;font-weight:800;letter-spacing:.6px;color:#b1442e;text-transform:uppercase}
  .ro-live{width:8px;height:8px;border-radius:50%;background:#3fae6b;box-shadow:0 0 0 0 rgba(63,174,107,.6);animation:livedot 1.8s ease-out infinite}
  .ro-tracked{display:flex;align-items:baseline;gap:5px;font-size:13px;color:#5e4a30}.ro-tracked b{font-size:19px;font-weight:800;color:#3d2b1a;font-family:Georgia,serif}
  .ro-breaks{display:flex;flex-wrap:wrap;gap:7px;margin-left:auto}
  .ro-b{font-size:12.5px;color:#5e4a30;background:#fff;border:1px solid var(--line);border-left:4px solid var(--c);border-radius:7px;padding:3px 9px}.ro-b b{color:#3d2b1a;font-weight:800}
  .ro-upd{font-size:11px;color:#a08a6a;width:100%;text-align:right;margin-top:-2px}
  .tfmodal{position:fixed;inset:0;z-index:100000;background:rgba(40,28,16,.55);display:none;align-items:flex-start;justify-content:center;padding:24px 16px;overflow:auto}
  .tfmodal.show{display:flex}
  .tfbox{position:relative;background:var(--bg);border-radius:18px;padding:22px;max-width:480px;width:100%;box-shadow:0 18px 50px rgba(0,0,0,.35)}
  .tfbox h3{margin:0 0 4px;font-size:23px;color:var(--brown);font-family:Georgia,serif}
  .tfsub{font-size:13.5px;color:var(--muted);margin-bottom:16px;line-height:1.5}
  .tffields{display:flex;flex-direction:column;gap:11px}
  .tffields label{display:flex;flex-direction:column;gap:4px;font-size:12px;font-weight:800;text-transform:uppercase;letter-spacing:.4px;color:var(--muted)}
  .tffields select,.tffields input{font:inherit;font-weight:600;text-transform:none;letter-spacing:0;color:var(--ink);padding:10px 12px;border:1px solid var(--line);border-radius:10px;background:#fff}
  .tfdates{display:flex;gap:11px}.tfdates label{flex:1}
  .tfgo{width:100%;margin-top:16px;font-size:15px;padding:13px}
  .tfcard{background:var(--paper);border:1px solid var(--line);border-radius:14px;padding:14px 16px;margin-top:12px}
  .tfcard.win{box-shadow:0 0 0 2px var(--light) inset;background:#fbfff7}
  .tf-best{font-size:10.5px;font-weight:800;text-transform:uppercase;letter-spacing:.5px;color:#3fae6b;margin-bottom:3px}
  .tf-alt{font-size:10.5px;font-weight:800;text-transform:uppercase;letter-spacing:.5px;color:var(--muted);margin-bottom:3px}
  .tfcard-nm{font-weight:800;font-size:18px;color:#2f2113}.tfcard-nm small{display:block;font-weight:400;font-size:12.5px;color:var(--muted)}
  .tfcard-why{font-size:13.5px;color:#4a3a24;line-height:1.5;margin:8px 0 11px;display:flex;gap:7px;align-items:flex-start}
  .tf-dot{flex:0 0 10px;width:10px;height:10px;border-radius:50%;margin-top:4px}
  .tfexplore{background:#7a4e26;color:#fbf1df;border:none;border-radius:10px;padding:10px 16px;font-weight:700;font-size:13.5px;cursor:pointer;font-family:inherit}
  .tfexplore:hover{background:#9c6b3b}
  @media(max-width:560px){.ro-breaks{margin-left:0;width:100%}.ro-upd{text-align:left}}
  .ticker{position:fixed;left:0;right:0;bottom:0;z-index:90;display:flex;align-items:stretch;height:42px;background:#fbf2dd;border-top:4px solid transparent;border-image:repeating-linear-gradient(90deg,#3fae6b 0 26px,#efa636 26px 52px,#e0543c 52px 78px) 4;box-shadow:0 -3px 16px rgba(122,78,40,.16)}
  @keyframes livedot{0%{box-shadow:0 0 0 0 rgba(63,174,107,.55)}100%{box-shadow:0 0 0 7px rgba(63,174,107,0)}}
  .newsbar-tag{flex:0 0 auto;display:flex;align-items:center;gap:7px;background:#e0543c;color:#fffdf8;font-weight:800;font-size:11.5px;text-transform:uppercase;letter-spacing:.5px;padding:0 15px;white-space:nowrap}
  .newsbar-tag::before{content:"";width:8px;height:8px;border-radius:50%;background:#fffdf8;animation:newspulse 1.8s ease-out infinite}
  @keyframes newspulse{0%{box-shadow:0 0 0 0 rgba(255,255,255,.6)}100%{box-shadow:0 0 0 7px rgba(255,255,255,0)}}
  .newsbar-track{position:relative;flex:1;overflow:hidden;display:flex;align-items:center}
  .tk-track{position:relative;display:inline-flex;align-items:center;white-space:nowrap;animation:tkscroll 80s linear infinite;will-change:transform;z-index:1}
  .newsbar-track:hover .tk-track{animation-play-state:paused}
  .scope-wave{position:absolute;left:0;bottom:-3px;width:200%;height:18px;opacity:.3;animation:scopescroll 9s linear infinite;pointer-events:none;z-index:0}
  @keyframes scopescroll{to{transform:translateX(-50%)}}
  .tk-item{font-size:13px;color:#3d2b1a;padding:0 4px}
  .tk-item b{color:#b1442e;font-weight:800}
  .tk-dot{display:inline-block;width:6px;height:6px;border-radius:50%;margin:0 14px}
  .tk-dot.dg{background:#3fae6b}.tk-dot.da{background:#efa636}.tk-dot.dr{background:#e0543c}
  @keyframes tkscroll{to{transform:translateX(-50%)}}
  #landing{padding-bottom:54px}
  @media (prefers-reduced-motion: reduce){.scope-wave{animation:none}.tk-track{animation:none}}
  .blip:hover{stroke:#7a4e26;stroke-width:2.6}
  .about-modal{position:fixed;inset:0;background:rgba(60,40,20,.45);display:none;align-items:center;justify-content:center;z-index:60;padding:20px}
  .about-modal.show{display:flex}
  .about-card{background:var(--paper);border:1px solid var(--line);border-radius:18px;max-width:460px;width:100%;padding:24px 26px;box-shadow:0 24px 60px rgba(60,40,20,.3)}
  .about-card h3{margin:0 0 8px;font-size:20px;color:#2f2113}
  .about-card p{font-size:13.5px;color:var(--ink);line-height:1.55;margin:0 0 12px}
  .about-list{list-style:none;padding:0;margin:0 0 12px;display:flex;flex-direction:column;gap:7px}
  .about-list li{font-size:13px;color:var(--ink);padding-left:18px;position:relative;line-height:1.4}
  .about-list li::before{content:"›";position:absolute;left:4px;color:var(--brown);font-weight:800}
  .about-note{font-size:11.5px;color:var(--muted)}
  .profile{display:grid;grid-template-columns:340px 1fr;gap:28px;align-items:start}
  #view-overview{max-width:960px;margin:0 auto}
  .euler{width:100%;max-width:340px;height:auto}
  .euler-key{display:flex;justify-content:center;gap:14px;flex-wrap:wrap;font-size:11.5px;color:var(--muted);font-weight:600;margin-top:6px}
  .euler-key span{display:flex;align-items:center;gap:5px}
  .euler-key i{width:11px;height:11px;border-radius:50%;display:inline-block}
  .prof-head{display:flex;align-items:center;gap:12px;margin-bottom:14px;flex-wrap:wrap}
  .prof-hours{font-size:13px;color:#5e4d31;font-weight:600}
  .prof-stats{display:flex;gap:10px;flex-wrap:wrap;margin-top:16px;margin-bottom:4px}
  .prof-stats>div{flex:1;min-width:108px;background:var(--paper2);border:1px solid var(--line);border-radius:12px;padding:10px 13px}
  .prof-stats span{display:block;font-size:10px;text-transform:uppercase;letter-spacing:.5px;color:var(--muted);font-weight:700}
  .prof-stats b{font-size:16px;color:var(--brown-dk)}
  .prof-links{display:flex;gap:8px;flex-wrap:wrap;margin-top:16px}
  .prof-links button{background:#fff;border:1px solid var(--line);color:var(--brown-dk);border-radius:11px;padding:9px 13px;font-weight:700;font-size:13px;cursor:pointer}
  .prof-links button:hover{border-color:var(--brown)}
  .ls-section{margin-top:2px;margin-bottom:20px}
  .ls-grid{display:flex;gap:10px;flex-wrap:wrap}
  .ls-card{flex:1;min-width:150px;background:var(--paper2);border:1px solid var(--line);border-radius:12px;padding:11px 14px}
  .ls-card span{display:block;font-size:10px;text-transform:uppercase;letter-spacing:.5px;color:var(--muted);font-weight:700}
  .ls-card b{font-size:21px;color:var(--brown-dk);display:block;margin-top:2px}
  .ls-card small{display:block;color:#5e4d31;font-size:11.5px;margin-top:1px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .ls-upd{font-size:11px;color:var(--muted);margin-top:9px}
  .ls-load{color:var(--muted);font-size:13px;padding:6px 0;line-height:1.5}
  @media(max-width:820px){.profile{grid-template-columns:1fr}.euler{margin:0 auto;max-width:260px}}
  .prof-loc{font-size:13px;color:#5e4d31;margin-bottom:10px;font-weight:600}
  .prof-loc a{font-weight:700;text-decoration:none;border-bottom:1px solid var(--line)}
  .prof-section{margin-top:20px}
  .prof-section h4{font-family:"Georgia",serif;font-size:16px;color:#2f2113;margin:0 0 10px}
  .prof-subh{font-family:"Georgia",serif;font-size:15.5px;color:#2f2113;margin:16px 0 8px}
  /* 2026-07-15: accordion wrapper for Overview's secondary sections (park map, forecast, events,
     year chart) — user feedback that the profile page had become an unreadable laundry list. Native
     <details>/<summary> so no JS state machine is needed; the summary reuses .prof-section h4's
     exact typography so a collapsed section looks identical to the old always-open heading. */
  details.prof-acc{border:1px solid var(--line);border-radius:14px;padding:14px 16px;background:#fffdf8}
  details.prof-acc>summary{cursor:pointer;list-style:none}
  details.prof-acc>summary::-webkit-details-marker{display:none}
  details.prof-acc>summary h4,details.prof-acc>summary h5{display:flex;align-items:center;gap:8px;margin:0}
  details.prof-acc>summary h4::before,details.prof-acc>summary h5::before{content:"▸";font-size:13px;color:#8a7456;transition:transform .15s}
  details.prof-acc[open]>summary h4::before,details.prof-acc[open]>summary h5::before{transform:rotate(90deg)}
  details.prof-acc>summary~*{margin-top:10px}
  /* "Good to know before you go" is a STATIC section header; each category below it is its own
     first-class openable menu — full .prof-acc dropdown styling plus a little spacing between them. */
  details.prof-acc--sub{margin:8px 0 0}
  .up-list{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:7px}
  .up-list li{display:flex;gap:12px;align-items:baseline;background:#fff;border:1px solid var(--line);border-radius:11px;padding:9px 13px}
  .up-d{font-weight:800;color:var(--brown-dk);font-size:13px;min-width:104px;flex:0 0 auto}
  .up-l{font-size:13px;color:var(--ink)}
  .up-none{color:var(--muted);font-size:13px;display:block;line-height:1.5}
  .up-list li.past{opacity:.5}
  .up-list li.now{box-shadow:inset 0 0 0 1.6px var(--light)}
  .ev-all{max-height:none}
  .prof-grid{display:grid;grid-template-columns:1fr 252px;gap:24px;align-items:start}
  .forecast{background:var(--paper2);border:1px solid var(--line);border-radius:14px;padding:12px 14px}
  .forecast h4{font-family:"Georgia",serif;font-size:15px;color:#2f2113;margin:0 0 8px}
  .fc-list{display:flex;flex-direction:column;gap:3px}
  .fc-row{display:flex;align-items:center;gap:8px;font-size:12.5px;padding:5px 6px;border-radius:8px}
  .fc-row:hover{background:#fff}
  .fc-dot{width:11px;height:11px;border-radius:50%;flex:0 0 auto}
  .fc-day{flex:1;color:var(--ink)} .fc-day b{color:#2f2113}
  .fc-ic{font-size:15px;width:18px;text-align:center}
  .fc-t{color:#5e4d31;font-weight:600;min-width:52px;text-align:right}
  .fc-t.fc-na{color:var(--muted)}
  .fc-pp{color:#3a7bd5;font-size:11px;min-width:30px;text-align:right}
  .fc-key{font-size:10px;color:var(--muted);margin-top:9px;line-height:1.4}
  .wx-caveat{font-size:11px;color:var(--muted);margin-top:12px;line-height:1.45;background:var(--paper);border:1px solid var(--line);border-radius:10px;padding:9px 12px}
  .fc-est{color:#9a6a1c;font-weight:700}
  @media(max-width:820px){.prof-grid{grid-template-columns:1fr}}
  /* 2026-07-15 Briefing Board restructure: doctrine COP status row (4 pre-attentive tiles) and the
     3-column radar/tickets/schedule row that replaces the old 2-col .profile + aside layout. See
     03 Architecture/Briefing Board — Information Display Doctrine.md §4 zone 2. */
  .status4{display:grid;grid-template-columns:repeat(4,1fr);gap:0;margin:2px 0 18px;border:1px solid var(--line);border-radius:14px;overflow:hidden;background:var(--paper2)}
  .status4>div{background:transparent;border:0;border-left:1px solid var(--line);border-radius:0;padding:10px 13px}
  .status4>div:first-child{border-left:0}
  .status4 span{display:block;font-size:10px;text-transform:uppercase;letter-spacing:.5px;color:var(--muted);font-weight:700}
  .status4 b{font-size:15px;color:var(--brown-dk);display:flex;align-items:center;gap:6px;margin-top:2px}
  .status4 .dot{width:9px;height:9px;border-radius:50%;flex:0 0 auto;display:inline-block}
  .status4 small{display:block;color:#8a7456;font-size:11px;margin-top:2px}
  .s4lab{font:800 10.5px system-ui,Arial,sans-serif;text-transform:uppercase;letter-spacing:.5px;color:var(--muted);margin:2px 0 5px}
  /* OUTLOOK-01 (2026-09-17) — the glance block is ONE card of eight tiles, not two stacked cards.
     `.status4` already draws the outer frame and the vertical rules; these three lines are what make
     a second row of it read as the same card: the first tile of each row drops its left rule, and
     every tile below the first row gains a top rule. Without them row two floats with a stray
     divider on its left and no line above it, which is precisely the "two separate rows" the owner
     was looking at. The 760px rule repeats the same logic for the two-column layout. */
  .status8>div:nth-child(4n+1){border-left:0}
  .status8>div:nth-child(n+5){border-top:1px solid var(--line)}
  @media(max-width:760px){.status4{grid-template-columns:1fr 1fr}
    .status8>div:nth-child(4n+1){border-left:1px solid var(--line)}
    .status8>div:nth-child(2n+1){border-left:0}
    .status8>div:nth-child(n+3){border-top:1px solid var(--line)}}
  .prof-triple{display:grid;grid-template-columns:320px 1fr 300px;gap:24px;align-items:start;margin-top:18px}
  @media(max-width:1080px){.prof-triple{grid-template-columns:1fr}}
  /* WX-TIP-01 (owner, 2026-09-24) — the crowd + weather outlook takes the first half of the row
     under the gauge row and today's tip the second; the days wrap instead of scrolling sideways. */
  .prof-duo{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:24px;align-items:start;margin-top:18px}
  .prof-duo.prof-duo-solo{grid-template-columns:minmax(0,1fr)}
  .prof-duo>div>.prof-section,.prof-duo .tipcard{margin-top:0}
  @media(max-width:760px){.prof-duo{grid-template-columns:minmax(0,1fr)}}
  .prof-wx-strip{display:flex;flex-wrap:wrap;gap:8px;padding-bottom:4px}
  .prof-sched h4{font-family:"Georgia",serif;font-size:15px;color:#2f2113;margin:0 0 8px}
  /* Good-to-know accordion reuses .prof-acc; a couple of small answer-first callout styles */
  .gtk-answer{background:#f3faf2;border:1px solid #bfe0c5;border-radius:12px;padding:12px 16px;margin:0 0 12px}
  .gtk-answer b{color:#3b6d11}
  .prof-crowdchart{margin-top:22px;border:1px solid var(--line);border-radius:14px;padding:16px 18px;background:linear-gradient(180deg,#fffdf8,#fff8ec)}
  .prof-crowdchart h4{font-family:"Georgia",serif;font-size:17px;color:#2f2113;margin:0 0 4px}
  .prof-foot-nav{margin-top:26px;padding-top:18px;border-top:1px solid var(--line)}
  .prof-foot-nav .prof-links{margin-top:10px}
  .miniwrap{background:var(--paper2);border:1px solid var(--line);border-radius:12px;padding:8px 10px}
  .miniyear{width:100%;height:120px;display:block}
  .mini-key{font-size:14px;color:var(--ink);margin-top:8px;line-height:1.55}


  @media(max-width:560px){
    .grid{gap:4px;margin-top:10px}
    .dow{font-size:9px;letter-spacing:.3px}
    .cell{min-height:52px;padding:4px 5px;border-radius:8px}
    .cell .num{font-size:11px}
    .cell .lvl{top:4px;right:4px;font-size:9px;padding:0 4px;font-weight:700}
    .cell .hrs,.cell .resv{display:none}
    .cell .closed-tag{margin-top:4px;font-size:8.5px;padding:1px 4px}
    .cell .bar{height:5px}
    .legend{gap:10px}.legend .grp{font-size:11px}
  }
  .pr-side-toggle{display:none}
  /* MOBILE-NAV-01: the profile is exactly as wide as the screen and the tab row scrolls inside it.
     The mount is centred with auto margins, which sizes it to its content, and a scroll container
     still reports its content's width — so on a phone the nine tabs made the profile ~1,100px wide
     and it read cut off at the right edge. */
  #app main.main.pp-unified>#pp-mount{width:100%;box-sizing:border-box;min-width:0}
  .pp-planner-tabs{max-width:100%;min-width:0}
  @media(max-width:700px){
    .side{position:static;width:auto;height:auto;border-right:none;border-bottom:1px solid var(--line)}
    .main{margin-left:0}
    /* MOBILE-NAV-01 (owner, 2026-09-26): on a phone the all-parks list is a drawer, not a header.
       It used to stack above every profile, so a tapped map pin landed on the park list and the
       park itself sat out of sight below it. Closed, the side is one compact row: the brand (home)
       and an "All parks" button that opens the list in place. */
    .side{padding:8px 14px;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px}
    .side .sidebrand{flex-direction:row;align-items:center;gap:8px;font-size:20px;padding:4px 2px}
    .side .sidebrand .logo{width:32px;height:32px}
    .side:not(.pr-side-open)>:not(.sidebrand):not(.pr-side-toggle){display:none!important}
    .side.pr-side-open>:not(.sidebrand):not(.pr-side-toggle){flex:1 1 100%}
    .pr-side-toggle{display:inline-flex;align-items:center;gap:6px;background:#fff;color:var(--brown-dk);border:1px solid var(--line);border-radius:999px;padding:8px 14px;font:inherit;font-size:13.5px;font-weight:700;cursor:pointer}
    .pr-side-toggle[aria-expanded="true"]{background:var(--brown-dk);color:#fff;border-color:var(--brown-dk)}
  }
  @media(max-width:820px){
    .features{grid-template-columns:1fr}.strip{grid-template-columns:repeat(2,1fr)}.strip div:nth-child(3){border-left:none}
    .cell{min-height:78px}.cell .ev{display:none}.cell .resv{bottom:9px;font-size:9.5px}.cell .hrs{font-size:9.5px}
    .rrow{grid-template-columns:28px 1.3fr 76px 1fr;gap:8px}.rrow .gg{display:none}.rrow .ev2{display:none}
    .stay-dir{grid-template-columns:1fr}
    .cmprow{grid-template-columns:1.5fr 84px 78px 1fr}.cmprow .rank{display:none}
    .container{padding:0 18px}
    .main{padding:18px 18px 52px}
    .ph h2{font-size:21px}
    .ph{align-items:flex-start}
    .tabs{overflow-x:auto;-webkit-overflow-scrolling:touch}
    .tabs button{padding:10px 11px;font-size:13px;white-space:nowrap}
    .livehead{gap:0}.liveread,.livekpi{min-width:calc(50% - 1px)}
    .ctrls{gap:10px}.field input,.field select{min-width:0;width:100%}.field{flex:1;min-width:130px}
    .lp-head{padding:16px 18px 4px}.biglogo{width:62px;height:62px}.lp-title{font-size:27px}
    .lp-map-wrap{padding:2px 14px 10px}.lp-mapkey{justify-content:flex-start}
    .overview{grid-template-columns:repeat(2,1fr)}
    @media(min-width:701px) and (max-width:1040px){.overview{grid-template-columns:repeat(3,1fr)}}
  }
.parkmap{width:100%;height:440px;border:1px solid var(--line);border-radius:12px;background:#f2ead8}
.g-list{margin:6px 0;padding-left:19px}.g-list li{margin:8px 0}.g-area{color:var(--muted);font-size:13px}.g-pick{color:#2c7a48;font-size:13.5px;font-weight:600}
.pchips{display:flex;gap:8px;margin:2px 0 9px;flex-wrap:wrap}.pchip{border:1px solid var(--line);border-left:5px solid var(--c);background:#fff;border-radius:9px;padding:6px 13px;font-weight:700;font-size:13px;color:#5e4a30;cursor:pointer}.pchip.off{opacity:.4}.pchip--disabled{opacity:.34!important;cursor:not-allowed;text-decoration:line-through;background:#f3ead7;border-left-color:#c9b48c;color:#9c8767}
.pchip[data-badge]::after{content:attr(data-badge);margin-left:6px;font-size:9px;font-weight:800;text-transform:uppercase;letter-spacing:.3px;padding:1px 5px;border-radius:6px;vertical-align:middle}
.pchip[data-badge="info"]::after{background:#eaf3ff;color:#2f6bb0}
.pchip[data-badge="mapped"]::after{background:#e7f6ec;color:#2f8f57}
.svc-panel{background:#f6eedd;border:1px solid #e6d6ba;border-left:5px solid #2a9df4;border-radius:10px;padding:11px 14px;margin:8px 0 4px}
.svc-panel[hidden]{display:none}
.svc-panel-h{font-weight:800;color:#3d2b1a;font-size:13.5px;margin-bottom:4px}
.svc-panel-b{color:#6a5640;font-size:12.5px;line-height:1.45}
.svc-panel-a{display:inline-block;margin-top:8px;font-weight:700;font-size:12.5px;color:#2f6bb0;text-decoration:none}
.svc-panel-a:hover{text-decoration:underline}
.pr-find-map{margin-top:8px;width:100%;background:#2a9df4;color:#fff;border:none;border-radius:8px;padding:7px 10px;font-weight:800;font-size:12px;cursor:pointer}
.pr-find-map:hover{background:#2384d0}
.pr-find-map:focus-visible{outline:3px solid #2f2113;outline-offset:2px}
#pmap{z-index:0}
.g-quiet{margin:8px 0 2px;font-size:13.5px;color:#7a6a55;font-style:italic}
.g-qtag{color:#9a6a1c;font-weight:700}
.vsavg{color:#8a7456;font-weight:600;font-size:11px;margin-left:7px}
.ride .ht{color:#6f5b39;font-weight:700;font-size:10.5px;background:#f1e7d2;border-radius:6px;padding:1px 6px;margin-left:8px;white-space:nowrap}
.intens{display:inline-flex;align-items:center;gap:2px;margin-left:8px;vertical-align:middle}
.intens i{width:7px;height:7px;border-radius:50%;background:#e3d6bd;display:inline-block}
.intens i.on{background:var(--ic)}
.intens b{font-size:10px;font-weight:800;color:var(--ic);margin-left:5px;text-transform:uppercase;letter-spacing:.3px}
.ride .rw.down{background:#e0543c;color:#fff}
.pl-ev{display:block;color:#9a6a1c;font-weight:600;font-size:11px;margin-top:1px}
.stay-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:14px;margin-top:14px}
.stay-card{position:relative;background:#fff;border:1px solid var(--line);border-radius:14px;padding:16px;display:flex;flex-direction:column;gap:8px;transition:transform .12s,box-shadow .15s}
.stay-card:hover{transform:translateY(-2px);box-shadow:0 6px 16px rgba(122,78,40,.14)}
.stay-card::before,.stay-card::after{content:"";position:absolute;top:50%;width:14px;height:14px;border-radius:50%;background:var(--bg);transform:translateY(-50%);pointer-events:none}
.stay-card::before{left:-8px;box-shadow:inset -1px 0 0 var(--line)}
.stay-card::after{right:-8px;box-shadow:inset 1px 0 0 var(--line)}
.stay-card.nearest{background:#f6efdf;border-style:dashed}
.sc-name{font-weight:800;color:#3a2a18;font-size:15.5px}
.sc-note{font-size:13px;color:#7a6a55;flex:1;line-height:1.5}
.sc-go{display:block;background:#7a4e26;color:#fbf1df;text-decoration:none;text-align:center;border-radius:10px;padding:9px 12px;font-weight:700;font-size:13.5px}
.sc-go:hover{background:#9c6b3b}
.ls-card.lsread span,.ls-card.lsread small{color:rgba(255,255,255,.92)}
.ls-card.lsread b{color:#fff}
.livedot{display:inline-block;width:8px;height:8px;border-radius:50%;background:#3fae6b;margin-right:6px;vertical-align:1px}
.euler-sweep{animation:radarspin 5.5s linear infinite}
@keyframes livepulse{0%,100%{opacity:1}50%{opacity:.3}}
.lp-dot{animation:livepulse 1.6s ease-in-out infinite}
.tl{border-left:2px solid #d8c7a4;margin:8px 0 4px 66px;padding:2px 0}
.tl-item{position:relative;padding:0 0 15px 14px}
.tl-item::before{content:"";position:absolute;left:-6px;top:3px;width:9px;height:9px;border-radius:50%;background:#a9743b;border:2px solid #fffaf0}
.tl-cap::before{background:#7a4e26}
.tl-t{position:absolute;left:-80px;top:1px;width:64px;text-align:right;font-size:11px;font-weight:800;color:#7a4e26}
.tl-b b{display:block;font-size:13px;color:#3a2a18;line-height:1.3}
.tl-b small{display:block;color:#8a7456;font-size:11.5px;line-height:1.35}
.tl-note{font-style:italic}
.tl-badge{display:inline-block;background:#e0543c;color:#fff;font-size:9.5px;font-weight:800;border-radius:6px;padding:1px 6px;margin-left:6px;vertical-align:1px;letter-spacing:.3px}
/* TODAY-TIMELINE-01: the day's headline event(s) above the clock, and a kind tag per timed item. */
.tl-head{background:#fff;border:1px solid #e6d6ba;border-left:4px solid #b1442e;border-radius:10px;padding:9px 12px;margin:0 0 8px;font-size:14px;font-weight:700;color:#2f2113;line-height:1.3}
.tl-tag{display:inline-block;font-size:9.5px;font-weight:800;letter-spacing:.4px;text-transform:uppercase;border-radius:6px;padding:1px 6px;margin-left:6px;vertical-align:1px;background:#efe4cc;color:#7a4e26}
.tl-tag-parade{background:#fbe3c9;color:#9a4f1a}.tl-tag-fireworks{background:#e6dcf5;color:#4f2f8a}.tl-tag-character{background:#dff0e4;color:#2c6b44}
/* GAUGE-READ-01: the crowd gauge's TODAY readout — a solid caption under the ring, never over it. */
.euler-readout{display:flex;align-items:baseline;flex-wrap:wrap;gap:4px 8px;justify-content:center;margin:8px auto 0;max-width:300px;background:#fffdf8;border:1px solid #e6d6ba;border-left:5px solid var(--lc,#9a8a70);border-radius:10px;padding:8px 12px}
.euler-readout .er-k{font-size:10px;font-weight:800;letter-spacing:1.5px;text-transform:uppercase;color:#8a7456}
.euler-readout b{font-size:16px;font-weight:800;color:#2f2113;line-height:1.2}
.euler-readout small{flex-basis:100%;font-size:11.5px;color:#7a684b}
.prof-main{min-width:0}
.fc-horiz{display:grid;grid-template-columns:repeat(auto-fit,minmax(96px,1fr));gap:8px}
.fc-horiz .fc-row{flex-direction:column;align-items:center;text-align:center;gap:4px;border:1px solid var(--line);border-radius:11px;padding:9px 4px;background:#fff}
.fc-horiz .fc-day{flex:none}
.sc-art{height:76px;border-radius:10px;background:#f6efdf;border:1px solid var(--line);display:flex;align-items:center;justify-content:center;overflow:hidden}
.spx{background:#fff;border:1px solid var(--line);border-radius:11px;padding:8px 12px;margin:6px 0}
.spx summary{cursor:pointer;display:flex;align-items:center;gap:8px;flex-wrap:wrap;list-style:none}
.spx summary::-webkit-details-marker{display:none}
.spx-chip{display:inline-block;background:#f6efdf;border:1px solid var(--line);border-radius:8px;padding:3px 9px;margin:4px 4px 0 0;font-size:12px;color:#5e4a30;font-weight:600}
.spx-d{margin-top:8px}
.g-sub{font-weight:800;color:#7a4e26;font-size:12px;margin:12px 0 2px;letter-spacing:.6px;text-transform:uppercase}
.sc-art.haspic{background-size:cover;background-position:center;position:relative}
.sc-art.haspic svg{display:none}
.pic-credit{position:absolute;right:5px;bottom:3px;font-size:8.5px;color:#fff;text-shadow:0 0 3px rgba(0,0,0,.8)}


    .lp-news{max-width:760px;margin:20px auto 0;padding:0 16px}
    .lpn-card{background:#fffaf0;border:1.5px solid #e6d6ba;border-left:5px solid #b1442e;border-radius:14px;padding:16px 18px}
    .lpn-head{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-bottom:8px;flex-wrap:wrap}
    .lpn-title{font-family:Georgia,serif;font-weight:700;color:#573b2c;font-size:18px}
    .lpn-all{font-size:13px;font-weight:700;color:#b1442e;background:none;border:none;cursor:pointer;font-family:inherit;padding:0}
    .lpn-all:hover{text-decoration:underline}
    .lpn-list{list-style:none;margin:0;padding:0}
    .lpn-list li{padding:9px 0;border-top:1px solid #eadfc8}
    .lpn-list li:first-child{border-top:none}
    .lpn-list a{color:#3d2b1a;text-decoration:none;font-weight:600;font-size:14px;line-height:1.35}
    .lpn-list a:hover{text-decoration:underline}
    .lpn-meta{display:block;font-size:11px;color:#8a7456;margin-top:2px}
    .lpn-src{color:#b1442e;font-weight:700;text-transform:uppercase;letter-spacing:.3px}
    

    .lp-community{max-width:760px;margin:20px auto 4px;padding:0 16px}
    .comm-card{background:#fffaf0;border:1.5px solid #e6d6ba;border-left:5px solid #ff4500;border-radius:14px;padding:16px 18px}
    .comm-head{display:flex;align-items:center;gap:14px;flex-wrap:wrap}
    .comm-head .ricon{width:30px;height:30px;fill:#ff4500;flex:0 0 auto}
    .comm-head>.comm-txt{flex:1 1 200px}
    .comm-title{font-family:Georgia,serif;font-weight:700;color:#573b2c;font-size:18px}
    .comm-sub{color:#8a7456;font-size:13.5px}
    .comm-btn{background:#ff4500;color:#fff;text-decoration:none;font-weight:700;font-size:13.5px;padding:9px 14px;border-radius:9px;white-space:nowrap}
    .comm-btn:hover{filter:brightness(1.07)}
    .comm-feed{list-style:none;margin:12px 0 0;padding:12px 0 0;border-top:1px solid #eadfc8}
    .comm-feed li{margin:6px 0;font-size:13.5px;line-height:1.4}
    .comm-feed a{color:#7a4e26;text-decoration:none}
    .comm-feed a:hover{text-decoration:underline}
    

  .lp-social{text-align:center;margin:16px 0 6px}
  .lp-social .lbl{display:block;color:#8a7456;font-weight:700;font-size:13px;letter-spacing:.3px;margin-bottom:9px}
  .lp-social .soc{display:inline-flex;align-items:center;justify-content:center;width:40px;height:40px;border-radius:50%;background:#fbf6e9;border:1.5px solid #e6d6ba;margin:0 6px;transition:transform .15s,background .15s,border-color .15s}
  .lp-social .soc svg{width:19px;height:19px;fill:#7a4e26;transition:fill .15s}
  .lp-social .soc:hover{transform:translateY(-2px)}
  .lp-social .soc:hover svg{fill:#fff}
  .lp-social .soc-x:hover{background:#000;border-color:#000}
  .lp-social .soc-rd:hover{background:#FF4500;border-color:#FF4500}
  .lp-social .soc-pn:hover{background:#E60023;border-color:#E60023}
  .lp-social .soc-fb:hover{background:#1877F2;border-color:#1877F2}
  .lp-social .soc-ig:hover{background:#E4405F;border-color:#E4405F}
  .lp-social .soc-yt:hover{background:#FF0000;border-color:#FF0000}
  

  .news-modal{position:fixed;inset:0;background:rgba(61,43,26,.45);display:none;align-items:flex-start;justify-content:center;z-index:4000;padding:38px 14px;overflow:auto}
  .news-modal.show{display:flex}
  .news-card{background:#f6eedd;border-radius:16px;max-width:940px;width:100%;padding:20px 22px 24px;box-shadow:0 20px 60px rgba(61,43,26,.35);position:relative}
  .news-card .nm-x{position:absolute;top:11px;right:14px;background:none;border:none;font-size:25px;line-height:1;color:#8a7456;cursor:pointer}
  .nm-head{display:flex;justify-content:space-between;align-items:flex-end;gap:14px;flex-wrap:wrap;margin:2px 28px 15px 0}
  .nm-title{font-family:Georgia,serif;font-weight:700;color:#573b2c;font-size:22px;margin:0}
  .nm-sub{color:#8a7456;font-size:13px;margin-top:2px}
  .news-select{font:inherit;font-size:14px;padding:8px 12px;border:1.5px solid #e6d6ba;border-radius:10px;background:#fffaf0;color:#573b2c;font-weight:600;cursor:pointer}
  .news-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(255px,1fr));gap:13px}
  .news-tile{display:flex;flex-direction:column;background:#fffaf0;border:1px solid #e6d6ba;border-radius:13px;padding:13px 15px;transition:transform .12s,box-shadow .12s;text-decoration:none}
  .news-tile:hover{transform:translateY(-2px);box-shadow:0 6px 16px rgba(87,59,44,.12)}
  .news-meta{display:flex;justify-content:space-between;align-items:center;gap:8px;margin-bottom:7px}
  .news-src{font-size:11px;font-weight:700;color:#b1442e;text-transform:uppercase;letter-spacing:.4px}
  .news-date{font-size:11px;color:#8a7456;white-space:nowrap}
  .news-title{font-family:Georgia,serif;font-weight:700;color:#3d2b1a;font-size:15px;line-height:1.3;margin:0 0 6px}
  .news-snip{font-size:12.5px;color:#6a5640;line-height:1.45;flex:1}
  .news-read{margin-top:9px;font-size:12px;font-weight:700;color:#7a4e26}
  .news-loading,.news-empty{color:#8a7456;padding:34px 4px;text-align:center}
  .news-foot{margin-top:16px;font-size:11.5px;color:#8a7456;text-align:center}
  
/* ===== Calendar tab: color month grid + Bollinger crowd chart with coaster (2026-08-11) ===== */
.pp-cal-chartbox{position:relative;margin:2px 0 4px;border:1px solid #e6d6ba;border-radius:12px;background:#fffdf8;padding:6px 4px}
.pp-cal-ysvg{width:100%;height:210px;display:block}
/* HOURS-RENDER-01: the forward operating calendar — one cell per published day, scrolls sideways
   rather than wrapping, so a three-week run reads as one run. */
/* HOURS-NORM-01: the usual-hours rows */
.pp-nw{display:grid;grid-template-columns:max-content 1fr;gap:4px 14px;margin-bottom:6px}
.pp-nw-row{display:contents}
.pp-nw-days{font-weight:600}
.pp-nw-h{font-variant-numeric:tabular-nums}
.pp-oc{display:flex;gap:6px;overflow-x:auto;padding-bottom:4px}
.pp-oc-day{flex:0 0 auto;min-width:74px;text-align:center;border:1px solid #e6d6ba;border-radius:10px;background:#fffdf8;padding:6px 8px}
.pp-oc-dow{display:block;font:800 11px system-ui,Arial,sans-serif;color:#6b563c}
.pp-oc-date{display:block;font-size:11px;color:#8a7456;margin-bottom:3px}
.pp-oc-h{display:block;font-size:12px;color:#402f1d;line-height:1.25}
.pp-oc-today{border-color:#9c6b3b;box-shadow:inset 0 0 0 1px #9c6b3b}
.pp-oc-closed{background:#f6efe4}
.pp-oc-closed .pp-oc-h{color:#9a8a70}
/* "Not published" is NOT the closed styling — a day the park has not announced is not a day it is
   shut, and the two must not look alike. */
.pp-oc-unknown .pp-oc-h{color:#9a8a70;font-style:italic}
/* OUTLOOK-01: the measured crowd-year bars are a shorter chart than the calendar tab's rail,
   because they sit under the crowd card on the overview rather than owning a tab. */
.pp-cy-bars .pp-cal-ysvg{height:180px}
@media (max-width:760px){.pp-cy-bars .pp-cal-ysvg{height:140px}}
.pp-coaster-cart{position:absolute;left:0;top:0;will-change:transform;pointer-events:none;z-index:3}
.pp-cal-wrap{margin-top:2px}
.pp-cal-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin:2px 0 8px}
.pp-cal-mtitle{font-family:Georgia,serif;font-size:18px;font-weight:700;color:#2f2113}
.pp-cal-nav{border:1px solid #d8c7a4;background:#fff;color:#7a4e26;font-size:18px;line-height:1;font-weight:800;border-radius:9px;width:34px;height:32px;cursor:pointer}
.pp-cal-nav:hover{background:#f3e9d5}
.pp-cal-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:5px}
.pp-cal-dow{text-align:center;font-size:11px;font-weight:800;letter-spacing:.4px;text-transform:uppercase;color:#9c8767;padding:2px 0}
.pp-cal-cell{position:relative;min-height:62px;border:1px solid #ece0c6;border-top:3px solid var(--lvl,#e6d6ba);border-radius:9px;background:#fffdf8;padding:4px 6px 6px;overflow:hidden;isolation:isolate}
.pp-cal-cell::before{content:"";position:absolute;inset:0;background:var(--lvl,#e6d6ba);opacity:.14;z-index:-1}
.pp-cal-empty{border:0;background:transparent}
.pp-cal-empty::before{display:none}
.pp-cal-today{outline:2px solid #7a4e26;outline-offset:-1px}
.pp-cal-d{display:block;font-weight:800;font-size:13px;color:#3d2b1a;line-height:1.1}
.pp-cal-wx{display:block;font-size:10.5px;color:#6b563c;margin-top:2px}
.pp-cal-wx b{color:#2a6fb0;font-weight:800}
.pp-cal-ev{display:block;font-size:10px;font-weight:700;color:#8a3d1f;margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pp-cal-legend{display:flex;flex-wrap:wrap;gap:14px;align-items:center;margin:10px 0 2px;font-size:12px;color:#6b563c}
.pp-cal-legend i{display:inline-block;width:12px;height:12px;border-radius:3px;margin-right:5px;vertical-align:-1px}
@media(max-width:640px){.pp-cal-cell{min-height:52px;padding:3px 4px}.pp-cal-wx,.pp-cal-ev{font-size:9.5px}.pp-cal-d{font-size:12px}}

/* ===== Stay tab: Stay22 map + resort tiers + nearby-hotel filter bar (2026-08-11) ===== */
.pp-stay22{margin:2px 0 16px}
.pp-stay22-t{font-family:Georgia,serif;font-weight:700;color:#573b2c;font-size:18px;margin:4px 0 8px}
.pp-stay22 iframe{width:100%;height:440px;border:1px solid #e6d6ba;border-radius:14px;display:block;background:#f3ecdd}
.pp-stay-tier{font-family:Georgia,serif;font-size:14px;font-weight:700;color:#7a4e26;margin:12px 0 6px;text-transform:uppercase;letter-spacing:.4px}
.pp-stay-extra{margin-top:6px}
.pp-stay-prov{font-size:11px;color:#9c8767;margin-top:6px;font-style:italic}
.pp-nbh-bar{display:flex;flex-wrap:wrap;gap:7px;align-items:center;margin:2px 0 10px}
.pp-nbh-lab{font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.4px;color:#9c8767;margin:0 2px 0 6px}
.pp-nbh-chip{border:1px solid #d8c7a4;background:#fff;color:#5e4a30;border-radius:999px;padding:4px 11px;font-size:12px;font-weight:700;cursor:pointer}
.pp-nbh-chip.on{background:#7a4e26;color:#fff;border-color:#7a4e26}

/* ===== Nearby tab: POI groups around the park (2026-08-11) ===== */
.pp-nb-group{margin:2px 0 16px}
.pp-nb-h{font-family:Georgia,serif;font-size:16px;color:#2f2113;margin:0 0 8px;border-bottom:1px solid #eadfc7;padding-bottom:4px}
.pp-nb-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:10px}
.pp-nb-card{border:1px solid #e6d6ba;border-radius:11px;background:#fffdf8;padding:9px 11px;display:flex;flex-direction:column}
.pp-nb-dist{font-size:11px;font-weight:800;color:#7a4e26;text-transform:uppercase;letter-spacing:.3px}
.pp-nb-name{font-size:15px;color:#2f2113;margin:2px 0 1px;line-height:1.2}
.pp-nb-sub{font-size:12px;color:#6b563c}
.pp-nb-addr{font-size:11.5px;color:#8a7456;margin-top:2px}
.pp-nb-dir{margin-top:6px;font-size:12px;font-weight:700;color:#7a4e26;align-self:flex-start}

/* LIVE-SHELL-02: the seven per-park guide views (assets/park-guide.js) — same chrome as the profile. */
.pg-guide{max-width:960px}
.pg-nav{display:flex;flex-wrap:wrap;gap:6px;margin:6px 0 14px}
.pg-nav a{display:inline-block;border:1px solid #dccda8;background:#fff;color:#7a5a2e;border-radius:999px;padding:5px 12px;font-size:12.5px;font-weight:700;text-decoration:none}
.pg-nav a.on{background:#7a4e26;color:#fff;border-color:#7a4e26}
.pg-lede{font-size:16px;line-height:1.55;color:#4a3826;margin:0 0 6px}
.pg-panel h3{margin-bottom:6px}
.pg-h4{font:800 12px system-ui,Arial,sans-serif;letter-spacing:.5px;text-transform:uppercase;color:#8a7456;margin:14px 0 4px}
.pg-h4 .pp-count{margin-left:6px}
.pg-list{margin:4px 0 0;padding-left:18px}
.pg-list li{margin:5px 0;line-height:1.45}
.pg-fact{background:#fffdf8;border:1px solid #e6d6ba;border-radius:10px;padding:9px 12px;margin:8px 0}
.pg-fact-k{display:block;font:800 10px system-ui,Arial,sans-serif;letter-spacing:.5px;text-transform:uppercase;color:#8a7456}
.pg-fact-v{margin-top:3px;font-size:14px;color:#2f2113;line-height:1.45}
.pg-tablewrap{overflow-x:auto}
.pg-table{width:100%;border-collapse:collapse;font-size:13.5px}
.pg-table th{text-align:left;font:800 10.5px system-ui,Arial,sans-serif;letter-spacing:.5px;text-transform:uppercase;color:#8a7456;padding:6px 8px;border-bottom:1px solid #e6d6ba}
.pg-table td{padding:8px;border-bottom:1px solid #f0e6d2;vertical-align:top}
.pg-sub{display:block;color:#8a7456;font-size:11.5px;font-weight:400}
.pg-prov{margin-top:16px}

/* LIVE-SHELL-03: the ride a /parks/<slug>/rides/<ride> address points at (park-profile.js focusRide) */
.pp-row.pp-ride-card.pp-ride-focus{outline:2px solid #7a4e26;outline-offset:2px;box-shadow:0 0 0 6px rgba(122,78,38,.12)}

/* DIRECTORY-01 (CRAWL-01): /parks/ — the universe directory (assets/park-directory.js) */
.pd{max-width:960px}
.pd-lede{color:#5a4a36;font-size:15px;line-height:1.55;margin:4px 0 16px}
.pd-crumbs{font-size:13px;color:#8a7456;margin-bottom:6px}.pd-crumbs a{color:#7a4e26}
.pd-countries{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:6px 18px}
.pd-countries li{display:flex;justify-content:space-between;gap:10px;border-bottom:1px solid #f0e6d2;padding:7px 0}
.pd-countries a{color:#402f1d;font-weight:600;text-decoration:none}.pd-countries a:hover{color:#7a4e26;text-decoration:underline}
.pd-count{color:#8a7456;font-variant-numeric:tabular-nums}
.pd-toc{display:flex;flex-wrap:wrap;gap:6px;margin:0 0 18px}
.pd-toc a{font-size:12.5px;color:#7a4e26;background:#fffaf0;border:1px solid #e6d8bf;border-radius:14px;padding:4px 10px;text-decoration:none}.pd-toc a small{color:#8a7456}
.pd-group{margin:0 0 22px}.pd-group h3{font-family:Georgia,serif;font-size:17px;color:#2f2113;margin:0 0 8px;border-bottom:1px solid #e6d6ba;padding-bottom:4px}.pd-group h3 small{color:#8a7456;font-family:system-ui,Arial,sans-serif;font-size:12px;font-weight:400}
.pd-list{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:4px 18px}
.pd-list li{padding:4px 0;display:flex;flex-wrap:wrap;gap:0 8px;align-items:baseline}
.pd-list a{color:#402f1d;text-decoration:none;font-weight:600}.pd-list a:hover{color:#7a4e26;text-decoration:underline}
.pd-meta{color:#8a7456;font-size:12px}.pd-former a{color:#8a7456;font-weight:500}
.pd-tag{font:800 10px system-ui,Arial,sans-serif;text-transform:uppercase;letter-spacing:.5px;color:#8a7456;background:#efe7d6;border-radius:10px;padding:2px 7px}

/* CROWD-ONE-01 (owner, 2026-09-24) — ONE crowd timeline: the bar chart of every day from the past
   year through the end of the forecast, the same days as a week-by-week grid under it, and one
   readout that follows the pointer across either. (Replaces the CROWD-YEAR-01 strip + year grid and
   the OUTLOOK-01 year bars, which drew the same days three times.)

   Chart text is HTML laid over the SVG, never SVG text: the SVG stretches to its box
   (preserveAspectRatio none), which squashed SVG labels to illegibility on a phone. */
.pp-ct-read{display:flex;flex-wrap:wrap;align-items:baseline;gap:2px 10px;margin:4px 0 8px;min-height:26px;font-size:14px;color:#5b4630}
.pp-ct-rd{font-weight:600;color:#2f2113}
.pp-ct-rv{font-size:18px;font-weight:700;color:#2f2113;font-variant-numeric:tabular-nums}
.pp-ct-rb{display:inline-flex;align-items:center;gap:6px}
.pp-ct-rsw{display:inline-block;width:14px;height:3px;border-radius:2px}
.pp-ct-rs{color:#8a7456;font-size:12px}
.pp-ct-box{position:relative;border:1px solid #e6d6ba;border-radius:12px;background:#fffdf8;padding:8px 8px 4px;touch-action:pan-y;cursor:crosshair;outline:none;-webkit-user-select:none;user-select:none}
.pp-ct-box:focus-visible{box-shadow:0 0 0 2px #9c6b3b}
.pp-ct-plot{position:relative;height:180px;padding-left:28px}
.pp-ct-area{position:relative;height:100%}
.pp-ct-svg{display:block;width:100%;height:100%}
.pp-ct-y{position:absolute;left:0;width:22px;text-align:right;transform:translateY(-50%);font-size:10px;line-height:1;color:#8a7456}
.pp-ct-m{position:absolute;bottom:0;padding-left:3px;font-size:11px;line-height:1.3;color:#8a7456;white-space:nowrap;pointer-events:none}
.pp-ct-yr{position:absolute;top:0;padding-left:3px;font-size:10px;line-height:1;color:#a08a66;pointer-events:none}
.pp-ct-tl,.pp-ct-fl{position:absolute;top:0;font-size:10px;line-height:1;color:#9c6b3b;white-space:nowrap;pointer-events:none}
.pp-ct-tl{transform:translateX(calc(-100% - 4px))}
.pp-ct-fl{transform:translateX(4px)}
.pp-ct-cursor{position:absolute;width:0;margin-left:-1px;border-left:2px solid #2f2113;pointer-events:none}
.pp-ct-cursor[hidden]{display:none}
.pp-ct-bar{opacity:.85}
.pp-ct-bar.pp-ct-on{opacity:1}
@media (max-width:760px){.pp-ct-plot{height:140px}}

/* The same days, one column per week, one row per weekday; the weekday average ends each row. A cell
   with no sourced level is left visibly empty — that is the honest state, not a zero. */
.pp-cy-wrap{display:flex;align-items:flex-start;gap:6px}
.pp-cy{position:relative;display:flex;gap:2px;flex:0 1 auto;min-width:0;padding:4px 6px 6px;background:#fffaf0;border:1px solid #e6d8bf;border-radius:10px;overflow-x:auto;scrollbar-width:thin}
.pp-cy-w{display:flex;flex-direction:column;gap:2px;flex:0 0 auto}
.pp-cy-m{display:block;height:14px;width:10px;font-size:10px;line-height:14px;color:#8a7456;white-space:nowrap;overflow:visible}
.pp-cy-cell{width:10px;height:10px;border-radius:2px;background:#d6c6a8;display:block;flex:0 0 auto}
.pp-cy-empty{background:transparent;box-shadow:inset 0 0 0 1px #ece0c8}
.pp-cy-pad{background:none;box-shadow:none}
.pp-cy-today{box-shadow:0 0 0 2px #2f2113}
.pp-cy .pp-cy-cell[data-i]{cursor:pointer}
.pp-cy-cell.pp-ct-on{box-shadow:0 0 0 2px #9c6b3b;transform:scale(1.3)}
.pp-cy-lab,.pp-cy-avg{display:flex;flex-direction:column;gap:2px;flex:0 0 auto;padding-top:5px;font-size:10px;color:#8a7456}
.pp-cy-lab .pp-cy-m,.pp-cy-avg .pp-cy-m{width:auto}
.pp-cy-rl{height:10px;line-height:10px}
.pp-cy-q,.pp-cy-b{color:#2f2113;font-weight:700}
.pp-cy-a{display:flex;align-items:center;gap:4px;height:10px}
.pp-cy-a i{display:block;height:6px;border-radius:3px}
.pp-cy-a em{font-style:normal;font-size:10px;line-height:10px;color:#5b4630;font-variant-numeric:tabular-nums}
.pp-cy-key{display:flex;flex-wrap:wrap;align-items:center;gap:6px 14px;margin-top:8px;color:#8a7456;font-size:12px}
.pp-cy-k{display:inline-flex;align-items:center;gap:5px}

/* CLIMATE-01 (2026-09-15) — typical climate through the year.
   Written at the same time as the markup on purpose: the crowd year shipped with NO rules at all and
   rendered as a flat green slab, because every element defaulted to a full-width block. Twelve
   columns with absolutely-positioned bars inside a track fail the same way without these. */
.pp-clm {
  display: flex;
  align-items: flex-end;
  gap: 4px;
  /* CLIMATE-NUM-01: two printed value rows were added under each column, so the box is taller by
     exactly those two lines. The TRACK keeps flex:1 1 auto, so the bars absorb the change and the
     chart's proportions are unchanged — the numbers were added beside the bars, not on top of them. */
  height: 176px;
  margin: 6px 0 6px;
  padding: 0;
}
.pp-clm-col {
  flex: 1 1 0;
  min-width: 0;
  display: flex;
  flex-direction: column;
  justify-content: flex-end;
  align-items: stretch;
  height: 100%;
  position: relative;
  border-radius: 4px;
  padding: 0 1px;
}
/* The current month is marked by its COLUMN, not by recolouring its bar — the bar's colour already
   carries temperature, and overloading it would make "this month" and "this is hot" the same signal. */
.pp-clm-now { background: rgba(169, 116, 59, 0.13); box-shadow: inset 0 0 0 1px rgba(169, 116, 59, 0.45); }
.pp-clm-track { position: relative; display: block; flex: 1 1 auto; min-height: 0; }
.pp-clm-bar {
  position: absolute;
  left: 0;
  right: 0;
  display: block;
  border-radius: 3px;
  min-height: 4px;
}
/* A month with no published normal. Visibly a GAP — a faint dashed outline reads as "nothing here",
   where a pale fill would read as "a very small value", which is a different and false claim. */
.pp-clm-empty {
  bottom: 0;
  height: 100%;
  background: transparent;
  border: 1px dashed rgba(120, 105, 80, 0.45);
  border-radius: 3px;
}
.pp-clm-rain {
  display: block;
  width: 100%;
  max-height: 26px;
  background: rgba(74, 111, 160, 0.55);
  border-radius: 0 0 3px 3px;
  margin-top: 2px;
}
.pp-clm-lbl {
  display: block;
  font-style: normal;
  font-size: 10px;
  line-height: 1.4;
  text-align: center;
  color: #6f6248;
  white-space: nowrap;
  overflow: hidden;
}
.pp-clm-key {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  align-items: center;
  font-size: 11px;
  color: #6f6248;
  margin-bottom: 4px;
}
.pp-clm-k { display: inline-flex; align-items: center; gap: 5px; }
.pp-clm-swatch { display: inline-block; width: 10px; height: 10px; border-radius: 2px; }
.pp-clm-now-swatch { background: rgba(169, 116, 59, 0.3); box-shadow: inset 0 0 0 1px rgba(169, 116, 59, 0.7); }
.pp-clm-rain-swatch { background: rgba(74, 111, 160, 0.55); }

/* Phone width: twelve columns still fit because each is only a bar, but the labels do not. Showing
   every third keeps the axis readable instead of collapsing into unreadable overlap. */
/* CLIMATE-NUM-01 — the printed values. A fixed footer under each column, NOT a label floating
   against the bar: the warmest month's bar is flush with the top of the track and the coolest
   month's sits on the floor, so an edge-anchored label is clipped for one of them on every park.
   `tabular-nums` keeps two- and three-digit values on the same column centre, which is what makes a
   twelve-column row of numbers scannable rather than ragged. */
.pp-clm-val {
  display: flex;
  justify-content: center;
  gap: 3px;
  font-style: normal;
  font-size: 10px;
  line-height: 1.35;
  font-variant-numeric: tabular-nums;
  white-space: nowrap;
}
.pp-clm-hi { font-weight: 700; color: #a2513c; }
.pp-clm-lo { font-weight: 600; color: #4a6fa0; }
.pp-clm-pcp {
  display: block;
  font-style: normal;
  font-size: 9.5px;
  line-height: 1.35;
  text-align: center;
  font-variant-numeric: tabular-nums;
  color: rgba(74, 111, 160, 0.95);
  white-space: nowrap;
}
/* A month with no published normal. One dash, not a zero — the difference between "no number" and
   "the number is nothing" is the whole honesty claim this block makes in its footnote. */
.pp-clm-val-none { color: rgba(120, 105, 80, 0.55); font-weight: 500; }
/* Names the units once. Repeating "°F" twenty-four times across twelve columns would cost more
   width than the numbers themselves and is the reason the values were left off in the first place. */
.pp-clm-units {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  align-items: baseline;
  font-size: 11px;
  color: #6f6248;
  margin: 8px 0 0;
}
.pp-clm-pcp-unit { color: rgba(74, 111, 160, 0.95); }

/* Phone width: the numbers stay — they are the point of the block — and the MONTH labels thin out
   instead, because a month can be inferred from its neighbours and a temperature cannot. */
@media (max-width: 520px) {
  .pp-clm { height: 150px; gap: 2px; }
  .pp-clm-lbl { font-size: 9px; }
  .pp-clm-val { font-size: 8.5px; gap: 2px; }
  .pp-clm-pcp { font-size: 8px; }
  .pp-clm-col:not(:nth-child(3n + 1)):not(.pp-clm-now) .pp-clm-lbl { visibility: hidden; }
}
/* Very narrow phones: twelve columns of "100 41" will not fit at any readable size, so the low row
   is dropped to the high alone rather than being shrunk into illegibility. The low stays available
   in the per-month tooltip and in the summary sentence above the chart. */
@media (max-width: 380px) {
  .pp-clm-lo { display: none; }
}


/* MENU-01 (2026-09-17) — what the VENUE says it serves. Visually distinct from the neutral meta
   chips above it, because a dietary claim is a different kind of statement from a cuisine label and
   a parent scanning for one must not have to read every chip to find it. */
.pp-dine-diet { margin-top: 8px; }
.pp-dine-diet-chips { display: flex; flex-wrap: wrap; gap: 6px; }
.pp-chip--diet { background: rgba(63, 174, 107, .14); border-color: rgba(63, 174, 107, .38); }
.pp-dine-allergen { margin-top: 6px; }

/* CARE-FACTS-01 (2026-09-20) — access and baby care, per venue.
   A THIRD chip colour, not a reuse of the dietary green: a parent scanning for a changing table and
   a coeliac scanning for gluten-free are looking for different things, and one colour for both would
   make each read the other's chips. A stated `no` is muted rather than alarming — it is a useful
   fact, not a warning, and it is shown only where its absence is what the visitor came to find out. */
.pp-dine-care { margin-top: 8px; }
.pp-dine-care-chips { display: flex; flex-wrap: wrap; gap: 6px; }
.pp-chip--care { background: rgba(90, 130, 200, .14); border-color: rgba(90, 130, 200, .38); }
.pp-chip--care-ltd { background: rgba(160, 130, 60, .14); border-color: rgba(160, 130, 60, .38); }
.pp-chip--care-no { background: rgba(120, 120, 120, .10); border-color: rgba(120, 120, 120, .30); opacity: .8; }


/* BOUNDS-03 (2026-09-17) — a park's or a ride's published limits. Laid out as label/value rows like
   the guide lines above them, with the source's own sentence indented underneath when a rule could
   not be reduced to a number. The alternate-unit twin is de-emphasised, not hidden: a reader who
   thinks in centimetres should find it without hunting, and a reader who thinks in inches should not
   trip over it. */
.pp-bounds { margin-top: 4px; }
.pp-bound { display: flex; flex-wrap: wrap; align-items: baseline; gap: 8px; padding: 5px 0; border-bottom: 1px solid rgba(0,0,0,.06); }
.pp-bound:last-of-type { border-bottom: 0; }
.pp-bound-l { flex: 0 0 auto; font-weight: 600; min-width: 11rem; }
.pp-bound-v { flex: 1 1 auto; }
.pp-bound-alt { font-style: normal; opacity: .7; }
.pp-bound-note { flex: 1 0 100%; font-size: .92em; opacity: .85; margin-top: 2px; }
@media (max-width: 520px) { .pp-bound-l { min-width: 100%; } }

/* HOURS-PHONE-01 (2026-09-21) — opening hours and phone numbers, on the Dining venue card and the
   Nearby card. One rule set for both: it is the same fact from the same tag map, and a visitor
   should not have to learn two layouts to read it.

   The day column is fixed-width and the values are tabular-figure aligned so a week of times reads
   as a column rather than a paragraph — the whole point of the block is that it can be scanned at a
   glance while standing outside the door. */
.pp-hours { margin-top: 8px; }
.pp-hours-h,
.pp-phone-h { display: block; font-size: 11px; font-weight: 700; letter-spacing: .04em;
  text-transform: uppercase; color: var(--muted, #8a7456); margin-bottom: 3px; }
.pp-hours-row { display: flex; gap: 10px; align-items: baseline; font-size: 12.5px; line-height: 1.55; }
.pp-hours-day { flex: 0 0 62px; color: var(--muted, #8a7456); }
.pp-hours-val { font-variant-numeric: tabular-nums; }
/* The refusal path: the venue's published rule, verbatim, because we would not interpret it. */
.pp-hours-raw { font-size: 12.5px; line-height: 1.5; font-variant-numeric: tabular-nums; }
.pp-hours-ph { font-size: 12px; margin-top: 3px; color: var(--muted, #8a7456); }
.pp-phone { margin-top: 8px; font-size: 12.5px; }
.pp-phone-h { margin-bottom: 2px; }
.pp-phone-link { font-variant-numeric: tabular-nums; }
/* A number with no country code is not a link — it must still look deliberate, not broken. */
.pp-phone-plain { font-variant-numeric: tabular-nums; color: inherit; }
.pp-phone-sep { color: var(--muted, #8a7456); }

/* MEDIA-CREDIT-01 (2026-09-21) — the licensor's own trademark / personality-rights warning, beside
   the image rather than in a footnote. It is the licensor speaking to a reuser, so it is set apart
   from the credit line without being made louder than the photograph. */
.pp-media-restrict { display: block; font-size: 11px; line-height: 1.4; margin-top: 2px;
  color: var(--muted, #8a7456); font-style: italic; }

/* EXP-DESC-01 (2026-09-24): the experience description a source published, and the attraction's own page. */
.pp-exp-desc{font-size:13px;line-height:1.45;color:#5b4630;margin:2px 0 6px}

/* WX-SURFACE-01 (2026-09-25) — an active weather alert is set apart from the cards around it by a
   severity-coloured rule, not by size: it has to be noticed without shouting over the page. The
   monthly-averages table scrolls inside its own box so twelve columns never widen a phone page. */
.pp-wx-alert{border-left:4px solid #cfa94a;margin:0 0 10px}
.pp-wx-alert-moderate{border-left-color:#d2803a}
.pp-wx-alert-severe{border-left-color:#c0453a}
.pp-wx-alert-extreme{border-left-color:#8e1f16;background:#fff6f3}
.pp-wx-alert-sev{font-weight:600;font-size:11px;color:var(--muted,#8a7456);margin-left:6px;text-transform:none;letter-spacing:0}
.pp-wx-alert-do{margin-top:6px}
.pp-wx-alert-do .pp-meta{margin-top:3px}
.pp-wx-alert-more{margin-top:6px;font-size:12.5px}
.pp-wx-alert-more summary{cursor:pointer;color:#7a4e26}
.pp-clm-x{margin-top:8px}
.pp-clm-x-wrap{overflow-x:auto;max-width:100%}
.pp-clm-x-t{border-collapse:collapse;font-size:12px;font-variant-numeric:tabular-nums;min-width:100%}
.pp-clm-x-t th,.pp-clm-x-t td{padding:3px 5px;text-align:center;white-space:nowrap;border-bottom:1px solid #eee2cc}
.pp-clm-x-t tr>th:first-child{text-align:left;font-weight:600;color:var(--muted,#8a7456)}
.pp-clm-x-now{background:rgba(169,116,59,.13)}

/* SEO-RENDER-01 (2026-09-30): an indexable park or directory page arrives with a server-rendered
   summary in #app main.main and <body data-ssr-view>. Before any script runs the shell shows the app
   column, not the landing page; the app then mounts #pp-mount and removes the summary (inline styles
   set by the app's own navigation override these rules). */
body[data-ssr-view] #landing{display:none}
body[data-ssr-view] #app{display:block}
#app main.main>.pr-ssr{display:block;max-width:1100px;margin:0 auto;padding:16px 20px;line-height:1.5}
#app main.main>.pr-ssr-adopted{max-width:1100px;margin:24px auto;padding:0 20px;line-height:1.5}
.pr-ssr-adopted>summary{cursor:pointer;font-weight:600;padding:8px 0}
.pr-ssr-adopted>.pr-ssr{padding:0 0 16px}
.pr-ssr h1{margin:0 0 4px;font-size:1.8rem}
.pr-ssr .pr-ssr-sub{margin:0 0 12px;opacity:.75}
.pr-ssr h2{font-size:1.15rem;margin:18px 0 6px}
.pr-ssr ul{margin:0;padding-left:1.2em}
.pr-ssr .pr-ssr-meta{opacity:.7;font-size:.9em}
.pr-ssr dl{margin:0}.pr-ssr dt{font-weight:600;margin-top:6px}.pr-ssr dd{margin:0 0 4px}
.pr-ssr .pr-ssr-nav{margin-top:20px}

/* SSR-CONTENT-01 (2026-10-07): content pages (guides, biggest parks, shop, about / contact / privacy)
   are the live shell with an article rendered from their JSON contract (src/domain/ContentPageBody.ts).
   No app view owns these addresses, so the article stays; assets/hydrate.js adds behaviour in place. */
.pr-content{max-width:820px}
.pr-content .pr-eyebrow{margin:0 0 6px;font-size:12px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--muted,#8a7456)}
.pr-content h3{font-size:1rem;margin:14px 0 4px}
.pr-content p{margin:0 0 10px}
.pr-content ol,.pr-content ul{margin:0 0 10px;padding-left:1.3em}.pr-content li{margin:4px 0}
.pr-content .pr-ssr-sec{margin-top:18px}
.pr-content .pr-tone-note{font-size:.92em;color:var(--muted,#8a7456)}
.pr-content .pr-tone-alert{background:#fff7e9;border:1px solid var(--line,#e6d6ba);border-radius:10px;padding:10px 12px}
.pr-content .pr-tone-verdict{border-left:3px solid #3fae6b;padding-left:10px}
.pr-content .pr-table{overflow-x:auto;max-width:100%;margin:6px 0 12px}
.pr-content table{border-collapse:collapse;font-size:14px;min-width:100%}
.pr-content th,.pr-content td{text-align:left;vertical-align:top;padding:6px 8px;border-bottom:1px solid var(--line2,#efe3cb)}
.pr-content th{font-size:12px;text-transform:uppercase;letter-spacing:.04em;color:var(--muted,#8a7456)}
.pr-content .pr-stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:10px;margin:8px 0 12px}
.pr-content .pr-stats>div{border:1px solid var(--line,#e6d6ba);border-radius:10px;padding:10px}
.pr-content .pr-stats dt{margin:0;font-size:12px;color:var(--muted,#8a7456)}
.pr-content .pr-stat-value{font-size:1.4rem;font-weight:700;margin:2px 0}
.pr-content .pr-links{display:flex;flex-wrap:wrap;gap:6px 14px;margin:8px 0 12px}
.pr-content .pr-cta a{display:inline-block;font-weight:700}
.pr-content .pr-signup{border:1px solid var(--line,#e6d6ba);border-radius:12px;padding:10px 14px;margin:10px 0}
.pr-content .pr-signup-form{display:flex;gap:8px;flex-wrap:wrap}
.pr-content .pr-signup-form input{flex:1;min-width:200px;padding:9px 11px;border:1px solid var(--line,#e6d6ba);border-radius:9px}
.pr-content .pr-signup-form button,.pr-content .pr-chip{border:1px solid var(--line,#e6d6ba);border-radius:9px;padding:7px 12px;background:#fff;cursor:pointer;font-weight:600}
.pr-content .pr-chip[aria-pressed="true"]{background:#402f1d;color:#fff}
.pr-content .pr-filter{display:flex;flex-wrap:wrap;gap:6px;margin:6px 0 10px}
.pr-content .pr-rank li{margin:5px 0}.pr-content .pr-rank-type,.pr-content .pr-rank-count{font-size:.9em;color:var(--muted,#8a7456);margin-left:6px}
.pr-content .pr-data-wait{color:var(--muted,#8a7456)}
.pr-content .pr-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:12px}
.pr-content .pr-card{display:block;border:1px solid var(--line,#e6d6ba);border-radius:12px;padding:10px;color:inherit;text-decoration:none}
.pr-content .pr-card img{width:100%;height:auto;border-radius:8px}
/* UX-01 (2026-10-17): the overview reads once, top to bottom — verdict, glance, weather — and the
   detail that used to sit inline is one tap away. */
.pp-wx-more{margin:-4px 0 10px}
.pp-wx-more>summary{cursor:pointer;font-size:12.5px;font-weight:700;color:#7a4e26;list-style:none;display:inline-block}
.pp-wx-more>summary::-webkit-details-marker{display:none}
.pp-wx-more>summary::after{content:" ▾"}
.pp-wx-more[open]>summary::after{content:" ▴"}
.pp-wx-more .pp-wx-cond{margin:6px 0 0!important}
.pp-credit{font-size:11.5px;color:#8a7456}
.pp-guide-links-h{margin:14px 0 6px;font:800 11px system-ui,Arial,sans-serif;letter-spacing:.5px;text-transform:uppercase;color:#7a4e26}
.pp-tip-more>summary{cursor:pointer;list-style:none}
.pp-tip-more>summary::-webkit-details-marker{display:none}
.pp-tip-more>summary b{color:#7a4e26;white-space:nowrap}
.pp-tip-more[open]>summary{display:none}
