/* Front Desk design: every page has its own color, big buttons, big type. Phone first, monitor layout from 1100px. */
.ico{width:24px;height:24px;flex:none;stroke:currentColor;fill:none;stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round}
.top{background:var(--card);border-bottom:1px solid var(--line);padding:10px 16px;padding-top:calc(10px + env(safe-area-inset-top));display:flex;align-items:center;gap:10px;position:sticky;top:0;z-index:5}
.top a{color:inherit;text-decoration:none}
.sp{flex:1}
.help,.me{display:flex;align-items:center;gap:6px;border:2px solid var(--line);border-radius:999px;padding:8px 12px;font:inherit;font-weight:700;font-size:16px;background:var(--card);color:var(--ink);cursor:pointer}
.help span{display:none}
.me{padding:0;width:42px;height:42px;justify-content:center;background:var(--pc-home);border-color:var(--pc-home);color:var(--on-color);font-size:18px}
.toptabs{display:none}
.lgS{display:inline-flex}.lgL{display:none}
body:not(.inapp) .toptabs,body:not(.inapp) .help,body:not(.inapp) .me,body:not(.inapp) .bottom{display:none!important}
#app{padding:16px 16px 120px;max-width:1500px;margin:0 auto}
.s{font-size:16px;color:var(--muted)}.nm{font-weight:700}.g{flex:1;min-width:0}
h1{font-size:30px;line-height:1.15;margin:0}
.tab h2,.card h2{margin:0}

/* page banner in the page color */
.banner{background:var(--pc);color:var(--on-color);border-radius:22px;padding:18px;position:relative;overflow:hidden;margin-bottom:16px}
.banner:after{content:"";position:absolute;right:-30px;top:-30px;width:170px;height:170px;border-radius:50%;background:rgba(255,255,255,.1);pointer-events:none}
.banner .back{display:inline-flex;align-items:center;gap:6px;background:rgba(255,255,255,.18);border-radius:999px;padding:6px 14px 6px 10px;font-weight:700;font-size:16px;margin-bottom:12px;color:var(--on-color);text-decoration:none;position:relative;z-index:1}
.banner .back .ico{transform:rotate(180deg);width:20px;height:20px}
.bt{display:flex;align-items:center;gap:14px}
.bt .bi{width:56px;height:56px;border-radius:16px;background:rgba(255,255,255,.2);display:grid;place-items:center;flex:none}
.bt .bi .ico{width:32px;height:32px}
.banner h1{font-size:32px;margin:0}.banner p{margin:2px 0 0;opacity:.92;font-size:17px}
.stats{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-top:16px;position:relative;z-index:1}
.stats div{background:rgba(255,255,255,.16);border-radius:14px;padding:10px;text-align:center}
.stats b{display:block;font-size:30px;line-height:1.05}.stats span{font-size:14px;font-weight:600;opacity:.95}

/* jump buttons */
.sec{display:flex;align-items:center;justify-content:space-between;margin:22px 0 12px}
.jumps{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-bottom:16px}
.jb{background:var(--card);border:2px solid var(--line);border-radius:18px;padding:14px;display:flex;flex-direction:column;gap:8px;min-height:104px;position:relative;text-align:left;font:inherit;color:var(--ink);cursor:pointer}
.jb .ji{width:44px;height:44px;border-radius:12px;background:var(--pcl);color:var(--pc);display:grid;place-items:center}
.jb b{font-size:18px;line-height:1.2}.jb small{font-size:14.5px;color:var(--muted);font-weight:600;line-height:1.25}
.jb .badge{position:absolute;top:12px;right:12px;font-size:13px;font-weight:700;padding:3px 9px;border-radius:999px}
.jb.solid{background:var(--pc);border-color:var(--pc);color:var(--on-color)}.jb.solid .ji{background:rgba(255,255,255,.2);color:var(--on-color)}.jb.solid small{color:rgba(255,255,255,.9)}
.ok{background:var(--pcl-work);color:var(--ok-d)}.due{background:var(--c-leave);color:var(--warn)}.late{background:var(--red-soft);color:var(--red)}.info{background:var(--info-soft);color:var(--info)}.soon{background:var(--c-energy);color:var(--c-energy-d)}

/* home */
.homehead{margin-bottom:4px}.homehead h1{font-size:34px}.hsub{color:var(--muted);margin:4px 0 16px;font-size:18px}
.today{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-bottom:18px}
.today div{background:var(--card);border:1px solid var(--line);border-radius:16px;padding:14px;text-align:center}
.today b{display:block;font-size:40px;line-height:1}.today span{font-size:15px;font-weight:600;color:var(--muted)}
.tiles{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-bottom:22px}
.bb{border-radius:18px;color:var(--on-color);padding:16px;min-height:118px;display:flex;flex-direction:column;justify-content:space-between;box-shadow:0 2px 0 rgba(0,0,0,.08);text-decoration:none}
.bb .ico{width:34px;height:34px}.bb b{font-size:21px;display:block}.bb small{font-size:15px;opacity:.92;font-weight:600}
.grid{display:grid;gap:16px}
.card.d{padding:18px;border-radius:20px}
.ch{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px;gap:10px}
.ch h2{font-size:22px;display:flex;align-items:center;gap:10px}
.ch h2 .dot{width:12px;height:12px;border-radius:50%}
.see{font-weight:700;font-size:16px;padding:8px 14px;border-radius:999px;background:var(--soft);white-space:nowrap;border:0;color:var(--ink);text-decoration:none;font-family:inherit;cursor:pointer}
.lr{display:flex;align-items:center;gap:14px;padding:13px 0;border-top:1px solid var(--line)}
.lr:first-of-type{border-top:0}
.pd{color:var(--on-color);background:var(--pc-res);font-weight:700;border-radius:10px;padding:8px 0;width:58px;text-align:center;flex:none;font-size:17px}
.pill{font-weight:700;font-size:15px;padding:6px 12px;border-radius:999px;white-space:nowrap;border:0;font-family:inherit;cursor:pointer}
.al{display:flex;gap:12px;padding:14px;border-radius:14px;margin-top:10px;border-left:6px solid;width:100%;text-align:left;font:inherit;color:var(--ink);border-top:0;border-right:0;border-bottom:0;align-items:flex-start}
.al:first-of-type{margin-top:0}.al b{display:block}.al .s{display:block}
.al.bad{border-color:var(--red);background:var(--red-soft)}.al.warn{border-color:var(--amber);background:var(--c-leave)}.al.info{border-color:var(--info);background:var(--info-soft)}
.al.bad .ico{color:var(--red)}.al.warn .ico{color:var(--amber)}.al.info .ico{color:var(--info)}
.wxrow{display:flex;align-items:center;gap:16px}.wxrow .t{font-size:58px;font-weight:700;line-height:1}
.wk{display:flex;gap:6px;overflow:hidden;margin-top:14px}
.wk div{flex:1;text-align:center;background:var(--soft);border-radius:12px;padding:8px 0;font-size:15px}
.wk b{display:block;font-size:17px}.wk .ico{display:block;margin:4px auto}
.legend{display:flex;flex-direction:column;gap:8px;font-size:17px;flex:1}.legend div{display:flex;align-items:center;gap:10px}.legend i{width:14px;height:14px;border-radius:4px;display:inline-block}.legend span{flex:1}
.fullrow{display:flex;gap:18px;align-items:center}
.note{background:var(--c-note);border-radius:14px;padding:12px 14px;margin-top:10px;border:1px solid color-mix(in srgb,var(--c-note-d) 30%,var(--c-note));position:relative}
.note .x{position:absolute;right:8px;top:8px;border:0;background:none;padding:4px;color:var(--muted);cursor:pointer}
.btnw{display:flex;align-items:center;justify-content:center;gap:8px;margin-top:12px;padding:15px;border-radius:14px;background:var(--pc);color:var(--on-color);font-weight:700;border:0;font:inherit;font-weight:700;width:100%;cursor:pointer}
.empty{color:var(--muted);padding:6px 0}
/* compact top row: weather now + 3 days on one line; both donut cards share one layout */
.c-wx .wxrow{gap:12px;flex-wrap:wrap}.c-wx .wxrow .t{font-size:40px}.wxcur{flex:1 1 180px;min-width:0}.wxcur .s{font-size:15px}
.c-wx .wk{margin:0 0 0 auto;flex:0 1 260px;gap:6px}.c-wx .wk div{padding:6px 0}
.c-full .ch,.c-stor .ch{flex-wrap:nowrap;margin-bottom:8px}.c-full .ch h2,.c-stor .ch h2{white-space:nowrap}
.c-full .fullrow,.c-stor .fullrow{flex-direction:row;align-items:center}
.c-full .legend,.c-stor .legend{min-width:0}
.evpic{width:58px;height:58px;border-radius:14px;flex:none;display:grid;place-items:center;position:relative;overflow:hidden;font-size:30px}
.evpic img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.lr.ev .g{flex:1;min-width:0}.lr.ev .nm{font-weight:700;font-size:15px;line-height:1.25}.lr.ev .s{margin-top:2px;font-size:12.5px;font-weight:600;line-height:1.3;color:color-mix(in srgb,var(--ink) 62%,transparent)}.lr.ev .s b{font-weight:700}
.lr.ev .evpin{display:inline-flex;vertical-align:-.15em;color:var(--muted)}.lr.ev .evpin .ico{width:1em;height:1em}
.lr.ev a.pill{text-decoration:none;background:var(--info-soft);color:var(--info)}
.lr.ev.big{align-items:flex-start}.lr.ev.big .s{margin-top:4px}
.evmore{background:var(--pc-work)}
@media (max-width:699px){.lr.ev{flex-wrap:wrap;row-gap:8px}}
.hubnote{background:var(--card);border:2px dashed var(--line);border-radius:18px;padding:16px;color:var(--muted);margin-bottom:16px}

/* phone bottom bar, color-coded */
.bottom{position:fixed;left:0;right:0;bottom:0;background:var(--card);border-top:1px solid var(--line);display:grid;grid-template-columns:repeat(5,1fr);padding:8px 4px calc(10px + env(safe-area-inset-bottom));z-index:6}
.bottom a,.bottom button{display:flex;flex-direction:column;align-items:center;gap:3px;font:inherit;font-size:13px;font-weight:700;color:var(--muted);text-decoration:none;background:none;border:0;padding:0;cursor:pointer}
.bottom .ico{width:54px;height:32px;padding:4px 15px;border-radius:999px}
.bottom .on{color:var(--ink)}.bottom .on .ico{color:var(--on-color)}

/* sheets: name, notes, find, more */
.sheetbg{position:fixed;inset:0;z-index:40;background:rgba(16,24,40,.5);display:flex;align-items:flex-end;justify-content:center}
.sheet{background:var(--card);width:100%;max-width:560px;border-radius:24px 24px 0 0;padding:22px 18px calc(22px + env(safe-area-inset-bottom));max-height:90vh;overflow:auto}
.sheet h2{font-size:26px;margin:0 0 6px;display:block}
.sheet input,.sheet textarea{font-size:20px;padding:14px;margin:8px 0}
.sheet textarea{width:100%;font:inherit;font-size:19px;border:1px solid var(--line);border-radius:12px;min-height:110px}
.sheet .btnw{margin-top:8px}
.sheet .opt{display:flex;align-items:center;gap:14px;width:100%;padding:14px;border:2px solid var(--line);border-radius:16px;background:var(--card);font:inherit;font-weight:700;margin-top:10px;color:var(--ink);text-decoration:none;cursor:pointer}
.sheet .opt .ico{color:var(--pc)}
.found{display:flex;align-items:center;gap:12px;padding:10px 0;border-top:1px solid var(--line)}
@media (min-width:700px){.sheetbg{align-items:center}.sheet{border-radius:24px}}

/* sign in */
#auth,#pending,#lock{max-width:460px;margin:28px auto;padding:24px 20px;border-radius:24px}
#auth .logo,#pending .logo,#lock .logo{display:flex;justify-content:center;margin-bottom:14px}
#auth h1,#pending h1,#lock h1{font-size:30px;text-align:center}
#auth>.muted,#pending>.muted,#lock>.muted{text-align:center}
#auth label,#lock label{font-size:16px}#auth input,#lock input{font-size:19px;padding:13px}
#auth .row button{flex:1;padding:14px;font-size:18px}
.nameline{font-size:15px;color:var(--muted);margin:-2px 0 4px}

@media (min-width:700px){.jumps{grid-template-columns:repeat(3,1fr)}.tiles{grid-template-columns:repeat(3,1fr)}}
@media (max-width:699px){.tiles.n5 .bb:last-child{grid-column:1/-1;min-height:80px;flex-direction:row;align-items:center;justify-content:flex-start;gap:14px}.ch{flex-wrap:wrap}.card{min-width:0}.grid>*{min-width:0}
  .banner h1{font-size:28px}.stats b{font-size:26px}}
@media (min-width:1100px){
  .top{padding:14px 32px}.lgS{display:none}.lgL{display:inline-flex}
  .toptabs{display:flex;gap:6px;margin-left:24px}
  .toptabs a{display:flex;align-items:center;gap:8px;padding:10px 16px;border-radius:12px;font-weight:700;font-size:17px}
  .toptabs a.on{color:var(--on-color)!important}
  .help span{display:inline}
  .bottom{display:none}
  #app{padding:26px 32px 40px}
  .banner{padding:24px 28px;display:grid;grid-template-columns:1fr auto;align-items:center;gap:20px}
  .banner .back{grid-column:1/-1;justify-self:start;margin-bottom:0}
  .stats{margin-top:0;grid-template-columns:repeat(3,150px)}
  .jumps{grid-template-columns:repeat(var(--jc,6),1fr)}
  .homehead{display:flex;justify-content:space-between;align-items:flex-end;gap:20px}.today{grid-template-columns:repeat(3,160px)}
  .tiles{grid-template-columns:repeat(var(--bc,5),1fr)}.bb{min-height:110px;flex-direction:row;align-items:center;justify-content:flex-start;gap:14px}
  /* Home on a big screen: a top row of glanceable cards (weather, how full, storage) that never change height,
     then a row of lists. Every card in a row stretches to the same height, so there are no gaps. */
  .grid{grid-template-columns:repeat(12,1fr);align-items:stretch}
  .grid>.card{min-width:0}
  /* Alerts: full width right under the big buttons, alert rows side by side */
  .c-alerts{order:0;grid-column:1/-1}
  .c-alerts .alist{display:grid;grid-template-columns:repeat(auto-fill,minmax(340px,1fr));gap:12px}
  .c-alerts .al{margin-top:0;height:100%}
  .c-wx{order:1;grid-column:span 6}.c-full{order:2;grid-column:span 3}.c-stor{order:3;grid-column:span 3}.c-full.c-wide{grid-column:span 6}
  .c-guests{order:5;grid-column:span 4}.c-notes{order:6;grid-column:span 4}.c-events{order:7;grid-column:span 4}
  .c-full .fullrow,.c-stor .fullrow{gap:18px}
  .c-full .legend,.c-stor .legend{font-size:16px;gap:5px}
  /* hub pages: fixed-content cards on top, lists below, every card in a row stretches to the same height */
  .widgets{grid-template-columns:repeat(var(--n,4),1fr);align-items:stretch}
  .widget.s2{grid-column:span 2}
  .widgets:not([style]) .wp-occ{order:1;grid-column:span 2}.wp-stor{order:2}.wp-facts{order:3}.wp-open{order:4;grid-column:span 2}.wp-leave{order:5}.wp-long{order:6}
  .sheetbg{align-items:center}
}
.staff input.uname{max-width:320px;padding:8px 10px;font-size:17px}
.staff{flex-wrap:wrap}
@media (min-width:1100px) and (max-width:1399px){
  .top{padding:12px 20px}.toptabs{margin-left:12px;gap:2px}.toptabs a{padding:10px 11px;font-size:16px}
  .c-full .ch h2,.c-stor .ch h2{font-size:19px}
  .c-full .legend,.c-stor .legend{font-size:15px}
  .lgL img{height:40px!important}
}
@media (min-width:700px) and (max-width:1099px){
  .tiles.n5{grid-template-columns:repeat(6,1fr)}.tiles.n5 .bb{grid-column:span 2}.tiles.n5 .bb:nth-child(n+4){grid-column:span 3}
  .tiles.n4{grid-template-columns:repeat(4,1fr)}
}
@media (max-width:1099px){.widgets{grid-template-columns:1fr}.widget.wide{grid-column:auto}}
.widget{align-content:start}
@media (min-width:1100px){.widget .chart svg{height:auto}}

/* ---- reading screens (walk + arrival/departure): fixed layout, own number pad, nothing jumps ---- */
.wiz{background:var(--bg)}
.wiztop{padding:calc(8px + env(safe-area-inset-top)) 10px 8px;gap:8px;background:var(--pc)}
.wizcount{flex:1;text-align:center;font-weight:700;font-size:19px;color:var(--on-color)}
.wizicons{display:flex;gap:8px;align-items:center}
.ib{background:rgba(255,255,255,.18);border:0;color:var(--on-color);width:46px;height:46px;border-radius:14px;padding:0;display:grid;place-items:center;cursor:pointer}
.ib .ico{width:26px;height:26px}.ib.dim{opacity:.45}
.bad{background:var(--red);color:var(--on-color);font-family:inherit;font-weight:800;font-size:24px;line-height:1;min-width:46px;height:46px;border:2px solid var(--on-color);border-radius:12px;padding:0 8px;cursor:pointer}
.wizprog{height:8px;background:var(--line);flex:none}#wizBar{height:100%;width:0;background:var(--ok);border-radius:0 4px 4px 0;transition:width .35s ease}
.rd{flex:1;display:flex;flex-direction:column;min-height:0}
.rd.fin{overflow:auto;padding:16px}
.rd-main{flex:1;min-height:0;overflow:auto;padding:12px 16px 8px;display:flex;flex-direction:column;gap:10px;max-width:520px;width:100%;margin:0 auto}
.rd-head{display:flex;align-items:baseline;justify-content:space-between;gap:10px}
.rd-name{font-size:40px;font-weight:800;line-height:1.05}
.rd-meta{color:var(--muted);font-size:15px}
.rd-prior{display:flex;align-items:baseline;gap:10px;font-size:20px;color:var(--muted)}
.rd-prior b{font-size:28px;color:var(--ink)}.rd-prior small{font-size:14px;margin-left:auto}
.numbox{background:var(--card);border:3px solid var(--pc);border-radius:18px;padding:8px 16px;display:flex;align-items:center;gap:12px;min-height:76px}
.numbox span{font-size:18px;font-weight:700;color:var(--muted)}
.numbox b{flex:1;text-align:right;font-size:44px;font-weight:800;font-variant-numeric:tabular-nums;white-space:nowrap;overflow:hidden}
.numbox.invalid{border-color:var(--red);background:var(--red-soft)}
.caret{display:inline-block;width:3px;height:.9em;background:var(--pc);margin-left:3px;vertical-align:-.08em;animation:blink 1s steps(1) infinite}
@keyframes blink{50%{opacity:0}}
.rd-used{min-height:26px;font-size:19px;color:var(--ink)}
.rvrow{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.rvrow button{display:flex;align-items:center;justify-content:center;gap:8px;padding:0 8px;height:58px;font-size:20px;font-weight:700;border-radius:16px;border:2px solid var(--line);background:var(--card);color:var(--ink);cursor:pointer}
.rvrow button.on{background:var(--pc);border-color:var(--pc);color:var(--on-color)}
.rd .save{height:60px;font-size:22px;margin:0;display:flex;align-items:center;justify-content:center;gap:10px;width:100%}
.rd .save:disabled{background:var(--slate-l);border-color:var(--slate-l);color:var(--on-color);opacity:1}
.rd-nav{display:flex;justify-content:space-between}
.rd-nav button{background:none;border:0;color:var(--muted);width:72px;height:44px;padding:0;display:grid;place-items:center}
.rd-nav .ico{width:30px;height:30px}
.padsel{display:flex;align-items:center;gap:10px;margin:0;font-size:18px;font-weight:700;color:var(--muted)}
.padsel select{font-size:22px;padding:10px;font-weight:700;color:var(--ink)}
.keypad{display:grid;grid-template-columns:repeat(6,1fr);gap:6px;padding:8px 8px calc(10px + env(safe-area-inset-bottom));background:var(--soft);border-top:1px solid var(--line);flex:none}
.key{height:54px;font-size:26px;font-weight:700;border-radius:12px;border:0;background:var(--card);color:var(--ink);box-shadow:0 1px 0 rgba(0,0,0,.18);padding:0;touch-action:manipulation;user-select:none;-webkit-user-select:none}
.key:active{background:var(--line)}.key.del{background:var(--line)}
.rdpanel{position:fixed;inset:0;z-index:30;background:rgba(16,24,40,.35)}
.rdsheet{position:absolute;left:10px;right:10px;top:calc(62px + env(safe-area-inset-top));max-width:520px;margin:0 auto;background:var(--card);border-radius:18px;padding:14px 16px;box-shadow:0 12px 40px rgba(0,0,0,.3);max-height:70vh;overflow:auto}
.rdsheet h3{margin:0 0 6px;font-size:22px}
.prob{padding:8px 10px;border-radius:10px;margin-top:8px;font-size:17px}.prob.bad{background:var(--red-soft)}.prob.warn{background:var(--c-leave)}
@media (max-height:700px){.rd-name{font-size:32px}.numbox{min-height:64px}.numbox b{font-size:38px}.key{height:46px}.rvrow button{height:50px}.rd .save{height:54px}}
@media (min-height:780px){.numbox{min-height:96px}.numbox b{font-size:54px}.rd-name{font-size:46px}.rd-prior b{font-size:32px}.key{height:64px;font-size:28px}.rvrow button{height:64px}.rd .save{height:66px}.rd-main{gap:14px}}

/* reading screens: taps never zoom */
.wiz,.wiz *,.mapov .wiztop,.mapov .wiztop *{touch-action:manipulation;-webkit-tap-highlight-color:transparent}
.wiz button,.wiz .numbox,.keypad{user-select:none;-webkit-user-select:none;-webkit-touch-callout:none}

/* pad map (Reservations > Pad map): laid out like the park map */
.mapwrap{overflow-x:auto;margin:8px 0 16px;-webkit-overflow-scrolling:touch}
.pmap{display:grid;grid-template-columns:96px 110px 22px minmax(480px,8fr) 22px minmax(520px,10fr);grid-template-rows:auto 34px;min-width:1300px;background:var(--map-grass);border-radius:18px;padding:14px 14px 0;gap:0 10px}
.mstore{grid-row:1;grid-column:1;display:flex;flex-direction:column;gap:6px}
.mlabel{font-size:12px;font-weight:700;color:var(--map-ink);text-align:center;text-transform:uppercase;letter-spacing:.04em}
.mstgrid{display:grid;grid-template-columns:1fr 1fr;grid-auto-rows:1fr;gap:3px;flex:1;background:var(--map-lot);padding:4px;border-radius:8px}
.mroad{background:var(--map-road);border-radius:6px}
.mroad.v{grid-row:1/3}.mroad.main{grid-column:3}.mroad.east{grid-column:5}
.mblock{grid-column:4;display:grid;grid-template-rows:repeat(5,82px 20px) 82px}
.pmap .mrow{display:grid;grid-template-columns:repeat(8,1fr);gap:6px}   /* park map rows only: list rows (.months .mrow) stay a plain line */
.mroad.h{margin:0 -10px}
.meast{grid-column:6;display:grid;grid-template-rows:repeat(5,82px 20px) 82px;grid-template-columns:repeat(10,1fr);gap:0 6px}
.meast .mcol{grid-row:1/6;grid-column:1;display:grid;grid-template-rows:repeat(6,1fr);gap:6px}
.meast .mcol .mt{min-height:0}
.meast .r55{grid-row:9;grid-column:1/7;grid-template-columns:repeat(6,1fr)}
.meast .mroad.h{margin:0}
.mgreen{grid-column:2;grid-row:1;display:flex;flex-direction:column;justify-content:space-between;align-items:stretch}
.mgreen .mf{height:82px}
.glabel{display:flex;align-items:center;justify-content:center;flex:1;font-size:18px;font-weight:700;color:var(--map-ink);text-align:center;opacity:.8}
.mf{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;border-radius:10px;border:2px solid rgba(0,0,0,.15);font:inherit;font-weight:700;font-size:15px;color:var(--ink);cursor:pointer;padding:6px;text-align:center;line-height:1.15;margin:3px 0}
.mf em{font-style:normal;font-size:10px;font-weight:800;color:#fff;background:#b91c1c;border-radius:4px;padding:1px 5px;letter-spacing:.04em;text-transform:uppercase}
.mf:hover,.mf:focus-visible{outline:3px solid #1d3658;outline-offset:1px}
.f-office{background:#dc2626;color:#fff;border-color:#991b1b}
.f-parking{background:var(--card)}
.mbldg{display:grid;grid-template-columns:1fr 1fr;border:5px double #8a6a3b;border-radius:8px;overflow:hidden;margin:3px 0}
.mbldg .mf{margin:0;border:0;border-radius:0;font-size:17px}.mbldg .mf+.mf{border-left:2px solid #8a6a3b}
.f-cafe{background:#ede6d3}.f-banquet{background:#e2d6b8}
.f-patio{background:#d79a55;border-radius:40% 50% 30% 50%}
.f-facilities{background:var(--card);font-size:12px}.f-pets{font-size:12px}
.f-pets{background:#9ca3af;color:#fff;border-radius:22px}
.f-vineyard{background:#d8c7fb;border-radius:28px;font-size:20px}
.mhwy{grid-column:1/-1;grid-row:2;align-self:end;margin:10px -14px 0;background:var(--map-hwy);color:#fff;font-weight:700;letter-spacing:.2em;text-align:center;padding:6px;border-radius:0 0 18px 18px;font-size:14px}
.mt{--c:var(--slate-l);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1px;padding:4px 2px;min-width:0;border-radius:8px;border:2px solid var(--c);background:color-mix(in srgb,var(--c) 22%,var(--card));font:inherit;color:var(--ink);cursor:pointer;line-height:1.1}
.mt b{font-size:18px}.mt span{font-size:11px;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--muted)}
.mt.none{--c:var(--slate-l);border-style:dashed;background:var(--soft)}
.mt.st{padding:0 2px;border-width:1.5px;border-radius:5px}.mt.st b{font-size:11px}.mt.st span{display:none}
.mt:hover,.mt:focus-visible{outline:3px solid var(--c);outline-offset:1px}
.k.none{background:var(--soft);border:1.5px dashed var(--slate-l)}
.sitehead{display:flex;gap:14px;align-items:center;margin-bottom:10px}.sitehead .mt{width:58px;height:58px;flex:none}.sitehead .mt b{font-size:22px}
.mt.monthly{--c:var(--stay-monthly)}.mt.transient{--c:var(--stay-nightly)}.mt.reserved{--c:var(--stay-reserved)}.mt.staff{--c:var(--stay-park)}.mt.vacant{--c:var(--stay-vacant)}.mt.storage{--c:var(--stay-storage)}

/* Admin logs */
.chips{display:flex;gap:8px;flex-wrap:wrap;margin:0 0 14px}
.chip{font:inherit;font-weight:700;font-size:15px;padding:8px 16px;border-radius:999px;border:1.5px solid var(--line);background:var(--card);color:var(--ink);cursor:pointer}
.chip.on{background:var(--slate);border-color:var(--slate);color:var(--on-color)}
.dot{width:12px;height:12px;border-radius:50%;flex:none}.dot.on{background:var(--ok)}.dot.off{background:var(--red)}
.pill.ok{background:var(--c-event);color:var(--ok-d)}.pill.due{background:var(--red-soft);color:var(--red)}
.pill.info{background:var(--info-soft);color:var(--info)}.pill.idle{background:var(--soft);color:var(--slate)}

/* Person view (personViewHtml in views.js): reach chips, the right-now card, tabs */
.pview h2{margin-bottom:4px}
.preach{display:flex;flex-wrap:wrap;gap:8px;margin:4px 0 12px}
.pchip{display:inline-flex;align-items:center;gap:6px;padding:0 12px;border-radius:999px;background:var(--c-arrive);color:var(--ink);text-decoration:none;font-weight:600;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pchip svg{width:1.1em;height:1.1em;flex:none}
.pnow{border:1px solid var(--line);border-radius:var(--radius);padding:12px 14px;margin-bottom:12px}
.pnow>b{display:block;font-size:1.1em;margin-bottom:2px}
.pnow .opt,.pnow .btnw{margin-top:8px}
/* Tabs wrap onto a second row on narrow screens; never a sideways scroller (John 2026-10-23). */
.ptabs{display:flex;flex-wrap:wrap;gap:6px;margin:20px 0 12px}
.psec{font-size:1.15em;margin:4px 0 8px}
.ppanel{margin-bottom:20px}
@media (max-width:699px){.ptab{padding-left:11px;padding-right:11px}}
.prow > *{min-width:0;overflow-wrap:anywhere}
.ptab{flex:none;border:0;border-radius:999px;padding:0 14px;background:var(--soft);color:var(--ink);font:inherit;font-size:var(--btn-fs-sm);font-weight:600;cursor:pointer}
.ptab.on{background:var(--c-arrive-d);color:var(--on-color)}
.ppanel .opt{width:100%}
.prow{display:flex;justify-content:space-between;gap:10px;padding:8px 0;border-bottom:1px solid var(--line)}
.prow:last-child{border-bottom:0}
.prow span:first-child{color:var(--muted)}

/* person view: log tab */
.plog { padding: 8px 0; border-bottom: 1px solid var(--line); }
.plog:last-child { border-bottom: 0; }
.plog > span { display: block; margin-bottom: 2px; }
.pcount{display:inline-block;min-width:1.5em;margin-left:6px;padding:0 .45em;border-radius:999px;background:var(--red);color:var(--on-color);font-size:.8em;font-weight:700;line-height:1.5;text-align:center}

/* person view: deals form checkboxes */
.prole{border:0;border-radius:999px;min-height:var(--btn-h-sm);padding:0 12px;margin-left:6px;background:var(--soft);color:var(--ink);font:inherit;font-size:var(--btn-fs-sm);font-weight:600;vertical-align:middle;cursor:pointer}
.dealsbody{max-width:640px}
.dealsbody .opt{width:100%}
/* Person icon in front of every name (nameHtml), sized to the name's text (John 2026-10-23) */
.ico.nico,.sheet .opt .ico.nico,button .ico.nico{width:1em;height:1em;min-width:1em;vertical-align:-.12em;margin:0 .3em 0 0;flex:none;color:inherit}
/* Stay anniversary ribbon next to a person's name: outline star, gold */
.anniv{display:inline-flex;align-items:center;gap:4px;margin-left:6px;padding:.2em .75em;border-radius:999px;background:var(--c-anniv);color:var(--c-anniv-d);font-size:var(--btn-fs-sm);font-weight:700;vertical-align:middle;white-space:nowrap}
.anniv .ico{width:1em;height:1em}
.plgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(130px,1fr));gap:8px;margin:0 0 12px}.dealsbody .plgrid .opt{width:auto;margin:0}   /* Admin › Places: sites and storage units as a grid of tiles */
.mt.gone{visibility:hidden}   /* a site or unit retired in Admin › Places keeps its spot on the map, empty */
.mextra{margin-top:12px}.mexgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(64px,1fr));gap:6px}.mexgrid .mt{min-height:56px}   /* sites past the drawn map */
/* park map colored by kind of site (Admin › Places › Site types): the tile takes its type's color whoever is there */
.pmap.bytype .mt.ty-1,.mexgrid.bytype .mt.ty-1{--c:var(--type-1)}.k.ty-1{background:var(--type-1)}.pmap.bytype .mt.ty-2,.mexgrid.bytype .mt.ty-2{--c:var(--type-2)}.k.ty-2{background:var(--type-2)}.pmap.bytype .mt.ty-3,.mexgrid.bytype .mt.ty-3{--c:var(--type-3)}.k.ty-3{background:var(--type-3)}.pmap.bytype .mt.ty-4,.mexgrid.bytype .mt.ty-4{--c:var(--type-4)}.k.ty-4{background:var(--type-4)}.pmap.bytype .mt.ty-5,.mexgrid.bytype .mt.ty-5{--c:var(--type-5)}.k.ty-5{background:var(--type-5)}.pmap.bytype .mt.ty-6,.mexgrid.bytype .mt.ty-6{--c:var(--type-6)}.k.ty-6{background:var(--type-6)}
/* Admin › Places › Site types: color dot on each kind, month + day boxes, and a site's own differences */
.dealsbody .opt .k,.chip .k{display:inline-block;width:14px;height:14px;border-radius:50%;flex:none}.chip .k{vertical-align:middle}
.tyday{display:grid;grid-template-columns:minmax(0,2fr) minmax(0,1fr);gap:8px;align-items:center}.tyday input{width:100%}
.tyover{margin:12px 0}.tyover .fold-h{width:100%}.tyover .fold-in{padding:4px 2px 0}

/* Setup wizard (wizard.js, John 2026-10-24): one centred card, step dots on top, Back and Next at the bottom.
   Phone: full width; tablet and desktop: a 560px card; the kinds of site sit 1, 2 then 2 across. */
.wz{--pc:var(--brand);min-height:100vh;padding:24px 16px calc(24px + env(safe-area-inset-bottom));background:var(--bg)}
.wz-in{max-width:560px;margin:0 auto;padding:20px;border-radius:var(--r-card)}
.wz h1{margin:8px 0 6px;font-size:21px;line-height:1.2}   /* same as the Page banner title */
.wz label:not(.tgl):not(.button){display:block;margin:12px 0}
.wz label:not(.tgl):not(.button) input:not([type=color]){width:100%;margin-top:4px}
.wz-find button,.wz label.button{display:inline-flex;align-items:center;gap:6px}
.wz-top{display:flex;align-items:center;justify-content:space-between;gap:12px}
.wz-dots{display:flex;gap:6px}
.wz-dots i{width:22px;height:6px;border-radius:3px;background:var(--line)}
.wz-dots i.on{background:var(--pc)}
.wz-lab{margin:12px 0 6px}
.wz .chip.on{background:var(--pc);border-color:var(--pc);color:var(--on-color)}
.wz-kinds{display:grid;grid-template-columns:1fr;gap:10px;margin-top:12px}
.wz-kind{border:1.5px solid var(--line);border-radius:var(--btn-r);background:var(--card);padding:0 12px}
.wz-kind.on{border-color:var(--pc);box-shadow:inset 0 0 0 1px var(--pc);padding-bottom:4px}   /* 2.5px ring without moving the layout, so the choice shows in dark themes too */
.wz-kind label{margin:4px 0 10px}
.wz-kh{display:flex;align-items:center;gap:12px;width:100%;min-height:var(--btn-h-lg);padding:10px 0;border:0;background:none;text-align:left;color:var(--ink)}
.wz-kh>.ico{flex:none;width:28px;height:28px;color:var(--pc)}
.wz-kh span{display:flex;flex-direction:column;flex:1;min-width:0}
.wz-kh small{color:var(--muted)}
.wz-tick{flex:none;color:var(--pc)}
.wz-find{display:flex;gap:8px}
.wz-find input{flex:1;min-width:0}
.wz-opt{display:flex;align-items:center;gap:8px;width:100%;margin-top:8px;text-align:left}
.wz-picked{display:flex;align-items:center;gap:10px;padding:12px;border:1px solid var(--line);border-radius:var(--btn-r);background:var(--card)}
.wz-picked>.ico{flex:none;color:var(--pc)}
.wz-picked>span{flex:1;min-width:0;overflow-wrap:anywhere}
.wz-more{margin:-6px 0 8px}
.wz-row{display:flex;flex-wrap:wrap;gap:0 10px}.wz-row>label{flex:1 1 120px;min-width:0}.wz-row>.wz-short{flex:0 1 96px}   /* boxes side by side, wrapping on phones */
.wz-area{padding-top:8px;margin-top:10px}
.wz-addk{display:inline-flex;align-items:center;gap:6px;margin:4px 0 8px}
.wz-sep{border:0;border-top:1px solid var(--line);margin:4px 0 8px}
.wz-am{margin:12px 0}
.wz-demo{margin:16px 0 0}
.wz-rm{border:0;background:none;padding:0;color:var(--red);font:inherit;font-size:.9em;cursor:pointer}   /* Remove: red text, top right (as in Library) */
.wz-ah{display:flex;align-items:center;justify-content:space-between;gap:10px;margin:4px 0}
.wz-ok{position:relative}.wz-ok>.wz-rm{position:absolute;top:4px;right:0}
.wz-logo{display:block;max-height:90px;max-width:100%;margin:8px 0}
.wz-color input{display:block;margin-top:4px;width:var(--btn-h-lg);height:var(--btn-h);padding:2px}
.wz-nav{display:flex;justify-content:space-between;gap:12px;margin-top:20px}
.wz-nav button{display:flex;align-items:center;gap:6px;min-height:var(--btn-h)}
.wz-nav .primary{min-width:140px;justify-content:center}
.wz-done{text-align:center}
.wz-big{width:48px;height:48px;color:var(--done)}
.wz-list{list-style:none;padding:0;margin:16px 0;text-align:left}
.wz-list li{display:flex;align-items:flex-start;gap:10px;padding:8px 0;border-top:1px solid var(--line)}
.wz-list .ico{flex:none;color:var(--pc)}
@media (min-width:1200px){.wz h1{font-size:24px}}
@media (min-width:700px){.wz{padding-top:48px}.wz-in{padding:28px}.wz-kinds{grid-template-columns:1fr 1fr}.wz-kind{align-self:start}}
.wz .chips{justify-content:flex-start}
.whochips{justify-content:flex-start}.whochips .chip{display:inline-flex;align-items:center;gap:.3em}.whochips .whock{width:1em;height:1em}.whochips .chip:not(.on) .whock{display:none}
.pickchips{justify-content:flex-start}   /* pick-several chips in forms line up with the labels (Style 2026-10-25) */
/* Admin › Eros (seed engine, John only; Style review 2026-10-24) */
.erosbody{max-width:720px}
.eros-cols{display:grid;gap:14px;grid-template-areas:"park" "seed" "wipe"}
.eros-park{grid-area:park}.eros-seedc{grid-area:seed}.eros-wipe{grid-area:wipe}
@media (min-width:1200px){.erosbody{max-width:1200px}.eros-cols{grid-template-columns:3fr 2fr;grid-template-areas:"seed park" "seed wipe";grid-template-rows:auto 1fr;align-items:start}}
.eros-card{min-width:0}.eros-card h2{display:flex;align-items:center;gap:8px;margin-bottom:8px}
.eros-chips{justify-content:flex-start}
.eros-q{font-weight:700;margin:14px 0 8px}
.eros-months{margin:6px 0 10px}.eros-months .fold-h{width:100%;font-weight:700}
.eros-grid{display:grid;grid-template-columns:1fr;gap:4px 20px;margin-bottom:12px}
@media (min-width:700px){.eros-grid{grid-template-columns:1fr 1fr}}
@media (min-width:1200px){.eros-grid{grid-template-columns:1fr 1fr 1fr}}
.eros-m{display:grid;grid-template-columns:40px 1fr 34px;align-items:center;gap:10px;min-height:44px}
.eros-m input{width:100%;accent-color:var(--brand)}.eros-m b{text-align:right}
.eros-seed{display:flex;gap:8px;margin-top:4px}.eros-seed input{flex:1;min-width:0}
.eros-shuffle{display:inline-flex;align-items:center;gap:6px}
.btnw.eros-red{background:var(--red)}
.btnw:disabled{opacity:.55;cursor:default}
/* Sign in with Apple (Apple's own button style: solid, the Apple mark, "Sign in with Apple"); ink on page = black in light themes, white in dark */
button.apple{display:flex;align-items:center;justify-content:center;gap:8px;width:100%;min-height:var(--btn-h-lg);margin-top:10px;background:var(--ink);color:var(--card);border:0;border-radius:var(--btn-r);font-weight:600}
button.apple svg{width:1em;height:1.2em}
/* the sign-in and waiting screens show before any page sets the section color, so their buttons use the brand */
#auth,#pending,#lock{--pc:var(--brand)}

/* Park maps drawn from data (mapdata.js, Park Map Studio): live sites, buildings and areas over the park's own drawing */
.pmframe{position:relative;background:var(--map-bg);border-radius:18px;overflow:hidden;margin:8px 0 16px;touch-action:pan-y}
.pmframe.zoomed{touch-action:none}
.pmscroll{overflow-x:auto}   /* a big park scrolls sideways inside the map, never shrinking a site below a finger (svg min-width from tapWidth) */
.pm{display:block;width:100%;height:auto;font-family:inherit;user-select:none;-webkit-user-select:none}
.pm text{text-anchor:middle;pointer-events:none}
.pm-ground.g-grass{fill:var(--map-grass)}.pm-ground.g-sand{fill:var(--map-sand)}.pm-ground.g-plain{fill:var(--card)}
.pm .f-grass>path,.pm .f-grass>rect{fill:var(--map-grass)}.pm .f-water>path,.pm .f-water>rect{fill:var(--map-water)}.pm .f-sand>path,.pm .f-sand>rect{fill:var(--map-sand)}
.pm .f-woods>path,.pm .f-woods>rect{fill:var(--map-woods)}.pm .f-lot>path,.pm .f-lot>rect{fill:var(--map-lot)}.pm .f-pave>path,.pm .f-pave>rect{fill:var(--map-pave)}
.pm .f-white>path,.pm .f-white>rect{fill:var(--map-white)}.pm .f-red>path,.pm .f-red>rect{fill:var(--map-red)}.pm .f-purple>path,.pm .f-purple>rect{fill:var(--map-purple)}
.pm .f-orange>path,.pm .f-orange>rect{fill:var(--map-orange)}.pm .f-tan>path,.pm .f-tan>rect{fill:var(--map-tan)}.pm .f-gray>path,.pm .f-gray>rect{fill:var(--map-gray)}.pm .f-blue>path,.pm .f-blue>rect{fill:var(--map-blue)}
.pm-a.live,.pm-b.live{cursor:pointer}
.pm-b rect{stroke:var(--map-edge);stroke-width:2}
.pm-bn{font-weight:700;fill:var(--ink)}.pm-b.f-red .pm-bn,.pm-b.f-gray .pm-bn{fill:var(--on-color)}
.pm-note{font-weight:800;fill:var(--red);letter-spacing:.04em}
.pm-b.live:hover rect,.pm-b.live:focus-visible rect,.pm-a.live:hover path{stroke:var(--brand);stroke-width:3}
.pm-r path{fill:none;stroke:var(--map-road);stroke-linejoin:round}.pm-r.path path{stroke:var(--map-path);stroke-linecap:round}.pm-r.hwy path{stroke:var(--map-hwy)}.pm-r .pm-hit{stroke:transparent}
.pm-tree circle{fill:var(--map-tree)}.pm-tree .hi{fill:var(--map-tree-hi)}
.pm-hill ellipse{fill:none;stroke:var(--map-ink);stroke-width:1.5;opacity:.35}
.pm-s{--c:var(--slate-l);cursor:pointer}
.pm-s rect{fill:color-mix(in srgb,var(--c) 22%,var(--card));stroke:var(--c);stroke-width:2}
.pm-s.st rect{stroke-width:1.5}
.pm-s.none rect{stroke-dasharray:4 3;fill:var(--soft)}
.pm-s.monthly{--c:var(--stay-monthly)}.pm-s.transient{--c:var(--stay-nightly)}.pm-s.reserved{--c:var(--stay-reserved)}.pm-s.staff{--c:var(--stay-park)}.pm-s.vacant{--c:var(--stay-vacant)}.pm-s.storage{--c:var(--stay-storage)}
.pm.bytype .pm-s.ty-1{--c:var(--type-1)}.pm.bytype .pm-s.ty-2{--c:var(--type-2)}.pm.bytype .pm-s.ty-3{--c:var(--type-3)}.pm.bytype .pm-s.ty-4{--c:var(--type-4)}.pm.bytype .pm-s.ty-5{--c:var(--type-5)}.pm.bytype .pm-s.ty-6{--c:var(--type-6)}
.pm-s:hover rect,.pm-s:focus-visible rect{stroke-width:3.5}
.pm-s:focus-visible,.pm-b:focus-visible,.pm-a:focus-visible{outline:none}
.pm-s.dim,.pm-b.dim{opacity:.25}.pm-s.hit rect{stroke:var(--ink);stroke-width:4}
.pm-num{font-weight:800;fill:var(--ink)}.pm-sub{fill:var(--muted)}
.pm-mark{stroke:var(--card);stroke-width:1.5}.pm-mark.work{fill:var(--red)}.pm-mark.arr{fill:var(--c-arrive-d)}.pm-mark.dep{fill:var(--c-leave-d)}
.pm-l{fill:var(--map-ink);font-weight:700;opacity:.85}.pm-l.onroad{fill:var(--on-color);letter-spacing:.2em;opacity:1}
.pm[data-z="tight"] .pm-sub,.pm[data-z="tight"] .pm-l.small,.pm[data-z="tight"] .pm-note{display:none}
.pm-route path{fill:none;stroke:var(--info);stroke-width:2.5;stroke-dasharray:6 4}.pm-route circle{fill:var(--card);stroke:var(--info);stroke-width:2}.pm-route circle.done{fill:var(--ok);stroke:var(--ok)}
.pmzoom{position:absolute;right:8px;top:8px;display:flex;flex-direction:column;gap:6px}
.phgrid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin:8px 0}.phgrid button{position:relative;padding:0;border:1px solid var(--line);border-radius:var(--btn-r);overflow:hidden;aspect-ratio:1;background:var(--card);cursor:pointer}.phgrid img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;display:block}.phbig img{width:100%;border-radius:14px;display:block;margin-bottom:10px;background:var(--card)}
.pm-grid{pointer-events:none}.pm-gridl{stroke:var(--ink);stroke-width:1;opacity:.14}
.pmgeo{pointer-events:none}.pmgeo .done circle{fill:var(--ok)}.pmgeo .done path{fill:none;stroke:var(--on-color);stroke-width:2.5;stroke-linecap:round;stroke-linejoin:round}
.pmgeo .next rect{fill:var(--info)}.pmgeo .next text{fill:var(--on-color);font-size:11px;font-weight:800}
.geosteps{display:flex;gap:5px;margin:0 0 8px}.geosteps i{width:22px;height:4px;border-radius:9px;background:var(--line)}.geosteps i.on{background:var(--info)}.geosteps i.ok{background:var(--ok)}
.pmyou{pointer-events:none}.pmyou-acc{fill:var(--you);opacity:.15}.pmyou-dot{fill:var(--you);stroke:var(--you-ring);stroke-width:3}
.pmzoom button.on{background:var(--you);color:var(--you-ring);border-color:var(--you)}
.pmzoom button{width:var(--btn-h-sm);height:var(--btn-h-sm);border-radius:var(--btn-r);border:1px solid var(--line);background:var(--card);color:var(--ink);display:grid;place-items:center;cursor:pointer;padding:0}
.pmareas{justify-content:flex-start;margin:0 0 8px}.pmareas .stbtn svg{width:1.1em;height:1.1em}
.pmtools{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin:4px 0 8px}
.pmtools .pmdate{display:flex;gap:6px;align-items:center}
.pmtools input[type=date],.pmtools input[type=search]{height:var(--btn-h-sm);border:1px solid var(--line);border-radius:var(--btn-r);padding:0 10px;font:inherit;background:var(--card);color:var(--ink);min-width:0}
.pmtools input[type=search]{flex:1 1 180px}
.pmtools .pmdate button{width:var(--btn-h-sm);height:var(--btn-h-sm);border-radius:var(--btn-r);border:1px solid var(--line);background:var(--card);color:var(--ink);display:grid;place-items:center;cursor:pointer;padding:0}
@media print{body.printmap *{visibility:hidden}body.printmap .pmframe,body.printmap .pmframe *,body.printmap .pmprint,body.printmap .pmprint *{visibility:visible}body.printmap .pmframe{position:absolute;left:0;top:0;width:100%;margin:0;border-radius:0}body.printmap .pmzoom{display:none}}
/* Park Map Studio (Admin › Places › Park map studio): drawing tools on the left, the map, choices on the right; tablets stack them */
.studio{display:grid;grid-template-columns:auto minmax(0,1fr) 300px;grid-template-rows:auto minmax(0,1fr);gap:10px;height:calc(100vh - 210px);min-height:560px}
.sttop{grid-column:1/-1;display:flex;flex-wrap:wrap;align-items:center;gap:8px}
.sttop .stgrow{flex:1}.sttop .chips{margin:0}.stsnap{display:flex;align-items:center;flex-wrap:wrap;gap:6px}.stsnap .chip{min-height:0;display:inline-flex;align-items:center;gap:4px}.stsnap .chip svg{width:14px;height:14px}.stsnaphint{flex-basis:100%}.stsaved{min-width:9ch}
.stprev{background:var(--bar-bg);box-shadow:inset 0 0 0 1px var(--bar-line);border-radius:999px;padding:4px;gap:4px}.stprev .chip{border-color:transparent;background:transparent}.stprev .chip.on{background:var(--slate);color:var(--on-color)}.stmiss{justify-content:flex-start}.sttop .stpub{width:auto;margin:0;padding:0 18px}
.stbtn{display:inline-flex;align-items:center;gap:6px;height:var(--btn-h-sm);padding:0 12px;border-radius:var(--btn-r);border:1px solid var(--line);background:var(--card);color:var(--ink);font:inherit;font-weight:700;cursor:pointer}
.stbtn:disabled{opacity:.4;cursor:default}
.sttools{display:flex;flex-direction:column;gap:4px;overflow-y:auto;background:var(--card);border-radius:var(--radius);padding:6px;box-shadow:var(--shadow)}
.sttool{display:flex;flex-direction:column;align-items:center;gap:2px;width:76px;padding:8px 4px;border:0;border-radius:var(--btn-r);background:none;color:var(--ink);font:inherit;font-size:12px;font-weight:700;cursor:pointer;text-align:center;line-height:1.15}
.sttool .ico{width:22px;height:22px}
.sttool:hover{background:var(--hover)}.sttool.cur{background:var(--sky)}
.stcanvas{position:relative;background:var(--map-bg);border-radius:var(--radius);overflow:hidden;touch-action:none;min-height:0}
.stcanvas>.pm{width:100%;height:100%}
.stcanvas.prev{overflow:auto;background:var(--soft);padding:12px;touch-action:auto}
.stdevice{background:var(--bg);border-radius:var(--radius);padding:12px;box-shadow:var(--shadow)}
.stpanel{background:var(--card);border-radius:var(--radius);padding:14px;overflow-y:auto;box-shadow:var(--shadow)}
.stpanel h3{margin:4px 0 6px}.stpanel label{display:block;margin:8px 0}
.stpanel input[type=text],.stpanel input[type=number],.stpanel .stsel{width:100%;height:var(--btn-h);border:1px solid var(--line);border-radius:var(--btn-r);padding:0 10px;font:inherit;background:var(--card);color:var(--ink)}
.stpanel input[type=range]{width:100%}
.stpanel .opt{width:100%;margin:6px 0}.stpanel .opt.warn{color:var(--warn)}
.stpanel .btnw{margin:8px 0}
.strow{display:flex;gap:8px;align-items:center}.strow>*{flex:1}.strow .opt{width:auto}
.stgrid2{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.stfile{display:flex;align-items:center;justify-content:center;gap:8px;cursor:pointer}
.stsw{display:grid;grid-template-columns:1fr 1fr;gap:6px;margin:8px 0}
.swatch{display:flex;align-items:center;gap:8px;padding:6px 8px;border:1.5px solid var(--line);border-radius:var(--btn-r);background:var(--card);color:var(--ink);font:inherit;font-size:13px;font-weight:700;cursor:pointer;text-align:left}
.swatch span{width:18px;height:18px;border-radius:5px;border:1px solid var(--map-edge);flex:none}
.swatch.cur{border-color:var(--ink);box-shadow:inset 0 0 0 1px var(--ink)}
.swatch.f-grass span{background:var(--map-grass)}.swatch.f-water span{background:var(--map-water)}.swatch.f-sand span{background:var(--map-sand)}.swatch.f-woods span{background:var(--map-woods)}.swatch.f-lot span{background:var(--map-lot)}.swatch.f-pave span{background:var(--map-pave)}
.swatch.f-white span{background:var(--map-white)}.swatch.f-red span{background:var(--map-red)}.swatch.f-purple span{background:var(--map-purple)}.swatch.f-orange span{background:var(--map-orange)}.swatch.f-tan span{background:var(--map-tan)}.swatch.f-gray span{background:var(--map-gray)}.swatch.f-blue span{background:var(--map-blue)}
.pm.edit [data-pid]{cursor:pointer}
.pm.edit .sel rect,.pm.edit .sel path,.pm.edit text.sel{stroke:var(--info);stroke-width:3}
.pm.edit .pm-r.sel path:first-child{stroke:var(--info);stroke-opacity:.6}
.stselbox{fill:none;stroke:var(--info);stroke-width:2;stroke-dasharray:6 4;pointer-events:none}
.sthandle{fill:var(--card);stroke:var(--info);stroke-width:2;cursor:grab}
.stdot{fill:var(--info)}
.stghost{fill:color-mix(in srgb,var(--info) 15%,transparent);stroke:var(--info);stroke-width:2;stroke-dasharray:6 4;pointer-events:none}
.stghostsite rect{fill:color-mix(in srgb,var(--info) 20%,var(--card));stroke:var(--info);stroke-width:1.5}.stghostsite text{fill:var(--ink);font-weight:800}
.stghostsite{pointer-events:none}
.stzone rect{fill:none;stroke:var(--ink);stroke-width:2;stroke-dasharray:10 6;opacity:.5;pointer-events:none}.stzone text{fill:var(--ink);font-weight:800;text-anchor:start;opacity:.7}
.ststart{max-width:760px}.ststartgrid{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.ststartgrid .opt{display:flex;align-items:center;gap:12px;text-align:left;margin:0;cursor:pointer;padding:16px;border:2px solid var(--line);border-radius:16px;background:var(--card);font:inherit;color:var(--ink)}
.ststartgrid .opt .ico{width:28px;height:28px;flex:none;color:var(--pc)}
@media (max-width:1199px){
  .studio{grid-template-columns:minmax(0,1fr);grid-template-rows:auto auto minmax(420px,1fr) auto;height:auto}
  .sttools{flex-direction:row;flex-wrap:wrap;overflow:visible}
  .sttool{width:auto;flex:1 1 76px}
  .stcanvas{height:60vh}
  .stpanel{max-height:none}
}
@media (max-width:699px){.ststartgrid{grid-template-columns:1fr}}

/* Data monitor (Eros only, datamon.js): floats above every page, dragged by its header, resized from its corner. */
.dmon{position:fixed;z-index:90;display:flex;flex-direction:column;min-width:280px;min-height:200px;max-width:calc(100vw - 8px);max-height:calc(100vh - 8px);background:var(--card);color:var(--ink);border:1px solid var(--line);border-radius:var(--r-card);box-shadow:0 20px 50px rgba(15,27,45,.18);resize:both;overflow:hidden;font-size:var(--btn-fs-sm);font-variant-numeric:tabular-nums}
.dmon[hidden]{display:none}
.dmon-h{display:flex;align-items:center;gap:8px;padding:8px 8px 8px 12px;border-bottom:1px solid var(--line);cursor:move;touch-action:none;user-select:none}
.dmon-h .ico{width:18px;height:18px}
.dmon-h .sp{flex:1}
.dmon-x{height:var(--btn-h-sm);padding:0 14px;border:0;border-radius:var(--btn-r);background:var(--bg);color:var(--ink);font:inherit;font-weight:700;font-size:var(--btn-fs-sm);cursor:pointer}
.dmon-x:hover{background:var(--hover)}
.dmon-tools{display:flex;gap:6px;flex-wrap:wrap;padding:8px 12px;border-bottom:1px solid var(--line)}
.dmon-tools button{min-height:var(--btn-h-sm);padding:0 12px;border:0;background:var(--soft);color:var(--ink);border-radius:var(--btn-r);font:inherit;font-weight:600;cursor:pointer}
.dmon-tools button:hover{background:var(--hover)}
.dmon-b{flex:1;overflow:auto;padding:8px 12px 12px}
.dmon-sum{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-bottom:8px}
.dmon-sum div{background:var(--bg);border-radius:var(--radius);padding:8px}
.dmon-sum b{display:block;font-size:1.15em}
.dmon small{color:var(--muted);display:block}
.dmon-t{margin-top:12px}
.dmon-th{display:flex;justify-content:space-between;gap:8px;align-items:baseline}
.dmon-th span{color:var(--muted);white-space:nowrap}
.dmon table{width:100%;border-collapse:collapse;margin-top:4px}
.dmon td{padding:3px 0;border-top:1px solid var(--line);vertical-align:top;word-break:break-word}
.dmon td.n{text-align:right;white-space:nowrap;padding-left:8px;color:var(--muted)}
.dmon-none{font-style:italic}
.dmon-log{list-style:none;margin:4px 0 0;padding:0}
.dmon-log li{padding:3px 0;border-top:1px solid var(--line)}
.dmon-log time{color:var(--muted)}
/* Summary first: the folded long list (ui.js listToggle). Same look as the pop-up .opt rows, at page button height. */
.ltog{display:flex;align-items:center;gap:14px;width:100%;min-height:var(--btn-h);padding:8px 14px;border:2px solid var(--line);border-radius:var(--radius);background:var(--card);font:inherit;font-weight:700;margin-top:10px;color:var(--ink);cursor:pointer;text-align:left}
.ltog>span{flex:1}.ltog .ico{color:var(--pc)}.ltog .ltchev{transform:rotate(90deg);transition:transform .15s}.ltog[aria-expanded="true"] .ltchev{transform:rotate(-90deg)}
.ltog:disabled{cursor:default;color:var(--muted)}.ltog .ltn{color:var(--muted);font-weight:600;white-space:nowrap}
/* A pop-up is open: the page behind it never scrolls (John 2026-10-24), not with the wheel, a trackpad or a finger. The
   pop-up scrolls its own content, and stops at its ends instead of handing the scroll to the page. */
html:has(#sheet:not([hidden]) .sheetbg),html:has(#sheet:not([hidden]) .sheetbg) body{overflow:hidden}
.sheetbg{overscroll-behavior:contain;touch-action:none}.sheet{overscroll-behavior:contain;touch-action:pan-y}

/* Park > Open sites: one row per site on phones, "Site 01 · empty since Oct 2 · None booked" (John 2026-10-24: no padding for padding's sake) */
.av-ph{display:none}
@media (max-width:699px){
  .tablewrap.stk.avail tr{display:flex;flex-wrap:wrap;align-items:baseline;gap:0 6px;padding:8px 12px;margin-bottom:6px}
  .tablewrap.stk.avail td{display:inline;padding:0;text-align:left;background:none}
  .avail .av-dt{display:none}
  .tablewrap.stk.avail td::before{content:none}
  .tablewrap.stk.avail td:nth-child(2){display:none}
  .tablewrap.stk.avail td:nth-child(n+3)::before{content:"· ";color:var(--muted)}
  .tablewrap.stk.avail td:nth-child(n+3){color:var(--muted)}
  .avail .av-ph{display:inline}
}
/* Admin › Places › Meters (Meter Data, Style's layout 2026-10-25): tiles filter the list, areas fold open */
button.stat{font:inherit;color:inherit;text-align:left;cursor:pointer}.stat.warn{background:var(--c-leave)}.stat.on{border-color:var(--slate)}
.mttools{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin:0 0 12px}.mttools input{flex:1 1 auto;min-width:0;min-height:var(--btn-h)}.mttools .chips{margin:0;justify-content:flex-start}
button.mrow{width:100%;align-items:center;gap:12px;min-height:var(--btn-h);border-width:0 0 1px;border-style:solid;border-color:var(--line);background:none;font:inherit;color:inherit;text-align:left;cursor:pointer}.mtr-g{flex:1;min-width:0}
.mtopen{background:var(--soft);padding:4px 14px 10px;border-bottom:1px solid var(--line)}.mtopen .ofnav{margin:6px 0}.mtopen .mrow{padding-left:0;padding-right:0}.mth{margin:12px 0 0}
.mtchev{transform:rotate(90deg);transition:transform .15s}.mtchev.on{transform:rotate(-90deg)}.ico.mtdn{transform:rotate(180deg)}
/* Work › Meter walk: month end and the desk grid (Meter Data) */
.mewrap{margin-top:16px}.mehead{display:flex;gap:12px;align-items:center;flex-wrap:wrap;margin:0 0 10px}.mehead select{width:auto;min-width:160px}
.dectl{display:flex;gap:10px;flex-wrap:wrap;margin:10px 0}.dectl>*{flex:1 1 180px;min-width:0}
.derow{display:flex;flex-wrap:wrap;align-items:center;gap:6px 12px;padding:10px 0;border-bottom:1px solid var(--line)}.derow .de-g{flex:1 1 180px;min-width:0}
.derow .de-in{flex:0 0 120px;width:120px;min-width:0;text-align:right;font-variant-numeric:tabular-nums}.de-msg{flex:1 0 100%;margin:0}.de-msg:empty{display:none}.de-msg.bad{color:var(--red)}.de-msg.warn{color:var(--warn)}

.me-tiles{margin-top:0}.me-tiles .stat{padding:10px 12px}.me-tiles .stat .v{font-size:24px}.me-tiles .stat .l{font-size:13px}
.me-tiles .stat.me-unread{background:var(--c-leave)}.me-tiles .stat.me-flagged{background:var(--c-alert);border-color:var(--c-alert-d)}.me-tiles .stat.me-gap{background:var(--c-leave);border-color:var(--warn)}

.derow .de-rv{flex:0 0 auto;gap:6px}.derow .de-rv .chip{font-size:14px;padding:6px 12px}
.derow .de-l{display:flex;flex-direction:column;gap:2px;flex:0 0 120px}.derow .de-l .de-in{flex:none;width:100%}
#deSave{position:sticky;bottom:12px;z-index:2}#deSave:not(:disabled){background:var(--done);border-color:var(--done);color:var(--on-color)}
.me-tiles{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.me-tiles .stat{text-align:left}
.mewrap .mehead+.me-tiles+p.muted{margin:8px 0 0}
#deSave{width:100%;box-shadow:0 0 0 8px var(--card),0 -9px 0 8px var(--card)}#deSave:disabled{background:var(--c-event);border-color:var(--c-event);color:var(--c-event-d);opacity:1}
.derow .de-l{flex:1 1 120px}
.wz-site{display:flex;gap:10px;align-items:flex-start;margin:0 0 12px;padding:10px 12px;border-radius:12px;background:var(--soft);color:var(--ink);font-size:14px;font-weight:400}.wz-site .ico{flex:none;width:20px;height:20px;margin-top:1px}

/* When it shows rule pop-up (Work): plain number box without the tiny spin arrows; a disabled Save keeps a visible outline */
.wrnum{width:4.5rem;min-height:44px;text-align:center;-moz-appearance:textfield;appearance:textfield}.wrnum::-webkit-inner-spin-button,.wrnum::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}
#wrGo:disabled{outline:2px solid var(--muted);outline-offset:-2px}
#wrWeek{display:grid;grid-template-columns:repeat(4,1fr)}#wrWeek .chip{justify-content:center;min-width:0}
/* Water report (Work): the week's readings by place; narrow phones scroll the table sideways instead of cutting it */
.wrbody{overflow-x:auto}.wrep{border-collapse:collapse;width:100%;font-size:.8125rem}.wrep th,.wrep td{text-align:left;padding:6px 8px;border-bottom:1px solid var(--line)}.wrep th{color:var(--muted);font-weight:700;font-size:.75rem;text-transform:uppercase}
.tdPt{min-height:44px;-moz-appearance:textfield;appearance:textfield}.tdPt::-webkit-inner-spin-button,.tdPt::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}
