:root{--bg:#0D1015;--panel:#151A21;--panel2:#1C222B;--ink:#EEF2F6;--mut:#9AA6B4;--rule:#2A323D;--volt:#C6FF3D;--hot:#FF6B2C;--ok:#C6FF3D;--warn:#FFB020}
*{box-sizing:border-box}html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--bg);color:var(--ink);font:16px/1.55 "Helvetica Neue",Helvetica,Arial,sans-serif}
.wrap{max-width:1120px;margin:0 auto;padding:0 20px}
.skip{position:absolute;left:-999px}.skip:focus{left:8px;top:8px;background:var(--volt);color:#000;padding:8px 12px;z-index:9}
a{color:var(--volt)}a:hover{color:#fff}
:focus-visible{outline:3px solid var(--hot);outline-offset:2px}

.top{background:#07090C;border-bottom:1px solid var(--rule)}
.hbar{display:flex;flex-wrap:wrap;gap:10px 26px;align-items:center;justify-content:space-between;padding-top:12px;padding-bottom:12px}
.brand{font:900 24px/1 "Helvetica Neue",Arial,sans-serif;text-transform:uppercase;letter-spacing:.04em;color:#fff;text-decoration:none}
.brand b{color:var(--volt)}.brand small{display:block;font:600 11px/1.4 Arial,sans-serif;letter-spacing:.12em;color:var(--mut);margin-top:4px}
nav{display:flex;flex-wrap:wrap;gap:2px 6px}nav a{color:var(--ink);text-decoration:none;padding:7px 11px;font-weight:700;font-size:13px;letter-spacing:.07em;text-transform:uppercase;border-radius:4px}
nav a:hover{background:var(--panel2)}nav a[aria-current]{background:var(--volt);color:#000}
h1,h2,h3{font-family:"Helvetica Neue",Arial,sans-serif;font-weight:900;text-transform:uppercase;letter-spacing:.01em;line-height:1.05}
h1{font-size:clamp(34px,6.4vw,64px);margin:.4em 0 .2em}h2{font-size:clamp(24px,3.4vw,34px);margin:1.7em 0 .4em;border-top:3px solid var(--volt);padding-top:12px}
h3{font-size:18px;margin:1.2em 0 .3em;letter-spacing:.04em}
.lede{font-size:clamp(17px,2.2vw,21px);color:var(--mut);max-width:48em}.eyebrow{display:inline-block;background:var(--volt);color:#000;font:900 12px/1 Arial,sans-serif;letter-spacing:.14em;text-transform:uppercase;padding:6px 10px}
.hero{padding:26px 0 4px}
.answer{background:var(--panel);border:1px solid var(--rule);border-left:6px solid var(--volt);padding:14px 18px;margin:14px 0 4px;max-width:54em}
.answer h2{font:900 12px/1.2 Arial,sans-serif;letter-spacing:.13em;text-transform:uppercase;margin:0 0 7px;border:0;padding:0}
.answer ul{margin:.2em 0 0;padding-left:1.05em}.answer li{margin:.3em 0}.answer p{margin:.4em 0 0}
.answer .jump{font:800 12px Arial,sans-serif;letter-spacing:.06em;text-transform:uppercase;margin-top:8px}
@media(max-width:560px){.hero{padding:14px 0 2px}h1{font-size:clamp(26px,8.6vw,38px)}.lede{font-size:16px}.answer{padding:12px 14px;font-size:15px;line-height:1.45}}
@media(max-width:620px){.hbar{padding-top:10px;padding-bottom:8px;gap:6px}.brand{font-size:20px}nav{flex-wrap:nowrap;overflow-x:auto;width:100%;gap:4px;padding-bottom:2px;scrollbar-width:none}nav::-webkit-scrollbar{display:none}nav a{white-space:nowrap;font-size:12px;padding:6px 8px}}
.calc{background:var(--panel);border:1px solid var(--rule);border-top:6px solid var(--volt);padding:20px;margin:24px 0;display:grid;gap:22px;grid-template-columns:minmax(0,4fr) minmax(0,8fr)}
@media(max-width:860px){.calc{grid-template-columns:1fr}}
.f{display:block;margin:0 0 14px}.f>span{display:block;font:800 12px/1.2 Arial,sans-serif;letter-spacing:.1em;text-transform:uppercase;color:var(--mut);margin-bottom:5px}
.f input[type=number]{width:100%;font:800 24px/1.2 ui-monospace,Menlo,Consolas,monospace;padding:10px 12px;border:1px solid var(--rule);border-bottom:3px solid var(--volt);background:#0A0D11;color:#fff;border-radius:2px}
.f input[type=range]{width:100%;accent-color:var(--volt)}
.help{font-size:13px;color:var(--mut);margin:2px 0 0}
[aria-invalid="true"]{border-color:#ff6b6b!important;box-shadow:0 0 0 1px #ff6b6b}
.empty{padding:14px;border:1px dashed var(--rule);color:var(--mut)}
.gross{background:#0A0D11;border:1px dashed var(--rule);padding:10px 14px;font-size:13px;color:var(--mut);text-transform:uppercase;letter-spacing:.08em}.gross b{font:900 28px ui-monospace,Menlo,monospace;display:block;color:#fff;letter-spacing:0}
.plans{list-style:none;margin:0 0 14px;padding:0;display:grid;gap:12px;grid-template-columns:repeat(auto-fit,minmax(220px,1fr))}
.plan{background:var(--panel2);border:1px solid var(--rule);padding:14px;display:flex;flex-direction:column;gap:6px}
.plan.low{border-color:var(--volt);box-shadow:inset 0 0 0 1px var(--volt)}
.pn b{font:900 17px Arial,sans-serif;text-transform:uppercase;letter-spacing:.04em}.pn .pl{display:block;color:var(--mut);font-size:13px}
.big{font:900 32px/1 ui-monospace,Menlo,Consolas,monospace;color:#fff}.big small{display:block;font:600 11px Arial,sans-serif;letter-spacing:.1em;text-transform:uppercase;color:var(--mut);margin-top:4px}
.big.dim{color:#8D98A6}.split{font:13px ui-monospace,Menlo,monospace;color:var(--volt)}.plan p{font-size:13px;color:var(--mut);margin:0}
.tag{display:inline-block;font:800 10px Arial,sans-serif;letter-spacing:.08em;text-transform:uppercase;background:var(--warn);color:#1b1200;padding:2px 6px;vertical-align:2px}
.lowline{font-weight:700;margin:6px 0 0}
.tw:focus-visible{outline:3px solid var(--hot)}
.plan[data-status=scenario],.plan[data-status=floorhyp]{border-style:dashed}
#hypnote{color:var(--warn);font-weight:700}
.sub{font:900 12px Arial,sans-serif;letter-spacing:.14em;text-transform:uppercase;color:var(--mut);margin:18px 0 8px}
.cards{display:grid;gap:14px;grid-template-columns:repeat(auto-fit,minmax(250px,1fr))}
.c{background:var(--panel);border:1px solid var(--rule);padding:16px 18px}.c h3{margin-top:0}
.tw{overflow-x:auto;border:1px solid var(--rule);margin:14px 0;background:var(--panel)}
table{border-collapse:collapse;width:100%;font-size:14.5px}th,td{padding:10px 12px;border-bottom:1px solid var(--rule);text-align:left;vertical-align:top}
th{background:#0A0D11;color:var(--mut);font:800 11px Arial,sans-serif;letter-spacing:.1em;text-transform:uppercase}td.n,th.n{text-align:right;white-space:nowrap;font-family:ui-monospace,Menlo,monospace}
tr:last-child td{border-bottom:0}small,.small{font-size:13px;color:var(--mut)}
.formula{font:14.5px/1.5 ui-monospace,Menlo,Consolas,monospace;background:#0A0D11;color:var(--volt);border:1px solid var(--rule);padding:14px 16px;overflow-x:auto;white-space:pre-wrap}
.callout{border-left:6px solid var(--volt);background:var(--panel);padding:12px 16px;margin:16px 0}.warn{border-left-color:var(--hot)}
.foot{margin-top:56px;background:#07090C;border-top:1px solid var(--rule);padding:22px 0 34px;font-size:13.5px;color:var(--mut)}
ul.clean{padding-left:1.1em}

/* ---- stage 2026-10-26: tap targets (48px) and overflow guards; CSS only ---- */
.brand{display:inline-block;min-height:48px;padding:4px 0}
nav a{display:inline-flex;align-items:center;min-height:48px}
.skip:focus{display:inline-flex;align-items:center;min-height:48px}
.foot .small a{display:inline-flex;align-items:center;min-height:48px}
.answer .jump a,.cards .c p a{display:inline-flex;align-items:center;min-height:48px}
details>summary{display:flex;align-items:center;min-height:48px;cursor:pointer}
.f input[type=number]{min-height:48px}
.f input[type=range]{min-height:48px}
td a,th a{display:inline-flex;align-items:center;min-height:48px}
main a{overflow-wrap:anywhere}
.foot .small a{min-width:48px;justify-content:center}
main p>a:only-child{display:inline-flex;align-items:center;min-height:48px}
/* ---- stage 2026-10-28: pricing price table stacks into rows at phone widths (QA-r3 F6); scoped to /pricing only; CSS only ---- */
@media(max-width:560px){html:has(link[rel=canonical][href="https://gymsoftwarecosts.fyi/pricing"]) .tw table,html:has(link[rel=canonical][href="https://gymsoftwarecosts.fyi/pricing"]) .tw tbody,html:has(link[rel=canonical][href="https://gymsoftwarecosts.fyi/pricing"]) .tw tr,html:has(link[rel=canonical][href="https://gymsoftwarecosts.fyi/pricing"]) .tw td{display:block;width:100%}html:has(link[rel=canonical][href="https://gymsoftwarecosts.fyi/pricing"]) .tw thead{display:none}html:has(link[rel=canonical][href="https://gymsoftwarecosts.fyi/pricing"]) .tw tr{border-bottom:1px solid var(--rule);padding:6px 0}html:has(link[rel=canonical][href="https://gymsoftwarecosts.fyi/pricing"]) .tw td{border-bottom:0;padding:4px 12px}}
.tap,.btn{display:inline-flex;align-items:center;justify-content:center;min-height:48px;min-width:48px}
.slot{margin:10px 0}.slot .tap{padding:0 14px;border:1px solid var(--rule);border-radius:10px}
.btn{background:var(--volt);color:#0b0d10;font-weight:700;padding:0 18px;border-radius:10px;text-decoration:none}
.signup{background:var(--panel);border:1px solid var(--rule);border-radius:12px;padding:14px 18px;margin:22px 0}
.fresh{font-size:.9em}
/* r6 2026-10-28: keep short inline code spans (e.g. ?databull_ignore=1) on one line at 360/390 */
main code{overflow-wrap:normal;white-space:nowrap}
/* Web Builder r2 2026-10-28: 48px tap target for the off-screen skip link (still hidden until focused) */
.skip{display:inline-flex;align-items:center;min-height:48px;box-sizing:border-box}
