/* App polish (Cloudflare build): phone feel, iPhone fixes, banners. The v39 page itself is unchanged. */
html{-webkit-text-size-adjust:100%;text-size-adjust:100%}
body{-webkit-tap-highlight-color:transparent;overscroll-behavior-y:none}
button,a,input,select,textarea,label{touch-action:manipulation}
/* iPhone zooms into any field whose text is under 16px */
input,select,textarea{font-size:16px!important}
.sheet{overscroll-behavior:contain;-webkit-overflow-scrolling:touch}
.overlay:not([hidden]){animation:pfade .16s ease-out}
.overlay:not([hidden]) .sheet{animation:pup .22s cubic-bezier(.2,.8,.2,1)}
@keyframes pfade{from{opacity:0}}
@keyframes pup{from{transform:translateY(28px);opacity:.5}}
button{transition:transform .08s ease,background-color .15s ease}
button:active:not(:disabled){transform:scale(.97)}

/* bottom tab bar on phones (owner / managers) */
@media (max-width:760px){
  #tabs{position:fixed;inset-inline:0;bottom:0;z-index:15;margin:0;background:var(--paper);border-top:1px solid var(--line);
    padding:6px 6px calc(6px + env(safe-area-inset-bottom,0px));flex-wrap:nowrap;overflow-x:auto;gap:2px;scrollbar-width:none;box-shadow:0 -6px 18px rgba(0,0,0,.07)}
  #tabs::-webkit-scrollbar{display:none}
  #tabs button{flex:1 0 auto;min-width:64px;min-height:52px;border:0;border-radius:12px;background:transparent;color:var(--muted);
    display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;padding:5px 6px;font-size:11px;font-weight:600;line-height:1.15;white-space:nowrap}
  #tabs button::before{font-size:20px;line-height:1}
  #tabs button[aria-selected="true"]{background:var(--accent-soft);color:var(--accent)}
  #tabs button[data-tab="dash"]::before{content:"📊"}
  #tabs button[data-tab="month"]::before{content:"📅"}
  #tabs button[data-tab="perf"]::before{content:"🏆"}
  #tabs button[data-tab="hr"]::before{content:"👥"}
  #tabs button[data-tab="close"]::before{content:"🚫"}
  #tabs button[data-tab="list"]::before{content:"📄"}
  #tabs button[data-tab="users"]::before{content:"⚙️"}
  body.has-tabs #vApp .wrap{padding-bottom:calc(86px + env(safe-area-inset-bottom,0px))}
  .bar{gap:6px;padding-inline:10px}
  .bar h1{font-size:16px}
  .bar .who{display:none}
  .bar button{padding:4px 8px}
}

/* banners: install, new version, no internet */
.pbanner{position:fixed;inset-inline:12px;bottom:calc(12px + env(safe-area-inset-bottom,0px));z-index:40;background:var(--ink);color:var(--bg);
  border-radius:14px;padding:10px 12px;display:flex;gap:10px;align-items:center;box-shadow:0 10px 30px rgba(0,0,0,.28);font-size:14px;line-height:1.5;animation:pup .25s ease-out;max-width:560px;margin-inline:auto}
.pbanner .t{flex:1;min-width:0}
.pbanner button{background:var(--accent);color:var(--accent-ink);border:0;padding:8px 14px;font-size:14px;white-space:nowrap}
.pbanner button.x{background:transparent;color:inherit;opacity:.75;padding:6px 8px;font-size:18px;line-height:1}
@media (max-width:760px){body.has-tabs .pbanner{bottom:calc(86px + env(safe-area-inset-bottom,0px))}}
.offline{position:fixed;top:0;inset-inline:0;z-index:50;background:var(--warn);color:#fff;text-align:center;font-size:13px;font-weight:600;
  padding:calc(4px + env(safe-area-inset-top,0px)) 8px 4px}
@media (prefers-reduced-motion:reduce){.overlay,.sheet,.pbanner,button{animation:none!important;transition:none!important}}

/* v40a: profiles */
.pav{border-radius:50%;object-fit:cover;background:var(--accent-soft);vertical-align:middle;margin-inline-end:6px;flex:none}
.pini{display:inline-flex;align-items:center;justify-content:center;color:var(--accent);font-weight:700;font-family:var(--display);font-size:15px}
.pfhead{display:flex;gap:14px;align-items:center}
.pfhead .pini{font-size:28px}
.pfgrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:10px}
.pfwide{grid-column:1/-1}
.pfro{display:grid;gap:2px;font-size:13px;color:var(--muted)}
.pfro b{color:var(--ink);font-size:15px}
.pfadd{border:1px dashed var(--line);border-radius:12px;padding:10px 12px;margin-top:10px;display:grid;gap:8px}
.pfstats{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:8px;margin:4px 0 8px}
.pfstats div{background:var(--bg);border:1px solid var(--line);border-radius:10px;padding:8px 10px}
.pfstats span{display:block;font-size:12px;color:var(--muted)}
.pfstats b{font-family:var(--display);font-size:17px;direction:ltr;display:block;text-align:right}
.pfbday{display:flex;flex-wrap:wrap;gap:8px}
.pfb{display:flex;align-items:center;gap:6px;background:var(--warn-soft);color:var(--ink);border:1px solid var(--line);border-radius:999px;padding:4px 12px 4px 6px;font-weight:500}
@media (max-width:760px){#tabs button[data-tab="staff"]::before{content:"🧾"}}

/* v40b: centers */
.ctcard{display:flex;flex-direction:column;align-items:stretch;gap:8px;text-align:right;color:var(--ink);font-weight:400;cursor:pointer}
.ctcover{height:120px;border-radius:10px;overflow:hidden;background:linear-gradient(135deg,var(--accent),#0a4f42);display:flex;align-items:center;justify-content:center}
.ctcover img{width:100%;height:100%;object-fit:cover}
.ctcover span{font-family:var(--display);font-size:40px;font-weight:700;color:#fff;letter-spacing:4px;direction:ltr}
.ctphotos{display:flex;gap:8px;overflow-x:auto;padding-bottom:4px}
.ctph{position:relative;flex:none}
.ctph img{width:140px;height:100px;object-fit:cover;border-radius:10px;display:block;border:1px solid var(--line)}
.ctph button{position:absolute;top:4px;inset-inline-start:4px;padding:2px 7px;background:var(--paper)}
.ctphadd{flex:none;width:140px;height:100px;border-style:dashed;font-weight:500;line-height:1.5}
.ctmap{display:flex;flex-wrap:wrap;gap:8px;align-items:center;background:var(--bg);border:1px solid var(--line);border-radius:10px;padding:8px 10px;margin:8px 0}
.ctteam{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:8px}
.ctp{display:flex;align-items:center;gap:8px;background:var(--bg);border:1px solid var(--line);color:var(--ink);font-weight:400;padding:6px 8px;border-radius:12px}
.ctp b{display:block;font-size:14px}.ctp small{display:block;color:var(--muted);font-size:12px}
.pfstats small{display:block;font-size:11.5px;color:var(--muted);margin-top:2px;line-height:1.4}
@media (max-width:760px){#tabs button[data-tab="centers"]::before{content:"🏬"}}
.ctlinks{display:flex;flex-wrap:wrap;gap:6px;margin:8px 0}
