/* PlanMyClass UI. Tokens mirror the PlanMyClass design system. */
:root{
  --bg:#fafaf9;--surface:#fff;--sunken:#f5f5f4;--border:#e7e5e4;--border-strong:#a8a29e;--border-subtle:#f0efed;
  --ink:#1c1917;--ink-2:#44403c;--muted:#78716c;--faint:#d6d3d1;--on-ink:#fff;
  --brand:#ffd21f;--brand-strong:#7a5b00;--brand-tint:#fff8d6;--brand-tint-2:#ffe980;--on-brand:#1c1917;
  --success:#047857;--success-bg:#d1fae5;--confirm:#047857;--on-confirm:#fff;
  --warning:#c2410c;--warning-bg:#ffedd5;--danger:#b91c1c;--danger-bg:#fee2e2;--info:#1d4ed8;--info-bg:#dbeafe;
  --neutral-fg:#57534e;--note:#4338ca;--note-bg:#eef2ff;--present:#10b981;--absent:#dc2626;--tentative:#ea580c;
  --kids:#2563eb;--kids-bg:#dbeafe;--adults:#0f766e;--adults-bg:#ccfbf1;
  --side:#1c1917;--side-ink:#d6d3d1;--side-hover:#292524;
  --r:12px;--font:'Instrument Sans',system-ui,sans-serif;--display:'Bricolage Grotesque',var(--font);--mono:'JetBrains Mono',ui-monospace,monospace;
  color-scheme:light;
}
@media (prefers-color-scheme:dark){:root:not([data-theme=light]){
  --bg:#0f0e0d;--surface:#1c1917;--sunken:#292524;--border:#3a3632;--border-strong:#78716c;--border-subtle:#2a2724;
  --ink:#f5f5f4;--ink-2:#d6d3d1;--muted:#a8a29e;--faint:#57534e;--on-ink:#1c1917;
  --brand-strong:#ffe066;--brand-tint:#2e2706;--brand-tint-2:#5c4a00;
  --success:#6ee7b7;--success-bg:#0f2e24;--confirm:#34d399;--on-confirm:#052e1f;--warning:#fdba74;--warning-bg:#3a1e0a;
  --danger:#fca5a5;--danger-bg:#3a1515;--info:#93c5fd;--info-bg:#172554;--neutral-fg:#d6d3d1;--note:#c7d2fe;--note-bg:#1e1b4b;
  --present:#34d399;--absent:#f87171;--tentative:#fb923c;--kids:#93c5fd;--kids-bg:#172554;--adults:#5eead4;--adults-bg:#0d2f2c;
  --side:#0f0e0d;--side-hover:#1c1917;color-scheme:dark}}
*{box-sizing:border-box}
html,body{margin:0;background:var(--bg);color:var(--ink);font:400 14px/1.45 var(--font);-webkit-font-smoothing:antialiased;-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent}
a,button,.btn{touch-action:manipulation}
a{color:var(--brand-strong)}a:hover{color:var(--ink)}
h1{margin:0;font:600 24px/30px var(--font)}
h2{margin:0;font:600 16px/22px var(--font)}
h3{margin:0;font:600 14px/20px var(--font)}
.display{font-family:var(--display);font-weight:700}
.muted{color:var(--muted)}.ink2{color:var(--ink-2)}.small{font-size:12px}.sm{font-size:13px}
.n,td.n,th.n,table.t th.n,table.t td.n{text-align:right;font-variant-numeric:tabular-nums}
.mono{font-family:var(--mono);font-size:12.5px}
.row{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.between{justify-content:space-between}.end{justify-content:flex-end}
.stack{display:flex;flex-direction:column;gap:16px}.stack-s{display:flex;flex-direction:column;gap:8px}
.grow{flex:1;min-width:0}.right{margin-left:auto}
.grid2{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,320px),1fr));gap:20px;align-items:start}
.hide{display:none!important}
/* Icons via CSS mask */
.ao{display:inline-block;width:1em;height:1em;flex:none;vertical-align:-.14em;background:currentColor;-webkit-mask:var(--i) center/contain no-repeat;mask:var(--i) center/contain no-repeat}
/* Shell */
.shell{display:flex;min-height:100vh;min-height:100dvh}
.side{width:240px;flex:none;background:var(--side);color:var(--side-ink);padding:16px 12px;display:flex;flex-direction:column;gap:2px;position:sticky;top:0;height:100vh;overflow:auto}
.side .brand{display:flex;align-items:center;gap:10px;padding:4px 6px 10px;color:#fff;text-decoration:none}
.side .brand .logo{width:36px;height:36px;border-radius:10px;flex:none}
.side .brand b{font:600 14px var(--font);display:block}.side .brand span{font-size:12px;color:#a8a29e}
.side .gl{font-size:12px;font-weight:500;color:#a8a29e;padding:14px 10px 6px}
.side a.nav{display:flex;align-items:center;gap:10px;height:40px;padding:0 6px;border-radius:10px;color:var(--side-ink);text-decoration:none;font-size:14px}
.side a.nav:hover{background:var(--side-hover)}
.side a.nav .ti{width:30px;height:30px;flex:none;border-radius:9px;display:inline-flex;align-items:center;justify-content:center;font-size:18px;color:#a8a29e}
.side a.nav.on{background:var(--brand);color:var(--on-brand);font-weight:600}.side a.nav.on .ti{color:var(--on-brand)}
.side .cnt{margin-left:auto;display:inline-flex;align-items:center;height:20px;padding:0 7px;border-radius:10px;font-size:11px;font-weight:600;background:var(--side-hover);color:#e7e5e4}
.side .cnt.warn{background:#ea580c;color:#fff}.side a.nav.on .cnt{background:var(--ink);color:var(--brand)}
.side .me{margin-top:auto;display:flex;align-items:center;gap:10px;padding:12px 8px 4px;border-top:1px solid #292524;color:#fff;font-size:13px}
.side .me .av{width:30px;height:30px;border-radius:50%;background:var(--brand);color:var(--on-brand);display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:700;flex:none}
.side .me a{color:#a8a29e;font-size:12px}
.main{flex:1;min-width:0}
.page{padding:28px;max-width:1240px;display:flex;flex-direction:column;gap:20px}
.head{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:12px}
.sub{color:var(--muted);margin-top:4px}
.topbar{display:none}
.tabbar{display:none}
/* Cards */
.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--r)}
.card.pad,.card.cb{padding:16px 20px}
.card .ch{padding:14px 20px;border-bottom:1px solid var(--border-subtle);display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}
.card .cb{padding:16px 20px}
.stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr))}
.stats>div{padding:16px 20px;border-left:1px solid var(--border-subtle)}.stats>div:first-child{border-left:0}
.stats .k{font-size:13px;color:var(--muted)}.stats .v{font:600 24px/30px var(--display);margin-top:4px;font-variant-numeric:tabular-nums}
/* Buttons */
.btn{height:36px;padding:0 14px;border-radius:8px;border:1px solid var(--border);background:var(--surface);color:var(--ink);font:500 13px var(--font);cursor:pointer;display:inline-flex;align-items:center;justify-content:center;gap:6px;text-decoration:none;white-space:nowrap}
.btn:hover{border-color:var(--border-strong);color:var(--ink)}
.btn.pri{background:var(--brand);border-color:var(--brand);color:var(--on-brand);font-weight:600}
.btn.ok{background:var(--confirm);border-color:var(--confirm);color:var(--on-confirm);font-weight:600}
.btn.dark{background:var(--ink);border-color:var(--ink);color:var(--on-ink);font-weight:600}
.btn.danger{color:var(--danger)}
.btn.sm{height:30px;padding:0 10px;font-size:12px}
.btn.lg{height:44px;padding:0 18px;font-size:14px}
.btn.icon{width:36px;padding:0}
.btn[disabled]{opacity:.5;pointer-events:none}
button.link{border:0;background:none;padding:0;color:var(--brand-strong);font:inherit;text-decoration:underline;cursor:pointer}
/* Chips */
.chip{display:inline-flex;align-items:center;gap:6px;height:24px;padding:0 8px;border-radius:6px;font-size:12px;font-weight:500;white-space:nowrap;background:var(--sunken);color:var(--neutral-fg)}
.chip .dot{width:6px;height:6px;border-radius:50%;background:currentColor}
.chip.ok{background:var(--success-bg);color:var(--success)}.chip.warn{background:var(--warning-bg);color:var(--warning)}
.chip.bad{background:var(--danger-bg);color:var(--danger)}.chip.info{background:var(--info-bg);color:var(--info)}
.chip.brand{background:var(--brand-tint);color:var(--brand-strong)}.chip.note{background:var(--note-bg);color:var(--note)}
.chip.kids{background:var(--kids-bg);color:var(--kids)}.chip.adults{background:var(--adults-bg);color:var(--adults)}
.chip.tent{background:var(--warning-bg);color:var(--tentative)}
/* Tables */
.tw{overflow-x:auto}
table.t{width:100%;border-collapse:collapse;font-size:14px}
table.t th{text-align:left;font-size:12px;font-weight:500;color:var(--muted);padding:10px 12px;border-bottom:1px solid var(--border-subtle);white-space:nowrap}
table.t td{padding:12px;border-bottom:1px solid var(--border-subtle);vertical-align:middle}
table.t tr:last-child td{border-bottom:0}
table.t th:first-child,table.t td:first-child{padding-left:20px}table.t th:last-child,table.t td:last-child{padding-right:20px}
table.t tr.click{cursor:pointer}table.t tr.click:hover td{background:var(--sunken)}
table.t tfoot td{font-weight:600;border-top:1px solid var(--border)}
/* Forms */
.fld{display:flex;flex-direction:column;gap:6px;min-width:0}
.fld>label,.lbl{font-size:13px;font-weight:500}
.fld .hint{font-size:12px;color:var(--muted)}
input[type=text],input[type=email],input[type=tel],input[type=password],input[type=number],input[type=date],input[type=time],input[type=search],input[type=month],select,textarea{
  height:40px;border:1px solid var(--faint);border-radius:8px;padding:0 12px;font:400 14px var(--font);background:var(--surface);color:var(--ink);width:100%;min-width:0}
textarea{height:auto;padding:10px 12px;min-height:80px}
input:hover,select:hover{border-color:var(--border-strong)}
input:focus-visible,select:focus-visible,textarea:focus-visible,.btn:focus-visible,a:focus-visible,button:focus-visible{outline:2px solid var(--ink);outline-offset:2px}
input.amt{text-align:right;font-variant-numeric:tabular-nums}
.money-in{position:relative}.money-in span{position:absolute;left:12px;top:50%;transform:translateY(-50%);color:var(--muted);font-size:13px}.money-in input{padding-left:38px}
.form{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,220px),1fr));gap:16px}
.form .full{grid-column:1/-1}
.check{display:flex;gap:8px;align-items:center;font-size:13px;color:var(--ink-2)}
.check input{width:16px;height:16px;accent-color:var(--ink)}
.seg{display:inline-flex;background:var(--sunken);border-radius:10px;padding:3px;gap:2px}
.seg a,.seg button{height:30px;padding:0 12px;border:0;border-radius:8px;background:none;font:500 13px var(--font);color:var(--neutral-fg);cursor:pointer;text-decoration:none;display:inline-flex;align-items:center}
.seg .on{background:var(--surface);color:var(--ink);box-shadow:0 1px 2px rgba(0,0,0,.08);font-weight:600}
.tabs{display:flex;gap:4px;border-bottom:1px solid var(--border);overflow-x:auto}
.tabs a{padding:10px 14px;color:var(--muted);text-decoration:none;font-weight:500;border-bottom:2px solid transparent;margin-bottom:-1px;white-space:nowrap}
.tabs a.on{color:var(--ink);border-color:var(--ink)}
.tabs a .c{margin-left:6px;font-size:12px;background:var(--sunken);border-radius:9px;padding:1px 7px}
/* Banners and toast */
.banner{display:flex;gap:10px;align-items:flex-start;padding:12px 16px;border-radius:10px;font-size:13px}
.banner .ao{font-size:18px;margin-top:1px}
.banner.info{background:var(--info-bg);color:var(--info)}.banner.warn{background:var(--warning-bg);color:var(--warning)}
.banner.note{background:var(--note-bg);color:var(--note)}.banner.ok{background:var(--success-bg);color:var(--success)}.banner.bad{background:var(--danger-bg);color:var(--danger)}
.toast{position:fixed;bottom:24px;left:50%;transform:translateX(-50%);background:var(--ink);color:var(--on-ink);padding:12px 18px;border-radius:10px;font-size:14px;box-shadow:0 8px 24px rgba(0,0,0,.18);z-index:50;display:flex;gap:10px;align-items:center;animation:t .25s ease}
@keyframes t{from{opacity:0;transform:translate(-50%,8px)}}
.empty{padding:40px 20px;text-align:center;color:var(--muted)}
.empty .ao{font-size:32px;color:var(--faint);display:block;margin:0 auto 10px}
/* Meters */
.meter{height:6px;border-radius:3px;background:var(--sunken);overflow:hidden;min-width:60px}.meter>i{display:block;height:100%;background:var(--ink)}
.seatbar{display:flex;gap:3px}.seatbar i{width:10px;height:10px;border-radius:3px;background:var(--sunken);border:1px solid var(--border)}
.seatbar i.c{background:var(--ink);border-color:var(--ink)}.seatbar i.t{background:var(--tentative);border-color:var(--tentative)}
.avatar{width:32px;height:32px;border-radius:50%;background:var(--sunken);color:var(--neutral-fg);display:inline-flex;align-items:center;justify-content:center;font-size:12px;font-weight:600;flex:none}
/* Calendar */
.cal{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));border-top:1px solid var(--border-subtle)}
.cal .dh{padding:8px 10px;font-size:12px;color:var(--muted);font-weight:500;border-bottom:1px solid var(--border-subtle)}
.cal .d{min-height:110px;padding:6px;border-right:1px solid var(--border-subtle);border-bottom:1px solid var(--border-subtle);display:flex;flex-direction:column;gap:4px}
.cal .d:nth-child(7n){border-right:0}
.cal .d .dn{font-size:12px;color:var(--muted);font-weight:500}.cal .d.today .dn{color:var(--on-brand);background:var(--brand);border-radius:6px;padding:0 6px;align-self:flex-start}
.cal .d.out{background:var(--bg)}.cal .d.out .dn{color:var(--faint)}
.cal .d.hol{background:var(--note-bg)}
.blk{display:block;padding:4px 6px;border-radius:6px;font-size:12px;text-decoration:none;color:var(--ink);background:var(--sunken);border-left:3px solid var(--border-strong);line-height:1.3}
.blk.kids{background:var(--kids-bg);border-color:var(--kids)}.blk.adults{background:var(--adults-bg);border-color:var(--adults)}
.blk.cx{opacity:.5;text-decoration:line-through}.blk.tbc{border-style:dashed;border-left-style:solid;border-color:var(--tentative)}
/* Attendance toggles */
.att{display:inline-flex;gap:6px}
.att button{height:34px;min-width:84px;padding:0 10px;border-radius:8px;border:1px solid var(--border);background:var(--surface);font:500 13px var(--font);cursor:pointer;color:var(--ink-2);display:inline-flex;gap:6px;align-items:center;justify-content:center}
.att button.p.on{background:#d1fae5;border-color:var(--present);color:#065f46}
.att button.a.on{background:#dbeafe;border-color:var(--absent);color:#1e40af}
/* Auth / public pages */
.auth{display:flex;flex-wrap:wrap;min-height:100vh}
.auth .brandside{flex:1 1 380px;max-width:460px;background:var(--brand);color:var(--on-brand);padding:40px;display:flex;flex-direction:column;gap:28px}
.auth .brandside h2{font:700 34px/40px var(--display)}
.auth .brandside ul{margin:0;padding:0;list-style:none;display:flex;flex-direction:column;gap:12px;font-size:15px}
.auth .brandside li{display:flex;gap:10px;align-items:center}.auth .brandside li .ao{font-size:20px}
.auth .body{flex:999 1 560px;min-width:0;padding:40px 56px;display:flex;flex-direction:column;gap:24px}
.auth h1{font:700 30px/36px var(--display)}
.steps{display:flex;gap:8px;flex-wrap:wrap;font-size:13px}
.steps span{display:inline-flex;align-items:center;gap:8px;height:30px;padding:0 12px 0 6px;border-radius:15px;background:var(--sunken);color:var(--muted)}
.steps b{width:20px;height:20px;border-radius:50%;background:var(--surface);display:inline-flex;align-items:center;justify-content:center;font-size:11px}
.steps span.on{background:var(--ink);color:var(--on-ink)}.steps span.on b{background:var(--brand);color:var(--on-brand)}
.steps span.done{background:var(--success-bg);color:var(--success)}
.pick{display:flex;flex-direction:column;align-items:flex-start;gap:10px;text-align:left;padding:20px;border-radius:14px;cursor:pointer;background:var(--surface);border:2px solid var(--border)}
.pick:has(input:checked){background:var(--brand-tint);border-color:var(--ink)}
.pick input{position:absolute;opacity:0}
.plans{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:14px}
.plan{padding:20px;display:flex;flex-direction:column;gap:14px}
.plan.pop{border:2px solid var(--ink)}
.plan .price{font:700 28px/34px var(--display);font-variant-numeric:tabular-nums}
.plan ul{margin:0;padding:0;list-style:none;display:flex;flex-direction:column;gap:8px;font-size:13px;color:var(--ink-2)}
.plan li{display:flex;gap:8px}.plan li .ao{color:var(--success);margin-top:2px}
/* Mobile app (coach, parent) */
.mob{max-width:480px;margin:0 auto;min-height:100vh;min-height:100dvh;background:var(--bg);padding-bottom:88px}
.mob .mh{position:sticky;top:0;z-index:5;background:var(--surface);border-bottom:1px solid var(--border);padding:calc(14px + env(safe-area-inset-top)) 16px 14px;display:flex;align-items:center;gap:12px}
.mob .mh .t1{font:700 18px var(--display)}
.mob .mb{padding:16px;display:flex;flex-direction:column;gap:14px}
.mob .mtabs{position:fixed;bottom:0;left:0;right:0;background:var(--surface);border-top:1px solid var(--border);display:flex;justify-content:center;padding:8px 8px calc(8px + env(safe-area-inset-bottom));z-index:10}
.mob .mtabs .in{display:flex;gap:4px;max-width:480px;width:100%}
.mob .mtabs a{flex:1;display:flex;flex-direction:column;align-items:center;gap:2px;padding:6px 4px;border-radius:12px;text-decoration:none;color:var(--muted);font-size:11px;font-weight:500}
.mob .mtabs a .ao{font-size:22px}.mob .mtabs a.on{background:var(--brand);color:var(--on-brand)}
.kv{display:flex;justify-content:space-between;gap:12px;padding:8px 0;border-bottom:1px solid var(--border-subtle);font-size:14px}.kv:last-child{border-bottom:0}.kv span:first-child{color:var(--muted)}
.list>*{border-bottom:1px solid var(--border-subtle)}.list>*:last-child{border-bottom:0}
.li{display:flex;align-items:center;gap:12px;padding:12px 16px;text-decoration:none;color:inherit}
/* Console (dark sidebar variant reuses .side) */
.pill-tab{display:inline-flex;gap:6px}
@media (max-width:900px){
  .hm{display:none!important}
  table.t td,table.t th{padding:10px 8px}
  table.t td.mono{white-space:nowrap}
  .side{display:none}
  .topbar{display:flex;position:sticky;top:0;z-index:5;background:var(--surface);border-bottom:1px solid var(--border);padding:calc(10px + env(safe-area-inset-top)) max(16px, env(safe-area-inset-right)) 10px max(16px, env(safe-area-inset-left));align-items:center;gap:10px}
  input,select,textarea{font-size:16px}
  .topbar .logo{width:30px;height:30px;border-radius:8px;flex:none}
  .page{padding:16px 16px 96px}
  .tabbar{display:flex;position:fixed;bottom:0;left:0;right:0;background:var(--surface);border-top:1px solid var(--border);padding:8px 8px calc(8px + env(safe-area-inset-bottom));gap:4px;z-index:10}
  .tabbar a{flex:1;display:flex;flex-direction:column;align-items:center;gap:2px;padding:6px 2px;border-radius:12px;text-decoration:none;color:var(--muted);font-size:11px;font-weight:500}
  .tabbar a .ao{font-size:22px}.tabbar a.on{background:var(--brand);color:var(--on-brand)}
  .auth .body{padding:24px 16px}.auth .brandside{padding:24px 16px;gap:12px}.auth .brandside ul,.auth .brandside h2{display:none}
  .cal .d{min-height:72px}.cal .blk{font-size:11px;padding:2px 4px}
  .stats>div{border-left:0;border-top:1px solid var(--border-subtle)}
}
@media print{.side,.topbar,.tabbar,.noprint{display:none!important}.page{padding:0}.card{border:0}}
.ao-add{--i:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='48' height='48' viewBox='0 0 48 48'%3E%3Cpath d='M24 7v34M7 24h34' stroke='%231c1917' stroke-width='8.5' stroke-linecap='round' fill='none'/%3E%3C/svg%3E")}
.ao-attendance{--i:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='48' height='48' viewBox='0 0 48 48'%3E%3Cpath fill='%231c1917' fill-rule='evenodd' d='M38.452 5.572c.02.483.035 1.032.043 1.638q.904.101 1.652.201c2.862.382 5.068 2.555 5.479 5.419c.417 2.91.874 7.506.874 13.67s-.457 10.76-.874 13.67c-.41 2.864-2.617 5.037-5.48 5.418c-3.198.427-8.514.912-16.146.912s-12.948-.485-16.147-.911c-2.862-.382-5.068-2.554-5.479-5.419c-.417-2.91-.874-7.506-.874-13.67s.457-10.76.874-13.67c.41-2.864 2.617-5.037 5.48-5.419q.747-.1 1.651-.201c.008-.606.024-1.155.043-1.638c.081-2.01 1.458-3.87 3.749-4.007c.482-.03 1.046-.047 1.703-.047s1.22.017 1.704.047c2.29.138 3.667 1.997 3.748 4.007q.018.446.03.964a170 170 0 0 1 7.035 0q.014-.518.031-.964c.081-2.01 1.458-3.87 3.748-4.007c.483-.03 1.047-.047 1.704-.047s1.22.017 1.704.047c2.29.138 3.667 1.997 3.748 4.007m-4.074 18.257a3 3 0 1 0-4.756-3.658l-7.12 9.256l-4.353-4.468a3 3 0 0 0-4.298 4.187l6.77 6.948a3 3 0 0 0 4.526-.265z' clip-rule='evenodd'/%3E%3C/svg%3E")}
.ao-blocked{--i:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='48' height='48' viewBox='0 0 48 48'%3E%3Cmask id='m'%3E%3Crect width='48' height='48' fill='%23fff'/%3E%3Cpath d='M16.5 16.5l15 15M31.5 16.5l-15 15' fill='none' stroke='%23000' stroke-width='6' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/mask%3E%3Cg mask='url(%23m)'%3E%3Ccircle cx='24' cy='24' r='22.5' fill='%231c1917'/%3E%3C/g%3E%3C/svg%3E")}
.ao-calendar{--i:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='48' height='48' viewBox='0 0 48 48'%3E%3Cpath fill='%231c1917' fill-rule='evenodd' d='M38.495 7.21a60 60 0 0 0-.043-1.638c-.081-2.01-1.458-3.87-3.748-4.007c-.483-.03-1.047-.047-1.704-.047s-1.22.017-1.703.047c-2.29.138-3.668 1.997-3.749 4.007q-.018.446-.03.964a170 170 0 0 0-7.035 0a59 59 0 0 0-.031-.964c-.081-2.01-1.458-3.87-3.748-4.007c-.483-.03-1.047-.047-1.704-.047s-1.22.017-1.703.047c-2.29.138-3.668 1.997-3.749 4.007c-.02.483-.035 1.032-.043 1.638q-.904.101-1.652.201c-2.862.382-5.068 2.555-5.479 5.419c-.417 2.91-.874 7.506-.874 13.67s.457 10.76.874 13.67c.41 2.864 2.617 5.037 5.48 5.418c3.198.427 8.514.912 16.146.912s12.948-.485 16.147-.911c2.862-.382 5.068-2.554 5.479-5.419c.417-2.91.874-7.506.874-13.67s-.457-10.76-.874-13.67c-.41-2.864-2.617-5.037-5.48-5.419a78 78 0 0 0-1.651-.201M20 25a2 2 0 0 1 2-2h4a2 2 0 1 1 0 4h-4a2 2 0 0 1-2-2m13-2a2 2 0 1 0 0 4h4a2 2 0 1 0 0-4zm-16 2a2 2 0 0 0-2-2h-4a2 2 0 1 0 0 4h4a2 2 0 0 0 2-2m5 8a2 2 0 1 0 0 4h4a2 2 0 1 0 0-4zm9 2a2 2 0 0 1 2-2h4a2 2 0 1 1 0 4h-4a2 2 0 0 1-2-2m-16-2a2 2 0 1 1 0 4h-4a2 2 0 1 1 0-4z' clip-rule='evenodd'/%3E%3C/svg%3E")}
.ao-check{--i:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='48' height='48' viewBox='0 0 48 48'%3E%3Cpath fill='%231c1917' d='M20.636 21.226q.459.528.822.954c.56-.81 1.32-1.907 2.264-3.26a1452 1452 0 0 1 9.182-13.009c1.515-2.123 4.44-3.364 7.08-1.899c1.571.872 3.445 2.223 4.921 4.235c1.464 1.995 1.033 4.504-.108 6.232c-8.563 12.973-14.743 20.874-18.184 24.986c-2.25 2.69-6.181 2.876-8.707.48A167 167 0 0 1 3.793 24.743c-1.548-1.896-2.006-4.773-.303-6.956c1.105-1.415 2.354-2.615 3.465-3.553c2.455-2.073 5.885-1.514 7.918.64a209 209 0 0 1 5.763 6.353'/%3E%3C/svg%3E")}
.ao-coach-pay{--i:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='48' height='48' viewBox='0 0 48 48'%3E%3Cpath fill='%231c1917' fill-rule='evenodd' d='M27.56 2.355c2.638-.65 5.493.315 6.946 2.798c.373.638.782 1.382 1.215 2.238C32.683 7.19 28.176 7 22 7c-3.484 0-6.436.06-8.894.15c4.622-1.93 9.651-3.613 14.454-4.795M8.057 46.089c2.977.206 7.548.411 13.943.411s10.966-.205 13.943-.411c3.278-.227 5.864-2.717 6.133-6.022q.078-.947.15-2.111c-.929.027-2.001.044-3.226.044c-1.674 0-3.064-.032-4.19-.077c-3.639-.146-6.577-2.933-6.743-6.667C28.027 30.343 28 29.262 28 28s.027-2.343.067-3.256c.166-3.734 3.104-6.52 6.743-6.667A105 105 0 0 1 39 18c1.225 0 2.297.017 3.226.044q-.072-1.165-.15-2.11c-.269-3.306-2.855-5.796-6.133-6.023C32.966 9.705 28.395 9.5 22 9.5s-10.966.205-13.943.411c-3.278.227-5.864 2.717-6.133 6.022C1.706 18.611 1.5 22.575 1.5 28s.206 9.39.424 12.067c.269 3.305 2.855 5.795 6.133 6.022m23.007-14.966c.095 2.13 1.737 3.717 3.866 3.802c1.085.044 2.434.075 4.07.075s2.985-.031 4.07-.075c2.13-.085 3.771-1.672 3.866-3.802c.038-.867.064-1.904.064-3.123s-.026-2.256-.064-3.123c-.095-2.13-1.737-3.717-3.866-3.802A102 102 0 0 0 39 21c-1.636 0-2.985.031-4.07.075c-2.13.085-3.771 1.672-3.866 3.802C31.026 25.744 31 26.78 31 28s.026 2.256.064 3.123M38 25.5a1.5 1.5 0 0 1 1.5 1.5v2a1.5 1.5 0 0 1-3 0v-2a1.5 1.5 0 0 1 1.5-1.5' clip-rule='evenodd'/%3E%3C/svg%3E")}
.ao-cycle{--i:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='48' height='48' viewBox='0 0 48 48'%3E%3Cpath fill='%231c1917' fill-rule='evenodd' d='M46.002 24.252C46.002 12.235 36.277 2 24.282 2c-6.843 0-13.34 2.924-17.495 7.768A74 74 0 0 0 4.274 8.47c-1.207-.59-2.41.295-2.262 1.632c.58 5.209 1.925 8.672 2.66 10.248c.289.62.912.98 1.594.92c1.73-.15 5.397-.715 10.19-2.817c1.23-.54 1.396-2.022.283-2.774a72 72 0 0 0-2.14-1.383c2.48-2.629 5.77-4.384 9.682-4.384c8.18 0 14.81 6.147 14.81 14.34c0 3.568-1.258 6.842-3.354 9.401c-.626.765-.74 1.858-.167 2.664l1.758 2.474c.687.967 2.067 1.13 2.874.26a21.7 21.7 0 0 0 5.8-14.8M20.105 43.407c-.165 1.149-1.276 1.925-2.377 1.558a19.8 19.8 0 0 1-7.423-4.488c-.798-.763-.698-2.034.138-2.755l1.74-1.501c.738-.636 1.82-.638 2.63-.095A17.8 17.8 0 0 0 19 38.193c.99.335 1.667 1.298 1.518 2.332zM8.891 35.146c-.92.793-2.335.591-2.885-.492a23 23 0 0 1-1.433-3.517c-.473-1.499.722-2.93 2.294-2.93c1.132 0 2.102.77 2.573 1.8q.336.734.765 1.426c.573.927.485 2.16-.34 2.872zm25.595 8.315c.998-.53 1.232-1.82.578-2.74l-1.711-2.408c-.618-.87-1.806-1.088-2.772-.634a14.9 14.9 0 0 1-5.063 1.354c-1.019.086-1.907.81-2.053 1.823l-.427 2.972c-.165 1.149.681 2.205 1.841 2.172a21.85 21.85 0 0 0 9.607-2.54' clip-rule='evenodd'/%3E%3C/svg%3E")}
.ao-done{--i:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='48' height='48' viewBox='0 0 48 48'%3E%3Cmask id='m'%3E%3Crect width='48' height='48' fill='%23fff'/%3E%3Cpath d='M14 25l7 7l13-15' fill='none' stroke='%23000' stroke-width='6' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/mask%3E%3Cg mask='url(%23m)'%3E%3Ccircle cx='24' cy='24' r='22.5' fill='%231c1917'/%3E%3C/g%3E%3C/svg%3E")}
.ao-edit{--i:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='48' height='48' viewBox='0 0 48 48'%3E%3Cpath fill='%231c1917' fill-rule='evenodd' d='M14.005 19.43L29.844 3.59C27.83 3.535 25.553 3.5 23 3.5c-6.899 0-11.783.254-14.91.502c-3.291.261-5.827 2.797-6.088 6.088C1.754 13.217 1.5 18.1 1.5 25s.254 11.783.502 14.91c.261 3.291 2.797 5.827 6.087 6.088c3.128.248 8.012.502 14.911.502s11.783-.254 14.91-.502c3.291-.26 5.827-2.797 6.088-6.087c.248-3.128.502-8.012.502-14.911c0-2.553-.035-4.83-.091-6.844L28.57 33.995c-.948.948-2.259 1.703-3.832 1.854c-1.48.143-4.073.258-7.99-.016a4.94 4.94 0 0 1-4.582-4.582c-.274-3.916-.159-6.51-.016-7.99c.152-1.572.907-2.883 1.855-3.831m28.66-3.773c1.454-1.454 2.018-3.572.881-5.284c-.616-.927-1.48-2.028-2.686-3.233s-2.306-2.07-3.233-2.686c-1.713-1.138-3.83-.573-5.284.88L30.85 6.828c1.59.975 3.552 2.436 5.72 4.603c2.167 2.168 3.628 4.13 4.603 5.72zm-8.217-2.105c-2.311-2.312-4.323-3.708-5.788-4.534L16.127 21.551c-.544.544-.917 1.234-.99 2c-.126 1.298-.241 3.725.022 7.491a1.94 1.94 0 0 0 1.799 1.799c3.766.263 6.193.148 7.492.022c.765-.074 1.455-.446 1.999-.99L38.982 19.34c-.826-1.465-2.222-3.477-4.534-5.788' clip-rule='evenodd'/%3E%3C/svg%3E")}
.ao-export{--i:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='48' height='48' viewBox='0 0 48 48'%3E%3Cpath fill='%231c1917' fill-rule='evenodd' d='m27.558 9.617l.44 16.427c.793.02 1.487.044 2.094.072c1.977.09 2.782 1.95 1.46 3.422a69 69 0 0 1-2.098 2.227c-1.711 1.744-3.02 2.785-3.926 3.398a2.675 2.675 0 0 1-3.056 0c-.906-.613-2.215-1.654-3.927-3.398a69 69 0 0 1-2.099-2.228c-1.322-1.472-.516-3.332 1.46-3.421c.607-.028 1.302-.052 2.095-.072l.441-16.426c.035-1.292.899-2.42 2.185-2.549a14 14 0 0 1 2.747 0c1.285.129 2.15 1.257 2.184 2.548m7.258 16.509c-.715-1.667-2.227-2.66-3.893-2.934l-.15-5.61c3.706.093 6.52.253 8.526.406c2.997.228 5.474 2.4 5.806 5.502c.213 1.994.395 4.787.395 8.51s-.182 6.516-.395 8.51c-.332 3.102-2.809 5.274-5.806 5.502c-3.087.235-8.082.488-15.299.488s-12.212-.253-15.299-.488c-2.997-.228-5.474-2.4-5.806-5.502C2.682 38.516 2.5 35.723 2.5 32s.182-6.516.395-8.51c.332-3.101 2.809-5.274 5.806-5.502c2.007-.153 4.82-.313 8.526-.407l-.15 5.61c-1.667.275-3.18 1.267-3.895 2.934c-.82 1.91-.274 3.962 1.032 5.416a72 72 0 0 0 2.19 2.325c1.827 1.862 3.288 3.038 4.387 3.781a5.67 5.67 0 0 0 6.418 0c1.098-.743 2.56-1.919 4.387-3.781a72 72 0 0 0 2.188-2.324c1.306-1.454 1.851-3.507 1.032-5.416' clip-rule='evenodd'/%3E%3C/svg%3E")}
.ao-group{--i:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='48' height='48' viewBox='0 0 48 48'%3E%3Ccircle cx='18' cy='15' r='9.5' fill='%231c1917'/%3E%3Cpath fill='%231c1917' d='M1.5 41.5c0-8.5 7.4-14 16.5-14s16.5 5.5 16.5 14c0 2.8-2.2 5-5 5h-23c-2.8 0-5-2.2-5-5z'/%3E%3Ccircle cx='35' cy='12' r='7.5' fill='%231c1917'/%3E%3Cpath fill='%231c1917' d='M31.5 23.6c1.1-.2 2.3-.3 3.5-.3c7 0 12.5 4.3 12.5 10.5c0 2.2-1.8 4-4 4h-5.6c-.6-5.8-2.8-10.6-6.4-14.2z'/%3E%3C/svg%3E")}
.ao-home{--i:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='48' height='48' viewBox='0 0 48 48'%3E%3Cpath fill='%231c1917' fill-rule='evenodd' d='M20.568 2.812a8.25 8.25 0 0 1 6.864 0c7.766 3.556 13.551 8.642 16.337 11.386c1.502 1.479 2.305 3.451 2.418 5.486c.138 2.507.313 6.573.313 11.159c0 3.236-.087 6.212-.187 8.564a7.145 7.145 0 0 1-6.927 6.854c-3.478.12-8.647.239-15.386.239s-11.908-.12-15.386-.239a7.145 7.145 0 0 1-6.927-6.854a204 204 0 0 1-.187-8.564c0-4.586.175-8.652.313-11.159c.113-2.035.916-4.007 2.418-5.486c2.786-2.744 8.572-7.83 16.337-11.386M16 36a2 2 0 1 0 0 4h16a2 2 0 1 0 0-4z' clip-rule='evenodd'/%3E%3C/svg%3E")}
.ao-info{--i:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='48' height='48' viewBox='0 0 48 48'%3E%3Cpath fill='%231c1917' fill-rule='evenodd' d='M24 46.5C11.574 46.5 1.5 36.426 1.5 24S11.574 1.5 24 1.5S46.5 11.574 46.5 24S36.426 46.5 24 46.5m-4-34a4 4 0 1 1 8 0a4 4 0 0 1-8 0m6.88 8.614c-.07-1.138-.798-2.022-1.936-2.088A16 16 0 0 0 24 19h-3.5c-.585 0-1.074.015-1.481.037c-1.187.066-1.98.941-2.01 2.13a33 33 0 0 0 0 1.667c.03 1.188.823 2.063 2.01 2.129a27 27 0 0 0 1.985.033Q21 25.473 21 26v6.028c-1.27.027-2.217.068-2.912.11c-1.094.067-1.972.74-2.053 1.833Q16.001 34.413 16 35c0 .394.013.734.035 1.029c.08 1.092.959 1.766 2.053 1.833c1.16.07 3.022.138 5.912.138s4.753-.067 5.912-.138c1.094-.067 1.972-.74 2.053-1.833q.034-.441.035-1.029q-.001-.588-.035-1.028c-.08-1.094-.959-1.767-2.053-1.834a73 73 0 0 0-2.912-.11V26c0-2.303-.056-3.86-.12-4.886' clip-rule='evenodd'/%3E%3C/svg%3E")}
.ao-invoice{--i:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='48' height='48' viewBox='0 0 48 48'%3E%3Cpath fill='%231c1917' fill-rule='evenodd' d='M8.079 33.133c3.25.178 8.458.367 15.921.367s12.67-.189 15.921-.367c3.188-.174 5.85-2.49 6.174-5.776c.217-2.2.405-5.284.405-9.357s-.188-7.157-.405-9.357c-.324-3.287-2.986-5.602-6.174-5.776C36.671 2.689 31.463 2.5 24 2.5s-12.67.189-15.921.367c-3.188.174-5.85 2.49-6.174 5.776c-.217 2.2-.405 5.284-.405 9.357s.188 7.157.405 9.357c.324 3.287 2.986 5.602 6.174 5.776M24 8.455a1.5 1.5 0 0 1 1.5 1.5v.917a9 9 0 0 1 2.001.606c.494.216.979.467 1.409.794c.644.492.774 1.46.281 2.104a1.5 1.5 0 0 1-2.093.287c-.877-.638-2.02-.922-3.098-.922c-.719 0-1.419.224-1.906.556c-.499.339-.594.646-.594.8c0 .361.156.555.467.724c.616.335 1.341.474 2.037.607l.403.079c.92.187 2.11.429 3.06.946c1.262.687 2.033 1.91 2.033 3.359c0 1.478-.905 2.6-1.906 3.28a6.3 6.3 0 0 1-2.094.903v.96a1.5 1.5 0 1 1-3 0v-.918c-1.19-.211-2.442-.66-3.412-1.401a1.5 1.5 0 0 1 1.814-2.39c.868.631 2.044.923 3.098.923c.716 0 1.419-.225 1.906-.557c.499-.339.594-.646.594-.8c0-.361-.156-.555-.467-.724c-.616-.335-1.34-.474-2.036-.607l-.404-.079c-.919-.187-2.11-.429-3.06-.946c-1.262-.687-2.033-1.91-2.033-3.359c0-1.478.905-2.6 1.906-3.28a6.3 6.3 0 0 1 2.094-.903v-.959a1.5 1.5 0 0 1 1.5-1.5m13 7.5a2 2 0 1 0 0 4h1a2 2 0 0 0 0-4zm-29 2a2 2 0 0 1 2-2h1a2 2 0 1 1 0 4h-1a2 2 0 0 1-2-2m3.635 24.72a1.5 1.5 0 0 1 1.987-.743c.402.183.857.298 1.35.323c2.115.107 5.09.201 9.028.201s6.914-.094 9.029-.201c.493-.025.947-.14 1.35-.323a1.5 1.5 0 0 1 1.243 2.73a6.7 6.7 0 0 1-2.441.59c-2.17.11-5.195.204-9.18.204c-3.986 0-7.012-.095-9.18-.205a6.7 6.7 0 0 1-2.442-.589a1.5 1.5 0 0 1-.744-1.987m-4.393-6.657a1.5 1.5 0 0 1 2.074-.442a3.7 3.7 0 0 0 1.82.578c2.759.151 6.979.3 12.864.3s10.105-.149 12.864-.3a3.7 3.7 0 0 0 1.82-.578a1.5 1.5 0 0 1 1.632 2.517a6.7 6.7 0 0 1-3.288 1.057c-2.817.154-7.092.305-13.028.305s-10.21-.151-13.028-.305a6.7 6.7 0 0 1-3.288-1.057a1.5 1.5 0 0 1-.442-2.075' clip-rule='evenodd'/%3E%3C/svg%3E")}
.ao-message{--i:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='48' height='48' viewBox='0 0 48 48'%3E%3Cpath fill='%231c1917' d='M1.5 22C1.5 10.678 10.678 1.5 22 1.5c10.994 0 19.966 8.654 20.477 19.521A15.43 15.43 0 0 0 34 18.5c-8.56 0-15.5 6.94-15.5 15.5c0 3.129.927 6.041 2.521 8.477a20.4 20.4 0 0 1-9.602-2.915c-2.081.838-4.47 1.709-6.657 2.316c-1.657.46-3.15-.965-2.73-2.645c.566-2.27 1.438-4.722 2.304-6.823A20.4 20.4 0 0 1 1.5 22'/%3E%3Cpath fill='%231c1917' d='M34 21.5c6.904 0 12.5 5.596 12.5 12.5c0 2.3-.622 4.458-1.707 6.31c.4.871.795 1.858 1.112 2.912c.507 1.681-1.023 3.133-2.675 2.593a29 29 0 0 1-2.802-1.093A12.44 12.44 0 0 1 34 46.5c-6.904 0-12.5-5.596-12.5-12.5S27.096 21.5 34 21.5'/%3E%3C/svg%3E")}
.ao-minus{--i:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='48' height='48' viewBox='0 0 48 48'%3E%3Cpath d='M7 24h34' stroke='%231c1917' stroke-width='8.5' stroke-linecap='round' fill='none'/%3E%3C/svg%3E")}
.ao-next{--i:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='48' height='48' viewBox='0 0 48 48'%3E%3Cpath d='M18 8l15 16l-15 16' stroke='%231c1917' stroke-width='8.5' stroke-linecap='round' stroke-linejoin='round' fill='none'/%3E%3C/svg%3E")}
.ao-payments{--i:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='48' height='48' viewBox='0 0 48 48'%3E%3Cpath fill='%231c1917' fill-rule='evenodd' d='M4.524 12.805a464 464 0 0 0-.018 6.993c-1.288-.575-2.314-1.7-2.587-3.282C1.693 15.2 1.5 13.382 1.5 11c0-2.381.193-4.2.42-5.516c.396-2.299 2.384-3.635 4.454-3.715C9.327 1.656 15.028 1.5 24 1.5s14.673.156 17.626.27c2.07.079 4.058 1.415 4.455 3.714c.226 1.316.419 3.135.419 5.516s-.193 4.2-.42 5.516c-.272 1.582-1.298 2.707-2.586 3.282c.013-2.621.003-4.956-.018-6.993c-.039-3.776-2.915-7.004-6.786-7.327c-3.217-.268-7.414-.476-12.69-.476s-9.473.208-12.69.476c-3.871.323-6.747 3.55-6.786 7.327M25 8.005v36.491q-.518.004-1.057.004c-4.43 0-7.734-.182-10.08-.394c-3.495-.316-5.88-3.22-5.996-6.56c-.366-10.543-.404-18.867-.344-24.71c.024-2.264 1.744-4.177 4.036-4.368c3.13-.26 7.243-.466 12.44-.466q.508 0 1.001.003M13.5 33c0 1.054.036 1.875.083 2.498c.09 1.206 1.108 2.002 2.25 2.002h1.335c1.141 0 2.159-.796 2.25-2.002c.046-.623.082-1.444.082-2.498s-.036-1.875-.083-2.498c-.09-1.206-1.108-2.002-2.25-2.002h-1.335c-1.141 0-2.159.796-2.25 2.002A34 34 0 0 0 13.5 33m20.606 11.103a83 83 0 0 1-2.106.161V8.181c1.657.079 3.134.178 4.44.287c2.293.191 4.013 2.104 4.037 4.368c.06 5.837.022 14.152-.343 24.68c-.116 3.358-2.522 6.271-6.028 6.586' clip-rule='evenodd'/%3E%3C/svg%3E")}
.ao-phone{--i:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='48' height='48' viewBox='0 0 48 48'%3E%3Cpath fill='%231c1917' d='M46.483 14.556C45.925 32.293 31.372 46.5 13.5 46.5c-6.833 0-12-5.335-12-12.069a4.5 4.5 0 0 1 2.829-4.178l6.165-2.466a5.5 5.5 0 0 1 5.932 1.217l3.076 3.077c.136.136.289.152.382.124a18.55 18.55 0 0 0 12.32-12.32c.029-.094.013-.247-.123-.383l-3.077-3.076a5.5 5.5 0 0 1-1.217-5.932l2.466-6.165A4.5 4.5 0 0 1 34.431 1.5c7.365 0 12.166 5.861 12.052 13.056'/%3E%3C/svg%3E")}
.ao-prev{--i:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='48' height='48' viewBox='0 0 48 48'%3E%3Cpath d='M30 8L15 24l15 16' stroke='%231c1917' stroke-width='8.5' stroke-linecap='round' stroke-linejoin='round' fill='none'/%3E%3C/svg%3E")}
.ao-reminder{--i:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='48' height='48' viewBox='0 0 48 48'%3E%3Cpath fill='%231c1917' fill-rule='evenodd' d='M8.523 1.303a2.25 2.25 0 1 1 2.954 3.395c-3.465 3.014-5.819 7.426-6.235 12.486a2.25 2.25 0 0 1-4.485-.368c.514-6.242 3.425-11.737 7.766-15.513m27.78.22a2.25 2.25 0 0 1 3.174-.22c4.34 3.776 7.252 9.27 7.765 15.513a2.25 2.25 0 1 1-4.484.368c-.417-5.06-2.77-9.472-6.235-12.487a2.25 2.25 0 0 1-.22-3.174M24 3.5c7.918 0 14.52 6.06 15.196 13.949l.479 5.59A16 16 0 0 0 42 30.074l1.471 2.384c1.478 2.393.672 4.866-2.116 5.237c-3.188.424-8.512.804-17.355.804s-14.167-.38-17.355-.804c-2.788-.371-3.594-2.844-2.117-5.237L6 30.075a16 16 0 0 0 2.326-7.037l.48-5.59C9.48 9.56 16.081 3.5 24 3.5m0 38c-3.251 0-6.044-.05-8.443-.137a9.5 9.5 0 0 0 8.441 5.137a9.5 9.5 0 0 0 8.441-5.137c-2.399.086-5.19.137-8.44.137' clip-rule='evenodd'/%3E%3C/svg%3E")}
.ao-search{--i:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='48' height='48' viewBox='0 0 48 48'%3E%3Ccircle cx='20.5' cy='20.5' r='13.5' fill='none' stroke='%231c1917' stroke-width='7.5'/%3E%3Cpath d='M31 31l11 11' stroke='%231c1917' stroke-width='8.5' stroke-linecap='round'/%3E%3C/svg%3E")}
.ao-send{--i:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='48' height='48' viewBox='0 0 48 48'%3E%3Cpath fill='%231c1917' d='M16.482 39.106c2.464.186 6.55.394 12.518.394s10.054-.207 12.519-.394c2.414-.182 4.336-2.018 4.563-4.459c.205-2.2.418-5.685.418-10.647v-.132a143 143 0 0 1-6.11 2.532c-1.961.757-4.1 1.523-6.074 2.102c-1.935.567-3.853.998-5.315.998s-3.38-.431-5.315-.998c-1.974-.58-4.113-1.345-6.075-2.103a143 143 0 0 1-6.11-2.532L11.5 24c0 4.962.214 8.446.418 10.647c.228 2.441 2.149 4.277 4.564 4.46'/%3E%3Cpath fill='%231c1917' d='M11.536 20.595c.069-3.198.228-5.584.382-7.242c.228-2.442 2.149-4.277 4.564-4.46C18.946 8.709 23.032 8.5 29 8.5s10.054.208 12.519.394c2.414.182 4.336 2.018 4.563 4.459c.154 1.658.313 4.044.382 7.243l-.09.04l-.034.016l-.107.049l-.416.187A140 140 0 0 1 39.31 23.6c-1.921.743-3.974 1.477-5.837 2.023c-1.903.558-3.468.877-4.471.877s-2.569-.32-4.471-.877c-1.863-.546-3.916-1.28-5.838-2.022a140 140 0 0 1-6.924-2.9l-.107-.049l-.034-.015z'/%3E%3Cpath fill='%231c1917' fill-rule='evenodd' d='M1 17a2 2 0 0 1 2-2h5a2 2 0 1 1 0 4H3a2 2 0 0 1-2-2m1 7a2 2 0 0 1 2-2h4a2 2 0 1 1 0 4H4a2 2 0 0 1-2-2m1 7a2 2 0 0 1 2-2h3a2 2 0 1 1 0 4H5a2 2 0 0 1-2-2' clip-rule='evenodd'/%3E%3C/svg%3E")}
.ao-setup{--i:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='48' height='48' viewBox='0 0 48 48'%3E%3Cpath fill='%231c1917' fill-rule='evenodd' d='M18.98 2.458c.805-.423 2.358-.958 5.02-.958s4.215.535 5.022.958c.612.32.97.83 1.174 1.256c.29.605.925 1.97 1.48 3.449a18.5 18.5 0 0 1 3.063 1.771c1.56-.26 3.061-.39 3.731-.443c.47-.036 1.09.02 1.675.39c.77.486 2.01 1.563 3.34 3.869c1.332 2.306 1.644 3.918 1.681 4.828c.029.69-.233 1.255-.5 1.645a45 45 0 0 1-2.25 3.01a18.7 18.7 0 0 1 0 3.534a45 45 0 0 1 2.25 3.01c.267.39.529.954.5 1.645c-.037.91-.35 2.522-1.68 4.828c-1.332 2.306-2.572 3.383-3.341 3.87c-.584.37-1.204.425-1.675.389a45 45 0 0 1-3.731-.443a18.5 18.5 0 0 1-3.063 1.771a45 45 0 0 1-1.48 3.449c-.204.426-.562.935-1.174 1.256c-.807.422-2.36.958-5.022.958s-4.215-.535-5.022-.958c-.612-.32-.97-.83-1.174-1.256c-.29-.605-.925-1.97-1.48-3.449a18.5 18.5 0 0 1-3.063-1.771c-1.56.26-3.062.39-3.732.443c-.47.036-1.09-.02-1.674-.39c-.77-.486-2.01-1.563-3.34-3.869c-1.332-2.306-1.645-3.918-1.682-4.828c-.028-.69.234-1.255.5-1.645a45 45 0 0 1 2.25-3.01a18.7 18.7 0 0 1 0-3.534a45 45 0 0 1-2.25-3.01c-.266-.39-.528-.954-.5-1.645c.038-.91.35-2.522 1.681-4.828s2.572-3.383 3.341-3.87c.584-.37 1.204-.425 1.675-.389c.67.052 2.17.184 3.73.443a18.5 18.5 0 0 1 3.064-1.771a45 45 0 0 1 1.48-3.449c.204-.426.562-.935 1.174-1.256ZM32 24a8 8 0 1 1-16 0a8 8 0 0 1 16 0' clip-rule='evenodd'/%3E%3C/svg%3E")}
.ao-today{--i:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='48' height='48' viewBox='0 0 48 48'%3E%3Cpath fill='%231c1917' fill-rule='evenodd' d='M24 1.5C11.574 1.5 1.5 11.574 1.5 24S11.574 46.5 24 46.5S46.5 36.426 46.5 24S36.426 1.5 24 1.5M39 24c0 8.284-6.716 15-15 15S9 32.284 9 24S15.716 9 24 9s15 6.716 15 15m-12.5-9a2.5 2.5 0 0 0-5 0v9a2.5 2.5 0 0 0 .732 1.768l6 6a2.5 2.5 0 0 0 3.536-3.536L26.5 22.965z' clip-rule='evenodd'/%3E%3C/svg%3E")}
.ao-user{--i:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='48' height='48' viewBox='0 0 48 48'%3E%3Ccircle cx='24' cy='13.5' r='11' fill='%231c1917'/%3E%3Cpath fill='%231c1917' d='M3 41.5c0-9.4 9.4-15.5 21-15.5s21 6.1 21 15.5c0 2.8-2.2 5-5 5H8c-2.8 0-5-2.2-5-5z'/%3E%3C/svg%3E")}
.ao-venue{--i:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='48' height='48' viewBox='0 0 48 48'%3E%3Cpath fill='%231c1917' fill-rule='evenodd' d='M4.5 21C4.5 10.23 13.23 1.5 24 1.5S43.5 10.23 43.5 21c0 6.987-3.606 12.865-7.526 17.203c-3.932 4.351-8.326 7.316-10.237 8.506a3.26 3.26 0 0 1-3.474 0c-1.91-1.19-6.305-4.155-10.237-8.506C8.106 33.865 4.5 27.987 4.5 21M24 29a8 8 0 1 0 0-16a8 8 0 0 0 0 16' clip-rule='evenodd'/%3E%3C/svg%3E")}
.ao-warning{--i:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='48' height='48' viewBox='0 0 48 48'%3E%3Cpath fill='%231c1917' fill-rule='evenodd' d='M28.302 3.073C25.8.907 22.2.907 19.698 3.073c-1.99 1.723-4.848 4.33-8.571 8.054c-3.724 3.723-6.33 6.58-8.054 8.57c-2.166 2.502-2.166 6.103 0 8.605c1.723 1.99 4.33 4.847 8.054 8.57c3.723 3.724 6.58 6.331 8.57 8.055c2.502 2.166 6.103 2.166 8.605 0c1.99-1.724 4.848-4.33 8.571-8.054c3.724-3.724 6.33-6.58 8.054-8.571c2.166-2.502 2.166-6.103 0-8.605c-1.723-1.99-4.33-4.847-8.054-8.57c-3.723-3.724-6.58-6.33-8.57-8.054M20.14 15.137c-.092-1.297.49-2.572 1.75-2.888a8.6 8.6 0 0 1 2.111-.25c.834 0 1.538.106 2.11.25c1.261.316 1.843 1.591 1.75 2.888c-.19 2.696-.554 7.378-.948 10.003c-.13.865-.65 1.609-1.512 1.754c-.369.062-.83.106-1.4.106s-1.031-.044-1.4-.106c-.862-.145-1.383-.89-1.512-1.754c-.394-2.625-.758-7.307-.949-10.003M24 37a3.5 3.5 0 1 0 0-7a3.5 3.5 0 0 0 0 7' clip-rule='evenodd'/%3E%3C/svg%3E")}
/* ---- 0.1.2: phone-friendly lists and forms ---- */
.only-m{display:none}
.ellip{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.mrow{display:flex;align-items:center;gap:12px;padding:12px 16px;text-decoration:none;color:inherit;min-height:56px}
.mrow:active{background:var(--sunken)}
.mamt{display:flex;flex-direction:column;align-items:flex-end;gap:4px;text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap;flex:none}
.sec{font-size:12px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--muted)}
.pair{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.pair .full{grid-column:1/-1}
.err{margin:0;color:var(--danger);font-size:13px}
input.bad{border-color:var(--danger);background:var(--danger-bg)}
.actions{display:flex;gap:10px;flex-wrap:wrap}
details.more>summary{list-style:none;cursor:pointer;padding:14px 20px;font-weight:600;display:flex;gap:10px;align-items:center;flex-wrap:wrap}
details.more>summary::-webkit-details-marker{display:none}
details.more>summary::before{content:'';width:8px;height:8px;border-right:2px solid var(--muted);border-bottom:2px solid var(--muted);transform:rotate(-45deg);transition:transform .15s;margin-right:2px}
details.more[open]>summary::before{transform:rotate(45deg)}
details.more[open]>summary{border-bottom:1px solid var(--border-subtle)}
.picklist{max-height:360px;overflow:auto}
.pickrow{display:flex;align-items:center;gap:12px;padding:10px 20px;border-bottom:1px solid var(--border-subtle);cursor:pointer;min-height:48px}
.pickrow:last-child{border-bottom:0}
.pickrow input{width:20px;height:20px;accent-color:var(--ink);flex:none}
.pickrow:has(input:checked){background:var(--brand-tint)}
.segr{display:flex;background:var(--sunken);border-radius:10px;padding:3px;gap:2px}
.segr label{flex:1;display:flex;align-items:center;justify-content:center;height:34px;border-radius:8px;font-size:14px;font-weight:500;color:var(--neutral-fg);cursor:pointer;text-align:center;padding:0 8px}
.segr input{position:absolute;opacity:0;pointer-events:none}
.segr label:has(input:checked){background:var(--surface);color:var(--ink);font-weight:600;box-shadow:0 1px 2px rgba(0,0,0,.08)}
.segr label:has(input:disabled){opacity:.45;cursor:default}
.segr label:has(input:focus-visible){outline:2px solid var(--ink);outline-offset:1px}
.fam-ex{display:none}
form:has(#fm-ex:checked) .fam-ex{display:block}
form:has(#fm-ex:checked) .fam-new{display:none}
.filters{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:8px}
/* iOS time and date fields: left aligned, same height as other inputs */
input[type=time],input[type=date]{-webkit-appearance:none;appearance:none;display:block;text-align:left;line-height:38px}
input[type=time]::-webkit-date-and-time-value,input[type=date]::-webkit-date-and-time-value{text-align:left;margin:0}
table.t td.n,table.t th.n{text-align:right}
@media (max-width:900px){
  .only-m{display:block}
  .only-d{display:none!important}
  .filters{grid-template-columns:repeat(2,minmax(0,1fr))}
  .actions .btn{flex:1}
  .page>.head{align-items:flex-start}
  details.more>summary{padding:14px 16px}
  .pickrow{padding:10px 16px}
}
.ao-more{--i:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 48 48'%3E%3Cpath fill='%231c1917' d='M8 10.5c0-1.9 1.4-3.3 3.3-3.4C15.6 7 20 7 24 7s8.4 0 12.7.1c1.9.1 3.3 1.5 3.3 3.4s-1.4 3.3-3.3 3.4C32.4 14 28 14 24 14s-8.4 0-12.7-.1C9.4 13.8 8 12.4 8 10.5Zm0 13.5c0-1.9 1.4-3.3 3.3-3.4 4.3-.1 8.7-.1 12.7-.1s8.4 0 12.7.1c1.9.1 3.3 1.5 3.3 3.4s-1.4 3.3-3.3 3.4c-4.3.1-8.7.1-12.7.1s-8.4 0-12.7-.1C9.4 27.3 8 25.9 8 24Zm0 13.5c0-1.9 1.4-3.3 3.3-3.4 4.3-.1 8.7-.1 12.7-.1s8.4 0 12.7.1c1.9.1 3.3 1.5 3.3 3.4s-1.4 3.3-3.3 3.4c-4.3.1-8.7.1-12.7.1s-8.4 0-12.7-.1C9.4 40.8 8 39.4 8 37.5Z'/%3E%3C/svg%3E")}
/* ---- 0.2.0: More menu, back button, footer ---- */
.foot{font-size:11px;color:var(--muted);text-align:center;padding:16px 8px 4px}
.side .foot{color:#78716c;text-align:left;padding:8px 8px 0}
.tback{width:36px;height:36px;margin-left:-8px;display:inline-flex;align-items:center;justify-content:center;border-radius:10px;color:var(--ink);font-size:20px;text-decoration:none}
.tback:active{background:var(--sunken)}
.tbi{position:relative;display:inline-flex}
.tbb{position:absolute;top:-4px;right:-10px;min-width:16px;height:16px;padding:0 4px;border-radius:8px;background:#ea580c;color:#fff;font-size:10px;font-weight:700;display:inline-flex;align-items:center;justify-content:center}
.menu{display:flex;flex-direction:column;gap:20px}
.menu .grp{display:flex;flex-direction:column;gap:6px}
.menu .gt{font-size:12px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--muted);padding:0 4px}
.menu .card a,.menu .card button{display:flex;align-items:center;gap:12px;padding:0 16px;min-height:52px;text-decoration:none;color:var(--ink);border:0;border-bottom:1px solid var(--border-subtle);background:none;width:100%;font:500 15px var(--font);text-align:left;cursor:pointer}
.menu .card>*:last-child{border-bottom:0}
.menu .card a:active,.menu .card button:active{background:var(--sunken)}
.menu .ic{width:32px;height:32px;border-radius:9px;background:var(--sunken);display:inline-flex;align-items:center;justify-content:center;font-size:18px;color:var(--ink-2);flex:none}
.menu .chev{color:var(--faint);margin-left:auto}
.menu .cntb{margin-left:auto;font-size:12px;font-weight:600;background:var(--warning-bg);color:var(--warning);border-radius:10px;padding:2px 8px}
.menu .cntb+.chev{margin-left:8px}
.menu .me{display:flex;align-items:center;gap:12px;padding:16px}
@media (max-width:900px){ .setup-tabs{display:none} }
@media (min-width:901px){ .only-mm{display:none!important} }
.row>.fld{flex:1}
/* ---- 0.2.2 ---- */
.stats>div{text-align:right}
.menu .foot,.mb .foot{padding:24px 8px 8px}
@media (max-width:900px){
  .page{padding-bottom:calc(112px + env(safe-area-inset-bottom))}
}
.mob{padding-bottom:calc(104px + env(safe-area-inset-bottom))}
.tabbar a .dayic,.mob .mtabs a .dayic{font-size:22px}
/* Today icon: design-system calendar shape with today's date */
svg.dayic{width:1em;height:1em;flex:none;vertical-align:-.14em;overflow:visible}
svg.dayic text{font:800 23px var(--font);fill:var(--surface);letter-spacing:-1px}
.side svg.dayic text{fill:var(--side)}
.side a.nav.on svg.dayic text,.tabbar a.on svg.dayic text,.mob .mtabs a.on svg.dayic text{fill:var(--brand)}
.foot a{color:inherit;text-decoration:underline;text-underline-offset:2px}
/* Numbered lists and tables */
.list.num,table.t.num tbody{counter-reset:n}
.list.num>*:not(.tot),table.t.num tbody>tr{counter-increment:n}
.list.num>*:not(.tot)::before,table.t.num tbody>tr>td:first-child::before{content:counter(n);display:inline-block;min-width:1.6em;margin-right:6px;color:var(--muted);font-size:12px;font-weight:500;font-variant-numeric:tabular-nums;text-align:right;flex:none}
table.t.num tbody>tr>td:first-child{white-space:nowrap}
table.t.num tbody>tr>td:first-child>*{white-space:normal}
.list.num>.tot::before{content:'';min-width:1.6em;margin-right:6px;display:inline-block}
/* ---- 0.2.5 ---- */
/* Page header: title left, main action right, also on phones */
.head{flex-wrap:nowrap}
.head>.row{margin-left:auto;flex-wrap:wrap;justify-content:flex-end}
/* Day / month switcher */
.daybar{display:flex;align-items:center;gap:10px;background:var(--surface);border:1px solid var(--border);border-radius:14px;padding:8px}
.daybar .dl{flex:1;display:flex;flex-direction:column;align-items:center;line-height:1.2;min-width:0}
.daybar .dl b{font:700 18px var(--display)}
.daybar .dl span{font-size:12px;color:var(--muted)}
.daybar.is-past{background:var(--sunken);border-style:dashed}
.daybar.is-past .dl b,.daybar.is-future .dl b{color:var(--note)}
.daybar.is-future{background:var(--note-bg);border-color:transparent}
.daybar .back-today{order:5;margin-left:4px}
@media (max-width:900px){.daybar{flex-wrap:wrap}.daybar .back-today{flex-basis:100%;order:5;margin:2px 0 0}}
/* Session card */
.sess .sh{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px 20px 6px;text-decoration:none;color:inherit;flex-wrap:wrap}
.sess .st{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap;min-width:0}
.sess .st .display{font-size:18px}
.meta{display:flex;flex-wrap:wrap;gap:6px;padding:4px 20px 12px}
.mi{display:inline-flex;align-items:center;gap:6px;height:28px;padding:0 10px;border-radius:8px;background:var(--sunken);font-size:13px;font-weight:500;color:var(--ink-2)}
.mi .ao{font-size:15px;color:var(--muted)}
.opens{display:flex;align-items:center;gap:8px;margin:0 20px 10px;padding:8px 12px;border-radius:8px;background:var(--note-bg);color:var(--note);font-size:13px;font-weight:500}
.sess>.list{border-top:1px solid var(--border-subtle)}
.srow{display:flex;align-items:center;gap:10px;padding:10px 20px;flex-wrap:wrap;min-height:52px}
.srow .sname{flex:1;min-width:160px}
.sname{display:inline-flex;align-items:center;gap:8px;flex-wrap:wrap}
.lvl{font-size:12px;color:var(--muted);background:var(--sunken);border-radius:6px;padding:2px 7px;font-weight:500}
/* Numbering: tight */
.list.num>*:not(.tot)::before{min-width:1.1em;margin-right:0;text-align:left}
table.t.num tbody>tr>td:first-child{position:relative;padding-left:40px}
table.t.num tbody>tr>td:first-child::before{position:absolute;left:16px;top:50%;transform:translateY(-50%);min-width:0;margin:0}
@media (max-width:900px){
  .srow{padding:10px 16px}.meta{padding:4px 16px 12px}.sess .sh{padding:12px 16px 6px}.opens{margin:0 16px 10px}
  table.t.num tbody>tr>td:first-child{padding-left:30px}
  table.t.num tbody>tr>td:first-child::before{left:10px}
}
/* Bottom bar: Today in the centre, raised and larger */
.tabbar a.hero,.mob .mtabs a.hero{position:relative;background:none!important;color:var(--ink);font-weight:600}
.tabbar a.hero .tbi,.mob .mtabs a.hero .tbi{width:58px;height:58px;margin-top:-26px;margin-bottom:2px;border-radius:50%;background:var(--brand);color:var(--on-brand);display:flex;align-items:center;justify-content:center;box-shadow:0 0 0 5px var(--surface),0 6px 16px rgba(0,0,0,.18)}
.tabbar a.hero .tbi>.ao,.tabbar a.hero .tbi>svg,.mob .mtabs a.hero .tbi>.ao,.mob .mtabs a.hero .tbi>svg{font-size:28px}
.tabbar a.hero svg.dayic text,.mob .mtabs a.hero svg.dayic text{fill:var(--brand)}
.tabbar a.hero.on .tbi,.mob .mtabs a.hero.on .tbi{background:var(--ink);color:var(--brand)}
.tabbar a.hero.on svg.dayic text,.mob .mtabs a.hero.on svg.dayic text{fill:var(--ink)}
.mob .mtabs a .tbi{display:inline-flex}
/* ---- 0.2.6: loading and page motion ---- */
#pbar{position:fixed;top:0;left:0;height:3px;width:0;background:var(--brand);z-index:100;opacity:0;pointer-events:none;box-shadow:0 0 8px rgba(255,210,31,.6)}

@keyframes pbar{0%{width:0}15%{width:45%}50%{width:75%}100%{width:92%}}
html.loading main.page,html.loading .mob .mb{opacity:.55;transition:opacity .15s .08s;pointer-events:none}

.topbar{position:sticky}
@keyframes spin{to{transform:rotate(360deg)}}
/* Tab pill moves instantly on tap */
.tabbar a,.mob .mtabs a,.side a.nav{transition:background-color .18s,color .18s}
.tabbar a:active,.mob .mtabs a:active{transform:scale(.94)}
.tabbar a.hero .tbi,.mob .mtabs a.hero .tbi{transition:background-color .18s,transform .18s}
.tabbar a.hero:active .tbi,.mob .mtabs a.hero:active .tbi{transform:scale(.92)}
/* Page transitions between pages (Safari 18.2+, Chrome 126+). Bars stay still, content slides. */
@view-transition{navigation:auto}
.tabbar{view-transition-name:tabbar}
.mob .mtabs{view-transition-name:mtabs}
.topbar{view-transition-name:topbar}
.side{view-transition-name:side}
main.page,.mob .mb{view-transition-name:page}
::view-transition-old(page){animation:vt-out-l .22s ease both}
::view-transition-new(page){animation:vt-in-r .28s cubic-bezier(.2,.8,.2,1) both}
html[data-dir="back"]::view-transition-old(page){animation-name:vt-out-r}
html[data-dir="back"]::view-transition-new(page){animation-name:vt-in-l}
html[data-dir="fade"]::view-transition-old(page){animation:vt-fade-out .15s ease both}
html[data-dir="fade"]::view-transition-new(page){animation:vt-fade-in .2s ease both}
::view-transition-old(tabbar),::view-transition-new(tabbar),::view-transition-old(side),::view-transition-new(side),::view-transition-old(mtabs),::view-transition-new(mtabs){animation:none}
@keyframes vt-out-l{to{opacity:0;transform:translateX(-24px)}}
@keyframes vt-out-r{to{opacity:0;transform:translateX(24px)}}
@keyframes vt-in-r{from{opacity:0;transform:translateX(32px)}}
@keyframes vt-in-l{from{opacity:0;transform:translateX(-32px)}}
@keyframes vt-fade-out{to{opacity:0}}
@keyframes vt-fade-in{from{opacity:0}}
/* Browsers without page transitions: a gentle fade-up on arrival */
@supports not (view-transition-name:none){
  main.page,.mob .mb{animation:arrive .25s cubic-bezier(.2,.8,.2,1)}
  @keyframes arrive{from{opacity:0;transform:translateY(8px)}}
}
@media (prefers-reduced-motion:reduce){
  ::view-transition-old(page),::view-transition-new(page){animation:none!important}
  main.page,.mob .mb{animation:none!important}
  html.loading #pbar{animation:none;width:60%}
}
/* ---- 0.3.0 ---- */
.ended{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:24px 16px}
.ended h1{font:700 28px/34px var(--display)}
.stepdot{width:22px;height:22px;border-radius:50%;border:2px solid var(--border-strong);flex:none;display:inline-flex;align-items:center;justify-content:center;font-size:12px}
.stepdot.done{background:var(--success);border-color:var(--success);color:#fff}
details.faq{padding:0 20px;border-bottom:1px solid var(--border-subtle)}
details.faq:last-child{border-bottom:0}
details.faq summary{list-style:none;cursor:pointer;padding:14px 0;font-weight:500;display:flex;justify-content:space-between;gap:12px}
details.faq summary::-webkit-details-marker{display:none}
details.faq summary::after{content:'+';color:var(--muted);font-size:18px;line-height:1}
details.faq[open] summary::after{content:'−'}
details.faq p{margin:0 0 14px;color:var(--ink-2);font-size:14px}
.timeline{display:flex;gap:0;align-items:flex-start;margin:4px 0}
.timeline .tstep{flex:1;display:flex;flex-direction:column;align-items:center;gap:4px;font-size:11px;color:var(--muted);position:relative;text-align:center}
.timeline .tstep::before{content:'';position:absolute;top:8px;left:-50%;right:50%;height:2px;background:var(--border)}
.timeline .tstep:first-child::before{display:none}
.timeline .tstep i{width:18px;height:18px;border-radius:50%;background:var(--surface);border:2px solid var(--border-strong);position:relative;z-index:1}
.timeline .tstep.on{color:var(--ink);font-weight:600}
.timeline .tstep.on i{background:var(--success);border-color:var(--success)}
.timeline .tstep.on::before{background:var(--success)}
.langsw{display:flex;gap:4px}
.langsw a{font-size:12px;padding:4px 8px;border-radius:6px;color:var(--muted);text-decoration:none;border:1px solid var(--border)}
.langsw a.on{background:var(--ink);color:var(--on-ink);border-color:var(--ink)}
/* ---- 0.3.1: session form, pickers, filters ---- */
.tact{display:none}
@media (max-width:900px){
  .tact{display:inline-flex;align-items:center;gap:4px;height:34px;padding:0 14px 0 10px;border-radius:999px;background:var(--brand);color:var(--on-brand);font-size:14px;font-weight:600;text-decoration:none;flex:none}
  .tact .ao{font-size:18px}
  .tact:active{transform:scale(.96)}
  html.loading .topbar .tact{visibility:hidden}
  .page>.head h1{display:none}
  .page>.head:not(:has(.sub)):not(:has(.row>:not(.only-d))){display:none}
  .topbar .ttl{font-size:20px;font-weight:700;letter-spacing:-.01em}
  body:has(.sbar) .tabbar{display:none}
  body:has(.sbar) .page{padding-bottom:calc(96px + env(safe-area-inset-bottom))}
  .sbar{position:fixed;left:0;right:0;bottom:0;z-index:11;background:var(--surface);border-top:1px solid var(--border);padding:12px 16px calc(12px + env(safe-area-inset-bottom));display:flex;gap:10px}
  .sbar .btn{flex:1}
}
.sbar{display:flex;gap:10px}
.sform{max-width:720px}
.pills{display:grid;grid-template-columns:repeat(auto-fit,minmax(56px,1fr));gap:6px}
.pills label{position:relative;display:flex;align-items:center;justify-content:center;height:40px;padding:0 6px;white-space:nowrap;border:1px solid var(--border);border-radius:999px;background:var(--surface);font-size:14px;font-weight:500;cursor:pointer}
.pills input{position:absolute;opacity:0;pointer-events:none}
.pills label:has(input:checked){background:var(--ink);border-color:var(--ink);color:var(--on-ink);font-weight:600}
.pills label:has(input:focus-visible){outline:2px solid var(--ink);outline-offset:2px}
.ends{font-size:13px;color:var(--muted)}
.ends b{color:var(--ink)}
.fld[hidden]{display:none}
/* Filter chips (same pattern as the other Whitespace Helix apps) */
.fchips{display:flex;gap:6px;align-items:center;overflow-x:auto;scrollbar-width:none;-webkit-overflow-scrolling:touch;padding-bottom:2px}
.fchips::-webkit-scrollbar{display:none}
.fchip{display:inline-flex;align-items:center;gap:6px;flex:none;height:32px;padding:0 12px;border:0;border-radius:999px;background:var(--sunken);color:var(--ink-2);font:600 13px var(--font);text-decoration:none;cursor:pointer;white-space:nowrap}
.fchip.on{background:var(--ink);color:var(--on-ink)}
.fchip .n{font-weight:500;opacity:.7}
.fchip .ao{font-size:14px}
/* Student picker */
.spick-tools{display:flex;flex-direction:column;gap:10px;padding:12px 16px;border-bottom:1px solid var(--border-subtle)}
.spick-list{max-height:min(56vh,480px);overflow:auto;overscroll-behavior:contain}
.spick .pickrow[hidden]{display:none}
.spick .pickrow .pn{font-weight:500;margin-right:6px}
.spick .pickrow:has(input:disabled){opacity:.45;cursor:default}
.spick .pk{display:flex;gap:4px;flex-wrap:wrap;justify-content:flex-end;flex:none;max-width:50%}
.spick-none{padding:16px}
.bk{font-size:11.5px;font-weight:600;border-radius:999px;padding:2px 8px;white-space:nowrap;background:var(--success-bg);color:var(--success)}
.bk.tbc{background:var(--warning-bg);color:var(--tentative)}
.bk.clash{background:var(--danger-bg);color:var(--danger)}
/* Date fields: native picker, shown as DD/MM/YYYY */
.dpick{position:relative;display:flex;align-items:center;gap:8px;height:40px;padding:0 12px;border:1px solid var(--border);border-radius:10px;background:var(--surface);font-size:15px;cursor:pointer}
.dpick .dv{flex:1}
.dpick .dv.ph{color:var(--muted)}
.dpick .dw{color:var(--muted);font-size:13px}
.dpick .ao{color:var(--muted);font-size:18px}
.dpick input{position:absolute;inset:0;width:100%;height:100%;opacity:0;cursor:pointer;border:0;padding:0;margin:0}
.dpick:focus-within{border-color:var(--ink);box-shadow:0 0 0 3px rgba(28,25,23,.08)}
/* More menu rows: label grows, badge and chevron sit together on the right */
.menu .card a>.ml{flex:1;min-width:0}
.menu .cntb{margin-left:0;min-width:22px;height:22px;padding:0 7px;display:inline-flex;align-items:center;justify-content:center;border-radius:11px;font-size:12px;line-height:1}
.menu .card a>.ao:last-child,.menu .card a>svg:last-child{margin-left:0!important;flex:none}

.ao-down{--i:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='48' height='48' viewBox='0 0 48 48'%3E%3Cpath d='M18 8l15 16l-15 16' stroke='%231c1917' stroke-width='8.5' stroke-linecap='round' stroke-linejoin='round' fill='none'/%3E%3C/svg%3E");transform:rotate(90deg)}
/* Students search + filter sheet */
.sfilter{margin:0}
.searchbox{display:flex;align-items:center;gap:8px;height:44px;padding:0 14px;border:1px solid var(--border);border-radius:12px;background:var(--surface)}
.searchbox .ao{color:var(--muted);font-size:18px}
.searchbox input{border:0;outline:0;background:none;height:100%;padding:0;flex:1;font-size:15px;box-shadow:none}
.searchbox:focus-within{border-color:var(--ink)}
dialog.fsheet{border:1px solid var(--border);border-radius:16px;padding:0;width:320px;max-width:calc(100vw - 32px);background:var(--surface);color:var(--ink);box-shadow:0 18px 44px rgba(0,0,0,.14)}
dialog.fsheet .fs-in{padding:12px 16px 16px}
dialog.fsheet::backdrop{background:rgba(28,25,23,.35)}
.fsheet .handle{display:none;width:38px;height:4px;border-radius:2px;background:var(--faint);margin:0 auto 10px}
.fsheet .stitle{display:flex;align-items:center;justify-content:space-between;font-size:16px;font-weight:700;margin-bottom:4px}
.fsheet .stitle button{border:0;background:none;font-size:18px;color:var(--muted);width:32px;height:32px;cursor:pointer}
.fsheet .fs-lines{max-height:50vh;overflow:auto;overscroll-behavior:contain}
.fsheet .sline{display:flex;align-items:center;gap:12px;min-height:46px;text-decoration:none;color:var(--ink);border-bottom:1px solid var(--border-subtle);font-size:15px;font-weight:500}
.fsheet .sline:last-child{border-bottom:0}
.fsheet .sline .rd{width:20px;height:20px;border-radius:50%;border:2px solid var(--faint);flex:none}
.fsheet .sline.on .rd{border:6px solid var(--ink)}
.fsheet .sline .t{flex:1}
.fsheet .sline .c{font-size:13px;color:var(--muted)}
@media (max-width:900px){
  dialog.fsheet{position:fixed;inset:auto 0 0 0;margin:0;width:100vw;max-width:100vw;border:0;border-radius:20px 20px 0 0}
  dialog.fsheet .fs-in{padding:10px 20px calc(20px + env(safe-area-inset-bottom))}
  .fsheet .handle{display:block}
}
.pair:has(>[data-courtbox][hidden]){grid-template-columns:1fr}
/* ---- 0.3.2 ---- */
.warnline{margin:0;font-size:13px;color:var(--warning);display:flex;gap:6px;align-items:flex-start}
.warnline.info{color:var(--note)}
.warnline[hidden]{display:none}
.spick>.warnline{padding:8px 16px;border-bottom:1px solid var(--border-subtle);background:var(--warning-bg)}
select[data-durother]{margin-top:8px}
select[data-durother][hidden]{display:none}
.clashbox{border:1.5px solid var(--warning);background:var(--warning-bg)}
.clashbox ul{margin:0;padding-left:18px;display:flex;flex-direction:column;gap:4px}
.switch{display:flex;align-items:center;gap:12px;cursor:pointer;position:relative}
.switch input{position:absolute;opacity:0;pointer-events:none}
.switch .sw{width:44px;height:26px;border-radius:13px;background:var(--faint);position:relative;flex:none;transition:background .15s}
.switch .sw::after{content:'';position:absolute;left:3px;top:3px;width:20px;height:20px;border-radius:50%;background:#fff;box-shadow:0 1px 2px rgba(0,0,0,.2);transition:transform .15s}
.switch input:checked+.sw{background:var(--ink)}
.switch input:checked+.sw::after{transform:translateX(18px)}
.switch input:focus-visible+.sw{outline:2px solid var(--ink);outline-offset:2px}
/* Student profile: header, status chip, swipeable tabs (same pattern as ORCA order detail) */
.phead{display:flex;align-items:center;gap:14px}
.phead h1{font-size:22px;margin:0;line-height:1.2;color:var(--ink);font-weight:700}
.avatar.lg{width:56px;height:56px;font-size:19px;flex:none}
.stchip{display:inline-flex;align-items:center;gap:6px;height:28px;padding:0 8px 0 10px;border-radius:999px;border:0;font:600 13px var(--font);cursor:pointer;background:var(--success-bg);color:var(--success)}
.stchip .dot{width:7px;height:7px;border-radius:50%;background:currentColor}
.stchip .ao{font-size:13px}
.stchip.paused{background:var(--warning-bg);color:var(--tentative)}
.stchip.left{background:var(--sunken);color:var(--muted)}
.qacts{display:flex;gap:8px;overflow-x:auto;scrollbar-width:none;margin-top:-6px}
.qacts::-webkit-scrollbar{display:none}
.qacts .btn{flex:none}
.qacts:empty{display:none}
.fsheet button.sline{width:100%;background:none;border:0;border-bottom:1px solid var(--border-subtle);text-align:left;font:inherit;color:inherit;cursor:pointer;padding:10px 0;align-items:flex-start}
.fsheet button.sline .rd{margin-top:2px}
.fsheet .stchip-t{font-weight:600}
.ptabs{position:sticky;top:0;z-index:4;display:flex;position:sticky;gap:22px;overflow-x:auto;scrollbar-width:none;background:var(--bg);border-bottom:1px solid var(--border);margin:0 -28px -8px;padding:0 28px}
.ptabs::-webkit-scrollbar{display:none}
.ptabs a{flex:none;position:relative;padding:13px 0 11px;font-size:14px;font-weight:600;color:var(--muted);text-decoration:none;border-bottom:2.5px solid transparent;margin-bottom:-1px}
.ptabs a.on{color:var(--ink);font-weight:700}
.ptabs-ind{position:absolute;left:0;bottom:0;height:2.5px;background:var(--ink);border-radius:2px;width:0;transition:transform .28s cubic-bezier(.2,.7,.2,1),width .28s}
.ptabs.drag .ptabs-ind{transition:none}
.ptabs:not(.js) a.on{border-bottom-color:var(--ink)}
.ptabs .tdot{position:absolute;top:10px;right:-8px;width:6px;height:6px;border-radius:50%;background:var(--warning)}
.panes{overflow:hidden;margin:0 -28px;touch-action:pan-y;transition:height .25s ease}
.panes .track{display:flex;align-items:flex-start;will-change:transform;transition:transform .28s cubic-bezier(.2,.7,.2,1)}
.panes .track.drag{transition:none}
.pane{flex:0 0 100%;min-width:0;padding:0 28px;display:flex;flex-direction:column;gap:16px;box-sizing:border-box}
.tiles{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}
.tiles>div{background:var(--surface);border:1px solid var(--border);border-radius:14px;padding:12px 14px;display:flex;flex-direction:column;gap:2px;text-align:right}
.tiles .k{font-size:12px;color:var(--muted)}
.tiles b{font-size:20px;font-variant-numeric:tabular-nums}
.tiles b.warn{color:var(--warning)}
a.card.mrow{color:inherit}
@media (max-width:900px){
  .ptabs{top:calc(57px + env(safe-area-inset-top));margin:0 -16px -8px;padding:0 16px}
  .panes{margin:0 -16px}
  .pane{padding:0 16px}
  .tiles{grid-template-columns:repeat(2,minmax(0,1fr))}
}

/* ---- 0.4.0 ---- */
html{touch-action:manipulation}
body{overflow-x:clip}
dialog.cfm .cfm-t{font-size:15px;line-height:1.5;margin:4px 0 16px;color:var(--ink)}
dialog.cfm .cfm-a{display:flex;gap:10px}
dialog.cfm .cfm-a .btn{flex:1}
.btn.danger-solid{background:var(--danger);border-color:var(--danger);color:#fff;font-weight:600}
.searchbox{position:relative}
.searchbox input::-webkit-search-cancel-button{display:none}
.sclear{border:0;background:var(--sunken);color:var(--muted);width:26px;height:26px;border-radius:50%;font-size:12px;cursor:pointer;flex:none;display:inline-flex;align-items:center;justify-content:center}
.sclear[hidden]{display:none}
[data-q][hidden]{display:none!important}
.addnew[hidden]{display:none}
.plantag{display:inline-flex;align-items:center;height:22px;padding:0 8px;border-radius:6px;background:var(--brand-tint);color:var(--brand-strong);font-size:12px;font-weight:700;text-decoration:none}
.ink{color:var(--ink)}
/* Student view / edit */
.kvs{display:flex;flex-direction:column}
.kv{display:flex;gap:12px;padding:12px 16px;border-bottom:1px solid var(--border-subtle);font-size:14px}
.kv:last-child{border-bottom:0}
.kv .k{flex:0 0 110px;color:var(--muted)}
.kv .v{flex:1;min-width:0;color:var(--ink);overflow-wrap:anywhere}
[data-editable] .edit{display:none}
[data-editable=on] .edit{display:flex}
[data-editable=on] .view,[data-editable=on] [data-edit]{display:none}
.alerts{display:flex;flex-direction:column;gap:8px}
.alert{display:flex;align-items:center;gap:12px;padding:12px 14px;border-radius:14px;background:var(--info-bg);color:var(--info);text-decoration:none}
.alert.warn{background:var(--warning-bg);color:var(--warning)}
.alert b{display:block;font-size:14px}
.alert .small{display:block;opacity:.85}
.alert>.ao{font-size:20px}
.iconbtn{width:40px;height:40px;border-radius:50%;border:1px solid var(--border);background:var(--surface);display:inline-flex;align-items:center;justify-content:center;color:var(--ink-2);font-size:18px;flex:none;text-decoration:none}
.iconbtn:active{transform:scale(.94)}
.iconbtn.wa{color:var(--success)}
.iconbtn.wa img{display:none}
.iconbtn.wa.has-img img{display:block}
.iconbtn.wa.has-img .ao{display:none}
.chip.bad,.tag.bad{background:var(--danger-bg);color:var(--danger)}
.page:has(>[data-panes]){min-height:calc(100dvh - 58px - env(safe-area-inset-top));box-sizing:border-box}
.trio{display:grid;grid-template-columns:1fr 1.2fr .8fr;gap:8px}
.trio select{padding-left:10px;padding-right:24px}
.endbox{height:40px;display:flex;align-items:center;padding:0 10px;border-radius:10px;background:var(--sunken);font-weight:600;font-size:15px}
.sec .stepn{display:inline-flex;width:20px;height:20px;border-radius:50%;background:var(--ink);color:var(--on-ink);font-size:11px;align-items:center;justify-content:center;margin-right:8px;vertical-align:1px;letter-spacing:0}
.weeks{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding-left:56px}
.weeks[hidden]{display:none}
.stepper{display:inline-flex;align-items:center;border:1px solid var(--border);border-radius:10px;overflow:hidden;background:var(--surface)}
.stepper button{width:38px;height:38px;border:0;background:none;font-size:18px;color:var(--ink);cursor:pointer}
.stepper button:active{background:var(--sunken)}
.stepper input{width:48px;height:38px;border:0;border-left:1px solid var(--border);border-right:1px solid var(--border);border-radius:0;text-align:center;padding:0;font-weight:600;-moz-appearance:textfield}
.stepper input::-webkit-inner-spin-button{display:none}
/* Group / private tones (legend matches BWA's own split) */
:root{--group:#2563eb;--group-bg:#dbeafe;--private:#7c3aed;--private-bg:#ede9fe}
@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--group:#93c5fd;--group-bg:#172554;--private:#c4b5fd;--private-bg:#2e1065}}
.chip.group{background:var(--group-bg);color:var(--group)}.chip.private{background:var(--private-bg);color:var(--private)}
.blk.group{background:var(--group-bg);border-color:var(--group)}.blk.private{background:var(--private-bg);border-color:var(--private)}
.att button.a.on{background:var(--danger-bg);border-color:var(--danger);color:var(--danger)}
.att button.p.on{background:var(--success-bg);border-color:var(--success);color:var(--success)}
/* Session page */
.shero{display:flex;align-items:flex-start;gap:12px;padding:16px;border-bottom:1px solid var(--border-subtle);border-left:4px solid var(--group);border-radius:14px 14px 0 0}
.shero.private{border-left-color:var(--private)}
.shero .display{font-size:24px;line-height:1.2}
[data-editable=on] .shero [data-edit]{display:none}
.srow2{display:flex;align-items:center;gap:10px;padding:10px 16px;border-bottom:1px solid var(--border-subtle);min-height:52px}
.srow2:last-child{border-bottom:0}
.sname-l{color:inherit;text-decoration:none;min-width:0}
.sname-l b{margin-right:6px}
[data-editable] .srow2 .edit{display:none}
[data-editable=on] .srow2 .edit{display:flex}
[data-editable=on] .srow2 .view{display:none}
[data-editable=on] .attbar{display:none}
.apill{display:inline-flex;align-items:center;gap:4px;height:26px;padding:0 10px;border-radius:999px;font-size:12.5px;font-weight:600;white-space:nowrap}
.apill .ao{font-size:13px}
.apill.p{background:var(--success-bg);color:var(--success)}
.apill.a{background:var(--danger-bg);color:var(--danger)}
.apill.n{background:var(--sunken);color:var(--muted);font-weight:500}
.attbar{display:flex;gap:10px;align-items:center;border-top:1px solid var(--border-subtle)}
.attbar .opens{margin:0;border:0;background:none;padding:0}
.attmode .att button{min-width:78px}
@media (max-width:420px){.attmode .att button{min-width:0;padding:0 10px}.attmode .att button .ao{display:none}}
/* Day list: attendance hidden until "Take attendance" */
.sess .attv{display:none}
.sess[data-att=on] .attv{display:flex}
.sess[data-att=on] .pillv{display:none}
.sess[data-att=on]{outline:2px solid var(--ink);outline-offset:-1px}
.sess.k-group .sh{border-left:4px solid var(--group)}
.sess.k-private .sh{border-left:4px solid var(--private)}
.sess .srow2 .att{flex:none}
.daybar .dl span a.totoday{color:var(--ink);font-weight:600;text-decoration:underline;text-underline-offset:2px}
.viewbar{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.viewbar .fchips{flex:1;min-width:0}
.segtabs{display:inline-flex;background:var(--sunken);border-radius:10px;padding:3px;gap:2px}
.segtabs a{display:inline-flex;align-items:center;gap:6px;height:32px;padding:0 14px;border-radius:8px;font-size:13.5px;font-weight:600;color:var(--muted);text-decoration:none}
.segtabs a.on{background:var(--surface);color:var(--ink);box-shadow:0 1px 2px rgba(0,0,0,.08)}
.segtabs a .ao{font-size:15px}
.segtabs.full{display:flex}
.segtabs.full a{flex:1;justify-content:center}
.vhead{display:flex;align-items:center;gap:8px;font-weight:700;font-size:15px;padding:4px 2px 0}
.vhead .muted{font-weight:500;font-size:13px}
.legend{display:flex;flex-wrap:wrap;gap:6px;align-items:center}
/* Coach avatars */
.coachpick{display:flex;gap:14px;overflow-x:auto;scrollbar-width:none;padding:2px 2px 4px}
.coachpick::-webkit-scrollbar{display:none}
.coachpick .cp{display:flex;flex-direction:column;align-items:center;gap:4px;width:56px;flex:none;text-decoration:none;color:var(--muted);font-size:12px;font-weight:500}
.coachpick .cav{width:46px;height:46px;border-radius:50%;background:var(--sunken);color:var(--ink-2);display:flex;align-items:center;justify-content:center;font-weight:700;font-size:15px;border:2px solid transparent}
.coachpick .cp.on{color:var(--ink);font-weight:700}
.coachpick .cp.on .cav{background:var(--brand);color:var(--on-brand);box-shadow:0 0 0 2px var(--surface),0 0 0 4px var(--ink)}
.coachpick .cp span.ellip{max-width:56px;text-align:center}
/* Time grid (day blocks) */
.tgrid{background:var(--surface);border:1px solid var(--border);border-radius:14px;overflow-x:auto;--colw:max(120px, calc((100% - 48px) / var(--cols)))}
.tg-head,.tg-body{display:grid;grid-template-columns:48px repeat(var(--cols), var(--colw));min-width:calc(48px + var(--cols) * 120px)}
.tg-head{border-bottom:1px solid var(--border);position:sticky;top:0;background:var(--surface);z-index:2}
.tg-head span{padding:10px 8px;font-size:12.5px;font-weight:700;border-left:1px solid var(--border-subtle);text-align:center}
.tg-head span:first-child{border-left:0}
.tg-body{position:relative;margin:10px 0}
.tg-hours{position:relative}
.tg-hours span{position:absolute;right:6px;transform:translateY(-50%);font-size:11px;color:var(--muted);white-space:nowrap}
.tg-col{position:relative;border-left:1px solid var(--border-subtle)}
.tg-line{position:absolute;left:0;right:0;border-top:1px dashed var(--border-subtle)}
.tg-blk{position:absolute;border-radius:8px;padding:4px 6px;font-size:12px;line-height:1.25;text-decoration:none;color:var(--ink);overflow:hidden;background:var(--group-bg);border-left:3px solid var(--group)}
.tg-blk.private{background:var(--private-bg);border-left-color:var(--private)}
.tg-blk.tbc{background:repeating-linear-gradient(45deg,var(--warning-bg),var(--warning-bg) 6px,var(--surface) 6px,var(--surface) 12px);border-left-color:var(--tentative)}
.tg-blk.cx{opacity:.5;text-decoration:line-through}
.tg-blk span{display:block;color:var(--muted);font-size:11px}
/* Week list */
.weekv{display:flex;flex-direction:column;gap:12px}
.wday{background:var(--surface);border:1px solid var(--border);border-radius:14px;overflow:hidden}
.wday.today{border-color:var(--ink)}
.wdh{display:flex;align-items:center;gap:8px;padding:10px 14px;border-bottom:1px solid var(--border-subtle);text-decoration:none;color:var(--ink);font-size:14px}
.wdh .muted{margin-left:auto;font-size:12px}
.wdh .hol{font-size:12px;color:var(--note);background:var(--note-bg);border-radius:6px;padding:1px 6px}
.wday.today .wdh{background:var(--brand-tint)}
.wit{display:flex;align-items:center;gap:12px;padding:10px 14px;border-bottom:1px solid var(--border-subtle);text-decoration:none;color:inherit;border-left:4px solid var(--group)}
.wit:last-child{border-bottom:0}
.wit.private{border-left-color:var(--private)}
.wit.tbc{border-left-color:var(--tentative);border-left-style:dashed}
.wit.cx{opacity:.5}
.wit .wt{display:flex;flex-direction:column;font-weight:700;font-size:13px;width:54px;flex:none}
.wit .wt span{font-weight:400;color:var(--muted);font-size:11.5px}
.wnone{padding:10px 14px;font-size:13px;color:var(--muted)}
@media (min-width:1100px){.weekv{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:8px}.wit{flex-direction:column;align-items:stretch;gap:2px;padding:8px 10px}.wit .wt{flex-direction:row;gap:4px;width:auto}.wit .grow{width:100%}.wit .n{align-self:flex-start}.wdh{padding:8px 10px}}
/* Month cells on phones: compact */
.cal .blk .bt{font-weight:700}
.cal a.more{color:var(--muted)}
@media (max-width:900px){
  .cal .d{min-height:74px;padding:3px}
  .cal .blk{font-size:10px;padding:1px 3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .cal .blk .bn{display:none}
}
.cal .d a.dn{text-decoration:none}
/* ---- 0.5.0 ---- */
.tmeta{display:inline-flex;align-items:center;gap:6px;font-size:13px;color:var(--muted);flex:none}
.fab{display:none}
@media (max-width:900px){
  .fab{display:inline-flex;align-items:center;gap:6px;position:fixed;right:max(16px, env(safe-area-inset-right));bottom:calc(86px + env(safe-area-inset-bottom));z-index:9;height:52px;padding:0 20px 0 16px;border-radius:26px;background:var(--brand);color:var(--on-brand);font-weight:700;font-size:15px;text-decoration:none;box-shadow:0 6px 20px rgba(0,0,0,.18),0 2px 6px rgba(0,0,0,.1)}
  .fab .ao{font-size:20px}
  .fab:active{transform:scale(.96)}
  html.loading .fab{opacity:.6}
  body:has(.fab) .page{padding-bottom:calc(150px + env(safe-area-inset-bottom))}
}
/* Pull-up pickers and radios in the brand colour */
.fsheet .sline.on .rd{border:6px solid var(--brand);background:var(--on-brand)}
.fsheet .sline .rd{border-color:var(--border-strong)}
.pickrow input,.check input,input[type=checkbox]{accent-color:var(--brand)}
.fsheet .sline .chk{width:20px;height:20px;flex:none;color:var(--brand-strong)}
dialog.selpick .fs-search{margin:4px 0 8px}
.phonein{display:flex;gap:6px}
.phonein select{flex:0 0 104px;width:104px}
.phonein input{flex:1;min-width:0}
/* Pen rows */
.erows{display:flex;flex-direction:column}
.erow{border-bottom:1px solid var(--border-subtle)}
.erow:last-child{border-bottom:0}
.erow .ew{display:grid;grid-template-columns:112px minmax(0,1fr) auto;align-items:center;column-gap:12px;padding:6px 8px 6px 16px;min-height:48px;margin:0}
.erow .ew>.k{color:var(--muted);font-size:13.5px;font-weight:400}
.erow .v{min-width:0;font-size:14.5px;color:var(--ink);overflow-wrap:anywhere}
.erow .vi{display:none}
.erow .acts{display:flex;align-items:center;gap:4px}
.erow .pen,.erow .ex{width:36px;height:36px;flex:none;border:0;background:none;border-radius:10px;display:inline-flex;align-items:center;justify-content:center;color:var(--muted);font-size:17px;cursor:pointer;text-decoration:none}
.erow .pen:active,.erow .ex:active{background:var(--sunken)}
.erow .ex,.erow .sv{display:none}
.erow.editing{background:var(--brand-tint)}
.erow.editing .vv,.erow.editing .pen{display:none}
.erow.editing .vi{display:flex;flex-direction:column;gap:6px}
.erow.editing .ex{display:inline-flex}.erow.editing .sv{display:inline-flex}
.erow .vi>input,.erow .vi>select,.erow .vi>textarea,.erow .vi .money-in,.erow .vi .dpick,.erow .vi .phonein{width:100%;min-height:40px}
.erow .vi .hint{font-size:12px;color:var(--muted)}
/* Several inputs (time, venue, type) or a long text: inputs take the full width under the label. */
.erow.wide.editing .ew{grid-template-columns:minmax(0,1fr) auto;row-gap:8px;padding-bottom:12px}
.erow.wide.editing .ew>.k{grid-column:1;grid-row:1}
.erow.wide.editing .acts{grid-column:2;grid-row:1}
.erow.wide.editing .v{grid-column:1 / -1;grid-row:2}
.erow.ro .ew{padding-right:16px}
.fcard .ch+.erows{border-top:0}
/* Status dot on avatars */
.avatar.sdot{position:relative;overflow:visible}
.avatar.sdot::after{content:'';position:absolute;right:-1px;bottom:-1px;width:10px;height:10px;border-radius:50%;border:2px solid var(--surface);background:var(--success)}
.avatar.lg.sdot::after{width:14px;height:14px;right:0;bottom:0}
.avatar.sdot.paused::after{background:var(--tentative)}
.avatar.sdot.left::after{background:var(--faint)}
.tcnt{display:inline-flex;align-items:center;gap:6px;color:var(--muted);font-size:13px;text-decoration:none}
.tcnt b{color:var(--ink)}
.walogo{flex:none;width:40px;height:40px;border-radius:50%;display:inline-flex}
.walogo img{width:40px;height:40px}
.walogo:active{transform:scale(.94)}
.amark{width:24px;height:24px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;flex:none;font-size:13px;font-weight:700}
.amark.p{background:var(--success-bg);color:var(--success)}
.amark.a{background:var(--danger-bg);color:var(--danger)}
.amark.n{background:var(--sunken)}
.rn{width:22px;flex:none;color:var(--muted);font-size:12px;text-align:right}
.gsub{padding:12px 16px 4px;font-size:12px;font-weight:600;color:var(--muted);text-transform:uppercase;letter-spacing:.04em;border-bottom:1px solid var(--border-subtle);background:var(--bg)}
.gsub .linkbtn{text-transform:none;letter-spacing:0}
.addrow{display:flex;align-items:center;gap:8px;width:100%;padding:14px 16px;border:0;background:none;font:600 14px var(--font);color:var(--ink);cursor:pointer;text-align:left}
.addrow .ao{color:var(--brand-strong);font-size:18px}
.addrow2{width:100%;border:0;background:none;font:inherit;color:inherit;cursor:pointer}
[data-editable] > .view{display:block}
[data-editable] > .edit{display:none}
[data-editable=on] > .view{display:none}
[data-editable=on] > .edit{display:flex}
.erow[data-editable] > .addrow.view{display:flex}
.erow[data-editable=on] > .addrow.view{display:none}
.linkbtn{border:0;background:none;color:var(--muted);font:500 13px var(--font);text-decoration:underline;cursor:pointer;padding:6px}
.linkbtn[data-danger]{color:var(--danger)}
.pen-btn{width:34px;height:34px;border:0;background:none;border-radius:10px;color:var(--muted);font-size:17px;display:inline-flex;align-items:center;justify-content:center;cursor:pointer}
.pen-btn:active{background:var(--sunken)}
[data-editable=on] .pen-btn[data-edit]{display:none}
.note{padding:12px 16px;border-bottom:1px solid var(--border-subtle)}
.note:last-child{border-bottom:0}
.ptabs .tcount{display:inline-block;margin-left:5px;font-size:11px;font-weight:700;background:var(--sunken);color:var(--muted);border-radius:8px;padding:0 6px;line-height:16px}
.empty .ao{display:block;margin:0 auto 8px}
.fs-search[hidden],.searchbox[hidden]{display:none}
/* ---- 0.5.1 calendar ---- */
:root{--hol:#be185d;--hol-bg:#fce7f3}
@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--hol:#f9a8d4;--hol-bg:#3b0a24}}
.chip.hol{background:var(--hol-bg);color:var(--hol)}
.cal .d.hol{background:var(--hol-bg)}
.cal .hname{font-size:11px;color:var(--hol);font-weight:600;line-height:1.2}
.wdh .hol{color:var(--hol);background:var(--hol-bg)}
.holbar{background:var(--hol-bg);color:var(--hol);font-weight:600;font-size:13px;padding:8px 12px;border-radius:10px}
[data-swaproot]{transition:opacity .15s}
[data-swaproot].swapping{pointer-events:none}[data-swaproot].swapping [data-swipe]{opacity:.45;transition:opacity .15s .05s}
[data-swaproot].swapping .calbody,[data-swaproot].swapping .tgrid{filter:saturate(.6)}
.coachpick{padding-top:6px;margin-top:-2px}
.vtabs{position:relative;top:auto!important;margin:0;padding:0;background:none}
.vtabs a{flex:1;text-align:center;border-bottom:2.5px solid transparent}
.vtabs a.on{border-bottom-color:var(--ink)}
/* Day grid: scrolls inside itself so the coach/court names stay on top */
.tgrid{max-height:calc(100dvh - 300px);min-height:320px;overflow:auto;overscroll-behavior:contain}
.tg-head{position:sticky;top:0;z-index:3;box-shadow:0 1px 0 var(--border)}
.tg-head span:first-child,.tg-hours{position:sticky;left:0;z-index:2;background:var(--surface)}
.tg-head span:first-child{z-index:4}
.tg-blk{font-size:11.5px;padding:3px 5px}
.tg-blk span{font-size:10.5px}
/* Today list: more on one screen */
.sess .sh{padding:10px 14px}
.sess .meta{padding:0 14px 8px}
.sess .srow2{min-height:40px;padding:6px 14px}
.sess .srow2 .lvl{font-size:11px;padding:1px 6px}
.sess .apill{height:22px;font-size:12px;padding:0 8px}
.sess .attbar{padding:8px 14px}
.sess .attbar .btn{height:36px}
.pillbtn{border:0;background:none;padding:0;display:inline-flex;align-items:center;gap:2px;cursor:pointer;color:var(--muted)}
.pillbtn .ao{font-size:12px}
.maplink{display:inline-flex;align-items:center;gap:4px;font-size:12.5px;font-weight:600;padding:3px 8px;border-radius:999px;background:var(--info-bg);color:var(--info);text-decoration:none;flex:none}
.maplink .ao{font-size:13px}
.slink b{color:var(--ink);text-decoration:underline;text-decoration-color:var(--border-strong);text-underline-offset:3px}
.fsheet button.sline .amark{margin-left:auto}
.shero.card{border-radius:14px;border-left-width:4px}
.ef-custom{display:flex;flex-direction:column;gap:10px}
/* ---- 0.5.2 settings ---- */
.setpage{max-width:760px}
.listhead{display:flex;align-items:center;justify-content:space-between;gap:12px}
.addbtn{flex:none}
.logocard{display:flex;align-items:center;gap:14px;padding:16px}
.logobox{width:60px;height:60px;border-radius:14px;background:var(--brand-tint);color:var(--brand-strong);display:flex;align-items:center;justify-content:center;font-size:20px;overflow:hidden;flex:none;border:1px solid var(--border)}
.logobox img{width:100%;height:100%;object-fit:contain;background:#fff}
.logoform label{cursor:pointer}
.hdate{width:44px;flex:none;display:flex;flex-direction:column;align-items:center;border-radius:10px;background:var(--hol-bg);color:var(--hol);padding:4px 0;line-height:1.1}
.hdate b{font-size:17px}
.hdate span{font-size:10.5px;font-weight:600;text-transform:uppercase}
.courtchips{display:flex;flex-wrap:wrap;gap:4px}
ul.checks{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:6px;font-size:14px}
ul.checks li{display:flex;gap:8px;align-items:center}
ul.checks li .ao{color:var(--success)}
ul.checks.no li{color:var(--ink-2)}
.plans{display:flex;flex-direction:column}
.planopt{display:flex;align-items:center;gap:12px;padding:12px 16px;border-bottom:1px solid var(--border-subtle);cursor:pointer}
.planopt:last-child{border-bottom:0}
.planopt input{width:20px;height:20px;accent-color:var(--brand);flex:none}
.planopt:has(input:checked){background:var(--brand-tint)}
.planopt.off{opacity:.5;cursor:default}
.plancard{padding:16px}
/* Date fields: text, weekday and icon on one line */
.dpick{line-height:1}
.dpick .dv,.dpick .dw{display:flex;align-items:center;height:100%}
.dpick .ao{align-self:center}

.ao-logout{--i:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4'/%3E%3Cpath d='M16 17l5-5-5-5'/%3E%3Cpath d='M21 12H9'/%3E%3C/svg%3E")}
/* Profile menu */
.menu .ws{display:flex;align-items:center;gap:12px;padding:14px 16px;width:100%;border:1px solid var(--border);background:var(--surface);font:inherit;color:inherit;cursor:pointer}
.menu .ws .swap{width:30px;height:30px;border-radius:50%;background:var(--sunken);display:inline-flex;align-items:center;justify-content:center;color:var(--muted);flex:none}
.wslogo{border-radius:12px;background:var(--brand);color:var(--on-brand);display:inline-flex;align-items:center;justify-content:center;overflow:hidden;flex:none;font-size:15px}
.wslogo img{width:100%;height:100%;object-fit:contain;background:#fff}
.menu .card a.logout{color:var(--danger)}
.menu .card a.logout .ic{color:var(--danger);background:var(--danger-bg)}
.menu>.alert{margin:0}
.wsrow{margin:0}
.wsrow .sline{gap:12px}
.fsheet a.sline{color:var(--ink);text-decoration:none}
.fsheet .ic2{width:36px;height:36px;border-radius:10px;background:var(--sunken);display:inline-flex;align-items:center;justify-content:center;flex:none}
.fsheet .sline:disabled{opacity:1;cursor:default}
.filepick{position:relative;display:flex;align-items:center;gap:12px;padding:12px 14px;border:1.5px dashed var(--border-strong);border-radius:12px;cursor:pointer;background:var(--surface)}
.filepick input{position:absolute;inset:0;opacity:0;cursor:pointer}
.filepick .ic2{width:36px;height:36px;border-radius:10px;background:var(--brand-tint);color:var(--brand-strong);display:inline-flex;align-items:center;justify-content:center}
.filepick.has{border-style:solid;border-color:var(--ink)}
/* ---- 0.5.3 payments ---- */
.sumstrip{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}
.sumstrip a{display:flex;flex-direction:column;gap:1px;padding:10px 12px;border-radius:12px;background:var(--surface);border:1px solid var(--border);text-decoration:none;color:var(--ink);min-width:0;text-align:right}
.sumstrip b{font-size:clamp(13px,3.5vw,16px);letter-spacing:-.2px;font-variant-numeric:tabular-nums;white-space:nowrap}
.sumstrip a{padding:10px 10px}
.sumstrip .k{font-size:11.5px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.paytabs{overflow-x:auto;scrollbar-width:none;gap:18px}
.paytabs::-webkit-scrollbar{display:none}
.paytabs a{flex:0 0 auto}
.monthpick .ao{font-size:14px}
.statusboard{display:flex;flex-direction:column;gap:12px}
.statusboard .sb-check{border-left:4px solid var(--info)}
.statusboard .sb-overdue{border-left:4px solid var(--danger)}
.statusboard .sb-open{border-left:4px solid var(--warning)}
.statusboard .sb-paid{border-left:4px solid var(--success)}
@media (min-width:1100px){.statusboard{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));align-items:start}}
.wkday{width:40px;height:40px;border-radius:10px;background:var(--group-bg);color:var(--group);display:flex;align-items:center;justify-content:center;flex:none;font-size:13px}
.mrow.ended{opacity:.6}
.mrow.ended .wkday{background:var(--sunken);color:var(--muted)}
[data-segpane][hidden]{display:none}
.card>.addrow.view{display:flex}
.card[data-editable=on]>.addrow.view{display:none}
.usebar{display:flex;gap:8px;align-items:center;font-size:13px;font-weight:600;padding:8px 12px;border-radius:10px;background:var(--info-bg);color:var(--info)}.usebar.warn{background:var(--warning-bg);color:var(--warning)}
.lvnum{width:32px;height:32px;border-radius:50%;background:var(--brand-tint);color:var(--brand-strong);display:flex;align-items:center;justify-content:center;font-weight:700;flex:none}
.sumbox{display:flex;flex-direction:column;gap:1px;padding:10px 12px;border-radius:12px;background:var(--surface);border:1px solid var(--border);text-align:right}.sumbox b{font-size:16px}.sumbox .k{font-size:11.5px;color:var(--muted)}
.csteps{display:flex;flex-direction:column}
.cstep{display:flex;gap:12px;align-items:flex-start;padding:14px 16px;border-bottom:1px solid var(--border-subtle)}
.cstep:last-child{border-bottom:0}
.cstep .cnum{width:28px;height:28px;border-radius:50%;background:var(--sunken);color:var(--muted);display:flex;align-items:center;justify-content:center;font-weight:700;font-size:13px;flex:none}
.cstep.now{background:var(--brand-tint)}
.cstep.now .cnum{background:var(--ink);color:var(--on-ink)}
.cstep.done .cnum{background:var(--success-bg);color:var(--success)}
.cstep.done b{color:var(--muted)}
.cact{margin-top:10px;display:flex;flex-direction:column;gap:8px}
.cact .btn{align-self:flex-start}

/* ---- 0.6.0: tab bar highlight that slides, content skeleton while the next screen loads ---- */
.tbpill{display:none}
@media (max-width:900px){
  .tabbar{--gap:4px}
  .tabbar a{position:relative;z-index:1;transition:color .2s}
  .tabbar a.on:not(.hero){background:none}
  .tbpill{display:block;position:absolute;z-index:0;top:8px;bottom:calc(8px + env(safe-area-inset-bottom));border-radius:12px;background:var(--brand);
    width:calc((100% - 16px - (var(--n) - 1) * var(--gap)) / var(--n));
    left:calc(8px + var(--i) * ((100% - 16px - (var(--n) - 1) * var(--gap)) / var(--n) + var(--gap)));
    transition:left .32s cubic-bezier(.3,.9,.3,1.05),opacity .2s,transform .2s}
  .tbpill.off{opacity:0;transform:scale(.85)}
}
.skel{display:none}
html.skel-on .skel{display:flex;flex-direction:column;gap:12px;padding:16px}
html.skel-on main.page{display:none}
.sk{display:block;border-radius:14px;background:linear-gradient(90deg,var(--sunken) 0%,var(--surface) 40%,var(--sunken) 80%) 0 0/300% 100%;animation:shim 1.1s linear infinite;border:1px solid var(--border-subtle)}
.sk.t{height:22px;width:45%;border-radius:8px;border:0}
.sk.c{height:96px}.sk.c.s{height:64px}
@keyframes shim{from{background-position:100% 0}to{background-position:0 0}}
main.page.arrive{animation:arrive2 .22s ease both}
@keyframes arrive2{from{opacity:0;transform:translateY(6px)}}
html.loading main.page{opacity:1;pointer-events:auto}
html.loading form{opacity:.7;transition:opacity .15s .1s}
.slide-l [data-swipe]{animation:sl-l .25s cubic-bezier(.2,.8,.2,1) both}.slide-r [data-swipe]{animation:sl-r .25s cubic-bezier(.2,.8,.2,1) both}
@keyframes sl-l{from{opacity:0;transform:translateX(28px)}}@keyframes sl-r{from{opacity:0;transform:translateX(-28px)}}

/* Calendar colour key: swatches (not status chips). Group blue, Private violet, TBC amber dashed, Holiday rose. */
:root{--group:#2563eb;--group-bg:#e0eaff;--private:#9333ea;--private-bg:#f3e8ff}
@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--group:#93b4fd;--group-bg:#172554;--private:#d8b4fe;--private-bg:#3b0764}}
.lgd{display:flex;flex-wrap:wrap;gap:4px 12px;align-items:center;font-size:12.5px;color:var(--muted)}
.lgd>span{display:inline-flex;align-items:center;gap:6px;white-space:nowrap}
.swc{width:12px;height:12px;border-radius:4px;flex:none;display:inline-block}
.swc.group{background:var(--group)}.swc.private{background:var(--private)}
.swc.tbc{background:var(--warning-bg);border:1.5px dashed var(--tentative)}
.swc.hol{background:var(--hol-bg);border:1.5px solid var(--hol)}
.legend{justify-content:space-between;row-gap:8px}
.colview{display:inline-flex;background:var(--sunken);border-radius:999px;padding:3px;gap:2px;margin-left:auto}
.colview a{padding:6px 12px;border-radius:999px;font-size:12.5px;font-weight:600;color:var(--muted);text-decoration:none;white-space:nowrap}
.colview a.on{background:var(--surface);color:var(--ink);box-shadow:0 1px 3px rgba(0,0,0,.12)}
.cal .d{min-width:0;overflow:hidden}
.cal .hname{display:block;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.blk.tbc,.wit.tbc{background:var(--warning-bg)}
.ef-a{display:flex;gap:8px;justify-content:flex-end}.ef-a .btn{min-width:88px}
.erow .ew{grid-template-columns:100px minmax(0,1fr) auto}
.erow.wide.editing .ew{grid-template-columns:minmax(0,1fr) auto}
.erow .sv{min-height:34px;padding:0 12px}
.erow .vi .dpick{white-space:nowrap;padding-left:10px;padding-right:10px}
.erow .vi .dpick .dw{display:none}
.erow .vi .phonein select{flex:0 0 108px;width:108px;max-width:none;padding-left:10px;padding-right:22px}

/* Switches sit on the right, a touch larger. */
.switch{gap:14px;justify-content:space-between}
.switch .sw{order:2;margin-left:auto;width:52px;height:30px;border-radius:15px}
.switch .sw::after{width:24px;height:24px}
.switch input:checked+.sw::after{transform:translateX(22px)}
/* Add session steps */
.fsteps{display:none}
form.stepped .fsteps{display:flex;list-style:none;margin:0;padding:0;gap:6px}
form.stepped .fsteps li{flex:1;min-width:0}
form.stepped .fsteps button{width:100%;display:flex;flex-direction:column;align-items:center;gap:4px;border:0;background:none;padding:0;cursor:pointer;color:var(--muted);font:inherit;font-size:12px;font-weight:600}
form.stepped .fsteps button::before{content:'';display:block;width:100%;height:4px;border-radius:2px;background:var(--border)}
form.stepped .fsteps .n{display:none}
form.stepped .fsteps li.done button{color:var(--ink-2)}form.stepped .fsteps li.done button::before{background:var(--ink)}
form.stepped .fsteps li.now button{color:var(--ink)}form.stepped .fsteps li.now button::before{background:var(--brand)}
form.stepped .fstep.off{display:none}
form.stepped .fstep{animation:arrive2 .2s ease both}
.fsum{display:flex;flex-direction:column}
.fsrow{display:grid;grid-template-columns:64px minmax(0,1fr) auto;gap:10px;align-items:center;padding:10px 14px;border:0;border-bottom:1px solid var(--border-subtle);background:none;text-align:left;font:inherit;color:var(--ink);cursor:pointer}
.fsrow:last-child{border-bottom:0}.fsrow .k{color:var(--muted);font-size:13px}.fsrow .v{font-size:14px;font-weight:500}.fsrow .ao{color:var(--muted)}
.fnav{display:flex;gap:10px}.fnav .btn{flex:1}.fnav [hidden]{display:none}
.shake{animation:shake .4s}
@keyframes shake{20%,60%{transform:translateX(-5px)}40%,80%{transform:translateX(5px)}}
dialog:not([open]){display:none!important}
.formsheet .fs-act{display:flex;gap:10px;margin-top:6px}.formsheet .fs-act .btn{flex:1}
.formsheet textarea{min-height:140px}
@media (min-width:901px){dialog.formsheet{width:440px}}
.phd{display:flex;align-items:center;gap:10px;padding:12px 16px 6px;border-top:1px solid var(--border-subtle)}
.erows>.phd:first-child{border-top:0}
.phd .avatar{width:32px;height:32px;font-size:12px}
.vh{position:absolute;opacity:0;width:1px;height:1px;pointer-events:none}
.fsheet label.sline{cursor:pointer;padding:10px 0;align-items:flex-start}
.fsheet label.sline:has(input:checked) .rd{border:6px solid var(--brand);background:var(--on-brand)}
.duo{display:grid;grid-template-columns:1fr 1fr;gap:8px;padding:12px;border-top:1px solid var(--border-subtle)}
.duo-b{display:flex;flex-direction:column;align-items:flex-start;gap:2px;padding:12px;border-radius:12px;border:1px solid var(--border);background:var(--surface);color:var(--ink);text-decoration:none;font:inherit;text-align:left;cursor:pointer}
.duo-b .ao{font-size:20px;margin-bottom:4px;color:var(--ink)}
.duo-b:first-child{background:var(--brand-tint);border-color:var(--brand)}
.duo-b b{font-size:14px}.duo-b span{font-size:12px;color:var(--muted);line-height:1.3}
.duo-b:active{transform:scale(.98)}
.atally{display:inline-flex;align-items:center;gap:6px;font-size:13px;font-weight:600;color:var(--ink-2)}
.atally .amark{margin-left:4px}
/* Student tabs: tighter rows so more fits on one screen */
.pane .mrow{padding-top:8px;padding-bottom:8px;min-height:52px}
.pane .card>.ch{padding-top:10px;padding-bottom:10px}
.pane .erow .ew{min-height:44px;padding-top:4px;padding-bottom:4px}
.pane .note{padding:10px 16px}
.pane{display:flex;flex-direction:column;gap:12px}
/* Invoice page */
.invwrap{display:flex;flex-direction:column;gap:12px;max-width:720px}
.invhead{padding:16px;display:flex;flex-direction:column;gap:12px}
.invtotal{font-size:26px;font-weight:800;letter-spacing:-.02em;font-variant-numeric:tabular-nums;text-align:right;white-space:nowrap}
.invto{display:flex;flex-direction:column;gap:1px}
.invacts{display:flex;gap:8px}.invacts .btn{flex:1;justify-content:center;gap:8px}
.invdoc{overflow:hidden}
.invfrom{display:flex;gap:12px;align-items:center;padding:16px 16px 8px}
.invlogo{width:44px;height:44px;border-radius:10px;object-fit:cover;flex:none}
.invmeta{display:flex;flex-wrap:wrap;gap:4px 14px;padding:0 16px 12px}
.invlines{display:flex;flex-direction:column}
.invline{display:flex;align-items:center;gap:12px;padding:10px 16px;border-top:1px solid var(--border-subtle);font-size:14px}
.invline .grow{min-width:0;overflow-wrap:anywhere}
.invline .amt{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap;font-weight:500}
.invline.tot{font-weight:700;font-size:16px;border-top:1px solid var(--border)}
.invline.tot .amt{font-weight:800}
.invpay{background:var(--sunken);margin:4px 12px 12px;border-radius:12px;padding:12px 14px;display:flex;flex-direction:column;gap:2px;overflow-wrap:anywhere}
@media print{.invwrap{max-width:none}.invhead .invacts{display:none}.sbar{display:none!important}}
main.page.sub{color:var(--ink);margin-top:0}
.invhead .row.between{flex-wrap:nowrap}
.invwrap{padding-bottom:84px}
.switchlist{display:flex;flex-direction:column}
.switchlist .switch{padding:12px 16px;border-top:1px solid var(--border-subtle);font-size:14.5px}
.switchlist .switch:first-child{border-top:0}
@media (max-width:900px){
  .page>.head{flex-direction:column;align-items:stretch;gap:10px}
  .page>.head>.row{margin-left:0;justify-content:flex-start;flex-wrap:nowrap}
  .page>.head>.row>.btn:not(.only-d){flex:1;justify-content:center}
}
/* Desktop: side menu highlight slides, profile link, page title with back */
.sidepill{position:absolute;left:12px;right:12px;top:0;height:40px;border-radius:10px;background:var(--brand);opacity:0;transition:top .3s cubic-bezier(.3,.9,.3,1.05),height .2s,opacity .15s;z-index:0;pointer-events:none}
.side a.nav,.side a.me,.side .brand,.side .gl{position:relative;z-index:1}
.side.pilled a.nav.on{background:none}
.side a.nav.on:hover{background:none}
.side .me{text-decoration:none;border-radius:10px;padding:10px 8px;margin-top:auto;border-top:0;box-shadow:0 -1px 0 #292524}
.side .me:hover{background:var(--side-hover)}
.side .me .small{color:#a8a29e;font-size:11.5px}
.side .me .ao{color:#a8a29e;font-size:14px}
.side.pilled .me.on{color:var(--on-brand)}.side.pilled .me.on .small,.side.pilled .me.on .ao{color:var(--on-brand)}
.side:not(.pilled) .me.on{background:var(--brand);color:var(--on-brand)}
.dhead{display:none}
@media (min-width:901px){
  .dhead{display:flex;align-items:center;gap:10px;margin-bottom:4px}
  .dhead h1{font-size:24px;margin:0;font-weight:700;letter-spacing:-.01em}
  .dback{width:36px;height:36px;border-radius:10px;border:1px solid var(--border);display:inline-flex;align-items:center;justify-content:center;color:var(--ink);text-decoration:none;flex:none;background:var(--surface)}
  .dback:hover{background:var(--sunken)}
  .page.sub>.head h1{display:none}
  .page.sub>.head:not(:has(.sub)):not(:has(.row)){display:none}
  /* Pen rows: wider label column */
  .erow .ew{grid-template-columns:160px minmax(0,1fr) auto}
  .erow.wide.editing .ew{grid-template-columns:minmax(0,1fr) auto}
  /* Student profile and other detail pages: comfortable reading width */
  .phead,.page>.ptabs,.page>.panes{max-width:880px;width:100%}
  .setpage{max-width:880px}
  /* Invoice: document on the left, status and payment on the right */
  .invwrap{max-width:1040px;display:grid;grid-template-columns:minmax(0,1fr) 320px;align-items:start;padding-bottom:0}
  .invwrap>.invdoc{grid-column:1;grid-row:1 / span 2}
  .invwrap>.invhead{grid-column:2;grid-row:1;position:sticky;top:16px}
  .invwrap>.card.noprint:last-child{grid-column:2}
  .invhead .invacts{flex-direction:column}
  .page:has(.invwrap) .sbar{display:none}
  /* Add session steps: side by side buttons, not full width */
  .fnav{justify-content:flex-end}.fnav .btn{flex:0 0 auto;min-width:140px}
  form.stepped{max-width:640px}
  /* Pull-up forms show as centred dialogs */
  dialog.fsheet.formsheet .fs-in{padding:16px 20px 20px}
}
@media (min-width:901px){.invhead .invacts .btn,.invhead .invacts form{flex:none}}
@media (min-width:901px){.page:has(.phead) .dhead h1{visibility:hidden}}
/* 0.7.0 Today tab: bright only when it is the current screen */
.tabbar a.hero .tbi,.mob .mtabs a.hero .tbi{background:var(--surface);color:var(--ink);box-shadow:0 0 0 5px var(--surface),inset 0 0 0 2px var(--border),0 6px 16px rgba(0,0,0,.12)}
.tabbar a.hero svg.dayic text,.mob .mtabs a.hero svg.dayic text{fill:var(--surface)}
.tabbar a.hero,.mob .mtabs a.hero{color:var(--muted);font-weight:500}
.tabbar a.hero.on,.mob .mtabs a.hero.on{color:var(--ink);font-weight:700}
.tabbar a.hero.on .tbi,.mob .mtabs a.hero.on .tbi{background:var(--brand);color:var(--on-brand);box-shadow:0 0 0 5px var(--surface),0 6px 16px rgba(0,0,0,.18)}
.tabbar a.hero.on svg.dayic text,.mob .mtabs a.hero.on svg.dayic text{fill:var(--brand)}
/* Counts inside selected or brand-coloured things take the text colour */
.fchip.on span,.fchip.on .tcount,.btn.pri .tcount,.on>.tcount{background:rgba(255,255,255,.18);color:inherit}
.btn.pri,.btn.pri *{color:var(--on-brand)}
.slide-l:not(:has([data-swipe])){animation:sl-l .25s cubic-bezier(.2,.8,.2,1) both}.slide-r:not(:has([data-swipe])){animation:sl-r .25s cubic-bezier(.2,.8,.2,1) both}
@media (max-width:900px){html,body{overscroll-behavior-y:none}}
.segtabs button{display:inline-flex;align-items:center;gap:6px;height:32px;padding:0 14px;border-radius:8px;font:600 13.5px var(--font);color:var(--muted);border:0;background:none;cursor:pointer}
.segtabs button.on{background:var(--surface);color:var(--ink);box-shadow:0 1px 2px rgba(0,0,0,.08)}
/* Calendar: date bar stays on screen (with the chosen coach) while scrolling */
.daybar.stick{position:sticky;top:8px;z-index:6;box-shadow:0 4px 12px -6px rgba(0,0,0,.15)}
@media (max-width:900px){.daybar.stick{top:calc(62px + env(safe-area-inset-top))}}
.daybar:not(.is-today):not(.is-future):not(.is-past),.daybar.stick{background-clip:padding-box}
.daybar.stick.is-today{background:var(--surface)}
.dco{display:inline-flex;align-items:center;gap:3px;background:var(--ink);color:var(--on-ink);border-radius:999px;padding:0 8px 0 6px;margin-right:6px;font-weight:600;font-size:11.5px;line-height:18px}
.dco .ao{font-size:11px}
.seats{display:inline-flex;align-items:center;gap:4px;white-space:nowrap}.seats .ao{font-size:13px;opacity:.75}
/* Coach picker: photos, and every coach looks selected when "All" is chosen */
.coachpick .cav{overflow:hidden}
.coachpick .cav img{width:100%;height:100%;object-fit:cover;display:block}
.coachpick.all .cp:not(.on) .cav{box-shadow:0 0 0 2px var(--surface),0 0 0 4px var(--brand)}
.coachpick.all .cp:not(.on){color:var(--ink)}
.coachpick .cp span.ellip{max-width:64px}.coachpick .cp{width:64px}
/* Photos */
.logobox.round{border-radius:50%;overflow:hidden}
.avform{margin:0}
.avform .avatar{position:relative;cursor:pointer;overflow:visible}
.avform .avatar img{width:100%;height:100%;object-fit:cover;border-radius:50%;display:block}
.avedit{position:absolute;right:-4px;bottom:-4px;width:22px;height:22px;border-radius:50%;background:var(--surface);border:1px solid var(--border);display:flex;align-items:center;justify-content:center;font-size:12px;color:var(--ink)}
.avform .avatar.sdot::after{display:none}
.logobox.round img{object-fit:cover}
/* Add rows: one style for "add" everywhere in lists, a round + in the brand tint */
.addrow{min-height:48px;gap:12px;padding:10px 16px;color:var(--ink);font-weight:600;border-top:1px solid var(--border-subtle)}
.ch+.addrow,.card>.addrow:first-child{border-top:0}
.addrow{position:relative;padding-left:56px}
.addrow::before{content:'';position:absolute;left:16px;top:50%;margin-top:-14px;width:28px;height:28px;border-radius:50%;background:var(--brand-tint);box-shadow:inset 0 0 0 1px var(--brand)}
.addrow>.ao:first-child{position:absolute;left:23px;top:50%;margin-top:-7px;width:14px;height:14px;font-size:14px;background:var(--ink)}
.addrow:active{background:var(--sunken)}
.addrow+.list{border-top:1px solid var(--border-subtle)}
.rel{display:inline-block;margin-left:6px;font-size:11px;font-weight:600;color:var(--note);background:var(--note-bg);border-radius:6px;padding:1px 6px;vertical-align:1px}
.rel.now{color:var(--on-brand);background:var(--brand)}
#todayroot>.daybar{position:sticky;top:8px;z-index:6;box-shadow:0 4px 12px -6px rgba(0,0,0,.15)}
@media (max-width:900px){#todayroot>.daybar{top:calc(62px + env(safe-area-inset-top))}}
.menu .ws .swap{width:auto;height:30px;border-radius:999px;padding:0 10px;gap:4px;font-size:12.5px;font-weight:600;color:var(--ink)}
.menu .ws .swap .ao{font-size:13px}
.fsheet .sline .ic2{width:34px;height:34px;border-radius:10px;background:var(--sunken);display:inline-flex;align-items:center;justify-content:center;flex:none}
/* Overview */
.nextcard{display:flex;align-items:center;gap:12px;padding:14px 16px;border-radius:16px;background:var(--brand-tint);border:1px solid var(--brand);color:var(--ink);text-decoration:none}
.nextcard b{font-size:16px;display:block}
.nextcard .nc-ic{width:40px;height:40px;border-radius:12px;background:var(--brand);color:var(--on-brand);display:flex;align-items:center;justify-content:center;font-size:20px;flex:none}
.nextcard:active{transform:scale(.99)}
.ovstats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px}
.ovstats a{display:flex;flex-direction:column;gap:2px;padding:10px 12px;border-radius:14px;background:var(--surface);border:1px solid var(--border);text-decoration:none;color:var(--ink);min-width:0}
.ovstats .k{font-size:12px;color:var(--muted)}
.ovstats b{font-size:20px;font-weight:800;letter-spacing:-.01em;font-variant-numeric:tabular-nums;white-space:nowrap}
.ovstats b.amt{font-size:clamp(15px,4.2vw,20px)}
.ovstats .s{font-size:11.5px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
@media (max-width:900px){.ovstats{grid-template-columns:repeat(2,minmax(0,1fr))}}
.tdic{width:34px;height:34px;border-radius:10px;background:var(--sunken);display:inline-flex;align-items:center;justify-content:center;flex:none;color:var(--ink-2)}
/* 0.8.0 Sliding highlights: underline for tabs, pill for switches (PMC.ind) */
.segtabs,.colview{position:relative}
.vtabs>.tind{position:absolute;left:0;bottom:-1px;height:2.5px;border-radius:2px;background:var(--ink);transition:transform .32s cubic-bezier(.3,.9,.3,1),width .32s cubic-bezier(.3,.9,.3,1),opacity .15s;pointer-events:none}
.vtabs.has-ind>a.on{border-bottom-color:transparent}
.segtabs>.tind,.colview>.tind{position:absolute;left:0;top:3px;bottom:3px;border-radius:8px;background:var(--surface);box-shadow:0 1px 3px rgba(0,0,0,.12);transition:transform .3s cubic-bezier(.3,.9,.3,1),width .3s cubic-bezier(.3,.9,.3,1);pointer-events:none;z-index:0}
.colview>.tind{border-radius:999px}
.segtabs.has-ind>a,.segtabs.has-ind>button,.colview.has-ind>a{position:relative;z-index:1;transition:color .2s}
.segtabs.has-ind>a.on,.segtabs.has-ind>button.on,.colview.has-ind>a.on{background:none;box-shadow:none}
/* Page-to-page: the new screen slides in from the side you are heading to */
main.page.arrive-fwd{animation:pg-in-r .26s cubic-bezier(.2,.8,.2,1) both}
main.page.arrive-back{animation:pg-in-l .26s cubic-bezier(.2,.8,.2,1) both}
@keyframes pg-in-r{from{opacity:0;transform:translateX(28px)}}
@keyframes pg-in-l{from{opacity:0;transform:translateX(-28px)}}
@media (prefers-reduced-motion:reduce){main.page.arrive-fwd,main.page.arrive-back,main.page.arrive{animation:none}}
/* Current period stands out; chosen coach follows it */
.daybar.is-today{background:var(--brand-tint);border-color:var(--brand)}
.daybar.is-today .dl b{color:var(--ink)}
.nowpill{display:inline-block;background:var(--brand);color:var(--on-brand);font-weight:700;font-size:11.5px;border-radius:999px;padding:0 8px;line-height:18px}
.daybar .dl>span{display:inline-flex;align-items:center;gap:6px;justify-content:center;flex-wrap:wrap}
.dco{margin-right:0}
/* Count badges: dark text on amber everywhere (white on orange was hard to read) */
.tbb,.side .cnt.warn{background:#fbbf24;color:#1c1917}
.on>.tcount,.fchip.on span,.fchip.on .tcount{background:rgba(0,0,0,.08);color:inherit}
.fchip.on span,.fchip.on .tcount{background:rgba(255,255,255,.22)}
/* Pull-up lists: clearly above the screen; ✕ is a plain close button */
dialog.fsheet::backdrop{background:rgba(20,18,15,.55)}
dialog.fsheet{box-shadow:0 -12px 40px rgba(0,0,0,.25)}
.fsheet .stitle button[data-close]{border-radius:50%;background:var(--sunken);color:var(--muted);width:32px;height:32px;font-size:15px;outline:none}
.fsheet .stitle button[data-close]:focus-visible{outline:2px solid var(--ink);outline-offset:2px}
/* Floating add: a round + only (the label stays for screen readers) */
@media (max-width:900px){
  .fab{width:56px;height:56px;padding:0;border-radius:50%;justify-content:center}
  .fab>span{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
  .fab>.ao{font-size:24px}
}
.attn{display:flex;gap:8px;overflow-x:auto;scrollbar-width:none}
.attn::-webkit-scrollbar{display:none}
.attn a{flex:none;display:inline-flex;align-items:center;gap:6px;height:34px;padding:0 12px;border-radius:999px;background:var(--warning-bg);color:var(--ink);text-decoration:none;font-size:13px}
.attn a b{font-weight:800}.attn .ao{font-size:14px;color:var(--warning)}
/* Add actions, option C: brand-coloured text link with a small + (header links and add rows share the look) */
.addlink{display:inline-flex;align-items:center;gap:5px;border:0;background:none;padding:6px 2px;font:700 13.5px var(--font);color:var(--brand-strong);cursor:pointer;text-decoration:none;white-space:nowrap}
.addlink .ao{font-size:12px}
.addrow{padding-left:16px!important;color:var(--brand-strong);font-weight:700;font-size:14px;gap:6px;min-height:46px}
.addrow::before{display:none!important}
.addrow>.ao:first-child{position:static!important;width:13px!important;height:13px!important;margin:0!important;background:var(--brand-strong)!important}
@media (prefers-color-scheme:dark){:root:not([data-theme=light]) .addlink,:root:not([data-theme=light]) .addrow{color:var(--brand)}:root:not([data-theme=light]) .addrow>.ao:first-child,:root:not([data-theme=light]) .addlink .ao{background:var(--brand)!important}}
.fstitle{font-size:18px;font-weight:700;margin:0;letter-spacing:-.01em}
/* Step bar: numbers back in the pills so the order reads clearly */
form.stepped .fsteps .n{display:inline-flex;width:18px;height:18px;border-radius:50%;align-items:center;justify-content:center;font-size:11px;background:var(--sunken);color:var(--muted);margin-right:4px}
form.stepped .fsteps button{flex-direction:column}
form.stepped .fsteps button .l{display:inline-flex;align-items:center}
form.stepped .fsteps li.now .n{background:var(--brand);color:var(--on-brand)}
form.stepped .fsteps li.done .n{background:var(--ink);color:var(--on-ink)}
/* Calendar details */
.seats .ao{display:block;align-self:center}
.cal .hname{white-space:normal;overflow-wrap:anywhere;hyphens:auto;-webkit-hyphens:auto;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;line-height:1.15;font-size:10.5px}
.coachpick.all .cp .cav{background:var(--brand);color:var(--on-brand);box-shadow:0 0 0 2px var(--surface),0 0 0 4px var(--ink)}
.coachpick.all .cp{color:var(--ink);font-weight:700}
.blk.tbc,.wit.tbc{border-style:solid!important;border-color:var(--tentative)!important}
.wit.tbc{border-left-style:solid!important}
.tg-blk.tbc{background:var(--warning-bg)}
.swc.tbc{background:var(--tentative);border:0}
.mhint{font-size:12px;color:var(--note);font-weight:600;margin-top:1px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ttlrow{display:flex;align-items:center;gap:10px;min-width:0}.ttlrow>b{min-width:0}.ttlrow .tmeta{flex:none}
.skrow{margin:0}
.skbtn{display:flex;align-items:center;gap:12px;width:100%;padding:10px 16px;border:0;border-top:1px solid var(--border-subtle);background:none;font:inherit;font-size:14px;color:var(--ink);text-align:left;cursor:pointer}
.skrow:first-child .skbtn{border-top:0}
.skbtn .amark{background:var(--surface);box-shadow:inset 0 0 0 2px var(--faint);color:transparent}
.skbtn.on .amark{background:var(--present);box-shadow:none;color:#fff}
.skbtn:active{background:var(--sunken)}
.moreList summary{list-style:none;cursor:pointer;padding:10px 16px;font:700 13.5px var(--font);color:var(--brand-strong);border-top:1px solid var(--border-subtle)}
.moreList summary::-webkit-details-marker{display:none}
.moreList[open] summary{display:none}
.wsitem{margin:0}
.wsbtn{display:flex;align-items:center;gap:12px;width:100%;padding:12px 16px;border:0;border-top:1px solid var(--border-subtle);background:none;font:inherit;color:var(--ink);cursor:pointer}
.wsitem:first-child .wsbtn{border-top:0}
.wsbtn.on{background:var(--brand-tint);cursor:default}
.wsbtn .rd{width:20px;height:20px;border-radius:50%;border:2px solid var(--faint);flex:none}
.wsbtn .rd.on{border:6px solid var(--brand);background:var(--on-brand)}
.menu a.ws{text-decoration:none;color:inherit}
.wsitem{margin:0}
.wsbtn{display:flex;align-items:center;gap:12px;width:100%;padding:12px 16px;border:0;border-top:1px solid var(--border-subtle);background:none;font:inherit;color:var(--ink);cursor:pointer}
.wsitem:first-child .wsbtn{border-top:0}
.wsbtn.on{background:var(--brand-tint);cursor:default}
.wsbtn .rd{width:20px;height:20px;border-radius:50%;border:2px solid var(--faint);flex:none}
.wsbtn .rd.on{border:6px solid var(--brand);background:var(--on-brand)}
.menu a.ws{text-decoration:none;color:inherit}
.bplan{display:flex;align-items:center;gap:14px;padding:14px 16px}
.bplan-ic{width:44px;height:44px;border-radius:12px;background:var(--brand);color:var(--on-brand);display:flex;align-items:center;justify-content:center;font-size:20px;flex:none}
.usage{display:flex;flex-direction:column;gap:6px;font-size:14px}
.usage .meter{height:6px;border-radius:3px;background:var(--sunken);overflow:hidden}.usage .meter i{display:block;height:100%;border-radius:3px}
.avform .logobox{position:relative;cursor:pointer;overflow:visible}
.avform .logobox img{border-radius:13px}
.lvrow{display:flex;align-items:center;border-top:1px solid var(--border-subtle)}
.list>.lvrow:first-child{border-top:0}
.lvrow .mrow{border:0!important;min-width:0}
.lvmove{display:flex;flex-direction:column;padding-right:8px;margin:0}
.lvmove .pen-btn{width:30px;height:24px;font-size:10px}
.lvmove .pen-btn:disabled{opacity:.25}
.clist{display:flex;flex-direction:column;gap:8px}
.clist-rows{display:flex;flex-direction:column;gap:6px}
.clrow{display:flex;gap:6px;align-items:center}.clrow input{flex:1;min-width:0}
.erow .ew.trow{grid-template-columns:1fr;padding:10px 16px}

/* Appearance chosen in My Account (data-theme on <html>) wins over the phone setting */
:root[data-theme=dark]{
  --bg:#0f0e0d;--surface:#1c1917;--sunken:#292524;--border:#3a3632;--border-strong:#78716c;--border-subtle:#2a2724;
  --ink:#f5f5f4;--ink-2:#d6d3d1;--muted:#a8a29e;--faint:#57534e;--on-ink:#1c1917;
  --brand-strong:#ffe066;--brand-tint:#2e2706;--brand-tint-2:#5c4a00;
  --success:#6ee7b7;--success-bg:#0f2e24;--confirm:#34d399;--on-confirm:#052e1f;--warning:#fdba74;--warning-bg:#3a1e0a;
  --danger:#fca5a5;--danger-bg:#3a1515;--info:#93c5fd;--info-bg:#172554;--neutral-fg:#d6d3d1;--note:#c7d2fe;--note-bg:#1e1b4b;
  --present:#34d399;--absent:#f87171;--tentative:#fb923c;--kids:#93c5fd;--kids-bg:#172554;--adults:#5eead4;--adults-bg:#0d2f2c;
  --side:#0f0e0d;--side-hover:#1c1917;color-scheme:dark}
:root[data-theme=dark]{--group:#93c5fd;--group-bg:#172554;--private:#c4b5fd;--private-bg:#2e1065}
:root[data-theme=dark]{--hol:#f9a8d4;--hol-bg:#3b0a24}
:root[data-theme=dark]{--group:#93b4fd;--group-bg:#172554;--private:#d8b4fe;--private-bg:#3b0764}
:root[data-theme=dark]{color-scheme:dark}
.invsteps{display:flex;list-style:none;margin:0;padding:0;gap:6px}
.invsteps li{flex:1;display:flex;flex-direction:column;gap:4px;font-size:12px;font-weight:600;color:var(--muted)}
.invsteps li::before{content:'';height:4px;border-radius:2px;background:var(--border)}
.invsteps li span{display:none}
.invsteps li.done{color:var(--ink-2)}.invsteps li.done::before{background:var(--ink)}
.invsteps li.now{color:var(--ink)}.invsteps li.now::before{background:var(--brand)}
.cyc{padding:14px 16px 0;display:flex;flex-direction:column;gap:12px}
.cyc-now{display:flex;flex-direction:column;gap:2px;padding-bottom:12px}
.cyc-t{font-size:18px}
.cyc-act{margin-top:10px}
.cyc .moreList summary{padding:10px 0}
/* Calendar: tabs stay pinned, the date bar pins just under them */

/* ---------- Signed-out screens (0.8.2): sign in, sign up, reset, invite ---------- */
.ao-mail{--i:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='3' y='5' width='18' height='14' rx='3'/%3E%3Cpath d='m4 7 8 6 8-6'/%3E%3C/svg%3E")}
.au{min-height:100vh;min-height:100dvh;display:flex;background:var(--surface)}
.au-main{flex:1 1 0;min-width:0;display:flex;flex-direction:column;padding:20px 20px calc(16px + env(safe-area-inset-bottom))}
.au-top{display:flex;align-items:center;justify-content:space-between;min-height:40px}
.au-logo{display:inline-flex;align-items:center;gap:10px;text-decoration:none;color:var(--ink);font:700 18px var(--display)}
.au-logo img{border-radius:8px;box-shadow:0 0 0 1px rgba(0,0,0,.08)}
.au-box{width:100%;max-width:400px;margin:0 auto;padding:40px 0 32px;display:flex;flex-direction:column;gap:20px;flex:1}
.au.wide .au-box{max-width:1120px}
.au-head{display:flex;flex-direction:column;gap:6px}
.au-head.center{text-align:center;align-items:center}
.au h1{font:700 28px/34px var(--display);letter-spacing:-.01em}
.au-sub{margin:0;color:var(--muted);font-size:15px;line-height:22px}
.au-sub b{color:var(--ink);font-weight:600;overflow-wrap:anywhere}
.au-form{display:flex;flex-direction:column;gap:16px}
.au .fld>label,.au .lbl{font-size:14px;font-weight:600;color:var(--ink)}
.au input[type=text],.au input[type=email],.au input[type=tel],.au input[type=password]{height:48px;font-size:16px;border-radius:10px;padding:0 14px}
.au input[disabled]{background:var(--sunken);color:var(--muted)}
.au .phonein select{height:48px;font-size:16px;border-radius:10px}
.au .btn.lg{height:48px;font-size:15px;border-radius:10px}
.btn.block{display:flex;width:100%}
.lblrow{display:flex;align-items:baseline;justify-content:space-between;gap:8px}
.lblrow a{font-size:13px;font-weight:500}
.pwin{position:relative}
.pwin input{width:100%;padding-right:72px!important}
.pwt{position:absolute;right:6px;top:50%;transform:translateY(-50%);height:36px;padding:0 10px;border:0;border-radius:8px;background:none;color:var(--ink-2);font:600 13px var(--font);cursor:pointer}
.pwt:hover{background:var(--sunken)}
.au-or{display:flex;align-items:center;gap:12px;color:var(--muted);font-size:13px;margin:-2px 0}
.au-or::before,.au-or::after{content:"";flex:1;height:1px;background:var(--border)}
.au-alt{margin:0;text-align:center;color:var(--muted);font-size:14px}
.au-alt.sm{font-size:13px;margin-top:-8px}
.au-alt a,.linkbtn{font-weight:600}
.linkbtn{border:0;background:none;padding:0;color:var(--brand-strong);font:inherit;font-weight:600;cursor:pointer;text-decoration:underline}
.au-fine{margin:-4px 0 0;font-size:12.5px;line-height:18px;color:var(--muted);text-align:center}
.au-icon{width:56px;height:56px;border-radius:16px;background:var(--brand-tint);color:var(--brand-strong);display:flex;align-items:center;justify-content:center;font-size:28px}
.au-note{display:flex;align-items:center;gap:8px;font-size:13px;color:var(--success);background:var(--success-bg);border-radius:10px;padding:10px 12px}
.au-more summary{cursor:pointer;font-size:14px;font-weight:600;color:var(--brand-strong);list-style:none}
.au-more summary::-webkit-details-marker{display:none}
.au-more[open] summary{margin-bottom:8px}
.au-more input{width:100%}
.au-seg{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.au-seg label,.au-plans label{position:relative;cursor:pointer}
.au-seg input,.au-plans input{position:absolute;opacity:0;pointer-events:none}
.au-seg span{display:flex;align-items:center;justify-content:center;gap:6px;height:48px;border:1px solid var(--border);border-radius:10px;font-size:15px;font-weight:500;background:var(--surface)}
.au-seg input:checked+span{border:2px solid var(--ink);font-weight:600}
.au-seg input:focus-visible+span,.au-plans input:focus-visible~.nm{outline:2px solid var(--ink);outline-offset:2px}
.au-plans{display:flex;flex-direction:column;border:1px solid var(--border);border-radius:12px;overflow:hidden}
.au-plans label{display:flex;align-items:center;gap:12px;padding:12px 14px 12px 44px;border-top:1px solid var(--border)}
.au-plans label:first-child{border-top:0}
.au-plans label::before{content:"";position:absolute;left:14px;top:50%;width:18px;height:18px;margin-top:-9px;border-radius:50%;border:1.5px solid var(--border-strong);background:var(--surface)}
.au-plans label:has(input:checked){background:var(--brand-tint)}
.au-plans label:has(input:checked)::before{border:6px solid var(--ink)}
.au-plans .nm{flex:1;min-width:0;display:flex;flex-direction:column}
.au-plans .nm b{font-size:15px}.au-plans small{font-size:12.5px;color:var(--muted)}
.au-plans .pr{text-align:right;display:flex;flex-direction:column;font-variant-numeric:tabular-nums}
.au-plans .pr b{font-size:15px}
.au-foot{display:flex;flex-wrap:wrap;justify-content:center;gap:4px 16px;font-size:12px;color:var(--muted)}
.au-foot a{color:var(--muted);text-decoration:none}.au-foot a:hover{color:var(--ink)}
.au-legal{max-width:680px;font-size:15px;line-height:24px}
/* Product panel (desktop) */
.au-side{display:none}
@media (min-width:1000px){
  .au-main{padding:28px 40px 20px}
  .au-box{padding-top:8vh}
  .au.has-side .au-side{display:flex;flex:0 0 46%;max-width:720px;background:var(--brand);color:var(--on-brand);padding:40px;align-items:center;justify-content:center;position:sticky;top:0;height:100vh}
  .au-side-in{max-width:460px;display:flex;flex-direction:column;gap:20px}
  .au-side h2{font:800 38px/44px var(--display);letter-spacing:-.02em}
  .au-side p{margin:0;font-size:16px;line-height:24px;color:#44403c}
  .au-side ul{margin:0;padding:0;list-style:none;display:flex;flex-direction:column;gap:10px;font-size:15px;font-weight:500}
  .au-side li{display:flex;gap:10px;align-items:center}
}
.au-mock{background:#fff;color:#1c1917;border-radius:16px;box-shadow:0 20px 50px -20px rgba(60,40,0,.45),0 0 0 1px rgba(0,0,0,.06);padding:6px 0;font-size:13px}
.au-mock-h,.au-mock-f{display:flex;justify-content:space-between;padding:10px 16px;color:#78716c}
.au-mock-h b{color:#1c1917;font-size:15px}
.au-mock-f{border-top:1px solid #f0efed;font-size:12.5px}.au-mock-f b{color:#1c1917}
.au-mock-r{display:flex;align-items:center;gap:12px;padding:10px 16px;border-top:1px solid #f0efed}
.au-mock-r .t{width:52px;color:#78716c;font-variant-numeric:tabular-nums}
.au-mock-r .g{flex:1;display:flex;flex-direction:column}.au-mock-r small{color:#78716c;font-size:12px}
.au-mock-r .s{font-size:12px;font-weight:600;padding:3px 8px;border-radius:6px;background:#f5f5f4;color:#57534e}
.au-mock-r .s.ok{background:#d1fae5;color:#047857}.au-mock-r .s.warn{background:#ffedd5;color:#c2410c}
/* Pricing */
.au-toggles{display:flex;flex-wrap:wrap;gap:10px;justify-content:center}
.au-pricing{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,240px),1fr));gap:16px;align-items:stretch}
.pcard{display:flex;flex-direction:column;gap:14px;border:1px solid var(--border);border-radius:16px;padding:20px;background:var(--surface)}
.pcard.pop{border:2px solid var(--ink);box-shadow:0 12px 30px -18px rgba(0,0,0,.35)}
.pcard .pn{font-size:17px}.pcard .pp{font:700 30px/36px var(--display);font-variant-numeric:tabular-nums}
.pcard .ps{font-weight:600}
.pcard ul{margin:0;padding:0;list-style:none;display:flex;flex-direction:column;gap:8px;font-size:14px;flex:1}
.pcard li{display:flex;gap:8px;align-items:center}.pcard li .ao{color:var(--success)}
.pchip{background:var(--ink);color:var(--brand)}
@media (max-width:999px){ .au-box{padding-top:28px} .au h1{font-size:26px;line-height:32px} }
@media (prefers-color-scheme:dark){:root:not([data-theme=light]) .au-logo img{box-shadow:none}}
:root[data-theme=dark] .au-logo img{box-shadow:none}
.au-plans label::before{box-sizing:border-box}
.au .lblrow label{font-size:14px;font-weight:600;color:var(--ink)}
.gbtn{background:#fff;color:#1f1f1f;border-color:#dadce0;gap:10px;font-weight:600}
.gbtn:hover{background:#f8f9fa;border-color:#c6c9cc;color:#1f1f1f}
@media (prefers-color-scheme:dark){:root:not([data-theme=light]) .gbtn{background:#131314;color:#e3e3e3;border-color:#8e918f}}
:root[data-theme=dark] .gbtn{background:#131314;color:#e3e3e3;border-color:#8e918f}
