:root{--green:#1f6b4a;--green-dark:#154d35;--green-soft:#e8f4ee;--leaf:#3d9b6e;--ink:#163027;--muted:#5c7268;--line:#d5e4db;--white:#fff;--sand:#f7fbf8}*{box-sizing:border-box}html,body,#root{min-height:100%;margin:0}body{color:var(--ink);background:var(--white);font-family:"Source Sans 3",system-ui,sans-serif}h1,h2,h3,.serif{font-family:Cormorant Garamond,Georgia,serif}a{color:inherit;text-decoration:none}img{max-width:100%;display:block}button,input,textarea,select{font:inherit}.container{width:min(1180px,100% - 40px);margin:0 auto}.header{z-index:20;border-bottom:1px solid var(--line);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);background:#fffffff5;position:sticky;top:0;box-shadow:0 8px 24px #154d350a}.header-inner{justify-content:space-between;align-items:center;gap:20px;min-height:72px;display:flex;position:relative}.nav{flex:1;justify-content:space-between;align-items:center;gap:24px;min-width:0;display:flex}.nav-links,.nav-actions{align-items:center;gap:4px;display:flex}.nav-actions{gap:8px;margin-left:auto}.nav a,.nav button.linkish,.nav-drop-btn{color:var(--green-dark);cursor:pointer;white-space:nowrap;background:0 0;border:0;border-radius:999px;padding:8px 12px;font-size:15px;font-weight:600}.nav a.active,.nav a:hover,.nav-drop-btn:hover,.nav-drop.is-open .nav-drop-btn{background:var(--green-soft)}.nav-drop{position:relative}.nav-drop-btn{align-items:center;gap:4px;display:inline-flex}.nav-caret{opacity:.7;font-size:10px}.nav-drop-menu{border:1px solid var(--line);z-index:30;background:#fff;border-radius:16px;flex-direction:column;gap:2px;min-width:220px;padding:8px;display:none;position:absolute;top:calc(100% + 8px);left:0;box-shadow:0 16px 40px #154d351f}.nav-drop-menu a{border-radius:12px;width:100%}.nav-drop:hover .nav-drop-menu,.nav-drop.is-open .nav-drop-menu{display:flex}.nav-user{color:var(--green-dark);white-space:nowrap;align-items:center;gap:8px;padding:4px 8px 4px 4px;font-weight:600;display:inline-flex}.nav-avatar{background:var(--green);color:#fff;border-radius:50%;place-items:center;width:32px;height:32px;font-size:14px;display:grid}.nav-cta{padding:9px 16px;font-size:14px}.nav-signout{padding:8px 14px;font-size:14px}.member-home{border-bottom:1px solid var(--line);background:linear-gradient(90deg,#e8f4ee,#f7fbf8 55%,#eaf6ef);padding:22px 0}.member-home-inner{grid-template-columns:minmax(0,1.1fr) minmax(0,1.4fr);align-items:center;gap:24px;display:grid}.member-home h2{color:var(--green-dark);margin:0 0 6px;font-size:32px}.member-home p{color:var(--muted);margin:0}.member-home .kicker{letter-spacing:.14em;text-transform:uppercase;color:var(--green);margin-bottom:4px;font-size:12px;font-weight:700}.member-home-cards{flex-wrap:wrap;gap:10px;display:flex}.member-chip{border:1px solid var(--line);color:var(--green-dark);background:#fff;border-radius:14px;flex-direction:column;gap:2px;min-width:140px;padding:12px 16px;font-weight:700;display:flex;box-shadow:0 8px 18px #154d350a}.member-chip span{color:var(--muted);font-size:12px;font-weight:500}.member-chip:hover{border-color:var(--green);background:var(--green-soft)}.logo{color:var(--green-dark);align-items:center;gap:10px;min-width:0;font-weight:700;display:flex}.logo-text{white-space:nowrap;font-family:"Source Sans 3",system-ui,sans-serif;font-size:26px;font-weight:700}.logo-mark{background:var(--green);color:#fff;border-radius:50%;place-items:center;width:38px;height:38px;font-family:Cormorant Garamond,serif;font-size:22px;display:grid}.nav-toggle{border:1px solid var(--line);cursor:pointer;background:#fff;border-radius:12px;place-items:center;gap:5px;width:44px;height:44px;padding:10px;display:none}.nav-toggle span{background:var(--green-dark);border-radius:2px;width:18px;height:2px;transition:transform .2s,opacity .2s;display:block}.header.is-open .nav-toggle span:first-child{transform:translateY(7px)rotate(45deg)}.header.is-open .nav-toggle span:nth-child(2){opacity:0}.header.is-open .nav-toggle span:nth-child(3){transform:translateY(-7px)rotate(-45deg)}.btn{cursor:pointer;border:0;border-radius:999px;justify-content:center;align-items:center;padding:11px 20px;font-weight:600;display:inline-flex}.btn-green{background:var(--green);color:#fff}.btn-green:hover{background:var(--green-dark)}.btn-outline{color:var(--green);border:1px solid var(--green);background:#fff}.banner{color:#fff;background:linear-gradient(100deg,#154d35c7,#1f6b4a73),url(https://images.unsplash.com/photo-1544367567-0f2fcb009e0b?auto=format&fit=crop&w=1800&q=80) 50%/cover no-repeat;place-items:center;min-height:520px;display:grid;position:relative}.banner-copy{text-align:left;width:min(720px,100% - 40px)}.banner-copy p.kicker{letter-spacing:.16em;text-transform:uppercase;margin-bottom:8px;font-size:13px}.banner-copy h1{margin:0 0 16px;font-size:clamp(42px,6vw,72px);line-height:.95}.banner-actions{flex-wrap:wrap;gap:12px;margin-top:22px;display:flex}.banner-actions .btn-outline{color:#fff;background:0 0;border-color:#ffffffbf}.social-row{flex-wrap:wrap;gap:12px 18px;margin:16px 0;display:flex}.social-row a{color:var(--green-dark);font-weight:600}.social-icon{align-items:center;gap:8px;display:inline-flex}.maps-embed{border:0;border-radius:16px;width:100%;min-height:320px;margin-top:16px}.dash-grid{margin-bottom:24px}.section{padding:72px 0}.section.alt{background:var(--sand)}.section-head{justify-content:space-between;align-items:end;gap:16px;margin-bottom:32px;display:flex}.section-head h2{color:var(--green-dark);margin:0;font-size:42px}.muted{color:var(--muted)}.grid-3{grid-template-columns:repeat(3,1fr);gap:22px;display:grid}.card{border:1px solid var(--line);background:#fff;border-radius:18px;overflow:hidden}.media-cover,.media-frame{object-fit:cover;background:#0f241c;width:100%;height:210px}.media-frame{position:relative;overflow:hidden}.media-frame iframe{border:0;width:100%;height:100%;position:absolute;inset:0}.media-placeholder{color:#fff;object-fit:cover;place-items:center;width:100%;height:190px;display:grid}.card-body{padding:18px 18px 22px}.price{color:var(--green);font-size:22px;font-weight:700}.price-btn{width:100%;margin-top:8px}.course-detail{grid-template-columns:1.1fr .9fr;align-items:start;gap:32px;display:grid}.course-hero{object-fit:cover;border-radius:18px;width:100%;height:380px}.course-points{color:var(--muted);padding-left:18px}.payment-layout{grid-template-columns:.9fr 1.1fr;align-items:start;gap:32px;display:grid}.cf-test-box{border:1px dashed var(--green);background:var(--green-soft);border-radius:14px;margin-top:12px;padding:16px}.history-list{gap:16px;margin-top:24px;display:grid}.history-card.is-latest{border-color:var(--green);box-shadow:0 8px 24px #154d3514}.review{border:1px solid var(--line);background:#fff;border-radius:18px;padding:22px}.stars{color:var(--leaf);letter-spacing:2px}.footer{background:var(--green-dark);color:#e8f4ee;padding:48px 0 24px}.footer h3{color:#fff;margin:0 0 10px}.footer-grid{grid-template-columns:1.2fr 1fr 1fr;gap:28px;display:grid}.footer .footer-follow{margin-top:22px;font-size:20px}.footer .social-row a{color:#fff;border:1px solid #ffffff59;border-radius:999px;padding:8px 12px;text-decoration:none}.footer .social-row a:hover,.footer .social-row a:focus-visible{background:#ffffff24;border-color:#fff}.home-visit-band{border:1px solid var(--line);background:var(--green-soft);border-radius:18px;grid-template-columns:1.4fr 1fr;align-items:center;gap:24px;padding:28px;display:grid}.session-type-row{grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;max-width:760px;margin-bottom:24px;display:grid}.session-type{text-align:left;border:1px solid var(--line);color:var(--green-dark);cursor:pointer;font:inherit;background:#fff;border-radius:14px;gap:4px;padding:14px 16px;display:grid}.session-type span{color:#5b6b62;font-size:14px}.session-type .price{color:var(--green-dark);margin:4px 0 0;font-weight:700}.session-type.is-active{border-color:var(--green);background:var(--green-soft);box-shadow:0 0 0 2px var(--green) inset}.qr-pay{border:1px dashed var(--green);background:var(--green-soft);border-radius:14px;justify-items:start;gap:10px;padding:16px;display:grid}.qr-pay label{gap:6px;width:100%;display:grid}.qr-pay-image{aspect-ratio:1;object-fit:contain;border:1px solid var(--line);background:#fff;border-radius:12px;width:240px;max-width:100%;height:auto;padding:8px}.side-count{color:#1d1d1d;text-align:center;background:#f4b400;border-radius:999px;min-width:22px;margin-left:8px;padding:1px 7px;font-size:12px;font-weight:700;display:inline-block}.category-picker{border:1px solid var(--line);border-radius:12px;flex-wrap:wrap;gap:8px 20px;padding:10px 14px;display:flex}.category-picker label{align-items:center;gap:6px;font-weight:600;display:inline-flex}.category-tags{flex-wrap:wrap;gap:6px;margin:0 0 8px;display:flex}.home-class{text-align:left;font:inherit;cursor:pointer;padding:0;display:block}.home-class .card-body{gap:6px;display:grid}.home-class.is-active{outline:3px solid var(--green)}.google-share{justify-items:start;gap:10px;margin-top:16px;display:grid}.pay-buttons{gap:10px;display:grid}.filter-row{flex-wrap:wrap;align-items:center;gap:8px;margin:0 0 16px;display:flex}.filter-row input[type=search]{border:1px solid var(--line);border-radius:10px;min-width:260px;padding:10px 12px}.table-scroll{overflow-x:auto}.page-hero{background:var(--green-soft);padding:56px 0 20px}.form{gap:14px;max-width:560px;display:grid}.form label{color:var(--green-dark);gap:6px;font-weight:600;display:grid}.form input,.form textarea,.form select{border:1px solid var(--line);background:#fff;border-radius:12px;padding:12px 14px}.admin-shell{grid-template-columns:230px 1fr;min-height:100vh;display:grid}.admin-side{background:var(--green-dark);color:#fff;padding:24px 16px}.admin-side a,.admin-side button{text-align:left;color:#fff;cursor:pointer;background:0 0;border:0;border-radius:10px;width:100%;margin-bottom:6px;padding:10px 12px;display:block}.admin-side a.active,.admin-side a:hover,.admin-side button.active,.admin-side button:hover{background:#ffffff1f}.admin-main{background:var(--sand);padding:28px}.stats{grid-template-columns:repeat(4,1fr);gap:14px;display:grid}.stat{border:1px solid var(--line);background:#fff;border-radius:14px;padding:16px}.table{border-collapse:collapse;background:#fff;border-radius:14px;width:100%;overflow:hidden}.table th,.table td{border-bottom:1px solid var(--line);text-align:left;padding:12px 14px;font-size:14px}.badge{text-transform:capitalize;border-radius:999px;padding:3px 8px;font-size:12px;display:inline-block}.badge.paid{color:#146b3a;background:#d9f3e5}.badge.pending{color:#8a5a00;background:#fff3d6}.badge.failed{color:#9a1f16;background:#ffd9d6}.admin-form{border:1px solid var(--line);background:#fff;border-radius:14px;grid-template-columns:1fr 1fr;gap:12px;margin-bottom:22px;padding:18px;display:grid}.admin-form .full{grid-column:1/-1}.row-actions{flex-wrap:wrap;gap:8px;display:flex}.trainer-photo{object-fit:cover;width:100%;height:260px}.notice{background:var(--green-soft);color:var(--green-dark);border-radius:10px;padding:12px 14px}.error{color:#9a1f16}.mode-row{flex-wrap:wrap;gap:8px;margin:12px 0;display:flex}.panel{border:1px solid var(--line);background:var(--sand);border-radius:18px;margin-top:36px;padding:24px}.week-grid{grid-template-columns:repeat(7,1fr);gap:10px;display:grid}.week-col{border:1px solid var(--line);background:#fff;border-radius:12px;min-height:140px;padding:10px}.week-slot{border-top:1px solid var(--line);margin-top:8px;padding-top:8px;font-size:13px}.cal-nav{justify-content:space-between;align-items:center;margin:12px 0;display:flex}.cal-grid{grid-template-columns:repeat(7,1fr);gap:6px;display:grid}.cal-head{color:var(--green-dark);text-align:center;font-weight:600}.cal-cell{border:1px solid var(--line);cursor:pointer;background:#fff;border-radius:10px;flex-direction:column;align-items:flex-start;min-height:64px;padding:6px 8px;display:flex}.cal-cell.empty,.cal-cell:disabled{cursor:default;opacity:.55}.cal-cell.scheduled{border-color:var(--green);background:#f3faf6}.cal-cell.present,.cal-cell.present:disabled{color:#fff;opacity:1;background:#1f6b4a;border-color:#154d35;font-weight:700}.cal-cell.absent,.cal-cell.absent:disabled{color:#fff;opacity:1;background:#c23b2e;border-color:#8f241b;font-weight:700}.cal-cell small{font-size:11px;font-weight:700}.attendance-calendar-panel{border:1px solid var(--line);background:#fff;border-radius:16px;margin-top:28px;padding:20px}@media (width<=1100px){.nav-user-name{display:none}.nav-links a,.nav-drop-btn{padding:8px 10px;font-size:14px}}@media (width<=900px){.grid-3,.footer-grid,.stats,.admin-shell,.admin-form,.course-detail,.payment-layout,.week-grid,.home-visit-band,.session-type-row{grid-template-columns:1fr}.banner{min-height:420px}.header-inner{flex-wrap:wrap;min-height:64px}.logo-text{font-size:20px}.nav-toggle{margin-left:auto;display:grid}.nav{box-shadow:none;background:0 0;border-bottom:0;flex-direction:column;flex-basis:100%;align-items:stretch;gap:10px;width:100%;padding:8px 0 16px;display:none;position:static;transform:none}.header.is-open .nav{display:flex}.nav-links,.nav-actions{flex-direction:column;align-items:stretch;gap:6px;width:100%;margin-left:0}.nav-drop-menu{box-shadow:none;background:0 0;border:0;min-width:0;padding:0 0 0 12px;display:none;position:static}.nav-drop.is-open .nav-drop-menu,.header.is-open .nav-drop.is-open .nav-drop-menu{display:flex}.nav-drop:hover .nav-drop-menu{display:none}.nav-drop.is-open:hover .nav-drop-menu{display:flex}.nav a,.nav .btn,.nav-user,.nav-drop-btn{background:var(--sand);border-radius:12px;justify-content:flex-start;width:100%;padding:12px 16px}.member-home-inner{grid-template-columns:1fr}.nav-user-name{display:inline}.nav a.active{background:var(--green-soft)}.container{width:min(1120px,100% - 24px)}}.page-loader{z-index:80;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#f7fbf8b8;place-items:center;display:grid;position:fixed;inset:0}.page-loader-card{border:1px solid var(--line);color:var(--green-dark);background:#fff;border-radius:18px;justify-items:center;gap:12px;padding:28px 36px;font-weight:600;display:grid;box-shadow:0 16px 40px #154d351f}.page-loader-card p{margin:0}.spinner{border:3px solid var(--green-soft);border-top-color:var(--green);border-radius:50%;width:36px;height:36px;animation:.7s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.payqr-layout{grid-template-columns:minmax(0,1fr) minmax(0,1fr);align-items:start;gap:20px;display:grid}.payqr-layout .panel{justify-items:start;gap:12px;display:grid}.qr-upload{cursor:pointer}.visually-hidden{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.link-button{color:var(--green);font:inherit;cursor:pointer;background:0 0;border:0;padding:0;text-decoration:underline}@media (width<=900px){.payqr-layout{grid-template-columns:1fr}}.cal-cell.today{box-shadow:0 0 0 2px var(--green-dark) inset}.cal-due{color:#9a1f16;font-weight:700}.due-banner{margin-bottom:20px}.auth-progress{z-index:90;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);background:#154d3559;place-items:center;padding:16px;display:grid;position:fixed;inset:0}.auth-progress-card{text-align:center;background:#fff;border-radius:20px;justify-items:center;gap:14px;width:min(420px,100%);padding:28px 26px;animation:.25s ease-out auth-pop;display:grid;box-shadow:0 20px 50px #154d3540}.auth-progress-card h2{color:var(--green-dark);margin:0;font-size:28px}.auth-progress-mark{width:52px;height:52px;font-size:26px}.auth-steps{text-align:left;gap:10px;width:100%;margin:0;padding:0;list-style:none;display:grid}.auth-step{color:#6b7a71;align-items:center;gap:12px;display:flex}.auth-step.is-active{color:var(--green-dark);font-weight:700}.auth-step.is-done{color:var(--green-dark)}.auth-step-icon{border:2px solid var(--line);border-radius:50%;flex:0 0 26px;place-items:center;width:26px;height:26px;font-size:14px;font-weight:700;display:grid}.auth-step.is-done .auth-step-icon{border-color:var(--green);background:var(--green);color:#fff}.auth-step.is-active .auth-step-icon{border-color:#0000}.spinner.small{border-width:3px;width:22px;height:22px}.auth-slow{margin:4px 0 0;font-size:14px}.dash-loading{color:var(--green-dark);align-items:center;gap:14px;padding:24px 0;display:flex}.dash-loading p{margin:0}@keyframes auth-pop{0%{opacity:0;transform:translateY(8px)scale(.98)}}@media (prefers-reduced-motion:reduce){.auth-progress-card{animation:none}}
