:root{
  --primary:#FF4D67; --primary-dark:#E03457; --accent:#1FB5A6; --accent-dark:#149E90;
  --gold:#FFB100; --ink:#16151D; --ink2:#44434F; --subtle:#8E8D9B; --hairline:#ECECF1;
  --bg:#F6F6FA; --card:#fff;
  --grad-coral:linear-gradient(135deg,#FF5A6E,#FF3D8B);
  --grad-teal:linear-gradient(135deg,#1FB5A6,#149E90);
  --grad-mix:linear-gradient(135deg,#FF5A6E,#1FB5A6);
  --shadow:0 6px 24px rgba(0,0,0,.07); --shadow-lg:0 14px 40px rgba(0,0,0,.12);
  --r-sm:12px; --r-md:18px; --r-lg:26px;
}
*{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth}
body{font-family:'Plus Jakarta Sans',system-ui,sans-serif;background:var(--bg);color:var(--ink);-webkit-font-smoothing:antialiased}
a{color:inherit;text-decoration:none}
img{display:block;max-width:100%}
button{font-family:inherit;cursor:pointer;border:none;background:none}
input,select,textarea{font-family:inherit}

.container{max-width:1120px;margin:0 auto;padding:0 20px}

/* ---------- Top bar ---------- */
.topbar{position:sticky;top:0;z-index:50;background:rgba(255,255,255,.85);backdrop-filter:blur(14px);border-bottom:1px solid var(--hairline)}
.topbar .inner{display:flex;align-items:center;gap:18px;height:64px}
.brand{display:flex;align-items:center;gap:9px;font-weight:800;font-size:22px}
.brand .logo{width:34px;height:34px;border-radius:10px}
.nav-links{display:flex;gap:6px;margin-left:8px}
.nav-links a{padding:8px 14px;border-radius:100px;font-weight:600;font-size:15px;color:var(--ink2);transition:.15s}
.nav-links a:hover{background:var(--bg)}
.nav-links a.active{background:var(--primary);color:#fff}
.topbar .spacer{flex:1}
.avatar{width:38px;height:38px;border-radius:50%;background:var(--grad-mix);display:grid;place-items:center;color:#fff;font-weight:700;font-size:14px}

/* ---------- Buttons ---------- */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;font-weight:700;font-size:15px;
  padding:12px 20px;border-radius:14px;transition:transform .12s,box-shadow .2s,opacity .2s}
.btn:active{transform:scale(.97)}
.btn-primary{background:var(--grad-coral);color:#fff;box-shadow:0 8px 22px rgba(255,77,103,.35)}
.btn-primary:hover{box-shadow:0 10px 28px rgba(255,77,103,.45)}
.btn-teal{background:var(--grad-teal);color:#fff;box-shadow:0 8px 22px rgba(31,181,166,.35)}
.btn-white{background:#fff;color:var(--primary);box-shadow:var(--shadow)}
.btn-ghost{background:var(--card);color:var(--ink);box-shadow:var(--shadow)}
.btn-outline{background:transparent;border:1.5px solid var(--primary);color:var(--primary)}
.btn-block{width:100%}
.btn:disabled{opacity:.5;cursor:not-allowed}

.pill{display:inline-flex;align-items:center;gap:5px;font-size:12px;font-weight:700;padding:5px 11px;border-radius:100px}
.pill.coral{background:rgba(255,77,103,.14);color:var(--primary)}
.pill.teal{background:rgba(31,181,166,.14);color:var(--accent)}
.pill.solid-coral{background:var(--primary);color:#fff}
.pill.solid-teal{background:var(--accent);color:#fff}
.pill.gray{background:rgba(142,141,155,.16);color:var(--subtle)}

/* ---------- Hero / landing ---------- */
.hero{position:relative;overflow:hidden;background:var(--grad-coral);color:#fff;border-radius:0 0 36px 36px;padding:70px 0 90px}
.hero .blob{position:absolute;border-radius:50%;filter:blur(8px);opacity:.15;background:#fff}
.hero h1{font-size:clamp(36px,6vw,62px);font-weight:800;line-height:1.05;letter-spacing:-1px}
.hero p{font-size:clamp(16px,2.5vw,20px);margin-top:18px;opacity:.95;max-width:560px}
.hero .cta{display:flex;gap:12px;margin-top:32px;flex-wrap:wrap}
.hero .stats{display:flex;gap:32px;margin-top:46px;flex-wrap:wrap}
.hero .stat b{display:block;font-size:30px;font-weight:800}
.hero .stat span{opacity:.85;font-size:14px}

/* ---------- Type switch + search ---------- */
.toolbar{display:flex;gap:14px;flex-wrap:wrap;align-items:center;margin:-46px 0 0;position:relative;z-index:5}
.switch{display:flex;background:#fff;border-radius:var(--r-md);padding:5px;box-shadow:var(--shadow)}
.switch button{padding:11px 20px;border-radius:var(--r-sm);font-weight:700;color:var(--subtle);transition:.2s}
.switch button.active{color:#fff}
.switch button.active.lesson{background:var(--grad-coral)}
.switch button.active.workshop{background:var(--grad-teal)}
.search{flex:1;min-width:220px;display:flex;align-items:center;gap:10px;background:#fff;border-radius:var(--r-md);padding:12px 16px;box-shadow:var(--shadow)}
.search input{border:none;outline:none;flex:1;font-size:15px;background:transparent}

/* ---------- Category strip ---------- */
.cats{display:flex;gap:16px;overflow-x:auto;padding:24px 2px 8px;scrollbar-width:none}
.cats::-webkit-scrollbar{display:none}
.cat{flex:0 0 auto;display:flex;flex-direction:column;align-items:center;gap:8px;cursor:pointer;width:74px}
.cat .ic{width:64px;height:64px;border-radius:var(--r-md);display:grid;place-items:center;font-size:26px;color:#fff;box-shadow:var(--shadow);transition:transform .2s}
.cat:hover .ic{transform:translateY(-3px)}
.cat.active .ic{outline:3px solid var(--primary);outline-offset:2px}
.cat span{font-size:12.5px;font-weight:600;color:var(--subtle);text-align:center}
.cat.active span{color:var(--ink);font-weight:700}

/* ---------- Listing grid ---------- */
.section-head{display:flex;align-items:center;justify-content:space-between;margin:18px 0 16px}
.section-head h2{font-size:24px;font-weight:800}
.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:22px}
.card{background:var(--card);border-radius:var(--r-md);box-shadow:var(--shadow);overflow:hidden;cursor:pointer;
  transition:transform .18s,box-shadow .25s;animation:rise .4s ease both}
.card:hover{transform:translateY(-5px);box-shadow:var(--shadow-lg)}
@keyframes rise{from{opacity:0;transform:translateY(16px)}to{opacity:1;transform:none}}
.card .thumb{height:170px;display:grid;place-items:center;color:#fff;font-size:48px;position:relative}
.card .thumb .top{position:absolute;top:12px;left:12px;right:12px;display:flex;justify-content:space-between}
.card .body{padding:16px}
.card h3{font-size:17px;font-weight:800;line-height:1.25;margin-bottom:8px}
.card .pro{display:flex;align-items:center;gap:8px;color:var(--ink2);font-size:14px;margin-bottom:10px}
.card .pro .av{width:24px;height:24px;font-size:11px}
.card .meta{display:flex;align-items:center;gap:12px;color:var(--subtle);font-size:13px}
.card .price{margin-left:auto;color:var(--primary);font-weight:800;font-size:18px}

/* ---------- Detail ---------- */
.detail-hero{height:320px;border-radius:var(--r-lg);display:grid;place-items:center;color:#fff;font-size:72px;margin:24px 0}
.detail-grid{display:grid;grid-template-columns:1.6fr 1fr;gap:28px;align-items:start}
@media(max-width:860px){.detail-grid{grid-template-columns:1fr}}
.panel{background:var(--card);border-radius:var(--r-md);box-shadow:var(--shadow);padding:22px}
.info-tiles{display:grid;grid-template-columns:repeat(auto-fit,minmax(110px,1fr));gap:12px;margin:18px 0}
.tile{background:var(--bg);border-radius:var(--r-sm);padding:14px;text-align:center}
.tile .v{font-weight:800;font-size:15px}.tile .l{color:var(--subtle);font-size:12px;margin-top:2px}
.slot{display:flex;align-items:center;justify-content:space-between;gap:10px;background:var(--bg);
  border-radius:var(--r-sm);padding:14px 16px;margin-bottom:10px}
.slot .d{font-weight:700}.slot .t{color:var(--subtle);font-size:13px}

/* ---------- Generic ---------- */
.row{display:flex;align-items:center;gap:12px}
.muted{color:var(--subtle)} .center{text-align:center}
.mt{margin-top:18px}.mt2{margin-top:32px}
.empty{text-align:center;padding:70px 20px;color:var(--subtle)}
.empty .ic{font-size:54px;opacity:.5;margin-bottom:10px}
.skeleton{background:linear-gradient(90deg,#eee,#f6f6f6,#eee);background-size:200% 100%;
  animation:shimmer 1.3s infinite;border-radius:var(--r-md)}
@keyframes shimmer{from{background-position:200% 0}to{background-position:-200% 0}}

/* ---------- Field ---------- */
.field{display:flex;align-items:center;gap:10px;background:var(--card);border:1px solid var(--hairline);
  border-radius:var(--r-sm);padding:13px 15px;margin-bottom:12px}
.field input,.field select,.field textarea{border:none;outline:none;flex:1;font-size:15px;background:transparent}
.field .i{color:var(--subtle)}
label.lbl{font-weight:600;font-size:14px;color:var(--ink2);display:block;margin:6px 0}

/* ---------- Modal ---------- */
.overlay{position:fixed;inset:0;background:rgba(20,20,30,.5);backdrop-filter:blur(4px);
  display:grid;place-items:center;z-index:100;animation:fade .2s}
@keyframes fade{from{opacity:0}to{opacity:1}}
.modal{background:#fff;border-radius:var(--r-lg);width:min(440px,92vw);padding:28px;box-shadow:var(--shadow-lg);
  animation:pop .25s cubic-bezier(.2,.8,.2,1)}
@keyframes pop{from{opacity:0;transform:scale(.94) translateY(10px)}to{opacity:1;transform:none}}
.modal h2{font-size:24px;font-weight:800;margin-bottom:4px}
.seg{display:flex;background:var(--bg);border-radius:var(--r-sm);padding:4px;margin:16px 0}
.seg button{flex:1;padding:10px;border-radius:10px;font-weight:700;color:var(--subtle)}
.seg button.active{background:#fff;color:var(--ink);box-shadow:var(--shadow)}
.role-pick{display:flex;gap:10px;margin-bottom:6px}
.role-pick button{flex:1;padding:14px;border-radius:var(--r-sm);background:var(--bg);font-weight:700;color:var(--subtle);border:2px solid transparent}
.role-pick button.active{border-color:var(--primary);color:var(--primary);background:rgba(255,77,103,.08)}
.err{color:#e0314f;font-size:13.5px;margin:8px 0}
.close{position:absolute;top:18px;right:20px;font-size:22px;color:var(--subtle)}

/* ---------- Toast ---------- */
.toast{position:fixed;bottom:28px;left:50%;transform:translateX(-50%);background:var(--accent);color:#fff;
  font-weight:700;padding:14px 24px;border-radius:100px;box-shadow:var(--shadow-lg);z-index:200;animation:slideup .3s}
@keyframes slideup{from{opacity:0;transform:translate(-50%,20px)}to{opacity:1;transform:translateX(-50%)}}

.booking-card{background:var(--card);border-radius:var(--r-md);box-shadow:var(--shadow);padding:18px;margin-bottom:14px}

footer.site{padding:50px 0;color:var(--subtle);text-align:center;font-size:14px}
