:root{--bg: #111114;--bg-soft: #1d1d22;--card: #ffffff;--ink: #18181b;--ink-soft: #52525b;--muted: #a1a1aa;--line: #e6e3da;--accent: #c9a24b;--accent-ink: #111114;--good: #16a34a;--bad: #dc2626;--radius: 12px;--shadow: 0 1px 2px rgba(17, 17, 20, .06), 0 8px 24px rgba(17, 17, 20, .07);--font: "Montserrat", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif}*{box-sizing:border-box}html,body{margin:0;padding:0}body{font-family:var(--font);color:var(--ink);background:#f5f4f0;-webkit-font-smoothing:antialiased}.screen{max-width:520px;margin:0 auto;padding:20px 16px calc(96px + env(safe-area-inset-bottom));min-height:100vh}.screen.center{display:flex;align-items:center;justify-content:center;padding-bottom:20px}.page-logo{display:block;height:96px;width:auto;border-radius:12px;margin-bottom:14px}.form-brand{font-weight:800;letter-spacing:1px;color:var(--accent);font-size:.9rem;margin-bottom:10px}.form-head h1{font-size:1.5rem;margin:4px 0 6px}.sub{color:var(--ink-soft);margin:0 0 18px;line-height:1.45}.muted{color:var(--muted)}.form-weeknav{display:flex;align-items:center;justify-content:space-between;gap:10px;background:var(--card);border:1px solid var(--line);border-radius:12px;padding:8px 10px;margin-bottom:14px}.form-weeknav button{width:40px;height:40px;border-radius:10px;border:1px solid var(--line);background:#fff;font-size:1.3rem;cursor:pointer;flex:none}.form-weeknav button:disabled{opacity:.35;cursor:not-allowed}.form-week-label{display:flex;flex-direction:column;align-items:center;line-height:1.25;text-align:center}.wk-of{font-size:.72rem;color:var(--muted);text-transform:uppercase;letter-spacing:.5px}.days.is-switching{opacity:.5;pointer-events:none}.done-actions{display:flex;flex-direction:column;gap:8px;margin-top:16px}.upcoming{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:14px 16px;margin-bottom:22px}.upcoming-title{font-size:1rem;margin:0 0 10px}.upcoming-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:10px}.up-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 0;border-top:.5px solid var(--line)}.up-row:first-child{border-top:0}.up-info{display:flex;flex-direction:column;min-width:0}.up-when{font-weight:600}.up-loc{color:var(--ink-soft);font-size:.85rem}.up-action{flex:none;text-align:right}.up-done{color:var(--good);font-weight:600;font-size:.9rem}.up-expired{color:var(--muted);font-size:.85rem}.up-countdown{display:flex;flex-direction:column;align-items:flex-end}.up-cd-label{font-size:.7rem;color:var(--muted);text-transform:uppercase;letter-spacing:.4px;text-align:right;line-height:1.3}.up-cd-time{font-variant-numeric:tabular-nums;font-weight:700;color:var(--accent);font-size:1.05rem}.days{display:flex;flex-direction:column;gap:12px}.day-card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);overflow:hidden}.day-card.is-open{border-color:#c7d2fe}.day-toggle{width:100%;display:flex;align-items:center;justify-content:space-between;padding:16px;background:none;border:0;font:inherit;cursor:pointer}.day-name{font-weight:600;font-size:1.02rem}.switch{width:46px;height:28px;border-radius:999px;background:#cbd5e1;position:relative;transition:background .18s ease;flex:none}.switch:after{content:"";position:absolute;top:3px;left:3px;width:22px;height:22px;border-radius:50%;background:#fff;box-shadow:0 1px 3px #00000040;transition:transform .18s ease}.switch.on{background:var(--accent)}.switch.on:after{transform:translate(18px)}.day-body{padding:0 16px 16px;border-top:1px solid var(--line)}.mode-row{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:14px 0}.mode-btn{padding:10px;border:1px solid var(--line);background:#f8fafc;border-radius:10px;font:inherit;color:var(--ink-soft);cursor:pointer}.mode-btn.active{border-color:var(--accent);background:#eef2ff;color:var(--accent);font-weight:600}.hint{color:var(--ink-soft);font-size:.92rem;margin:4px 2px}.periods{display:flex;flex-direction:column;gap:10px}.period{display:flex;align-items:center;gap:10px}.period input[type=time]{flex:1;padding:11px 12px;border:1px solid var(--line);border-radius:10px;font:inherit;background:#fff;color:var(--ink)}.period input.invalid{border-color:var(--bad);background:#fef2f2}.dash{color:var(--muted)}.remove{width:36px;height:36px;border-radius:50%;border:1px solid var(--line);background:#fff;color:var(--ink-soft);font-size:1.2rem;line-height:1;cursor:pointer;flex:none}.add-time{align-self:flex-start;margin-top:2px;background:none;border:0;color:var(--accent);font:inherit;font-weight:600;padding:6px 2px;cursor:pointer}.actions{display:flex;gap:12px;align-items:center}.actions.sticky{position:fixed;left:0;right:0;bottom:0;padding:12px 16px calc(12px + env(safe-area-inset-bottom));background:#f1f5f9eb;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-top:1px solid var(--line);max-width:520px;margin:0 auto}.validation{flex:1;font-size:.86rem;color:var(--bad)}.validation.ok{color:var(--good)}.btn{padding:13px 20px;border-radius:12px;border:0;font:inherit;font-weight:600;cursor:pointer}.btn.primary{background:var(--accent);color:var(--accent-ink)}.btn.primary:disabled{background:#e6e3da;color:var(--muted);cursor:not-allowed}.btn.ghost{background:#fff;border:1px solid var(--line);color:var(--ink)}.form-error{color:var(--bad);margin:14px 2px 0}.review h2{margin:6px 0 4px}.review-list{list-style:none;padding:0;margin:16px 0 24px;display:flex;flex-direction:column;gap:1px;background:var(--line);border:1px solid var(--line);border-radius:var(--radius);overflow:hidden}.review-list li{display:flex;justify-content:space-between;gap:12px;padding:14px 16px;background:var(--card)}.review-day{font-weight:600}.review-times{color:var(--ink-soft);text-align:right}.empty{color:var(--muted)}.card-msg{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:32px 24px;text-align:center;max-width:420px}.card-msg h1{font-size:1.4rem;margin:8px 0}.card-msg p{color:var(--ink-soft);line-height:1.5}.card-msg.success .tick{width:56px;height:56px;margin:0 auto 8px;border-radius:50%;background:#dcfce7;color:var(--good);font-size:1.8rem;display:flex;align-items:center;justify-content:center}.card-msg .btn{margin-top:16px}.trainer{max-width:880px;margin:0 auto;min-height:100vh}.trainer-head{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:16px 20px;background:var(--bg);color:#fff;flex-wrap:wrap}.brand{display:flex;align-items:center;gap:10px}.brand-logo{height:46px;width:auto;border-radius:8px;display:block}.brand-sub{color:var(--accent);font-size:.72rem;letter-spacing:2px;text-transform:uppercase}.week-nav{display:flex;align-items:center;gap:12px}.week-nav button{width:34px;height:34px;border-radius:9px;border:1px solid #334155;background:var(--bg-soft);color:#fff;font-size:1.2rem;cursor:pointer}.week-label{display:flex;flex-direction:column;align-items:center;line-height:1.2;min-width:150px}.week-of{font-size:.72rem;color:var(--muted);text-transform:uppercase;letter-spacing:.5px}.tabs{display:flex;gap:4px;padding:0 12px;background:var(--bg-soft);overflow-x:auto}.tab{padding:12px 14px;color:#cbd5e1;text-decoration:none;font-size:.9rem;font-weight:600;border-bottom:3px solid transparent;white-space:nowrap}.tab.active{color:#fff;border-bottom-color:var(--accent)}.tab.clients-tab{margin-left:auto}.logout-tab{background:none;border:0;border-bottom:3px solid transparent;cursor:pointer;color:var(--accent)}.trainer-main{padding:0}.screen-pad{padding:22px 20px 60px}.screen-pad h1{font-size:1.4rem;margin:0 0 6px}.badge{display:inline-block;padding:7px 12px;border-radius:999px;font-size:.82rem;margin-bottom:16px}.badge-week{background:#dcfce7;color:#166534}.badge-template{background:#fef9c3;color:#854d0e}.badge-none{background:#fee2e2;color:#991b1b}.notice{background:#eef2ff;color:#3730a3;padding:10px 14px;border-radius:10px;margin:12px 0}.success-notice{background:#dcfce7;color:#166534}.warn{background:#fff7ed;border:1px solid #fed7aa;color:#9a3412;border-radius:12px;padding:12px 16px;margin:14px 0}.warn ul{margin:6px 0 0;padding-left:18px}.day-periods{display:flex;flex-direction:column;gap:8px}.dp-row{display:grid;grid-template-columns:96px 1fr;gap:12px;align-items:start;background:var(--card);border:1px solid var(--line);border-radius:12px;padding:12px 14px}.dp-row.closed{background:#f8fafc}.dp-day{font-weight:600;padding-top:8px}.dp-times{display:flex;flex-direction:column;gap:8px}.dp-off{color:var(--muted);padding-top:8px}.btn-row{display:flex;gap:10px;flex-wrap:wrap;margin-top:20px}.btn-row .btn{flex:1 1 auto}.btn.small{padding:8px 14px;font-size:.85rem}.next-step{margin-top:24px}.next-step a{color:var(--accent);font-weight:600;text-decoration:none}.empty-state{background:var(--card);border:1px dashed var(--line);border-radius:12px;padding:28px;text-align:center}.empty-state .btn{margin:8px 0}.count-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:10px}.count-row{display:flex;align-items:center;justify-content:space-between;gap:12px;background:var(--card);border:1px solid var(--line);border-radius:12px;padding:14px 16px}.count-info{display:flex;flex-direction:column;min-width:0}.count-name{font-weight:600}.count-windows{color:var(--ink-soft);font-size:.85rem}.stepper{display:flex;align-items:center;gap:4px;flex:none}.stepper button{width:36px;height:36px;border-radius:9px;border:1px solid var(--line);background:#fff;font-size:1.2rem;cursor:pointer}.stepper-val{min-width:32px;text-align:center;font-weight:700;font-size:1.05rem}.total-line{margin-top:14px}.stats{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:18px}.stat{flex:1 1 80px;background:var(--card);border:1px solid var(--line);border-radius:12px;padding:12px;text-align:center}.stat-num{display:block;font-size:1.3rem;font-weight:700}.stat-lbl{font-size:.74rem;color:var(--muted);text-transform:uppercase;letter-spacing:.4px}.sched{display:flex;flex-direction:column;gap:16px}.sched-day-head{font-weight:700;margin-bottom:8px;display:flex;align-items:center;gap:10px}.solo{font-size:.72rem;background:#fef3c7;color:#92400e;padding:2px 8px;border-radius:999px;font-weight:600}.sess{display:grid;grid-template-columns:110px 1fr auto;gap:10px;align-items:center;background:var(--card);border:1px solid var(--line);border-left:4px solid var(--accent);border-radius:10px;padding:10px 14px;margin-bottom:6px}.sess.status-approved{border-left-color:#16a34a}.sess.status-booked{border-left-color:#0ea5e9}.sess-time{font-variant-numeric:tabular-nums;font-weight:600}.sess-client{font-weight:600}.sess-loc{color:var(--ink-soft);font-size:.85rem;grid-column:2}.sess-status{font-size:.72rem;padding:3px 9px;border-radius:999px;font-weight:600}.pill-proposed{background:#eef2ff;color:#3730a3}.pill-approved{background:#dcfce7;color:#166534}.pill-booked{background:#e0f2fe;color:#075985}.sess-actions{display:flex;gap:4px;justify-self:end;align-items:center;flex-wrap:wrap}.pill-att-scheduled,.pill-att-attended,.pill-att-no_show,.pill-att-cancelled{font-size:.72rem;padding:3px 9px;border-radius:999px;font-weight:600}.pill-att-scheduled{background:#eef2ff;color:#3730a3}.pill-att-attended{background:#dcfce7;color:#166534}.pill-att-no_show{background:#fef3c7;color:#92400e}.pill-att-cancelled{background:#fee2e2;color:#991b1b}.sess.att-cancelled .sess-time,.sess.att-cancelled .sess-client{text-decoration:line-through;color:var(--muted)}.card-msg .tick.neutral{background:#fef9c3;color:#854d0e}.report-controls{display:flex;gap:12px;flex-wrap:wrap;align-items:flex-end;margin-bottom:18px}.report-controls .field{margin-bottom:0}.report-table{width:100%;border-collapse:collapse;font-size:.9rem}.report-table th,.report-table td{text-align:right;padding:10px 8px;border-bottom:.5px solid var(--line)}.report-table th:first-child,.report-table td:first-child{text-align:left}.report-table th{font-size:.72rem;text-transform:uppercase;letter-spacing:.4px;color:var(--muted)}.report-table tbody tr{cursor:pointer}.report-table tbody tr:hover{background:var(--card)}.history-panel{margin-top:20px;background:var(--card);border:1px solid var(--line);border-radius:12px;padding:16px}.hist-row{display:flex;justify-content:space-between;gap:12px;padding:8px 0;border-bottom:.5px solid var(--line);font-size:.9rem}.hist-row:last-child{border-bottom:0}.hist-row.invoice-row{background:#fbf7ec;border-radius:8px;padding:8px 10px;border-bottom:0;margin:2px 0;color:#6b5a1f;align-items:center}.hist-row.invoice-row a.btn{text-decoration:none}.btn.xsmall{padding:4px 8px;font-size:.78rem}.pin{margin-left:6px;font-size:.8rem}.sess-edit{display:flex;align-items:center;gap:6px;flex-wrap:wrap;background:#eef2ff;border:1px solid #c7d2fe;border-radius:10px;padding:8px 10px;margin-bottom:6px}.sess-edit select,.sess-edit input[type=time]{padding:7px 9px;border:1px solid var(--line);border-radius:8px;font:inherit;background:#fff}.add-session{margin-top:6px}.client-list{list-style:none;margin:0 0 24px;padding:0;display:flex;flex-direction:column;gap:8px}.client-row{display:flex;align-items:center;justify-content:space-between;gap:12px;background:var(--card);border:1px solid var(--line);border-radius:12px;padding:12px 16px}.client-name{font-weight:600;margin-right:8px}.client-meta{color:var(--ink-soft);font-size:.85rem}.client-row.inactive{opacity:.6}.flag{font-size:.68rem;font-weight:700;padding:2px 8px;border-radius:999px;margin-left:8px;vertical-align:middle}.flag-invoice{background:#fef9c3;color:#854d0e}.flag-pace{background:#ffedd5;color:#9a3412}.flag-block{background:#e0f2fe;color:#075985}.client-actions{display:flex;gap:6px;flex-wrap:wrap;flex:none}.btn.danger{color:var(--bad);border-color:#fecaca}.invoice-inline{display:flex;align-items:center;gap:6px;flex-wrap:wrap}.invoice-inline input{width:56px;padding:6px 8px;border:1px solid var(--line);border-radius:8px;font:inherit}.invoice-panel{display:flex;flex-direction:column;gap:8px;padding:10px;border:1px solid var(--line);border-radius:10px;background:var(--surface, #fafafa);width:100%}.invoice-panel .small-hint{margin:0}.month-chips{display:flex;flex-wrap:wrap;gap:6px}.chip{padding:4px 10px;border:1px solid var(--line);border-radius:999px;background:transparent;font-size:.8rem;cursor:pointer}.chip.on{background:var(--gold, #c9a24b);border-color:var(--gold, #c9a24b);color:#1b1b1b;font-weight:600}.client-row.editing{flex-direction:column;align-items:stretch;gap:10px}.client-edit{display:flex;gap:8px;flex-wrap:wrap;align-items:center}.client-edit input[type=text],.client-edit>input:not([type]),.client-edit select{padding:8px 10px;border:1px solid var(--line);border-radius:8px;font:inherit}.client-edit>input:first-child{flex:1 1 140px}.edit-inline{display:flex;align-items:center;gap:6px;font-size:.85rem;color:var(--ink-soft)}.edit-inline input[type=number]{width:64px;padding:8px 10px;border:1px solid var(--line);border-radius:8px;font:inherit}.disc-label{padding:8px 10px;border:1px solid var(--line);border-radius:8px;font:inherit;width:120px}.add-card{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:18px;margin-bottom:18px}.add-card h2{font-size:1.05rem;margin:0 0 12px}.field{margin-bottom:12px}.field label{display:block;font-size:.85rem;font-weight:600;margin-bottom:4px;color:var(--ink-soft)}.field input,.field select{width:100%;padding:11px 12px;border:1px solid var(--line);border-radius:10px;font:inherit;background:#fff}.small-hint{font-size:.78rem;margin:4px 0 0}.cbx{display:flex;align-items:center;gap:6px;font-size:.9rem}.travel-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}.travel-row{display:flex;align-items:center;justify-content:space-between;gap:12px;background:var(--card);border:1px solid var(--line);border-radius:12px;padding:12px 16px}.travel-pair{font-weight:500}.travel-input{display:flex;align-items:center;gap:6px;flex:none}.travel-input input{width:70px;padding:8px 10px;border:1px solid var(--line);border-radius:8px;font:inherit;text-align:right}.travel-unit{color:var(--muted);font-size:.85rem}.travel-saved{color:var(--good);font-weight:700}.notify-card{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:10px 14px;border-radius:12px;margin-bottom:16px;font-size:.88rem}.notify-card.on{background:#ecfdf5;color:#065f46;border:1px solid #a7f3d0}.notify-card.off{background:#f1f5f9;color:var(--ink-soft);border:1px solid var(--line)}.notify-card code{background:#0000000f;padding:1px 5px;border-radius:5px}.notify-card .btn{margin-left:auto}.email-test{display:flex;gap:6px;align-items:center;margin-left:auto}.email-test input{padding:7px 10px;border:1px solid var(--line);border-radius:8px;font:inherit;width:170px}.notify-msg{flex-basis:100%;font-style:italic}.count-when{font-weight:400;color:var(--muted);font-size:.85rem}.ics-panel{margin-top:24px;padding:16px 18px;background:var(--card);border:1px solid var(--line);border-radius:14px}.ics-panel h2{font-size:1.05rem;margin:0 0 4px}.ics-actions{margin:12px 0}.ics-actions a.btn{display:inline-block;text-decoration:none}.ics-feed{border-top:1px solid var(--line);padding-top:12px}.ics-feed-label{font-size:.85rem;color:var(--ink-soft);margin:0 0 8px}.ics-feed-url{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.ics-feed-url code{flex:1;min-width:0;background:#f1f5f9;padding:8px 10px;border-radius:8px;font-size:.8rem;word-break:break-all}.connect-bar{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;padding:12px 16px;border-radius:12px;margin-bottom:18px;font-size:.9rem}.connect-bar code{background:#0000000f;padding:1px 5px;border-radius:5px}.connect-bar.sim{background:#f1f5f9;color:var(--ink-soft);border:1px solid var(--line)}.connect-bar.disconnected{background:#eff6ff;color:#1e3a8a;border:1px solid #bfdbfe}.connect-bar.connected{background:#ecfdf5;color:#065f46;border:1px solid #a7f3d0}@media (max-width: 520px){.sess{grid-template-columns:90px 1fr}.sess-status{grid-column:2;justify-self:start}.dp-row{grid-template-columns:1fr}}.sessions-wanted{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:4px 0 14px;padding:12px 14px;border:1px solid var(--line);border-radius:12px;background:var(--surface, #fafafa)}.sessions-wanted label{font-weight:600}.sessions-wanted input{width:64px;padding:8px 10px;border:1px solid var(--line);border-radius:8px;font:inherit;text-align:center}.counter-row{margin-top:2px}.invoice-inline.period-row input[type=date]{width:auto;min-width:140px}.email-card .tmpl-editor{display:flex;flex-direction:column;gap:8px;margin-top:10px}.tmpl-row{display:flex;align-items:center;gap:8px}.tmpl-row select{flex:1;padding:8px;border:1px solid var(--line);border-radius:8px;font:inherit}.tmpl-subject{padding:8px 10px;border:1px solid var(--line);border-radius:8px;font:inherit}.tmpl-body{padding:8px 10px;border:1px solid var(--line);border-radius:8px;font:inherit;font-family:ui-monospace,Menlo,monospace;font-size:.82rem;resize:vertical}.tmpl-tokens{font-size:.74rem;font-family:ui-monospace,Menlo,monospace;margin:0}.tmpl-actions{display:flex;flex-wrap:wrap;gap:8px}.email-report ul{margin:6px 0 0;padding-left:18px}.email-report li.ok{color:var(--good, #16a34a)}.email-report li.fail{color:var(--bad, #dc2626)}.unbooked-list{list-style:none;margin:8px 0 0;padding:0;display:flex;flex-direction:column;gap:12px}.unbooked-head{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.pushback-msg{margin:6px 0 0;padding:10px 12px;background:#fff;border:1px solid var(--line);border-radius:8px;white-space:pre-wrap;font:inherit;font-size:.85rem;line-height:1.4}.opt-options{margin:8px 0 4px}.opt-toggle{background:none;border:0;font:inherit;font-weight:600;cursor:pointer;color:var(--ink);padding:4px 0}.opt-custom{margin-left:8px;font-size:.7rem;font-weight:700;color:var(--accent);text-transform:uppercase;letter-spacing:.5px}.opt-grid{display:flex;flex-wrap:wrap;gap:14px;padding:12px;border:1px solid var(--line);border-radius:10px;background:var(--surface, #fafafa);margin-top:6px}.opt-grid fieldset{border:1px solid var(--line);border-radius:8px;padding:8px 12px;margin:0}.opt-grid legend{font-size:.78rem;font-weight:700;color:var(--ink-soft);padding:0 4px}.opt-grid label{display:flex;align-items:center;gap:6px;font-size:.85rem;padding:3px 0;cursor:pointer}.opt-grid .small-hint{flex-basis:100%;margin:0}.client-tabs{display:flex;gap:6px;background:var(--card);border:1px solid var(--line);border-radius:12px;padding:4px;margin-bottom:18px}.client-tabs button{flex:1;padding:10px;border:0;border-radius:9px;background:none;font:inherit;font-weight:600;color:var(--ink-soft);cursor:pointer}.client-tabs button.active{background:var(--accent);color:var(--accent-ink)}.up-noshow{color:var(--bad);font-weight:600;font-size:.9rem}
