/* Member app v2, fitness-app look: dark, neon green, big photo cards. Loaded after portal.css */
.round-btn { width:44px; height:44px; border-radius:50%; display:grid; place-items:center; background:var(--card); border:1px solid var(--line); color:var(--text); position:relative; }
.top .right { display:flex; gap:10px; align-items:center; }
.hello small { font-size:13px; } .hello h1 { font-size:30px; }

/* moving banner */
.banner { position:relative; margin:0 -2px 18px; }
.slides { display:flex; overflow-x:auto; scroll-snap-type:x mandatory; scrollbar-width:none; border-radius:26px; }
.slides::-webkit-scrollbar { display:none; }
.slide { flex:0 0 100%; scroll-snap-align:center; position:relative; height:190px; border-radius:26px; overflow:hidden; display:block; background:var(--card); }
.slide img { position:absolute; inset:0; width:100%; height:100%; object-fit:cover; filter:brightness(.62) contrast(1.05); }
.slide::after { content:""; position:absolute; inset:0; background:linear-gradient(90deg, rgba(0,0,0,.78), rgba(0,0,0,.05) 85%); }
.slide-body { position:absolute; z-index:2; left:18px; right:46%; top:0; bottom:0; display:flex; flex-direction:column; justify-content:center; gap:3px; min-width:190px; }
.slide-body small { color:var(--lime); font-weight:700; font-size:11px; letter-spacing:.1em; text-transform:uppercase; }
.slide-body b { font:400 25px/1.05 var(--display); text-transform:uppercase; }
.slide-body em { font-style:normal; color:#d5d9e0; font-size:12.5px; margin-bottom:8px; }
.slide-body i { font-style:normal; align-self:flex-start; }
.dots { position:absolute; bottom:10px; left:0; right:0; display:flex; justify-content:center; gap:6px; z-index:3; }
.dots button { width:7px; height:7px; border-radius:50%; border:0; background:rgba(255,255,255,.4); padding:0; transition:width .2s; }
.dots button.on { width:20px; border-radius:9px; background:var(--lime); }

/* membership strip */
.mstrip { display:flex; align-items:center; gap:12px; background:var(--card); border:1px solid var(--line); border-radius:20px; padding:12px 14px; margin-bottom:6px; }
.mstrip .grow strong { display:block; font-weight:600; font-size:14px; } .mstrip.warn { border-color:rgba(255,194,77,.5); } .mstrip.off { border-color:rgba(255,106,106,.45); }

/* horizontal rows + photo cards */
.hrow { display:flex; gap:12px; overflow-x:auto; margin:0 -18px; padding:2px 18px 6px; scroll-snap-type:x proximity; scroll-padding-left:18px; scrollbar-width:none; }
.hrow::-webkit-scrollbar { display:none; }
.pcard { flex:0 0 148px; height:196px; border-radius:22px; position:relative; overflow:hidden; scroll-snap-align:start; background:var(--card); display:block; border:1px solid var(--line); }
.pcard img { position:absolute; inset:0; width:100%; height:100%; object-fit:cover; filter:brightness(.78); transition:transform .4s; }
.pcard:active img { transform:scale(1.05); }
.pcard::after { content:""; position:absolute; inset:0; background:linear-gradient(0deg, rgba(0,0,0,.85), transparent 60%); }
.pcard .pc-body { position:absolute; z-index:2; left:12px; right:12px; bottom:12px; }
.pcard b { display:block; font-weight:700; font-size:14.5px; line-height:1.2; } .pcard small { color:#cfd3da; font-size:11.5px; }
.pcard .pc-tag { position:absolute; top:10px; left:10px; z-index:2; font-size:10.5px; font-weight:700; background:var(--lime); color:var(--ink); border-radius:99px; padding:3px 9px; }
.pcard .pc-tag.done { background:rgba(255,255,255,.9); }
.pcard.wide { flex-basis:210px; height:130px; }
.pcard .pc-kcal { position:absolute; top:10px; right:10px; z-index:2; font-size:11px; background:rgba(0,0,0,.55); border-radius:99px; padding:3px 9px; }
.hint-card { display:flex; align-items:center; gap:14px; }

/* train page */
.stat2 { display:grid; grid-template-columns:1fr 1fr; gap:10px; margin:12px 0 4px; }
.stat2 > div { background:var(--card); border:1px solid var(--line); border-radius:18px; padding:14px; display:flex; align-items:center; gap:12px; }
.stat2 b { display:block; font:400 22px var(--display); line-height:1.1; } .stat2 small { font-size:11.5px; }
.cats { display:flex; gap:16px; overflow-x:auto; margin:0 -18px; padding:4px 18px 8px; scrollbar-width:none; } .cats::-webkit-scrollbar { display:none; }
.cat { flex:none; width:72px; text-align:center; } .cat i { display:block; width:72px; height:72px; border-radius:50%; background-size:cover; background-position:center; border:2px solid transparent; filter:brightness(.8); margin-bottom:6px; }
.cat.on i, .cat:hover i { border-color:var(--lime); filter:none; } .cat span { font-size:12px; font-weight:600; }
.vgrid { display:grid; grid-template-columns:1fr 1fr; gap:12px; }
.vcard { display:block; } .vcard .vt { position:relative; aspect-ratio:16/10; border-radius:18px; overflow:hidden; background:var(--card); }
.vcard img { width:100%; height:100%; object-fit:cover; filter:brightness(.8); }
.vcard .play { position:absolute; inset:0; display:grid; place-items:center; } .vcard .play span { width:42px; height:42px; border-radius:50%; background:rgba(166,255,0,.92); color:var(--ink); display:grid; place-items:center; }
.vcard b { display:block; font-size:13.5px; margin-top:7px; line-height:1.25; } .vcard small { font-size:11.5px; }
.filters { display:flex; gap:8px; overflow-x:auto; margin:0 -18px 14px; padding:0 18px; scrollbar-width:none; } .filters::-webkit-scrollbar { display:none; }
.filters a { flex:none; padding:8px 15px; border-radius:99px; background:var(--card); border:1px solid var(--line); font-size:13px; font-weight:600; color:var(--muted); } .filters a.on { background:var(--lime); color:var(--ink); border-color:var(--lime); }
.wlist .wrow { display:flex; gap:12px; align-items:center; background:var(--card); border:1px solid var(--line); border-radius:20px; padding:10px; margin-bottom:10px; }
.wrow .th { width:74px; height:74px; border-radius:16px; background-size:cover; background-position:center; flex:none; filter:brightness(.85); }
.wrow strong { display:block; } .wrow .go { width:38px; height:38px; border-radius:50%; background:var(--lime); color:var(--ink); display:grid; place-items:center; flex:none; }

/* workout detail */
.wd-hero { position:relative; margin:calc(-18px - env(safe-area-inset-top)) -18px 0; height:300px; background-size:cover; background-position:center; }
.wd-hero::after { content:""; position:absolute; inset:0; background:linear-gradient(0deg, var(--bg) 4%, rgba(11,12,15,.15) 55%, rgba(11,12,15,.55)); }
.wd-hero .back { position:absolute; z-index:2; left:16px; top:calc(16px + env(safe-area-inset-top)); }
.wd-sheet { position:relative; z-index:2; margin-top:-70px; }
.wd-sheet h1 { font-size:36px; margin-bottom:8px; }
.chips { display:flex; flex-wrap:wrap; gap:8px; margin:10px 0 14px; } .chips .chip { background:var(--card); border:1px solid var(--line); padding:6px 12px; font-size:12.5px; display:inline-flex; gap:6px; align-items:center; }
.chips .chip .ico { color:var(--lime); }
.exlist { padding:4px 16px; } .ex { display:flex; gap:12px; align-items:center; padding:13px 0; border-bottom:1px solid var(--line); } .ex:last-child { border:0; }
.ex .n { width:30px; height:30px; border-radius:50%; background:rgba(166,255,0,.1); color:var(--lime); font-weight:700; font-size:13px; display:grid; place-items:center; flex:none; }
.ex .meta { font:400 18px var(--display); color:var(--lime); white-space:nowrap; } .ex a.vid { color:var(--lime); }
.startbar { position:fixed; left:50%; transform:translateX(-50%); bottom:0; width:100%; max-width:520px; padding:12px 18px calc(14px + env(safe-area-inset-bottom)); background:linear-gradient(0deg, var(--bg) 60%, transparent); z-index:15; }
.btn-xl { height:56px; font-size:16px; width:100%; }

/* workout player */
.player { position:fixed; inset:0; z-index:50; background:#050607; max-width:520px; margin:0 auto; display:flex; flex-direction:column; padding:calc(14px + env(safe-area-inset-top)) 18px calc(18px + env(safe-area-inset-bottom)); }
.pl-top { display:flex; justify-content:space-between; align-items:center; } .pl-top small { font-size:13px; }
.pl-bar { height:5px; background:rgba(255,255,255,.12); border-radius:9px; margin:14px 0 10px; overflow:hidden; } .pl-bar i { display:block; height:100%; width:0; background:var(--lime); transition:width .4s; }
.pl-stage { flex:1; display:flex; flex-direction:column; align-items:center; justify-content:center; text-align:center; gap:6px; }
.pl-round { color:var(--lime); font-weight:700; letter-spacing:.12em; text-transform:uppercase; font-size:13px; }
.pl-name { font:400 38px/1.05 var(--display); text-transform:uppercase; margin:4px 0 2px; }
.pl-note { color:var(--muted); font-size:14px; min-height:20px; max-width:320px; }
.ring { position:relative; width:230px; height:230px; margin:18px 0 8px; } .ring svg { width:100%; height:100%; transform:rotate(-90deg); }
.ring .bg { stroke:rgba(255,255,255,.1); } .ring .fg { stroke:var(--lime); transition:stroke-dashoffset .25s linear; }
.ring .t { position:absolute; inset:0; display:grid; place-items:center; font:400 70px var(--display); } .ring .t small { position:absolute; bottom:52px; font-size:12px; letter-spacing:.1em; text-transform:uppercase; }
.pl-next { color:var(--muted); font-size:13px; min-height:20px; } .pl-next b { color:var(--text); }
.pl-ctl { display:grid; grid-template-columns:1fr 1.5fr 1fr; gap:10px; align-items:center; }
.pl-ctl .btn { height:54px; } .pl-ctl .mid { background:var(--lime); color:var(--ink); border-color:var(--lime); height:60px; font-size:16px; }
.pl-done { display:none; text-align:center; flex:1; flex-direction:column; align-items:center; justify-content:center; gap:10px; } .pl-done .big { font:400 54px var(--display); color:var(--lime); }
.player.finished .pl-stage, .player.finished .pl-ctl, .player.finished .pl-bar { display:none; } .player.finished .pl-done { display:flex; }
.rest-badge { background:rgba(255,194,77,.14); color:var(--warn); padding:5px 14px; border-radius:99px; font-weight:700; font-size:12px; letter-spacing:.1em; text-transform:uppercase; }

/* video page */
.vframe { position:relative; aspect-ratio:16/9; background:#000; border-radius:20px; overflow:hidden; margin-bottom:14px; } .vframe iframe, .vframe video { position:absolute; inset:0; width:100%; height:100%; border:0; }

/* shop + checkout */
.pgrid { display:grid; grid-template-columns:1fr 1fr; gap:12px; }
.prod { background:var(--card); border:1px solid var(--line); border-radius:22px; overflow:hidden; display:block; }
.prod .pi { aspect-ratio:1; background-size:cover; background-position:center; filter:brightness(.9); } .prod .pb { padding:11px 12px 13px; } .prod b { display:block; font-size:14px; line-height:1.25; } .prod .pr { color:var(--lime); font:400 20px var(--display); margin-top:4px; display:block; }
.sumcard { display:flex; gap:14px; align-items:center; } .sumcard .th { width:84px; height:84px; border-radius:18px; background-size:cover; background-position:center; flex:none; }
.qty { display:inline-flex; align-items:center; gap:0; border:1px solid var(--line); border-radius:99px; overflow:hidden; } .qty button { width:38px; height:36px; background:transparent; border:0; color:var(--text); font-size:18px; cursor:pointer; } .qty span { min-width:30px; text-align:center; font-weight:700; }
.seg { display:grid; grid-template-columns:1fr 1fr; gap:6px; padding:5px; background:rgba(255,255,255,.06); border-radius:99px; margin-bottom:12px; } .seg button { height:42px; border:0; border-radius:99px; background:transparent; color:var(--muted); font:700 13.5px var(--body); cursor:pointer; display:flex; align-items:center; justify-content:center; gap:7px; } .seg button.on { background:var(--lime); color:var(--ink); }
.billing { display:grid; grid-template-columns:1fr 1fr; gap:10px; } .billing .full { grid-column:1/-1; } .billing[hidden], .mm[hidden] { display:none; }
.totalrow { display:flex; justify-content:space-between; align-items:baseline; font-weight:600; } .totalrow b { font:400 30px var(--display); color:var(--lime); }
.secure { display:flex; gap:8px; align-items:center; color:var(--muted); font-size:12px; justify-content:center; margin-top:8px; }
.statusbox { text-align:center; padding:26px 16px; } .statusbox .big { font:400 40px var(--display); text-transform:uppercase; margin:8px 0 4px; } .statusbox .ok { color:var(--lime); } .statusbox .bad { color:var(--bad); }
.spin { width:46px; height:46px; border-radius:50%; border:4px solid rgba(255,255,255,.12); border-top-color:var(--lime); animation:sp 1s linear infinite; margin:0 auto 10px; } @keyframes sp { to { transform:rotate(360deg); } }
@media (prefers-reduced-motion: reduce) { .spin { animation:none; } .slides { scroll-behavior:auto; } }

.wd-pad { padding-bottom: 110px; }

/* check-in pass */
.passcard { text-align:center; padding:24px 18px; }
.passcard.is-ok, .passcard.is-inside { border-color:rgba(166,255,0,.55); background:linear-gradient(180deg, rgba(166,255,0,.09), var(--card) 60%); }
.passcard.is-balance { border-color:rgba(255,194,77,.55); } .passcard.is-nopass, .passcard.is-inactive { border-color:rgba(255,106,106,.45); }
.pass-status { margin-bottom:14px; } .chip.warn { background:rgba(255,194,77,.18); color:var(--warn); }
.qr { width:216px; height:216px; margin:0 auto 12px; padding:8px; background:#fff; border-radius:18px; display:grid; place-items:center; } .qr img, .qr canvas { width:200px !important; height:200px !important; }
.pass-code { font:400 40px var(--display); letter-spacing:.08em; color:var(--lime); margin-bottom:2px; }
.steps .li { align-items:flex-start; } .steps .n { width:28px; height:28px; border-radius:50%; background:rgba(166,255,0,.12); color:var(--lime); font-weight:700; font-size:13px; display:grid; place-items:center; flex:none; margin-top:2px; }

/* trainers */
.tr-mine { text-decoration:none; color:inherit; } .tr-mine small { display:block; }
.tr-ph { width:46px; height:46px; border-radius:50%; object-fit:cover; flex:none; border:2px solid var(--lime); }
.tr-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:12px; margin-top:6px; }
.tr-card { background:var(--card); border:1px solid var(--line); border-radius:22px; overflow:hidden; display:flex; flex-direction:column; }
.tr-card.is-mine { border-color:var(--lime); }
.tr-photo { position:relative; display:block; aspect-ratio:1/1; background:var(--card2); }
.tr-photo img { width:100%; height:100%; object-fit:cover; display:block; }
.tr-badge { position:absolute; left:10px; top:10px; }
.tr-body { padding:12px 12px 14px; display:flex; flex-direction:column; gap:3px; flex:1; }
.tr-body strong { font-size:15px; line-height:1.25; } .tr-body small { font-size:12px; line-height:1.35; }
.tr-actions { display:flex; gap:8px; margin-top:auto; padding-top:10px; flex-wrap:wrap; } .tr-actions form { margin:0; }
.tr-hero { position:relative; border-radius:24px; overflow:hidden; aspect-ratio:4/3; background:var(--card2); margin-bottom:12px; }
.tr-hero img { width:100%; height:100%; object-fit:cover; object-position:center 20%; display:block; }
.tr-bio { color:#c4c8d0; line-height:1.55; font-size:14.5px; margin:6px 0 16px; }
@media (min-width:700px) { .tr-grid { grid-template-columns:repeat(3,minmax(0,1fr)); } }
