:root{font-family:system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;color:#152620;background:#f2f5f4;font-size:16px;--green:#172f27;--lime:#d0ff6c;--muted:#68766e;--border:#dce3df}*{box-sizing:border-box}body{margin:0}button,input,select,textarea{font:inherit}button,a,input,select,textarea{outline-offset:3px}button{cursor:pointer;border:1px solid var(--border);border-radius:10px;padding:10px 15px;background:white;color:var(--green);font-weight:600}button:hover{background:#eef3eb}button:disabled{opacity:.5;cursor:wait}button.primary{background:var(--green);color:white;border-color:var(--green)}button.lime{background:var(--lime);border-color:var(--lime);color:#16231b}button.danger{color:#ae3434;background:#fff2f2;border-color:#f0d2d2}input,select,textarea{width:100%;border:1px solid #c9d4cd;background:white;border-radius:8px;padding:11px;color:#172f27}input[type=checkbox]{width:20px;height:20px;accent-color:#284d3f}textarea{min-height:140px;resize:vertical;line-height:1.6}label{display:grid;gap:7px;font-size:14px;font-weight:600}h1{font-size:32px;letter-spacing:-1px;margin:0}h2{font-size:21px;margin:0 0 20px}h3{font-size:17px;margin:0 0 10px}p{line-height:1.55}.muted{color:var(--muted);font-size:14px}.small{font-size:14px}.brand{font-size:29px;letter-spacing:-1.5px;font-weight:850}.brand span{font-weight:450}.layout{display:grid;grid-template-columns:230px minmax(0,1fr);min-height:100vh}.sidebar{background:var(--green);color:white;padding:28px 18px;display:flex;flex-direction:column;position:sticky;top:0;height:100vh}.sidebar .brand{padding:0 13px 30px}.nav{display:grid;gap:5px}.nav button{border:0;background:transparent;color:#c6d3cc;text-align:left;font-size:15px;padding:13px 14px}.nav button.active{color:#203a28;background:var(--lime)}.sidefoot{margin-top:auto;padding:25px 12px 0;border-top:1px solid #355246;color:#a7bfb2;font-size:14px}.sidefoot strong{display:block;color:white;margin-bottom:8px}.sidefoot button{margin-top:16px;color:#d2ded7;background:transparent;border-color:#476052}.main{padding:32px 40px 60px;max-width:1700px;width:100%;margin:auto}.topbar{display:flex;align-items:center;justify-content:space-between;gap:20px;margin-bottom:28px}.eyebrow{font-size:13px;letter-spacing:1.5px;text-transform:uppercase;color:var(--muted);margin-bottom:8px}.actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;margin:20px 0 24px}.stat{padding:21px;background:white;border:1px solid var(--border);border-radius:14px}.stat .value{font-size:30px;letter-spacing:-1px;font-weight:700;margin:10px 0 4px}.stat:first-child{background:var(--green);color:white}.stat:first-child .muted{color:#bfd1c6}.card{background:white;border:1px solid var(--border);border-radius:14px;padding:24px;margin-bottom:20px;min-width:0}.card-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:22px}.card-head h2{margin:0}.grid2{display:grid;grid-template-columns:1fr 1fr;gap:20px}.grid3{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}.empty{text-align:center;padding:48px 20px;color:var(--muted)}.empty strong{display:block;font-size:20px;color:var(--green);margin-bottom:8px}.table-wrap{overflow:auto}table{width:100%;border-collapse:collapse;font-size:14px}th{text-align:left;font-size:12px;letter-spacing:.6px;text-transform:uppercase;color:var(--muted);padding:13px 12px;border-bottom:1px solid var(--border)}td{padding:15px 12px;border-bottom:1px solid #edf0ed;vertical-align:middle}td .actions button{padding:7px 10px;font-size:13px}td strong{display:block;font-size:15px}.badge{display:inline-block;padding:5px 9px;border-radius:6px;font-size:12px;font-weight:600;background:#edf2ee;color:#3b5e49}.badge.warning{background:#fff0d6;color:#8a570a}.badge.red{background:#fee8e7;color:#a03a36}.pill{font-size:13px;border-radius:20px;border:1px solid #cbdace;padding:6px 12px;white-space:nowrap}.timeline{display:grid;gap:0}.slot{display:grid;grid-template-columns:65px minmax(0,1fr);gap:16px;min-height:76px;padding:12px 0;border-bottom:1px solid #edf0ed}.slot-time{font-variant-numeric:tabular-nums;color:var(--muted);font-size:14px;padding-top:13px}.appointment{display:flex;align-items:center;justify-content:space-between;gap:14px;background:#f1f6ef;border:1px solid #d9e7d5;border-left:4px solid #81ad48;padding:13px 17px;border-radius:8px}.appointment.pending{border-left-color:#e0a653;background:#fff9ed}.appointment strong{display:block}.appointment .muted{margin-top:4px}.free-slot{color:#8b9890;display:flex;align-items:center;font-size:14px}.day-select{width:170px}.weekstrip{display:grid;grid-template-columns:repeat(7,1fr);gap:6px;margin-bottom:20px}.weekstrip button{font-size:13px;padding:12px 4px;font-weight:500}.weekstrip button b{display:block;font-size:19px;margin-top:4px}.weekstrip button.active{background:var(--green);color:white;border-color:var(--green)}.info{background:#edf4ea;border:1px solid #d4e2ce;border-radius:10px;padding:14px 17px;font-size:14px;line-height:1.6;margin-bottom:18px}.warn{background:#fff7e8;border-color:#f2deba}.row{display:flex;justify-content:space-between;align-items:center;gap:15px;padding:14px 0;border-bottom:1px solid #edf0ed}.row:last-child{border-bottom:0}.price{font-size:30px;font-weight:750;margin:15px 0}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px}.full{grid-column:1/-1}.check{display:flex;align-items:center;gap:9px;font-weight:500}.form-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:24px}.rule-text{white-space:pre-wrap;line-height:1.75;font-size:16px}.report-text{white-space:pre-wrap;line-height:1.6;font-size:15px}.photos{display:flex;gap:10px;flex-wrap:wrap;margin-top:15px}.photos figure{margin:0}.photos img{width:120px;height:140px;object-fit:cover;border-radius:8px}.photos button{display:block;width:100%;font-size:12px;padding:6px}.login{max-width:430px;margin:12vh auto;padding:36px;background:white;border:1px solid var(--border);border-radius:18px}.login .brand{margin-bottom:24px}.login h1{font-size:24px;margin-bottom:8px}.login form{display:grid;gap:22px;margin-top:25px}.login .primary{padding:14px}.error{color:#b13a33;font-size:14px;min-height:20px}.loading{text-align:center;padding:18vh 20px;font-size:36px;font-weight:800}.loading p{font-size:16px;font-weight:400;color:var(--muted)}dialog{border:1px solid var(--border);border-radius:16px;padding:28px;width:min(660px,94vw);max-height:90vh;box-shadow:0 30px 100px #16291d44}dialog::backdrop{background:#142b2280;backdrop-filter:blur(3px)}dialog .close{float:right;padding:4px 10px;margin-top:-4px}dialog h2{padding-right:40px;margin-bottom:24px}#toast{position:fixed;bottom:24px;left:50%;transform:translateX(-50%);padding:14px 22px;max-width:90vw;background:#142b22;color:white;border-radius:10px;box-shadow:0 5px 30px #0002;z-index:50;display:none}.status-line{font-size:13px;color:var(--muted);margin-top:10px}a{color:#285a38}.program-card{white-space:pre-wrap;font-size:15px;line-height:1.6}.schedule-row{display:grid;grid-template-columns:100px 1fr 1fr 1.3fr 65px;align-items:center;gap:12px;margin-bottom:12px}.schedule-row label{font-size:12px}.calendar-exception{background:#fff0d6;padding:8px 12px;border-radius:8px;font-size:13px}.filter{max-width:290px}.money{font-variant-numeric:tabular-nums;white-space:nowrap}@media(max-width:1100px){.main{padding:28px 22px}.layout{grid-template-columns:190px minmax(0,1fr)}.sidebar{padding:24px 12px}.stats{grid-template-columns:repeat(2,1fr)}.grid2,.grid3{grid-template-columns:1fr}}@media(max-width:720px){.layout{display:block}.sidebar{position:relative;height:auto;padding:16px}.sidebar .brand{padding:0 0 12px;font-size:25px}.nav{display:flex;overflow-x:auto;gap:5px;padding-bottom:4px}.nav button{white-space:nowrap;padding:10px 12px;font-size:14px}.sidefoot{display:none}.main{padding:22px 14px}.topbar{align-items:flex-start;flex-direction:column;gap:15px}.topbar h1{font-size:28px}.stats{gap:9px}.stat{padding:16px}.stat .value{font-size:26px}.card{padding:18px 14px}.card-head{align-items:flex-start;flex-wrap:wrap}.appointment{align-items:flex-start;flex-direction:column;padding:12px}.slot{grid-template-columns:47px minmax(0,1fr);gap:7px}.form-grid{grid-template-columns:1fr}.schedule-row{grid-template-columns:1fr 1fr;gap:8px;padding:15px 0;border-bottom:1px solid var(--border)}.schedule-row strong{grid-column:1/-1}.weekstrip{gap:3px}.weekstrip button{padding:9px 1px;font-size:12px}.weekstrip button b{font-size:17px}.login{margin:7vh 14px;padding:26px}.day-select{width:154px}dialog{padding:22px 16px}}

.weight-chart{width:100%;overflow:auto}.weight-chart svg{display:block;width:100%;min-width:550px;height:auto}.photo-pair{display:grid;grid-template-columns:1fr 1fr;gap:16px}.photo-pair figure{margin:0;min-width:0;background:#f1f5f1;border-radius:12px;padding:12px}.photo-pair img{display:block;width:100%;max-height:560px;object-fit:contain;margin-top:10px}.photo-pair figcaption,.photos figcaption{font-size:14px;margin:5px 0}.pdf-link{display:block;padding:22px;border:1px solid #dce3df;border-radius:8px}.photo-pair .empty{padding:24px 8px;font-size:14px}@media(max-width:720px){.photo-pair{gap:8px}.photo-pair figure{padding:6px}}

.client-prices{border-top:1px solid #dde5df;margin-top:24px;padding-top:20px}.client-prices>button{margin-top:16px}.mailing-entry{border-top:1px solid #dde5df;padding:24px 0}.mailing-photo{display:block;max-width:100%;width:320px;max-height:360px;object-fit:contain;border-radius:12px;margin:12px 0}.mailing-preview{padding:16px;background:#f3f6f2;border-radius:12px;margin:16px 0}.mailing-counts{flex-wrap:wrap;margin-top:16px}.program-status{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin:0 0 20px}.program-status>div{padding:14px;background:#f4f7f4;border-radius:9px}.program-status span,.program-status strong{display:block}.program-status strong{margin-top:6px}.training-program-card details{border-top:1px solid var(--border);padding:14px 0}.training-program-card summary{cursor:pointer;font-weight:700}.training-program-card details .program-card{padding:14px 0 2px}.program-actions{margin-top:18px}.training-day{border:1px solid var(--border);border-radius:12px;padding:18px;margin:18px 0;display:grid;gap:15px}.training-day .card-head{margin-bottom:0}.client-program{border-top:1px solid var(--border);margin-top:22px;padding:20px 0 10px}@media(max-width:720px){.program-status{grid-template-columns:1fr}.training-day{padding:14px}.training-day .card-head .actions button{padding:7px 10px}}
