/* Manx Grapple · v1.544 — complete charcoal / ivory interface.
   Presentation only. Belt hues, attendance/status states, QR contrast, game art
   and live timer signals are intentionally not remapped to branding colours.
   Geometry-sensitive chat, modal and clock positioning remains in index.html. */
:root {
  color-scheme: dark;
  --bg: #161616; --bg-2: #191918;
  --panel: #1e1e1c; --panel-2: #252522; --panel-3: #1a1a18; --card: #1e1e1c;
  --ink: #eae8d8; --fg: #eae8d8; --muted: #aeada2;
  --line: #3a3a34; --line-strong: #57574b;
  --brand: #eae8d8; --brand-dim: #cbc8b6; --brand-2: #f6f4e9;
  --brand-soft: rgba(234,232,216,.07); --brand-ring: rgba(234,232,216,.22);
  --manx-ivory: #eae8d8; --manx-charcoal: #161616;
  --body: "Inter",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;
  --disp: var(--body);
  --radius-s: 10px; --radius-m: 16px; --radius-l: 20px;
  --shadow-sm: 0 2px 6px rgba(0,0,0,.10);
  --shadow-md: 0 8px 24px rgba(0,0,0,.16);
  --shadow-lg: 0 20px 64px rgba(0,0,0,.38);
  --focus: 0 0 0 3px #161616,0 0 0 5px #eae8d8;
}
html, body, body[data-route] { background: #161616; }
body { color: var(--ink); -webkit-font-smoothing: antialiased; }
body::before,body::after,body > .ui-grain { display: none; }
::selection { background: #eae8d8; color: #161616; }
#app { max-width: 640px; padding:calc(24px + env(safe-area-inset-top)) 20px 28px; }
h1 { font-size:clamp(27px,5.7vw,33px); line-height:1.13; letter-spacing:-.035em; text-transform:none; font-weight:700; margin:6px 0 10px; }
h2 { font-size:20px; line-height:1.3; letter-spacing:-.018em; text-transform:none; font-weight:650; }
h3 { letter-spacing:-.012em; text-transform:none; font-weight:650; }
.disp { letter-spacing:0; }
label { color:#bfbdaf; font-family:var(--body); font-size:11px; line-height:1.5; letter-spacing:.07em; font-weight:650; }
button { color:inherit; }
a { color:var(--ink); }
hr { border-top-color:var(--line); }
small,.helper,.hint { color:var(--muted); }
.backlink { color:var(--ink); font-size:14px; gap:7px; }
/* No animated ambient gradients, cursor spotlights, floating cards or ripples. */
.card::before,.sheetcard::before,.matchbox::before,.gamecard::before,.threadrow::before,.lbrow::before,.stat::before,.ms-panel::before,.gamearea::before,.pbbay::before,.pbbench::before,
.homehead::after,.btn::after,.ck-btn::after,.ms-item::after,nav#tabs button::after,.pbp::after,.iconbtn::after,.sqbtn::after { display:none; }
#app > *,#app.ui-route-enter > * { animation:none; }
.card,.gamecard,.threadrow,.lbrow,.stat,.ms-item,.btn,.ck-btn,.iconbtn,.sqbtn,nav#tabs button {
  transition:background-color .14s ease,border-color .14s ease,color .14s ease;
}
/* Layered, matte surfaces — no blue cast or coloured drop shadows. */
.card,.sheetcard,.matchbox,.threadrow,.lbrow,.stat,.ms-panel,.classcard,.classrow,.checkinrow,.coachcard,.module,.pbhead,.pbbench,.pbbay,.gamearea,
body[data-route="coach"] .rwround,body[data-route="coach"] .rwlocksum {
  background:var(--panel); border-color:var(--line); border-radius:16px;
  box-shadow:none; backdrop-filter:none; -webkit-backdrop-filter:none;
}
.card { padding:18px; margin-bottom:12px; }
.card.tap:hover,.gamecard:hover,.threadrow:hover,.lbrow:hover,.stat:hover,.ms-item:hover {
  transform:none; box-shadow:none;
}
.card.tap:active,.threadrow:active,.lbrow:active,.gamecard:active { transform:none; }
/* Primary action = ivory, secondary = charcoal; destructive intent stays red. */
.btn,.ck-btn.primary {
  background:var(--brand); background-image:none; color:#161616; border:1px solid var(--brand);
  border-radius:11px; min-height:48px; padding:13px 17px; font-family:var(--body);
  font-size:14px; font-weight:700; line-height:1.4; letter-spacing:.015em; text-transform:none;
  box-shadow:none; text-shadow:none; filter:none;
}
.btn .ic.brand,.ck-btn.primary .ic.brand { color:inherit; }
.btn.sm { min-height:44px; border-radius:9px; padding:9px 13px; font-size:12px; }
.btn.ghost,.btn.outline,.btn.outline.cb,.btn.outline.cy,.btn.outline.cg,.btn.outline.cp {
  color:var(--ink); background:var(--panel); border:1px solid var(--line-strong); box-shadow:none;
}
.btn.danger { color:#f1a49b; border-color:#77504c; background:#2c2020; box-shadow:none; }
.btn:hover,.btn:active,.btn.ghost:hover,.btn.outline:hover,.btn.danger:hover,.ck-btn:hover { transform:none; filter:none; box-shadow:none; }
@media (hover:hover) {
  .btn:hover:not(:disabled),.ck-btn.primary:hover { background:#f6f4e9; border-color:#f6f4e9; }
  .btn.ghost:hover:not(:disabled),.btn.outline:hover:not(:disabled) { background:#2b2b26; border-color:#777667; }
  .btn.danger:hover:not(:disabled) { background:#392625; border-color:#ae7169; }
  .card.tap:hover,.threadrow:hover,.ms-item:hover { border-color:#626154; }
}
.btn:active:not(:disabled),.ck-btn.primary:active { background:#cbc8b6; border-color:#cbc8b6; }
.btn.ghost:active:not(:disabled),.btn.outline:active:not(:disabled) { background:#30302a; border-color:#858371; }
.btn.danger:active:not(:disabled) { background:#412a28; border-color:#be7c72; }
.btn:disabled { cursor:not-allowed; opacity:.46; }
.btn:focus-visible,.ck-btn:focus-visible,.ms-item:focus-visible,nav#tabs button:focus-visible,.iconbtn:focus-visible,.sqbtn:focus-visible {
  outline:2px solid var(--ink); outline-offset:3px; box-shadow:none;
}
/* Inputs retain their 16px iOS floor and ordinary control behaviour. */
input,select,textarea,.rl-modal input,.rl-modal select {
  color:var(--ink); background:#191918; border:1px solid #4a4a41; border-radius:10px;
  box-shadow:none; font-family:var(--body); font-size:16px; accent-color:var(--ink);
}
input::placeholder,textarea::placeholder { color:#969589; opacity:1; }
input:focus,select:focus,textarea:focus { border-color:#c7c4b2; box-shadow:0 0 0 3px rgba(234,232,216,.07); outline:none; }
input:focus-visible,select:focus-visible,textarea:focus-visible { outline:2px solid var(--ink); outline-offset:2px; }
input:-webkit-autofill { -webkit-text-fill-color:var(--ink); -webkit-box-shadow:0 0 0 1000px #191918 inset; caret-color:var(--ink); }
input[type="range"] { accent-color:var(--ink); }
.switchrow input[type=checkbox] { background:#35352f; border-color:#59594d; box-shadow:none; }
.switchrow input[type=checkbox]:checked { background:var(--ink); border-color:var(--ink); box-shadow:none; }
.switchrow input[type=checkbox]::after { background:#b8b6a7; }
.switchrow input[type=checkbox]:checked::after { background:#161616; }
.switch .slider { background:#424239; }
.switch input:checked + .slider { background:var(--ink); }
.switch input:checked + .slider::before { background:#161616; }
.ptog[aria-checked="true"] { background:var(--ink); }
.ptog[aria-checked="true"]::after { background:#161616; }
/* Segmented controls have an unmistakable, high-contrast selected state. */
.tabsw,.segmented,.filterbar,.chantabs { background:#1b1b19; border:1px solid var(--line); padding:4px; border-radius:12px; box-shadow:none; }
.tabsw button,.segmented button,.filterbar button,.chantab { background:transparent; color:var(--muted); border:1px solid transparent; border-radius:8px; box-shadow:none; font-size:12px; font-family:var(--body); font-weight:600; letter-spacing:.015em; }
.tabsw button.on,.segmented button.on,.filterbar button.on,.chantab.on,.chantab.coach.on,.pillrow button.on {
  background:var(--ink); color:#161616; border-color:var(--ink); box-shadow:none;
}
.pillrow button { color:var(--muted); background:var(--panel); border-color:var(--line); }
/* A measured navigation dock: all existing tabs/routes and badges retained. */
nav#tabs { max-width:612px; background:rgba(28,28,26,.97); border:1px solid #48483f; border-radius:18px; box-shadow:0 8px 28px rgba(0,0,0,.28); backdrop-filter:none; -webkit-backdrop-filter:none; }
nav#tabs .inner { max-width:none; padding:7px 6px; gap:3px; }
nav#tabs button { display:flex; flex-direction:column; justify-content:center; gap:5px; min-height:54px; padding:6px 2px; border:1px solid transparent; border-radius:11px; color:#aaa99b; margin:0; box-shadow:none; }
nav#tabs button svg,nav#tabs button svg.navfill { width:21px; height:21px; }
nav#tabs .nav-label { font-family:var(--body); font-size:9px; line-height:1.1; font-weight:600; letter-spacing:0; }
nav#tabs button.on,nav#tabs button.on:hover { background:var(--ink); border-color:var(--ink); color:#161616; box-shadow:none; }
nav#tabs button:not(.on):hover { background:#30302a; color:var(--ink); }
nav#tabs button:active { transform:none; }
nav#tabs .navbadge { background:var(--ink); border-color:#161616; color:#161616; box-shadow:none; top:3px; }
nav#tabs button.on .navbadge { background:#161616; color:var(--ink); }
@media (min-width:375px) and (max-width:399px) {
  nav#tabs .inner:has(>button:nth-child(7)) { display:flex; gap:2px; padding-left:4px; padding-right:4px; }
}
/* Home — the wordmark, member identity, one strong action and quiet utilities. */
.home-brand { display:flex; justify-content:center; padding:4px 0 24px; }
.home-brand img { display:block; width:min(57%,220px); height:auto; object-fit:contain; }
.homehead,body[data-route="home"] .homehead { background:var(--panel); border:1px solid #46463c; border-radius:20px; box-shadow:none; padding:18px; backdrop-filter:none; -webkit-backdrop-filter:none; }
.homehead h1 { font-size:clamp(23px,5.2vw,29px); letter-spacing:-.025em; margin:0 0 6px; }
#avatarWrap { background:#2b2b26; border:1px solid #4a4a40; border-radius:16px; box-shadow:none; width:68px; height:68px; }
.avedit { background:var(--ink); color:#161616; box-shadow:none; }
.capsrow { gap:8px; margin-top:12px; }
.homehead .capsule { letter-spacing:.02em; }
.bookrow { gap:10px; margin-top:20px; }
.bookrow .sqbtn { border-radius:11px; }
.homerows { gap:10px; margin-top:14px; }
.homerows > .btn { text-align:left; padding-left:17px; }
.homerows > .btn.outline { border-color:var(--line); min-height:52px; }
.homerows > .btn.outline .ic { color:var(--ink); }
/* Membership categories are neutral; balances/on-hold retain semantic colour. */
.capsule.unlimited,.capsule.weekly,.capsule.payg,.capsule.coach_comp,.capsule.admin_comp,.capsule.other,.capsule.visitor {
  color:#d6d3c2; background:#262620; border-color:#4b4b3f; box-shadow:none;
}
.capsule { font-size:11px; letter-spacing:.02em; line-height:1.4; padding:4px 10px; }
.capsule.needs_payment { color:#e4c481; background:#2e291e; border-color:#6b5b32; }
.capsule.balClear { color:#aed0b7; background:#1c2820; border-color:#3b5945; }
.capsule.balDue { color:#eeada2; background:#2e201f; border-color:#75524a; }
.cntpill,.navbadge { background:var(--ink); color:#161616; border-color:var(--ink); box-shadow:none; }
.statcap,.statcap.sc0,.statcap.sc1,.statcap.sc2,.statcap.sc3,.statcap.sc4 { color:#d1cebc; background:#292922; border-color:#505044; box-shadow:none; }
.statgrid { gap:10px; }
.statgrid .stat { background:var(--panel); border:1px solid var(--line); border-radius:14px; padding:16px 8px; min-height:94px; }
.statgrid .stat.hot { border-color:#64624f; box-shadow:none; }
.stat .n { font-family:var(--body); font-size:30px; font-weight:650; letter-spacing:-.04em; font-variant-numeric:tabular-nums; }
.stat .l { font-size:10px; letter-spacing:.07em; color:var(--muted); font-weight:500; }
/* Accordions and management screens, including nested forms and tier editor. */
.acc > summary { background:var(--panel); border:1px solid var(--line); border-radius:12px; box-shadow:none; min-height:54px; padding:12px 15px; color:var(--ink); font-family:var(--body); font-size:13px; font-weight:600; letter-spacing:.01em; text-transform:none; }
.acc[open] > summary { border-color:#565648; border-bottom-left-radius:12px; border-bottom-right-radius:12px; }
.acc > summary::after { color:#a7a596; }
.acc .accbody { background:var(--panel-3); border:1px solid var(--line); border-radius:12px; margin-top:8px; padding:15px; box-shadow:none; }
.acc.plain .accbody { background:transparent; border:0; padding:8px 0 0; }
.acc .acc .accbody { background:#20201c; }
.mcard { border-radius:12px; }
.mcard .mprice { font-family:var(--body); font-size:11px; letter-spacing:0; }
.mcard .mcap { font-size:10px; line-height:1.35; text-transform:none; }
.mcard .mname strong { font-weight:650; letter-spacing:-.01em; }
.mcard .mrole .chip { letter-spacing:.01em; opacity:1; }
.tabpill,.aipill { box-shadow:none; }
.aipill { color:#cfccb9; border-color:#5f5f50; background:#2b2b23; }
.tabitem { padding-top:12px; padding-bottom:12px; }
.tabtotal { padding-top:14px; }
.tabtotal strong { font-variant-numeric:tabular-nums; }
/* Sessions and Focus Vote. Gi/no-gi remain explicitly labelled. */
.card.event,.eventstrip { border:1px solid #6b6956; background:#24241f; box-shadow:none; }
.eventstrip:hover { background:#2b2b24; }
.eventstrip .es-sub { color:var(--muted); }
.chip.gi { color:#c9d3da; border-color:#56616a; background:#23272a; }
.chip.nogi,.chip.event { color:var(--ink); border-color:#666452; background:#29291f; }
.pincap { background:#292920; border:1px solid #62614e; border-radius:12px; padding:12px 14px; }
.pincap .pincap-t { color:var(--ink); font-family:var(--body); font-size:14px; }
.pincap .pincap-d { color:var(--muted); }
.pincap .pincap-book { color:#161616; background:var(--ink); }
.card.wknote { border-color:var(--line); box-shadow:none; padding:0; }
.wknote-h { background:#282820; color:var(--ink); border-bottom:1px solid var(--line); font-family:var(--body); text-transform:none; font-size:13px; font-weight:650; letter-spacing:.01em; }
.wknote-b { color:#cbc8b8; }
.focus-chip { background:#23231f; border-color:#515145; color:var(--ink); font-size:14px; box-shadow:none; }
.focus-chip.on { background:var(--ink); color:#161616; border-color:var(--ink); }
.focus-chip:active { transform:none; }
.focus-chip:hover { background:#33332b; border-color:#8a8877; }
.focus-chip.on:hover { background:#f6f4e9; color:#161616; }
.focus-count,.focus-count-new { background:#303027; border-color:#696653; color:var(--ink); }
.focus-head { color:var(--ink); }
/* Chat: keep original tile alpha/size and pinned composer geometry. */
.chatscreen { max-width:640px; padding-left:20px; padding-right:20px; }
.chat-head { padding-top:9px; padding-bottom:6px; }
.chat-head h1 { font-size:25px; letter-spacing:-.025em; }
#chatwrap[data-channel="coaches"] { outline:1px solid #777461; background:#1d1d19; border-radius:12px; }
#chatwrap[data-channel="coaches"] #chatbar { border-top-color:#5c5a48; }
.coachbadge { background:#33332a; border:1px solid #68644e; color:var(--ink); font-size:9px; letter-spacing:.06em; box-shadow:none; }
.chantab { min-height:44px; }
.msg .bub { background:#252523; color:var(--ink); border-color:#3c3c35; border-radius:14px 14px 14px 4px; box-shadow:none; padding:10px 12px; }
.msg.mine .bub { background:#34342a; color:#f0eddc; border-color:#55533f; border-radius:14px 14px 4px 14px; }
.msg .bub a,.msg .bub .mention,.msg.mine .bub a,.msg.mine .bub .mention { color:#ece8cc; text-underline-offset:3px; }
.msg .bub .pollbox { min-width:min(228px,100%); }
.pollhint,.pollck,.plab,.bmeta { color:#b3b0a0; }
.pollopt { min-height:44px; }
.pollopt.sel .pollck { color:var(--ink); }
.pollbar { background:#454536; }
.pollbar > span { background:var(--ink); }
.pollct,.pollview { color:var(--ink); }
.daysep { font-size:10px; letter-spacing:.06em; margin-top:18px; }
#chatbar { border-top-color:var(--line); }
.chatpill { background:#232320; border-color:#4e4e42; box-shadow:none; }
.chatpill textarea { color:var(--ink); background:transparent; box-shadow:none; }
.chatpill textarea:focus,.chatpill textarea:focus-visible { box-shadow:none; outline:none; }
.chatpill:focus-within { border-color:#bab6a0; }
.actbtn,#chatwrap[data-channel="coaches"] .sendbtn { background:var(--ink); color:#161616; box-shadow:none; }
.actbtn.recording { background:#b92f2f; color:white; }
.react { color:var(--ink); background:#24241f; border-color:#48483c; box-shadow:none; }
.react.mine { background:#353427; border-color:#aaa68d; }
.quote,.msg.mine .quote { background:rgba(0,0,0,.15); border-left-color:#ccc8ac; }
.quote .qname { color:var(--ink); }
#replybar,#editbanner { background:#2b2b23; border-color:#6b6954; color:var(--ink); }
.threadrow { background:var(--panel); border:1px solid var(--line); border-radius:14px; padding:16px; }
.threadrow.unread { background:#26261f; border-color:#66634d; }
.threadrow.unread::after { background:#d8d3b8; box-shadow:none; }
.tr-name { font-family:var(--body); font-size:15px; font-weight:650; }
.tr-prev { color:var(--muted); font-size:13px; }
.tr-av { box-shadow:none; }
.iconbtn { background:var(--panel-2); color:var(--ink); border-color:var(--line); border-radius:10px; }
#emojipanel,#gifpanel,#mentionbox,.reactmenu,.seentip,.rl-modal .box { background:#22221e; border-color:#535344; box-shadow:var(--shadow-md); }
.seentip .tt-h { background:#22221e; }
#mentionbox .mrow:hover,#mentionbox .mrow.sel,#emojipanel .emtab.on,#emojipanel .emoji:hover { background:#36362c; }
/* Modal sheets keep their fixed positioning, safe areas, scroll and z-indices. */
.sheet { background:rgba(0,0,0,.7); backdrop-filter:none; -webkit-backdrop-filter:none; }
.sheetcard,.matchbox,.ms-panel,.rl-modal .box { background:#20201c; border:1px solid #505043; border-radius:20px; box-shadow:var(--shadow-lg); }
#moresheet .ms-panel { background:#20201c; max-width:612px; margin:0 auto; border:1px solid #505043; border-bottom:0; border-radius:20px 20px 0 0; }
#moresheet .ms-item { background:#262620; border:1px solid #424237; border-radius:11px; color:var(--ink); font-family:var(--body); text-transform:none; font-size:14px; letter-spacing:0; }
#moresheet .ms-item:hover { background:#323228; }
.attachrow { color:var(--ink); border-radius:9px; }
.attachrow:hover { background:#303027; }
#toast { background:#303027; color:var(--ink); border-color:#68644d; border-radius:12px; box-shadow:var(--shadow-md); }
#loadveil { background:rgba(22,22,22,.5); backdrop-filter:none; -webkit-backdrop-filter:none; }
.spin,#loadveil .spin { border-color:#4c4c41; border-top-color:var(--ink); filter:none; }
/* Functional status surfaces remain visibly different from neutral branding. */
.okmsg { background:#1e2a22; border-color:#425f4a; color:#b9d9c2; box-shadow:none; }
.warnbar { background:#2e291d; border-color:#74603a; color:#e6cb90; box-shadow:none; }
.err { background:#30201f; border-color:#80524c; color:#f0b5ac; box-shadow:none; }
.okmsg,.warnbar,.err { border-radius:11px; }
/* Game artwork and canvas palettes are not washed out by the interface theme. */
.gamecard:not(.featured) { background:var(--panel); border-color:var(--line); border-radius:16px; box-shadow:none; }
.gamecard.featured { border:1px solid #565443; border-radius:18px; box-shadow:none; }
.gamecard.featured .featinner { background:linear-gradient(0deg,rgba(15,15,13,.96),rgba(15,15,13,.4),transparent); }
.gamecard.featured h2 { font-family:"Barlow Condensed","Arial Narrow",sans-serif; font-size:36px; font-weight:700; text-transform:uppercase; }
.gamecard.featured p { color:#dedac8; }
.gamearea { background:#191917; border-color:var(--line); }
.lbrow { border-radius:11px; }
/* Clock controller chrome only. Rest, prestart, running, bench and belt hues stay. */
body[data-route="coach"] h1,body[data-route="clock"] h1 { font-size:30px; }
.ck-wrap { background:#161616; border-radius:0; border:0; box-shadow:none; }
.ck-logo { color:var(--ink); }
.ck-next,.ck-date,.muted.ck-hint { color:var(--muted)!important; }
.ck-timer,.ck-clock,.ckc-timer,.ck-code { font-family:"Barlow Condensed","Arial Narrow",sans-serif; text-shadow:none; }
.ck-clock,.ck-pairboard,.ck-code,.ckhelp,.ckc-grid,.ckc-pairlist { background:#1d1d19; border-color:#444439; box-shadow:none; border-radius:14px; }
.ck-qrbox,.qrbox { background:#fff; }
.ck-btn { background:#292923; border-color:#535344; color:var(--ink); box-shadow:none; border-radius:10px; }
.ck-btn.primary { background:var(--ink); color:#161616; border-color:var(--ink); }
.ck-chip,.ckc-chip { background:rgba(234,232,216,.05); }
#ckPBay { background:var(--bg); }
#ckPBay .pbbay { background:var(--panel-3); border-color:var(--line); box-shadow:none; }
#ckPBay .pbp { box-shadow:none; }
#ckPBay .pbp.arming,#ckPBay .pbp.target { box-shadow:0 0 0 3px rgba(234,232,216,.35); }
#ckPBay .pbp.out .pbx { color:#161616; }
#tvpairs { background:#20201c; border-color:#4b4b40; box-shadow:none; border-radius:14px; }
.rl-role,.rl-cap,.rl-row { border-color:var(--line); }
/* Safer small-screen rhythm; do not change fixed overlay or timer z-order. */
@media (max-width:420px) {
  #app { padding-left:16px; padding-right:16px; }
  .chatscreen { padding-left:14px; padding-right:14px; }
  .card { padding:15px; border-radius:14px; }
  .homehead,body[data-route="home"] .homehead { padding:16px; }
  .statgrid .stat { padding:14px 7px; min-height:88px; }
  .stat .n { font-size:27px; }
  .acc > summary { padding-left:13px; padding-right:13px; }
  .acc .accbody { padding:12px; }
}
@media (max-width:359px) {
  #app { padding-left:12px; padding-right:12px; }
  .chatscreen { padding-left:10px; padding-right:10px; }
  .homehead,body[data-route="home"] .homehead { gap:10px; padding:13px; }
  #avatarWrap { width:58px; height:58px; }
  .homehead h1 { font-size:22px; }
  .card { padding:13px; }
  nav#tabs .inner:has(>button:nth-child(7)) { display:grid; grid-template-columns:repeat(4,minmax(44px,1fr)); }
}
@media (prefers-reduced-motion:reduce) {
  *,*::before,*::after { animation:none!important; transition:none!important; scroll-behavior:auto!important; }
}


/* Fine detail and colour-contract exceptions. */
nav#tabs::before,.ck-wrap::before,.gamecard.featured::after { display:none; }
nav#tabs button.on svg { transform:none; filter:none; }
.homerows > .btn + .btn { margin-top:0!important; }
.streak-icon { width:28px; height:28px; display:flex; align-items:center; justify-content:center; flex:none; color:#d3ceb1; }
.streak-icon + div .disp { text-transform:none; font-weight:600; letter-spacing:-.01em; }
#msgsBtn,#dashBtn,#infoBtn,#pubProfBtn { display:flex; align-items:center; gap:12px; text-align:left; padding:14px 15px; font-size:14px; font-weight:550; }
#msgsBtn::after,#dashBtn::after,#infoBtn::after,#pubProfBtn::after { content:"›"; display:block; position:static; left:auto; top:auto; width:auto; height:auto; opacity:1; transform:none; background:none; border-radius:0; font:400 22px/1 var(--body); color:#9d9b89; margin-left:auto; z-index:auto; }
#msgsBtn::before,#dashBtn::before,#infoBtn::before,#pubProfBtn::before { content:""; display:block; width:19px; height:19px; flex:none; background:#c1bda7; mask-position:center; mask-repeat:no-repeat; mask-size:contain; -webkit-mask-position:center; -webkit-mask-repeat:no-repeat; -webkit-mask-size:contain; }
#focusToggle .wknote-h { background:none; border:0; padding:6px 0; font-size:14px; }
#focusSubmit { width:auto; max-width:100%; padding-left:15px; padding-right:15px; }
.weekband { background:#29291f; color:var(--ink); border:1px solid #55533f; font-size:11px; font-weight:650; letter-spacing:.11em; border-radius:9px; padding:11px 13px; }
.dayhead { font-size:12px; letter-spacing:.035em; font-weight:600; border-color:var(--line); }
.stt { background:var(--panel); border-color:var(--line); border-radius:14px; box-shadow:none; }
.stt .n { font-family:var(--body); font-size:30px; line-height:1.2; font-weight:650; letter-spacing:-.045em; }
.stt .n[style*="#7dd3fc"],.stt .n[style*="#fb923c"],.stt .n[style*="#e8e4dc"] { color:var(--ink)!important; }
.stt .ic { color:#c9c4aa; }
.stt .l { font-size:10px; letter-spacing:.045em; }
.stgrid { gap:10px; }
.infohl { border-color:#65624d; box-shadow:none; }
.reactwho { background:#252520; border-color:#5b5845; }
.pf-games,.pf-belts { background:var(--panel); border-color:var(--line); }
/* Gameplay instructions explicitly promise an orange go cue. This is not a brand colour. */
.gamearea.go { background:#ea580c; border-color:#ea580c; }
.gamearea.go .gamebig { color:#161616; }
.ck-timer { background:none; -webkit-background-clip:initial; background-clip:initial; color:var(--ink); }
.ck-rest .ck-timer { color:#f59e0b; }
#msgsBtn::before { mask-image:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%221.6%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Crect%20x%3D%223%22%20y%3D%224%22%20width%3D%2218%22%20height%3D%2214%22%20rx%3D%224%22/%3E%3Cpath%20d%3D%22m7%2018-2%203v-4m3-8h8m-8%204h5%22/%3E%3C/svg%3E"); -webkit-mask-image:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%221.6%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Crect%20x%3D%223%22%20y%3D%224%22%20width%3D%2218%22%20height%3D%2214%22%20rx%3D%224%22/%3E%3Cpath%20d%3D%22m7%2018-2%203v-4m3-8h8m-8%204h5%22/%3E%3C/svg%3E"); }
#dashBtn::before { mask-image:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%221.6%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Cpath%20d%3D%22M4%2020V4m0%2016h16M8%2016v-4m5%204V8m5%208V4%22/%3E%3C/svg%3E"); -webkit-mask-image:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%221.6%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Cpath%20d%3D%22M4%2020V4m0%2016h16M8%2016v-4m5%204V8m5%208V4%22/%3E%3C/svg%3E"); }
#infoBtn::before { mask-image:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%221.6%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Ccircle%20cx%3D%2212%22%20cy%3D%2212%22%20r%3D%229%22/%3E%3Cpath%20d%3D%22M12%2011v6m0-10v1%22/%3E%3C/svg%3E"); -webkit-mask-image:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%221.6%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Ccircle%20cx%3D%2212%22%20cy%3D%2212%22%20r%3D%229%22/%3E%3Cpath%20d%3D%22M12%2011v6m0-10v1%22/%3E%3C/svg%3E"); }
#pubProfBtn::before { mask-image:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%221.6%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Ccircle%20cx%3D%2212%22%20cy%3D%228%22%20r%3D%223.5%22/%3E%3Cpath%20d%3D%22M4%2021v-2a8%208%200%200%201%2016%200v2%22/%3E%3C/svg%3E"); -webkit-mask-image:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%221.6%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Ccircle%20cx%3D%2212%22%20cy%3D%228%22%20r%3D%223.5%22/%3E%3Cpath%20d%3D%22M4%2021v-2a8%208%200%200%201%2016%200v2%22/%3E%3C/svg%3E"); }

/* Authentication: retained brand layout, consistent with the shared theme. */
body.auth-open {
  --brand: #eae8d8;
  --brand-dim: #d5d2be;
  --brand-2: #f4f2e4;
  --brand-soft: rgba(234,232,216,.08);
  --brand-ring: rgba(234,232,216,.24);
  --line: #3b3b35;
  --panel: #1e1e1b;
  --panel-2: #242420;
  --ink: #eae8d8;
  --muted: #b2b1a7;
  --focus: 0 0 0 3px rgba(234,232,216,.18), 0 0 0 1px #eae8d8;
  min-height: 100vh;
  min-height: 100dvh;
  padding-bottom: env(safe-area-inset-bottom);
  background: #161616;
}
body.auth-open #app {
  max-width: 520px;
  min-height: 100vh;
  min-height: 100dvh;
  margin: 0 auto;
  padding: max(30px, env(safe-area-inset-top)) 24px max(24px, env(safe-area-inset-bottom));
  display: flex;
  align-items: center;
}
.auth-page { width: 100%; margin: auto 0; }
.auth-brand { text-align: center; padding: 0 12px; margin: 0 0 30px; }
.auth-brand .logo-lockup {
  display: block;
  width: min(88%, 318px);
  max-width: 100%;
  height: auto;
  margin: 0 auto 21px;
  object-fit: contain;
}
.auth-location {
  font: 600 10px/1.5 var(--body);
  letter-spacing: .22em;
  color: #b6b4a6;
}
.auth-location span { display: inline-block; margin: 0 10px; color: #77766d; }
.auth-demo {
  display: inline-block; margin-top: 14px; padding: 4px 10px;
  border: 1px solid #55554d; border-radius: 4px; font-size: 11px;
  color: #eae8d8; text-transform: uppercase; letter-spacing: .12em;
}
.auth-card {
  background: #1c1c1a;
  border: 1px solid #383831;
  border-radius: 22px;
  padding: 28px;
  box-shadow: 0 18px 50px rgba(0,0,0,.16);
}
.auth-intro { margin-bottom: 23px; }
.auth-intro h1 {
  font-family: var(--disp);
  font-size: clamp(32px, 7vw, 42px);
  font-weight: 700;
  line-height: 1.06;
  letter-spacing: .015em;
  color: #eae8d8;
  margin: 0 0 9px;
}
.auth-intro p { font-size: 14px; line-height: 1.6; color: #b2b1a7; margin: 0; }
.auth-page .tabsw {
  display: flex; gap: 5px; padding: 4px; margin: 0 0 25px;
  border: 1px solid #34342f; border-radius: 11px;
  background: #161616; box-shadow: none;
}
.auth-page .tabsw button {
  min-height: 44px; padding: 9px 10px; border: 1px solid transparent;
  border-radius: 7px; background: transparent; color: #b6b4a6;
  font-family: var(--disp); font-size: 16px; font-weight: 600;
  letter-spacing: .08em; box-shadow: none;
}
.auth-page .tabsw button.on {
  background: #eae8d8; border-color: #eae8d8; color: #161616;
  box-shadow: none;
}
.auth-page .tabsw button:not(.on):hover { background: #262620; color: #eae8d8; }
.auth-page label { color: #c3c1b4; font-size: 11px; line-height: 1.5; letter-spacing: .08em; margin-bottom: 7px; }
.auth-page input:not([type="checkbox"]), .auth-page select, .auth-page textarea {
  width: 100%; min-height: 50px; padding: 13px 15px;
  background: #161616; color: #eae8d8; border: 1px solid #45453c;
  border-radius: 9px; box-shadow: none;
  font-size: 16px; margin-bottom: 20px;
}
.auth-page input::placeholder, .auth-page textarea::placeholder { color: #929184; opacity: 1; }
.auth-page input:focus, .auth-page textarea:focus {
  border-color: #eae8d8; box-shadow: 0 0 0 3px rgba(234,232,216,.08); outline: none;
}
.auth-page input:focus-visible, .auth-page button:focus-visible, .auth-page summary:focus-visible {
  outline: 2px solid #eae8d8; outline-offset: 3px;
}
.auth-page input:-webkit-autofill {
  -webkit-text-fill-color: #eae8d8;
  -webkit-box-shadow: 0 0 0 1000px #161616 inset;
  caret-color: #eae8d8;
}
.auth-page .btn {
  min-height: 52px; padding: 14px 18px; margin: 5px 0 0;
  border: 1px solid #eae8d8; border-radius: 9px;
  background: #eae8d8; background-image: none;
  color: #161616; font-family: var(--disp); font-size: 18px;
  font-weight: 700; letter-spacing: .08em; text-transform: uppercase;
  box-shadow: none; text-shadow: none; filter: none;
}
.auth-page .btn:hover:not(:disabled) { background: #f5f3e6; border-color: #f5f3e6; box-shadow: none; filter: none; }
.auth-page .btn:active:not(:disabled) { background: #d5d2be; border-color: #d5d2be; transform: translateY(1px); }
.auth-page .btn:disabled { background: #eae8d8; opacity: .5; transform: none; }
.auth-page .btn::after { display: none; }
.auth-page .linkline {
  min-height: 44px; display: flex; justify-content: center; align-items: center;
  margin-top: 10px; padding: 9px 2px; color: #c3c1b4; font-size: 13px;
}
.auth-page .linkline:hover { color: #eae8d8; text-decoration: underline; text-underline-offset: 3px; }
.auth-page .waiverbox {
  background: #242420; color: #eae8d8; border: 1px solid #45453c;
  border-radius: 12px; padding: 17px; margin: 18px 0;
}
.auth-page .waiverbox h3 { color: #eae8d8; font-size: 17px; line-height: 1.25; margin-bottom: 12px; }
.auth-page .waiverbox .wtext {
  color: #c9c7ba; background: #191917; border-radius: 6px; padding: 12px;
  max-height: 190px; font-size: 12px; line-height: 1.6;
}
.auth-page .waiverbox .wtext * { color: inherit; }
.auth-page .waiverbox .wtext p { margin: 0 0 12px; }
.auth-page .waiverbox .wtext p:last-child { margin-bottom: 0; }
.auth-page .waiverbox label { color: #eae8d8; font-size: 12px; font-weight: 500; line-height: 1.55; letter-spacing: 0; text-transform: none; align-items: flex-start; }
.auth-page input[type="checkbox"] { accent-color: #eae8d8; margin: 1px 0 0; }
.auth-page summary { min-height: 40px; padding: 8px 0; color: #b2b1a7; }
.auth-page .okmsg, .auth-page .err { margin: 0 0 18px; font-size: 13px; line-height: 1.5; border-radius: 9px; box-shadow: none; }
.auth-footer {
  display: flex; align-items: center; justify-content: space-between; gap: 10px;
  margin: 22px 4px 0; color: #a5a396; font-size: 10px; line-height: 1.5;
}
.auth-footer span:first-child { font-size: 9px; letter-spacing: .14em; font-weight: 600; }
@media (max-width: 380px) {
  body.auth-open #app { padding-left: 16px; padding-right: 16px; }
  .auth-card { padding: 23px 19px; border-radius: 18px; }
  .auth-brand { margin-bottom: 24px; }
  .auth-brand .logo-lockup { width: min(86%, 270px); }
  .auth-location { font-size: 9px; letter-spacing: .16em; }
}
@media (max-height: 700px) {
  body.auth-open #app { align-items: flex-start; padding-top: max(22px, env(safe-area-inset-top)); }
  .auth-brand { margin-bottom: 20px; }
  .auth-brand .logo-lockup { max-width: 245px; margin-bottom: 14px; }
  .auth-card { padding-top: 23px; padding-bottom: 20px; }
}
@media (prefers-reduced-motion: reduce) {
  .auth-page *, .auth-page *::before, .auth-page *::after { animation: none !important; transition: none !important; }
}

/* Final integration: real poll sheets, secondary roster counts and hierarchy. */
:root { --bg2:#1e1e1c; }
.psheet-wrap { background:rgba(0,0,0,.72); }
.psheet { background:#20201c; border:1px solid #535344; border-radius:20px 20px 0 0; box-shadow:0 -8px 48px rgba(0,0,0,.22); }
.psheet-x { color:var(--ink); width:44px; height:44px; right:5px; top:4px; border-radius:10px; }
.psheet h2 { padding-right:38px; }
.psheet-x:hover { background:#303027; }
.psheet .attachrow { min-height:56px; }
.psheet .gifchip { color:var(--ink); border-color:#777361; }
.psheet .ptog { flex-shrink:0; }
.acc > summary .tabpill { border-color:#59594b; background:#2c2c25; color:var(--ink); }
.acc .acc > summary,.acc[open] .acc > summary { background:#20201c; border-color:var(--line); }
.acc.rl-power > summary { border-color:#7b7660; }
.acc.rl-power .accbody { background:#25251f; }
.rl-tag { background:#303027; border-color:#65614c; color:#eae8d8; }
.rl-row input:checked ~ .rl-sw::after { background:#161616; }
.card .row:first-child strong.disp,.sessionlink { text-transform:none; letter-spacing:-.012em; }
.cntpill { background:#eae8d8; border-color:#eae8d8; color:#161616; box-shadow:none; }
.threadrow { margin-bottom:8px; }
@keyframes qflash { 0%,100%{background:transparent}30%{background:rgba(234,232,216,.18)} }

/* Template whitespace is content in a chat bubble, but not in poll controls. */
.msg .bub .pollbox { white-space:normal; padding:2px 0; }
.msg .bub .pollq { line-height:1.4; margin:0 0 5px; }
.msg .bub .pollhint { margin-bottom:9px; }
.msg .bub .pollopt { padding:9px 0; min-height:52px; }
.msg .bub .pollfoot { gap:10px; margin-top:10px; line-height:1.5; flex-wrap:wrap; }
.msg .bub .pollview { min-height:32px; }
/* Secondary copy in filled ivory buttons must still have strong contrast. */
.btn:not(.ghost):not(.outline):not(.danger) .muted,.ck-btn.primary .muted { color:#555548!important; }
/* Keep variable-length training dashboards balanced rather than 3 + 1. */
.stgrid:has(> .stt:nth-child(4)):not(:has(> .stt:nth-child(5))) { grid-template-columns:repeat(2,minmax(0,1fr)); }
.stgrid:has(> .stt:nth-child(5)) { grid-template-columns:repeat(6,minmax(0,1fr)); }
.stgrid:has(> .stt:nth-child(5)) > .stt { grid-column:span 2; }
.stgrid:has(> .stt:nth-child(5)) > .stt:nth-child(n+4) { grid-column:span 3; }
@media (max-width:359px) { .stt .n { font-size:25px; } }
/* Keep permission prose readable; uppercase is reserved for compact metadata. */
.disp { text-transform:none; }
.rl-row,.switchrow { text-transform:none; letter-spacing:0; }
.rl-txt b { color:var(--ink); font-size:14px; font-weight:600; letter-spacing:0; }
.rl-txt i { color:var(--muted); font-size:12px; font-weight:400; line-height:1.5; letter-spacing:0; }

/* v1.544 · One type system, one clear Home hierarchy.
   Inter is loaded by the existing optional Google Fonts stylesheet. System
   sans remains a no-network fallback. Game art and large clock digits retain
   their separate condensed/pixel treatment. No font binaries are packaged. */
:root {
  --body:"Inter",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;
  --disp:var(--body);
  --home-gap:24px;
}
body { font-family:var(--body); font-optical-sizing:auto; font-weight:400; }
h1,h2,h3,.disp { font-family:var(--disp); }
h1,h2,h3 { font-weight:600; }
.btn { font-weight:600; letter-spacing:0; }
label { letter-spacing:.025em; }
.auth-intro h1 { font-weight:600; letter-spacing:-.035em; }
.auth-page .tabsw button,.auth-page .btn { font-family:var(--body); font-size:14px; font-weight:600; letter-spacing:0; text-transform:none; }
.auth-page label { font-size:12px; letter-spacing:0; text-transform:none; }
nav#tabs .nav-label { font-size:10px; font-weight:500; }
.stat .n,.stt .n,.mprice,.tabtotal,.tabitem .ti-amt { font-variant-numeric:tabular-nums; }

/* Layout is scoped to the Home markup. No positioning/route assumptions
   escape into chat, Admin, the mat clock or installed-app safe-area logic. */
#app:has(> .home-page) {
  max-width:620px;
  padding:calc(24px + env(safe-area-inset-top)) 20px 24px;
}
.home-page { display:flex; flex-direction:column; gap:var(--home-gap); }
.home-page .home-masthead {
  display:flex; align-items:center; justify-content:space-between; gap:20px;
  padding:0 0 20px; border-bottom:1px solid #343430;
}
.home-page .home-brand { display:block; padding:0; flex:none; }
.home-page .home-brand img { width:156px; height:auto; display:block; }
.home-masthead-label { font-size:10px; font-weight:500; color:#a9a89d; letter-spacing:.09em; text-transform:uppercase; }
.home-intro { display:flex; flex-direction:column; gap:16px; }
.home-page .homehead,body[data-route="home"] .home-page .homehead {
  display:flex; align-items:center; justify-content:space-between; gap:20px;
  background:none; border:0; padding:0; margin:0; border-radius:0; box-shadow:none;
}
.home-identity { min-width:0; }
.home-eyebrow { color:#afaea2; font-size:11px; line-height:1.4; font-weight:500; letter-spacing:.035em; margin:0 0 6px; }
.home-page .homehead h1 { font-size:clamp(24px,6vw,30px); line-height:1.18; font-weight:600; letter-spacing:-.045em; margin:0; overflow-wrap:anywhere; }
.home-rank { display:flex; align-items:center; gap:10px; flex-wrap:wrap; margin-top:10px; color:#b5b3a7; font-size:12px; }
.home-page #avatarWrap { width:56px; height:56px; border-radius:18px; border:1px solid #41413a; background:#23231f; box-shadow:none; }
.home-page #avatarWrap .avatar { width:48px; height:48px; }
.home-page .avedit { width:18px; height:18px; font-size:10px; color:#161616; box-shadow:none; }
.home-membership-line { display:flex; flex-wrap:wrap; align-items:center; gap:8px 16px; font-size:12px; line-height:1.55; color:#c1bfb1; }
.home-membership-name { min-width:0; overflow-wrap:anywhere; }
.home-balance { color:#a6c2ad; white-space:nowrap; }
.home-balance.is-due { color:#e8aaa0; }
.home-balance::before { content:""; display:inline-block; width:4px; height:4px; border-radius:50%; background:currentColor; vertical-align:3px; margin-right:7px; }
.home-workspace { display:grid; grid-template-columns:minmax(0,1fr); gap:var(--home-gap); align-items:start; }
.home-main-column { display:flex; flex-direction:column; gap:var(--home-gap); min-width:0; }
.home-panel { padding:20px; background:#20201d; border:1px solid #3b3b34; border-radius:18px; }
.home-training { display:flex; flex-direction:column; gap:16px; }
.home-page h2.home-section-title,.home-section-heading h2 { font-size:15px; line-height:1.4; font-weight:600; letter-spacing:-.02em; margin:0; text-transform:none; }
.home-page h2.home-section-title { margin:0 0 12px; }
.home-section-heading { display:flex; align-items:center; justify-content:space-between; gap:12px; }
.home-section-icon { color:#a4a28f; display:flex; align-items:center; }
.home-next { padding-top:2px; }
.home-next h3 { margin:0; font-size:23px; line-height:1.3; font-weight:600; letter-spacing:-.035em; text-transform:none; overflow-wrap:anywhere; }
.home-next .home-eyebrow { font-size:11px; margin-bottom:7px; color:#aaa899; }
.home-next-meta { display:flex; align-items:center; flex-wrap:wrap; gap:6px; margin:8px 0 0; color:#b9b7a9; font-size:13px; line-height:1.55; }
.home-next-empty h3 { font-size:22px; }
.home-page .home-training .btn { display:flex; align-items:center; justify-content:center; gap:8px; width:100%; min-width:0; min-height:48px; margin:0; padding:12px; line-height:1.5; font-family:var(--body); font-size:13px; font-weight:600; border-radius:10px; text-transform:none; letter-spacing:0; }
.home-training .home-primary { border-color:#eae8d8; }
.home-page .home-training #nextClassBtn { justify-content:space-between; min-height:50px; padding:13px 16px; font-size:14px; }
.home-training-actions { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:12px; }
.home-page .home-training .btn.outline { border:1px solid #545347; background:transparent; }
.home-page .home-training .btn.outline:hover { background:#2b2b25; border-color:#85816f; }
.home-usual { display:grid; grid-template-columns:1fr auto; gap:3px 10px; width:100%; min-height:48px; background:none; border:0; color:#d8d5c2; text-align:left; padding:10px 0 0; font-family:var(--body); cursor:pointer; }
.home-usual > span:first-child { font-size:13px; font-weight:500; }
.home-usual > span:nth-child(2) { grid-column:1; font-size:12px; color:#aaa796; overflow-wrap:anywhere; }
.home-usual > span:last-child { grid-column:2; grid-row:1 / span 2; align-self:center; font-size:20px; }
.home-page .home-upcoming { margin:0; border-top:1px solid #3b3b34; }
.home-page .home-upcoming > summary { background:transparent; border:0; border-radius:0; box-shadow:none; padding:14px 0 0; min-height:44px; font-size:12px; font-weight:500; gap:8px; }
.home-inline-count { font-size:11px; font-variant-numeric:tabular-nums; color:#a9a695; }
.home-page .home-upcoming > .accbody { padding:0; border:0; border-radius:0; background:none; box-shadow:none; margin-top:12px; }
.home-booking { display:flex; align-items:center; justify-content:space-between; gap:12px; width:100%; min-height:66px; padding:12px 0; border:0; border-top:1px solid #34342e; border-radius:0; background:transparent; color:var(--ink); text-align:left; font:inherit; cursor:pointer; }
.home-booking-text { display:flex; flex-direction:column; gap:5px; min-width:0; }
.home-booking-text strong { font-size:13px; line-height:1.4; font-weight:500; overflow-wrap:anywhere; }
.home-booking-text > span { font-size:12px; color:var(--muted); }
.home-booking .badge { font-size:10px; flex:none; padding:4px 7px; letter-spacing:0; text-transform:none; }
.home-empty { font-size:13px; line-height:1.5; padding:8px 0; }
.home-streak { display:flex; align-items:center; gap:10px; border-top:1px solid #3b3b34; padding-top:14px; }
.home-streak .streak-icon { width:22px; height:26px; }
.home-streak > span:last-child { display:flex; align-items:baseline; justify-content:space-between; flex:1; gap:4px 12px; flex-wrap:wrap; }
.home-streak strong { font-size:12px; line-height:1.5; font-weight:500; color:#d9d4bd; }
.home-streak > span:last-child > span { color:#a5a28f; font-size:11px; line-height:1.5; }
.home-quick-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:0; border:1px solid #3b3b34; border-radius:16px; background:#1c1c1a; overflow:hidden; }
.home-page .home-quick-grid .home-shortcut {
  display:flex; align-items:center; justify-content:flex-start; gap:10px; width:100%;
  min-height:74px; padding:16px; margin:0; text-align:left; border:0; border-radius:0; background:none;
  font-family:var(--body); font-size:13px; line-height:1.4; font-weight:500; color:#dddac7; cursor:pointer;
}
.home-quick-grid .home-shortcut:nth-child(odd) { border-right:1px solid #34342e; }
.home-quick-grid .home-shortcut:nth-child(n+3) { border-top:1px solid #34342e; }
.home-quick-grid:not(:has(> :nth-child(4))) > .home-shortcut:last-child { grid-column:span 2; border-right:0; }
.home-page .home-quick-grid .home-shortcut::before,.home-page .home-quick-grid .home-shortcut::after { display:none; }
.home-shortcut > svg { width:20px; height:20px; color:#b6b29d; flex:none; }
.home-shortcut > span:not(.cntpill) { min-width:0; overflow-wrap:normal; }
.home-shortcut .cntpill { margin:0 0 0 auto; font-size:10px; min-width:18px; height:18px; display:flex; align-items:center; justify-content:center; padding:0 5px; flex:none; }
.home-page .home-shortcut:hover { background:#272722; }
.home-updates { display:flex; flex-direction:column; gap:12px; min-width:0; }
.home-updates > .home-section-title { margin-bottom:0!important; }
.home-updates:has(#focusCard:empty):not(:has(.home-announcement)) { display:none; }
.home-page .home-announcement { margin:0; border-radius:16px; background:#1e1e1b; border-color:#3b3b34; }
.home-page .home-announcement .wknote-h { padding:16px 18px 0; background:transparent; border:0; font-size:13px; font-weight:600; letter-spacing:0; }
.home-page .home-announcement .wknote-b { padding:8px 18px 18px; color:#b9b6a6; font-size:13px; line-height:1.65; }
.home-page #focusCard { display:flex; flex-direction:column; gap:12px; }
.home-page #focusCard:empty { display:none; }
.home-page #focusCard > .card { margin:0!important; border-color:#444235!important; border-radius:16px; padding:16px 18px; background:#20201c; }
.home-page #focusToggle { min-height:44px; gap:12px; align-items:center; }
.home-page #focusToggle .wknote-h { font-size:13px; font-weight:600; line-height:1.5; padding:0; text-align:left; }
.home-page #focusToggle .wknote-h .ic { display:none; }
.home-page .focus-head-r { gap:10px; }
.home-page .focus-count { color:#d2ceb8; font-family:var(--body); font-size:11px; padding:4px 8px; border-color:#5b5746; background:transparent; }
.home-page #focusBody { padding-top:12px; }
.home-page #focusBody > p { font-size:13px!important; line-height:1.6!important; }
.home-page #focusBody > p.muted { font-size:12px!important; }
.home-page #focusChips { gap:8px!important; }
.home-page .focus-chip { min-height:44px; font-family:var(--body); font-size:12px; line-height:1.4; padding:9px 12px; border-radius:10px; font-weight:500; }
.home-page #focusSubmit { font-size:13px; min-height:44px; width:100%; }
.home-page #focusBody > .row { display:flex; flex-direction:column; align-items:stretch!important; }
.home-page #focusMsg:empty { display:none; }
.home-account-list { border:1px solid #3b3b34; border-radius:16px; overflow:hidden; background:#1c1c1a; }
.home-page .home-account-list > .acc { margin:0; border:0; border-radius:0; }
.home-page .home-account-list > .acc + .acc { border-top:1px solid #34342e; }
.home-page .home-account-list > .acc > summary { min-height:56px; border:0; border-radius:0; background:transparent; box-shadow:none; padding:15px 18px; font-size:13px; font-weight:500; letter-spacing:0; }
.home-page .home-account-list > .acc[open] > summary { color:#f0ecdb; background:#24241f; }
.home-page .home-account-list > .acc > .accbody { margin:0; padding:18px; border:0; border-top:1px solid #34342e; border-radius:0; background:#191917; box-shadow:none; }
.home-account-list label { font-size:12px; text-transform:none; }
.home-account-list .muted { font-size:13px; line-height:1.55; }
.home-account-list .sumlbl .ic { color:#a9a38e; }
.home-account-list input[type=tel],.home-account-list input[type=text] { min-width:0; }
.home-footer { display:flex; align-items:center; justify-content:space-between; gap:16px; padding:0 0 4px; color:#9a9787; font-size:11px; }
.home-logout { color:#b7b39e; background:none; border:0; border-bottom:1px solid transparent; padding:12px 0 12px 16px; min-height:44px; font-family:var(--body); font-size:12px; cursor:pointer; }
.home-logout:hover { color:#eae8d8; text-decoration:underline; text-underline-offset:4px; }
.home-page :is(.home-shortcut,.home-booking,.home-usual,.home-logout):focus-visible { outline:2px solid #eae8d8; outline-offset:-4px; border-radius:8px; }
@media(min-width:960px) {
  #app:has(> .home-page) { max-width:1060px; padding:40px 32px 32px; }
  .home-page { --home-gap:28px; }
  .home-page .home-brand img { width:168px; }
  .home-intro { max-width:100%; }
  .home-page .homehead h1 { font-size:32px; }
  .home-workspace { grid-template-columns:minmax(0,1.2fr) minmax(0,1fr); gap:28px; }
  .home-workspace:has(.home-updates:has(#focusCard:empty):not(:has(.home-announcement))) { grid-template-columns:minmax(0,1fr); }
  .home-panel { padding:24px; }
  .home-training { gap:20px; }
  .home-next h3 { font-size:27px; }
  .home-account-list { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); align-items:start; }
  .home-page .home-account-list > .acc { align-self:stretch; border-bottom:1px solid #34342e; }
  .home-page .home-account-list > .acc + .acc { border-top:0; }
  .home-page .home-account-list > .acc:nth-child(odd) { border-right:1px solid #34342e; }
  .home-page .home-account-list:has(> .acc[open]) { display:block; }
  .home-page .home-account-list:has(> .acc[open]) > .acc { border-right:0; }
  .home-page .home-account-list > .acc:nth-last-child(-n+2) { border-bottom:0; }
  .home-page .home-account-list:has(> .acc[open]) > .acc:not(:last-child) { border-bottom:1px solid #34342e; }
}
@media(max-width:359px) {
  #app:has(> .home-page) { padding-left:16px; padding-right:16px; }
  .home-page { --home-gap:20px; }
  .home-page .home-brand img { width:140px; }
  .home-masthead-label { font-size:9px; letter-spacing:.045em; }
  .home-panel { padding:16px; }
  .home-training-actions { gap:8px; }
  .home-page .home-training .btn { font-size:12px; padding:10px 6px; gap:6px; }
  .home-page .home-quick-grid .home-shortcut { padding:14px 12px; font-size:12px; gap:8px; }
  .home-shortcut > svg { width:18px; height:18px; }
  .home-page #focusCard > .card { padding:14px 16px; }
  .home-page #focusToggle .wknote-h { font-size:12px; }
  .home-streak > span:last-child { gap:2px; flex-direction:column; }
}
/* Shared legacy shortcuts used ID-level pseudo-icons; replace those rather
   than drawing an old mask and a new SVG beside one another. */
.home-page #msgsBtn::before,.home-page #msgsBtn::after,
.home-page #dashBtn::before,.home-page #dashBtn::after,
.home-page #infoBtn::before,.home-page #infoBtn::after,
.home-page #pubProfBtn::before,.home-page #pubProfBtn::after { display:none; content:none; }
.home-page .home-upcoming > summary { justify-content:flex-start; }
.home-page .home-upcoming > summary .home-inline-count { margin-left:0; }
.home-page .home-upcoming > summary::after { margin-left:auto; }
/* A consistent line of controls, with no extra minimum height on the old
   booking ID. The usual action is secondary even during its loading state. */
.home-page #usualBtn { margin:0; font-size:13px; font-weight:500; text-transform:none; }
.home-quick-grid { grid-auto-rows:minmax(76px,1fr); }
.home-page .home-quick-grid :is(#msgsBtn,#dashBtn,#infoBtn,#pubProfBtn) {
  min-height:76px; height:100%; padding:16px; margin:0;
  font-size:13px; font-weight:500; line-height:1.4; gap:10px;
}
@media(max-width:359px) {
  .home-page .home-quick-grid :is(#msgsBtn,#dashBtn,#infoBtn,#pubProfBtn) { padding:14px 12px; font-size:12px; gap:8px; }
}

/* Account rows share the same icon slot, text baseline and inset. */
.home-page .home-account-list .sumlbl { display:inline-flex; align-items:center; gap:10px; min-width:0; }
.home-page .home-account-list .sumlbl > .ic { width:18px; height:18px; flex:none; color:#aaa58e; }
