/* Accounts, blog and studio reviews — layered on top of the mapper's own styles,
   reusing its tokens so the two never drift apart. */
.acct{display:flex;align-items:center;gap:8px}
.acct .who{font-size:13px;font-weight:700;color:#2B2350}
.hero .acct .who{color:#2B2350}
.abtn{font:inherit;font-family:Fredoka,Nunito,system-ui,sans-serif;font-weight:700;font-size:13px;color:#2B2350;background:rgba(255,255,255,.72);border:0;border-radius:999px;padding:7px 14px;cursor:pointer}
.abtn:hover{background:#fff}

.sheet{position:fixed;inset:0;z-index:80;display:grid;place-items:center;padding:16px;background:rgba(43,35,80,.45)}
.sheet[hidden]{display:none}
.sheet .box{background:var(--panel);color:var(--ink);border-radius:26px;box-shadow:var(--shadow);padding:22px;width:min(420px,100%);max-height:calc(100vh - 32px);overflow:auto}
.sheet h3{font:600 20px/1.2 Fredoka,Nunito,system-ui,sans-serif;margin:0 0 4px}
.sheet p.sub{color:var(--muted);font-size:13px;margin:0 0 14px}
.sheet label{display:block;font-size:12px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);margin:10px 0 4px}
.sheet input,.sheet textarea{width:100%;font:inherit;font-size:14px;color:var(--ink);background:var(--ground);border:2px solid var(--line);border-radius:14px;padding:10px 12px}
.sheet textarea{min-height:120px;resize:vertical}
.sheet .acts{display:flex;gap:8px;margin-top:16px;flex-wrap:wrap}
.sheet .msg{font-size:13px;margin:10px 0 0}
.sheet .msg.bad{color:var(--pilates)} .sheet .msg.good{color:var(--yoga)}
.sheet .alt{background:none;border:0;color:var(--focus);font:inherit;font-size:13px;cursor:pointer;padding:0}
.sheet .x{position:absolute;right:18px;top:14px;border:0;background:none;font-size:22px;color:var(--muted);cursor:pointer}

/* ---- reviews on a studio ---- */
.rv{margin-top:12px;border-top:2px dashed var(--line);padding-top:12px}
.rv h4{font:600 15px/1.2 Fredoka,Nunito,system-ui,sans-serif;margin:0 0 8px;display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.rv .avg{font-variant-numeric:tabular-nums}
.rv .stars{color:var(--star);letter-spacing:1px}
.rv ul{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:10px}
.rv li{background:var(--ground);border-radius:16px;padding:10px 12px}
.rv li .top{display:flex;justify-content:space-between;gap:8px;align-items:baseline;flex-wrap:wrap}
.rv li .nm{font-weight:700;font-size:13.5px}
.rv li .when{font-size:12px;color:var(--muted)}
.rv li p{margin:5px 0 0;font-size:13.5px;line-height:1.45;white-space:pre-wrap;overflow-wrap:anywhere}
.rv .none{color:var(--muted);font-size:13px}
.rate{display:flex;gap:3px}
.rate button{font-size:22px;line-height:1;background:none;border:0;cursor:pointer;color:var(--line);padding:0 1px}
.rate button.on{color:var(--star)}

/* ---- blog ---- */
.blog{margin-top:28px}
.blog .list{display:flex;flex-direction:column;gap:12px}
.pcard{background:var(--panel);border-radius:22px;box-shadow:var(--shadow-s);padding:16px 18px}
.pcard h3{font:600 19px/1.25 Fredoka,Nunito,system-ui,sans-serif;margin:0 0 4px}
.pcard .by{font-size:12.5px;color:var(--muted)}
.pcard .ex{margin:8px 0 0;font-size:14px;line-height:1.5;color:var(--ink)}
.pcard .go{margin-top:10px}
.thread{display:flex;flex-direction:column;gap:10px;margin-top:14px}
.cmt{background:var(--ground);border-radius:16px;padding:10px 13px}
.cmt.child{margin-left:22px;border-left:3px solid var(--line)}
.cmt .top{display:flex;justify-content:space-between;gap:8px;flex-wrap:wrap;align-items:baseline}
.cmt .nm{font-weight:700;font-size:13.5px}
.cmt .when{font-size:12px;color:var(--muted)}
.cmt p{margin:5px 0 0;font-size:13.5px;line-height:1.45;white-space:pre-wrap;overflow-wrap:anywhere}
.cmt .tools{margin-top:6px;display:flex;gap:10px}
.cmt .tools button{background:none;border:0;color:var(--focus);font:inherit;font-size:12.5px;cursor:pointer;padding:0}
.body{white-space:pre-wrap;line-height:1.6;font-size:15px;overflow-wrap:anywhere}
.muted{color:var(--muted);font-size:13px}
@media (max-width:860px){.cmt.child{margin-left:12px}}

/* ---- member and studio pages ---- */
body.ypm-locked{overflow:hidden}
.panel{position:fixed;inset:0;z-index:70;overflow:auto;padding:16px;background:rgba(43,35,80,.5);-webkit-overflow-scrolling:touch}
.panel[hidden]{display:none}
.panel .pbox{position:relative;background:var(--panel);color:var(--ink);border-radius:26px;box-shadow:var(--shadow);padding:22px;width:min(720px,100%);margin:0 auto}
.panel .x{position:absolute;right:18px;top:14px;border:0;background:none;font-size:24px;color:var(--muted);cursor:pointer;line-height:1}
.panel h3{font:600 23px/1.2 Fredoka,Nunito,system-ui,sans-serif;margin:0 0 4px;padding-right:32px}
.panel h4{font:600 15px/1.2 Fredoka,Nunito,system-ui,sans-serif;margin:0 0 8px;display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.panel .sub{color:var(--muted);font-size:13.5px;margin:0 0 10px}
.panel .none{color:var(--muted);font-size:13px;margin:4px 0}
.panel a{color:var(--focus)}
.sp-head .verif{display:inline-block;margin-left:8px;font:700 11px/1 Fredoka,Nunito,system-ui,sans-serif;letter-spacing:.04em;color:#fff;background:var(--yoga);border-radius:999px;padding:5px 9px;vertical-align:middle}
.sp-head .stars{color:var(--star);letter-spacing:1px;margin-left:6px}
.panel .ann{background:color-mix(in srgb,var(--sun) 22%,var(--panel));border-radius:14px;padding:9px 12px;font-size:13.5px;font-weight:600;margin:8px 0}
.panel .blurb{font-size:14px;line-height:1.55;margin:10px 0;white-space:pre-wrap;overflow-wrap:anywhere}
.sp-facts{list-style:none;margin:12px 0;padding:0;display:flex;flex-wrap:wrap;gap:6px 18px;font-size:13.5px}
.sp-facts b{font-size:11.5px;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);margin-right:6px}
.sp-acts{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin:12px 0}
.sp-acts .btn.on{background:var(--yoga);color:#fff}
.sp-sched{margin-top:14px;border-top:2px dashed var(--line);padding-top:12px}
.sp-sched ul{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:4px;max-height:340px;overflow:auto}
.sp-sched li{display:flex;gap:10px;align-items:baseline;font-size:13.5px;background:var(--ground);border-radius:12px;padding:7px 11px}
.sp-sched .d{font-weight:700;min-width:74px}
.sp-sched .t{font-variant-numeric:tabular-nums;min-width:66px}
.sp-sched .n{flex:1;overflow-wrap:anywhere}
.sp-sched .m{color:var(--muted);font-size:12px}
.sp-sched ul.chips{flex-direction:row;flex-wrap:wrap;gap:6px;max-height:none}
ul.chips li{background:var(--chip);border-radius:999px;padding:6px 12px;font-size:13px}
ul.chips li a{text-decoration:none;font-weight:600}
.sheet .hint{font-size:12px;color:var(--muted);margin:4px 0 0}
.sheet label.chk{display:flex;align-items:center;gap:8px;text-transform:none;letter-spacing:0;font-size:13px;font-weight:600;color:var(--ink);margin:8px 0 0}
.sheet label.chk input{width:auto}

/* ---- the claims queue ---- */
ul.claims{list-style:none;margin:0 0 18px;padding:0;display:flex;flex-direction:column;gap:10px}
li.claim{background:var(--ground);border-radius:16px;padding:12px 14px;border-left:5px solid var(--line)}
li.claim.good{border-left-color:var(--yoga)}
li.claim.warn{border-left-color:var(--sun)}
li.claim.bad{border-left-color:var(--pilates)}
li.claim .top{display:flex;justify-content:space-between;gap:8px;align-items:baseline;flex-wrap:wrap}
li.claim .nm{font-weight:700;font-size:14px}
li.claim .when{font-size:12px;color:var(--muted)}
.tag{display:inline-block;margin-left:8px;font:700 11px/1 Fredoka,Nunito,system-ui,sans-serif;color:#fff;border-radius:999px;padding:5px 9px;background:var(--muted)}
.tag.good{background:var(--yoga)} .tag.warn{background:var(--sun);color:#4a3a10} .tag.bad{background:var(--pilates)}
ol.rank .tag{margin-left:0;font-size:10.5px;padding:4px 8px}
li.claim .who2{font-size:13px;margin:6px 0 2px}
li.claim ul.signals{list-style:none;margin:8px 0 0;padding:0;display:flex;flex-direction:column;gap:3px}
li.claim ul.signals li{font-size:12.5px;color:var(--muted)}
li.claim ul.signals li::before{content:'• ';color:var(--line)}
li.claim .note{font-size:13px;margin:8px 0 0;white-space:pre-wrap;overflow-wrap:anywhere}

@media (max-width:520px){
  .panel{padding:8px}
  .panel .pbox{padding:18px 16px;border-radius:20px}
  .sp-sched li{flex-wrap:wrap}
  .sp-sched .d{min-width:62px}
}

/* ---- the studio's own photo, timetable editor and replies ---- */
.sp-photo{margin:-6px 0 12px;border-radius:18px;overflow:hidden;background:var(--ground)}
.sp-photo img{display:block;width:100%;height:auto;max-height:340px;object-fit:cover}
.phrow{display:flex;gap:12px;align-items:flex-start;flex-wrap:wrap}
.phprev{width:140px;height:96px;border-radius:14px;overflow:hidden;background:var(--ground);border:2px dashed var(--line);display:grid;place-items:center;flex:none}
.phprev img{width:100%;height:100%;object-fit:cover}
.phprev span{font-size:12px;color:var(--muted)}
.crow{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(0,1fr) minmax(0,.7fr) 28px;grid-template-areas:'day time min x' 'name name name name' 'teach type type type';gap:6px;align-items:center;margin:0;padding:8px 0;border-bottom:1px dashed var(--line)}
.crow>select:first-child{grid-area:day}.crow input[type=time]{grid-area:time}.crow input[type=number]{grid-area:min}.crow input[aria-label='Class name']{grid-area:name}.crow input[aria-label='Teacher']{grid-area:teach}.crow select.ct{grid-area:type}.crow .x2{grid-area:x}
.crow select,.crow input{width:100%;font:inherit;font-size:13px;color:var(--ink);background:var(--ground);border:2px solid var(--line);border-radius:12px;padding:7px 9px}
.crow .x2{border:0;background:none;font-size:19px;color:var(--muted);cursor:pointer;line-height:1;padding:0 4px}
.btn.sm{font-size:12px;padding:5px 11px}
.oreply{margin:8px 0 0 0;padding:9px 12px;background:color-mix(in srgb,var(--yoga) 12%,var(--panel));border-radius:14px;border-left:3px solid var(--yoga)}
.oreply .nm{font-weight:700;font-size:13px}
.oreply p{margin:4px 0 0;font-size:13.5px;line-height:1.45;white-space:pre-wrap;overflow-wrap:anywhere}
@media (max-width:560px){
  .crow{grid-template-columns:minmax(0,1.3fr) minmax(0,1fr) minmax(0,.8fr) 28px;grid-template-areas:'day time min x' 'name name name name' 'teach type type type'}
}

/* ---- numbers: stat tiles and the one chart ---- */
/* One validated hue for every bar, the same in both themes (L 0.55, passes the
   lightness band and 3:1 against both the light and the dark surface). */
:root{--chart:#9B6BFF;--chart-ax:#E2D8CC}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]){--chart-ax:#3A3266}}
:root[data-theme="dark"]{--chart-ax:#3A3266}
.kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(132px,1fr));gap:8px;margin:10px 0 14px}
.kpi{background:var(--ground);border-radius:16px;padding:11px 13px;display:flex;flex-direction:column;gap:2px}
.kpi .lab{font-size:11.5px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--muted)}
.kpi .val{font:600 25px/1.1 Fredoka,Nunito,system-ui,sans-serif;font-variant-numeric:tabular-nums;color:var(--ink)}
.kpi .sub2{font-size:12px;color:var(--muted)}
.ch{margin:6px 0 14px;padding:0}
.ch svg{width:100%;height:auto;display:block;overflow:visible}
.ch .bar{fill:var(--chart)}
.ch .ax{stroke:var(--chart-ax);stroke-width:1}
.ch .vl{fill:var(--ink);font:600 11px/1 Fredoka,Nunito,system-ui,sans-serif;font-variant-numeric:tabular-nums}
.ch .tk{fill:var(--muted);font:500 10.5px/1 Fredoka,Nunito,system-ui,sans-serif}
.ch figcaption{font-size:12px;color:var(--muted);margin-top:6px;display:flex;gap:10px;align-items:baseline;flex-wrap:wrap}
.chnums{width:100%;border-collapse:collapse;margin-top:8px;font-size:12.5px}
.chnums th,.chnums td{text-align:left;padding:4px 8px;border-bottom:1px solid var(--line)}
.chnums td:last-child,.chnums th:last-child{text-align:right;font-variant-numeric:tabular-nums}
ol.rank{list-style:none;counter-reset:r;margin:0 0 16px;padding:0;display:flex;flex-direction:column;gap:4px}
ol.rank li{counter-increment:r;display:flex;gap:8px;align-items:baseline;background:var(--ground);border-radius:12px;padding:7px 11px;font-size:13.5px}
ol.rank li::before{content:counter(r);color:var(--muted);font-variant-numeric:tabular-nums;min-width:18px;font-weight:700}
ol.rank li a{font-weight:600;text-decoration:none}
ol.rank li .pl{color:var(--muted);font-size:12px;flex:1}
ol.rank li b{font-variant-numeric:tabular-nums}

/* ---- suggest a studio ---- */
.two2{display:grid;grid-template-columns:1.4fr 1fr .8fr;gap:8px}
.two2 select{width:100%}
@media (max-width:560px){.two2{grid-template-columns:1fr 1fr}.two2>div:first-child{grid-column:1 / -1}}
.dupes{margin:12px 0 0;padding:10px 14px;border-radius:14px;background:color-mix(in srgb,var(--sun) 18%,var(--panel))}
.dupes p{margin:0 0 6px}
.dupes ul{margin:0 0 6px;padding-left:18px}
.dupes li{margin:3px 0}
.sq-pos{width:100%;font:inherit;font-size:13px;color:var(--ink);background:var(--ground);border:2px solid var(--line);border-radius:12px;padding:7px 10px;margin:4px 0}
.sheet select{width:100%;font:inherit;font-size:14px;color:var(--ink);background:var(--ground);border:2px solid var(--line);border-radius:14px;padding:10px 12px}
.sheet #sg-note{min-height:70px}

/* YPM rolling week v1: studio calendars */
.sp-sched details.fw{margin:6px 0}
.sp-sched details.fw summary{cursor:pointer;font-weight:700;font-size:13.5px;padding:4px 2px}
.sp-sched details.fw ul{margin-top:4px}
.sheet .calstat{font-size:12.5px;margin:6px 0 0;padding:7px 10px;border-radius:10px;background:var(--ground)}
.sheet .calstat.ok{color:#1f6f43}
.sheet .calstat.error,.sheet .calstat.empty{color:#9a3b12}
/* YPM nationwide map v1 */
.mlmap{position:absolute;inset:0;z-index:1}
.mapsec.mlmode #map,.mapsec.mlmode .tiles,.mapsec.mlmode .ctls,.mapsec.mlmode .mattr,.mapsec.mlmode .hcard{display:none}
.mapsec.mlmode .legend{z-index:3}
.mapsec.mlmode .mcard{z-index:4}
.mapsec.mlmode .maplibregl-ctrl-attrib{font-size:10.5px}
.mapsec.mlmode .maplibregl-cooperative-gesture-screen{font-family:Nunito,system-ui,sans-serif;font-weight:700}

/* YPM store app v1 — phones: account buttons wrap; the app keeps clear of the notch and home bar */
.acct{flex-wrap:wrap}
.abtn{white-space:nowrap}
.pf-links{margin-top:14px}
html.ypm-app body{padding-top:max(env(safe-area-inset-top),var(--safe-area-inset-top,0px));padding-bottom:max(env(safe-area-inset-bottom),var(--safe-area-inset-bottom,0px));padding-left:env(safe-area-inset-left);padding-right:env(safe-area-inset-right)}
html.ypm-app .sheet,html.ypm-app .panel{padding-top:calc(16px + max(env(safe-area-inset-top),var(--safe-area-inset-top,0px)));padding-bottom:calc(16px + max(env(safe-area-inset-bottom),var(--safe-area-inset-bottom,0px)))}
.ypm-toast{position:fixed;left:12px;right:12px;top:calc(10px + max(env(safe-area-inset-top),var(--safe-area-inset-top,0px)));z-index:99;display:flex;flex-direction:column;gap:2px;text-align:left;font:inherit;font-size:14px;color:#fff;background:#2B2350;border:0;border-radius:16px;padding:12px 16px;box-shadow:0 10px 30px rgba(0,0,0,.25);cursor:pointer}
.ypm-toast b{font-family:Fredoka,Nunito,system-ui,sans-serif;font-size:15px}

/* YPM phone nav v1 — one row of section buttons on a frosted strip */
@media (max-width:700px){
  html body .nav{flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none;-webkit-overflow-scrolling:touch;
    background:color-mix(in srgb,var(--ground,#FFF8EE) 86%,transparent);
    -webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);padding:8px 2px 10px}
  html body .nav::-webkit-scrollbar{display:none}
  html body .nav a{flex:none;padding:7px 13px;font-size:13px}
}
@media (max-width:860px){.filters.collapsed .fbody{display:none!important}}
#mapTop,#calTop,#dir,#blog{scroll-margin-top:64px}

/* YPM screenshot v1 */
.ow-shot{display:flex;flex-wrap:wrap;gap:8px 12px;align-items:center;margin:4px 0 10px}
.ow-shot .hint{flex:1 1 220px;margin:0}
