@import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700&family=Manrope:wght@400;500;600;700;800&display=swap');
:root{--ink:#20362e;--green:#254b3e;--lime:#d7ee9e;--paper:#f5f6f2;--line:#dfe5dc;--muted:#748176;--white:#fff}*{box-sizing:border-box}body{margin:0;background:var(--paper);color:var(--ink);font:15px 'DM Sans',system-ui,sans-serif}h1,h2,h3,strong{font-family:Manrope,system-ui,sans-serif}h1{font-size:36px;line-height:1.16;letter-spacing:-1.3px;margin:8px 0 12px}h2{font-size:23px;letter-spacing:-.5px}h3{font-size:16px}p{line-height:1.7}a{color:var(--green)}button,input,select{font:inherit}button,a,input,select{touch-action:manipulation}button{cursor:pointer}button:disabled{opacity:.6;cursor:wait}a:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid #99b45a;outline-offset:3px}.brand{display:flex;align-items:center;gap:12px;color:inherit;text-decoration:none;font-weight:800;font-size:16px}.brand small{display:block;letter-spacing:2.4px;font-size:9px;color:var(--muted);margin-top:5px}.brand-mark{width:42px;height:42px;border-radius:13px;display:grid;place-items:center;background:var(--lime);color:var(--ink);font-size:26px;font-weight:800}.shell{display:grid;grid-template-columns:250px minmax(0,1fr);min-height:100vh}.sidebar{background:#fff;border-right:1px solid var(--line);padding:32px 22px;display:flex;flex-direction:column;position:sticky;top:0;height:100vh}.nav-label{font-size:10px;letter-spacing:2px;color:var(--muted);margin:48px 12px 15px}nav{display:flex;flex-direction:column;gap:6px}nav a{padding:13px 15px;border-radius:9px;text-decoration:none;font-weight:600;color:#667468}nav a.active{background:var(--green);color:#fff}nav a:hover:not(.active){background:var(--paper)}.sidebar-bottom{margin-top:auto;display:flex;flex-wrap:wrap;gap:10px;align-items:center;padding-top:22px;border-top:1px solid var(--line);font-size:12px}.sidebar-bottom strong{font-size:12px}.sidebar-bottom small{display:block;color:var(--muted);margin-top:3px}.sidebar-bottom form{width:100%;margin:10px 0 0}.sidebar-bottom button{background:transparent;color:var(--muted);border:1px solid var(--line);font-size:12px;padding:8px 12px}.avatar{display:grid;place-items:center;width:36px;height:36px;background:#e5eadf;border-radius:50%}main{padding:40px 48px;max-width:1500px;width:100%;margin:auto}.topbar{display:flex;justify-content:space-between;align-items:center;gap:20px;margin-bottom:25px}.eyebrow{font-size:10px;font-weight:800;letter-spacing:2.2px;margin:0;color:#7a8b74}.muted{color:var(--muted)}.small{font-size:12px}.tag{display:inline-block;border:1px solid #d8e1d1;background:#edf2e6;border-radius:30px;padding:8px 13px;font-size:11px;font-weight:600;white-space:nowrap}.hero{border-radius:20px;background:var(--green);color:#fff;padding:32px 38px;display:flex;justify-content:space-between;align-items:center;margin-bottom:30px;position:relative;overflow:hidden}.hero h2{font-size:32px;line-height:1.2;letter-spacing:-1px;margin:12px 0}.hero p{font-size:13px;color:#c6d5c7}.hero .eyebrow{color:var(--lime)}.balance-bubble{border:1px solid #73876a;background:#ffffff08;border-radius:50%;width:160px;height:160px;display:flex;flex-direction:column;justify-content:center;align-items:center;text-align:center;flex-shrink:0}.balance-bubble strong{font-size:48px;color:var(--lime);line-height:1.3}.balance-bubble span{font-size:12px}.balance-bubble small{font-size:10px;color:#acbba8;margin-top:8px}.section-head{display:flex;align-items:center;justify-content:space-between;gap:18px;margin:22px 0 16px}.section-head h2{margin:0}.toolbar{display:flex;justify-content:space-between;align-items:center;gap:15px;margin:20px 0}.btn{border:0;background:var(--green);color:#fff;border-radius:8px;padding:12px 18px;font-weight:700;font-size:13px;display:inline-block;text-decoration:none;transition:background .15s}.btn:hover{background:#36644f}.btn.secondary{background:#eff3ea;color:var(--green);border:1px solid #d7e1d0}.btn.danger{background:#f7e9e4;color:#9b4b39}.panel{background:#fff;border:1px solid var(--line);border-radius:14px;padding:25px;margin-bottom:22px}.slots{display:grid;gap:18px}.date-card{background:#fff;border:1px solid var(--line);border-radius:14px;overflow:hidden}.date-head{display:flex;align-items:center;gap:18px;padding:20px 24px;border-bottom:1px solid var(--line)}.date-number{font-family:Manrope,sans-serif;font-size:28px;font-weight:800;background:#f0f4e9;display:grid;place-items:center;min-width:58px;height:58px;border-radius:12px}.date-head h3{margin:0 0 5px}.date-head .tag{margin-left:auto}.slot-row{display:grid;grid-template-columns:85px minmax(150px,1fr) auto;align-items:center;gap:18px;padding:20px 24px;border-bottom:1px solid #edf0e8}.slot-row:last-child{border:0}.slot-time{font:800 21px Manrope,sans-serif}.slot-info p{font-size:12px;margin:6px 0 0;color:var(--muted)}.slot-info strong{font-size:13px}.slot-info small{display:block;font-size:11px;color:var(--muted);margin-top:6px}.capacity{height:5px;max-width:180px;background:#eaf0e3;border-radius:5px;margin-top:9px;overflow:hidden}.capacity span{display:block;background:#91b561;height:100%;border-radius:5px}.slot-buttons{display:flex;flex-wrap:wrap;gap:8px;align-items:center}.stat-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px;margin-bottom:22px}.stat{background:#fff;border:1px solid var(--line);padding:25px;border-radius:14px}.stat>span{font-size:12px;color:var(--muted);display:block;margin-bottom:14px}.stat strong{font-size:34px;letter-spacing:-1px}.stat strong.smaller{font-size:22px}.stat small{font-size:13px;letter-spacing:0;font-weight:500}.two,.three{display:grid;gap:22px;grid-template-columns:repeat(2,minmax(0,1fr))}.three{grid-template-columns:repeat(3,minmax(0,1fr))}.line{display:flex;justify-content:space-between;border-bottom:1px solid var(--line);padding:12px 0;gap:20px;font-size:13px}.progress{height:9px;background:#e8efdF;border-radius:8px;overflow:hidden;margin:25px 0}.progress span{display:block;height:100%;background:#95b96b}.table-wrap{overflow-x:auto}table{width:100%;border-collapse:collapse;font-size:13px}th{text-align:left;font-size:10px;letter-spacing:1px;text-transform:uppercase;color:var(--muted);padding:16px 12px;border-bottom:1px solid var(--line)}td{padding:16px 12px;border-bottom:1px solid #edf0e8}td small{display:block;color:var(--muted);margin-top:5px}td a{font-weight:700;text-decoration:none}td input[type=checkbox]{width:20px;height:20px}label{display:block;color:#536252;font-size:12px;font-weight:600;margin:0 0 18px}input,select{display:block;width:100%;margin-top:7px;padding:12px 14px;border:1px solid #d4ddcf;border-radius:8px;background:#fff;color:var(--ink)}input[type=checkbox]{accent-color:var(--green);width:auto;display:inline-block;margin-right:8px}.checkbox{display:flex;align-items:center;gap:10px}.inline{display:flex;gap:20px;align-items:center}.inline label{flex:1;max-width:400px}.publish-options label{display:flex;align-items:center;gap:12px;background:var(--paper);padding:12px;border-radius:8px;margin-bottom:8px}.hidden{display:none!important}.success{color:#457236}.warning{color:#9a6418}.toast{position:fixed;bottom:25px;left:50%;transform:translateX(-50%);z-index:10;padding:14px 22px;background:var(--green);color:white;border-radius:12px;box-shadow:0 8px 30px #0002;display:none;max-width:90vw}.toast.visible{display:block}.toast.error{background:#a34c3c}#notice:not(:empty){background:#e9efdF;padding:16px;border-radius:10px;margin-bottom:20px}.login{display:grid;grid-template-columns:1fr 1fr;min-height:100vh}.login-form{max-width:570px;width:100%;padding:55px 65px;margin:auto}.login-form>.brand{margin-bottom:65px}.login-form h1{font-size:55px;letter-spacing:-2px}.login-form form{margin-top:28px}.login-form form>.btn{width:100%;background:var(--green)}.login-art{position:relative;overflow:hidden;background:#254b3e;padding:55px;display:flex;flex-direction:column;justify-content:space-between;color:#d3dfc6}.login-art>.tag{align-self:flex-start;background:#ffffff08;border-color:#ffffff20;color:var(--lime)}.art-copy{position:relative}.art-copy h2{font-size:46px;line-height:1.25;color:#fff;letter-spacing:-1.5px}.art-copy p{font-size:14px}.trail-lines{position:absolute;width:750px;height:750px;border:1px solid #b6d49330;border-radius:44% 56% 62% 38%;transform:rotate(-30deg);top:10%;left:5%;box-shadow:0 0 0 38px #b6d49309,0 0 0 39px #b6d49320,0 0 0 78px #b6d49309,0 0 0 79px #b6d49320,0 0 0 118px #b6d49309,0 0 0 119px #b6d49320}.search-results button{display:block;padding:10px;border:1px solid var(--line);background:var(--paper);text-align:left;width:100%;border-radius:6px;margin-bottom:5px}.slot-input{border-bottom:1px solid var(--line);margin-bottom:12px}.empty{padding:35px;text-align:center;color:var(--muted)}@media(max-width:1100px){main{padding:30px 25px}.shell{grid-template-columns:215px 1fr}.sidebar{padding:25px 16px}h1{font-size:30px}.login-form{padding:40px}.login-art{padding:40px}.login-form h1{font-size:46px}}@media(max-width:760px){.shell{display:block}.sidebar{height:auto;position:relative;padding:20px;border-right:0;border-bottom:1px solid var(--line)}.sidebar .brand{margin-bottom:15px}.nav-label,.sidebar-bottom{display:none}nav{flex-direction:row;overflow-x:auto;gap:6px}nav a{white-space:nowrap;font-size:12px;padding:10px 12px}main{padding:25px 16px}.topbar{align-items:flex-start}.topbar>.tag{display:none}h1{font-size:29px}.hero{padding:24px;gap:15px}.hero h2{font-size:26px}.balance-bubble{width:110px;height:110px}.balance-bubble strong{font-size:35px}.balance-bubble small{font-size:9px}.hero p{font-size:11px}.slot-row{grid-template-columns:65px 1fr;gap:12px;padding:18px}.slot-buttons{grid-column:2}.date-head{padding:18px}.stat-grid{gap:10px}.stat{padding:17px 12px}.stat strong{font-size:25px}.stat small{font-size:10px}.stat strong.smaller{font-size:16px}.two,.three{grid-template-columns:1fr;gap:5px}.panel{padding:20px}.inline{display:block}.login{display:block}.login-form{padding:35px 25px;max-width:500px}.login-form>.brand{margin-bottom:45px}.login-form h1{font-size:43px}.login-art{display:none}.section-head{align-items:flex-start}.section-head h2{font-size:20px}}

@media(max-width:760px){.sidebar-bottom{display:flex;align-items:center;margin-top:15px;padding-top:12px}.sidebar-bottom form{width:auto;margin:0 0 0 auto}.sidebar-bottom .avatar{width:28px;height:28px}.sidebar-bottom strong{font-size:11px}}

.view-switch{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.view-switch form{margin:0}.view-switch label{margin:0}.view-switch select{font-size:12px;padding:8px}.view-switch form:nth-child(2){display:flex;gap:8px;align-items:flex-end}.preview-note{border:1px solid #d9dfbf;background:#edf1df;padding:12px 18px;border-radius:10px;font-size:12px;margin-bottom:20px}@media(max-width:760px){.topbar{flex-wrap:wrap}.view-switch{width:100%}.view-switch form:nth-child(2){flex:1}.view-switch label{flex:1}.view-switch .btn{font-size:11px;padding:9px 12px}}

/* Trainer dashboard */
.dash-controls{display:flex;align-items:center;justify-content:space-between;gap:22px;margin-bottom:24px}.dash-controls h2{margin:8px 0}.dash-controls form{display:flex;align-items:flex-end;gap:12px}.dash-controls label{margin:0;min-width:160px}.dash-banner{background:#254b3e;color:#fff;border-radius:22px;padding:36px;display:flex;align-items:center;justify-content:space-between;gap:25px;margin-bottom:24px;overflow:hidden;background-image:radial-gradient(ellipse at 80% 20%,#557148 0,transparent 55%)}.dash-banner h2{font-size:38px;letter-spacing:-1.3px;line-height:1.2;margin:14px 0}.dash-banner p{color:#d8e5c7}.dash-banner .eyebrow{color:#d7ee9e}.dash-orbit{width:190px;height:190px;flex-shrink:0;border:1px solid #a7c88a99;box-shadow:0 0 0 17px #ffffff05,0 0 0 35px #ffffff04;border-radius:50%;display:flex;align-items:center;justify-content:center;flex-direction:column;gap:5px}.dash-orbit strong{font-size:42px;color:#d7ee9e;letter-spacing:-1px}.dash-orbit span{font-size:12px}.dash-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:15px;margin-bottom:26px}.dash-kpi{padding:23px;background:#fff;border:1px solid #dfe5dc;border-radius:15px;display:flex;flex-direction:column;gap:12px}.dash-kpi>span{font-size:12px;color:#6a7c70}.dash-kpi strong{font-size:30px;line-height:1.2;letter-spacing:-1px}.dash-kpi small{font-size:11px;color:#748176;line-height:1.55}.dash-kpi.accent{background:#d7ee9e;border-color:#c2dc8a}.dash-kpi.accent small{color:#456039}.dash-two{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:22px}.dash-two .panel{min-width:0}.dash-columns{display:flex;gap:8px;align-items:flex-end;height:225px;margin-top:25px}.dash-column{flex:1;min-width:0;text-align:center}.dash-column strong{font-size:11px}.dash-column>div{height:165px;position:relative;background:#f4f7ef;border-radius:7px;margin:9px 0}.dash-column>div span{position:absolute;bottom:0;left:0;right:0;background:#8ead68;border-radius:6px;min-height:2px;transition:height .4s}.dash-column small{font-size:10px;color:#748176}.dash-chart{width:100%;height:225px;display:block;margin-top:16px}.dash-bars{display:grid;gap:18px;margin-top:24px}.dash-bar>div:first-child{display:flex;justify-content:space-between;gap:15px;font-size:12px;margin-bottom:8px}.dash-bar strong{white-space:nowrap;font-size:11px}.dash-track{height:8px;background:#eff3e9;border-radius:8px}.dash-track span{height:100%;display:block;border-radius:8px;background:#8ead68}.dash-records{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:15px;margin-bottom:24px}.dash-records .dash-kpi strong{font-size:24px}.dash-awards{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px;margin-bottom:24px}.dash-awards article{padding:25px;border-radius:16px;background:#ebf0e4;border-top:3px solid #9eba76}.dash-awards article:first-child{background:#f5efdb;border-color:#c5ad63}.dash-awards h3{font-size:19px;margin:12px 0 5px}.dash-awards p:last-child{margin:0;font-size:12px;color:#6f7c66}.dash-rank{display:grid;place-items:center;background:#edf2e6;border-radius:8px;width:30px;height:30px;font-weight:800}.dash-notes summary{font-weight:700;cursor:pointer}.dash-notes p{font-size:12px;color:#748176;max-width:1000px}@media(max-width:1200px){.dash-grid,.dash-records{grid-template-columns:repeat(2,minmax(0,1fr))}.dash-banner h2{font-size:32px}}@media(max-width:850px){.dash-two{grid-template-columns:1fr}.dash-controls{align-items:flex-start;flex-wrap:wrap}.dash-banner{padding:27px}.dash-orbit{width:130px;height:130px}.dash-orbit strong{font-size:30px}.dash-awards{grid-template-columns:1fr}.dash-chart{height:auto}}@media(max-width:480px){.dash-banner{display:block}.dash-banner h2{font-size:29px}.dash-orbit{margin:30px auto 10px}.dash-kpi{padding:18px 14px}.dash-kpi strong{font-size:26px}.dash-records .dash-kpi strong{font-size:21px}.dash-columns{gap:4px}.dash-controls form{width:100%}.dash-controls label{flex:1}.dash-bar>div:first-child{font-size:11px}}

.personal-hero{display:flex;align-items:center;justify-content:space-between;gap:25px;padding:35px;border-radius:22px;margin-bottom:24px;background:#edf2e3}.personal-hero h2{font-size:35px;line-height:1.2;letter-spacing:-1px;margin:14px 0}.personal-hero p:last-child{max-width:430px;color:#687c64;font-size:13px}.personal-distance{flex-shrink:0;display:flex;flex-direction:column;align-items:center;justify-content:center;width:180px;height:180px;background:#d7ee9e;border-radius:50%;gap:10px}.personal-distance strong{font-size:43px;letter-spacing:-1px}.personal-distance span{font-size:10px}.personal-kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;margin-bottom:24px}.personal-goal{background:#254b3e;color:white;position:relative}.personal-goal .eyebrow{color:#d7ee9e}.personal-goal p{color:#d0dfc9;max-width:650px}.personal-goal .btn{background:#d7ee9e;color:#254b3e}.personal-goal>.strong{font-size:18px}.personal-goal .progress{background:#496247}.personal-goal .progress span{background:#d7ee9e}.personal-two{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:22px}.personal-buddy{background:#f5efdf}.personal-buddy h3{font-size:27px;margin-bottom:8px}.personal-buddy>p:not(.eyebrow){font-size:13px}.personal-badges{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:14px}.personal-badge{background:#f5f6f2;border:1px dashed #d6dfcf;border-radius:13px;padding:18px 12px;text-align:center}.personal-badge>span{display:grid;place-items:center;margin:auto;width:36px;height:36px;border-radius:50%;background:#e9eee2;color:#75836a;font-weight:700}.personal-badge h3{font-size:13px;line-height:1.5}.personal-badge small{font-size:10px;color:#748176}.personal-badge p{font-size:11px;color:#748176;margin:12px 0 0}.personal-badge.earned{background:#edf4df;border:1px solid #d1e2b6}.personal-badge.earned>span{background:#d7ee9e;color:#254b3e}.personal-badge.earned p{color:#457236}.personal-mini{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:23px}.personal-mini>div{display:flex;flex-direction:column;gap:8px;padding:18px;background:#f2f5eb;border-radius:12px}.personal-mini strong{font-size:26px}.personal-mini span{font-size:11px;color:#748176}.personal-summary{font-weight:700;cursor:pointer}@media(max-width:1100px){.personal-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}.personal-badges{grid-template-columns:repeat(3,minmax(0,1fr))}}@media(max-width:850px){.personal-two{grid-template-columns:1fr}.personal-hero h2{font-size:29px}.personal-distance{width:135px;height:135px}.personal-distance strong{font-size:34px}}@media(max-width:480px){.personal-hero{display:block;padding:26px}.personal-distance{margin:25px auto 0}.personal-badges{grid-template-columns:repeat(2,minmax(0,1fr))}.personal-buddy h3{font-size:24px}}
.milestone-free{display:block;margin-top:12px;font-size:10px;line-height:1.5;color:#254b3e;background:#d7ee9e;padding:7px;border-radius:7px}

.annual-summary{display:flex;justify-content:space-between;gap:16px;flex-wrap:wrap;padding:18px 0;color:var(--green)}.annual-goals{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}.annual-goal{padding:20px;border:1px solid #dce6d4;border-radius:16px;background:#f6f8f1}.annual-goal.earned{background:#edf5df}.annual-goal h3{margin:16px 0}.annual-goal p{font-size:13px;margin-bottom:0}@media(max-width:700px){.annual-goals{grid-template-columns:1fr}}

.release-notice{padding:16px 24px;margin:0;background:#eef3e8;color:#315142;font-size:14px;border-top:1px solid #dae3d3}
