
@font-face{font-family:Jura;src:url(assets/Jura.ttf)}@font-face{font-family:Onest;src:url(assets/Onest.ttf)}*{box-sizing:border-box}body{margin:0;background:#191522;color:#faf5ff;font-family:Onest,sans-serif}main{display:flex;gap:24px;justify-content:center;padding:40px 24px;align-items:start;flex-wrap:wrap}.caption{margin:0 0 14px;color:#b8a8ce;font:500 15px Jura;text-align:center;letter-spacing:.06em}.screen{width:390px;height:844px;position:relative;overflow:hidden;background:#100d19;border-radius:24px;isolation:isolate;box-shadow:0 20px 60px #0004}.screen:before{content:'';position:absolute;inset:0;z-index:-1;background-size:390px auto;background-repeat:no-repeat}.splash:before{background-image:url(../design-assets/backgrounds/ritm-splash.png)}.schedule:before{background-image:url(../design-assets/backgrounds/ritm-schedule.png)}.membership:before{background-image:url(../design-assets/backgrounds/ritm-membership.png)}header{height:92px;padding:28px 24px;display:flex;justify-content:space-between;align-items:center}.logo{width:130px;height:30px;background:url(../design-assets/references/approved-splash.png) -69px -238px / 732px 537px no-repeat;filter:grayscale(1) brightness(1.2) contrast(4);mix-blend-mode:screen}.splash .logo{width:260px;height:60px;background-size:1464px 1074px;background-position:-138px -476px}.splash-center{position:absolute;top:43%;left:65px;text-align:center}.tagline{font:500 10px Onest;letter-spacing:.36em;margin-top:12px}.bell{font-size:25px;color:#f5e3ff;position:relative}.bell:after{content:'';position:absolute;right:0;top:0;width:5px;height:5px;border-radius:50%;background:#f5aeef}.content{padding:10px 20px 0}h1{font:650 31px/1.1 Jura;margin:5px 0 24px;letter-spacing:-.045em}h2{font:650 22px Jura;margin:0}.heading{display:flex;align-items:center;justify-content:space-between}.week{font:500 12px Jura;color:#d7cce6}.dates{display:flex;justify-content:space-between;border:1px solid #5b436b;border-radius:13px;padding:5px;margin-bottom:16px;background:#130f2080}.day{width:43px;text-align:center;font:500 12px Jura;padding:6px 0;color:#bdb1cd}.day b{display:block;font-size:23px;margin-top:4px;font-weight:650}.day.selected{border-radius:9px;color:#1c122a;background:linear-gradient(125deg,#81b8ff,#d1a5ff,#ffc7ed);background-size:200% 200%;animation:drift 9s ease-in-out infinite alternate}.filter{width:100%;text-align:left;padding:13px 16px;border:1px solid #43364e;border-radius:12px;background:#151021b0;color:#f5eefb;font:600 17px Jura;margin-bottom:18px}.filter span{float:right}.lesson{border:1px solid #30253b;background:#100e1bc9;border-radius:14px;padding:18px 14px;margin-bottom:12px}.lesson.selected{border:1px solid transparent;background:linear-gradient(#131020,#131020) padding-box,linear-gradient(120deg,#ee89e5,#9773ff,#458ffd) border-box;box-shadow:0 -3px 17px #8651c31a}.row{display:flex;gap:12px;align-items:start}.time{font:650 26px Jura;min-width:68px;border-right:1px solid #645573;padding-right:12px;padding-top:2px}.lesson h2{font-size:18px;letter-spacing:-.03em}.muted{color:#b8adc9;font-size:12px;line-height:1.6}.lesson .muted{margin-top:6px}.availability{font-size:10px;color:#85efce;margin-top:8px}.availability.pink{color:#edb0ee}.action{width:100%;padding:14px 10px;border:0;border-radius:30px;background:#f0dff6;color:#201328;font:700 19px Jura;position:relative;overflow:hidden;cursor:pointer}.selected .action{margin-top:20px}.action span{position:relative;z-index:1}.action.sweep:before{content:'';position:absolute;inset:-30%;background:linear-gradient(100deg,transparent 20%,#779cff,#db9bed,transparent 75%);animation:sweep .7s both}.policy{margin-top:14px;font-size:11px;color:#b8adc9}.cancelled{opacity:.65}.balance-card{margin:2px 17px 26px;height:210px;border:1px solid #8871a36b;border-radius:24px;background:#100d192e;text-align:center;padding:17px 18px}.count{font:600 22px Jura}.stars{display:grid;grid-template-columns:repeat(4,44px);gap:12px;justify-content:center;margin:15px 0 14px}.star{width:44px;height:44px}.star.filled{fill:url(#spark-fill);stroke:#ead8ff}.star.empty{fill:transparent;stroke:#b9a6d6}.star.pop{animation:pop .65s ease-out}.balance-label{font:600 18px Jura}.details{border-top:1px solid #493652;border-bottom:1px solid #493652;padding:18px 0;display:flex;align-items:center;justify-content:space-between}.details p{margin:3px 0 10px;font:600 16px Jura}.outline{border:1px solid #dfcbe8;border-radius:26px;padding:10px 13px;color:#ecdcf4;background:transparent;font:600 16px Jura}.history-title{margin:24px 0 14px;display:flex;justify-content:space-between;align-items:center}.history-title a{font-size:11px;color:#dcbce9}.operation{display:flex;align-items:center;justify-content:space-between;padding:14px 10px;margin:6px 0;background:#151020c9;border:1px solid #30243b;border-radius:10px;font-size:11px}.operation b{font:650 24px Jura}.minus{color:#f08ebc}.plus{color:#78efd7}.membership .action{margin-top:18px}nav{position:absolute;bottom:0;left:0;right:0;height:82px;border-top:1px solid #3a2948;display:flex;align-items:center;justify-content:space-around;background:#100d19ef}.nav-item{display:flex;flex-direction:column;align-items:center;gap:9px;font:500 11px Jura;color:#b9adcd}.nav-item svg{width:23px;height:23px;fill:none;stroke:currentColor;stroke-width:1.5}.nav-item.active{color:#f8dfff}.nav-item.active svg{filter:drop-shadow(0 0 5px #bb67ff)}.status{font-size:11px;color:#d0b7e7;margin:10px 2px}.definitions{position:absolute;width:0;height:0;overflow:hidden}@keyframes sweep{from{transform:translateX(-100%)}to{transform:translateX(100%)}}@keyframes pop{40%{transform:scale(1.15);filter:drop-shadow(0 0 8px #cd83fa)}}@keyframes drift{to{background-position:100% 100%}}@media(prefers-reduced-motion:reduce){*{animation:none!important}}@media(max-width:430px){main{padding:16px 0}.screen{width:100vw;max-width:390px;border-radius:0}}
@media(min-width:1100px){main>section{width:351px;height:795px}.screen{transform:scale(.9);transform-origin:top left}}

.logo{background:url(assets/ritm-logo.svg) center / contain no-repeat;filter:none;mix-blend-mode:normal;height:32px}.splash .logo{background:url(assets/ritm-logo.svg) center / contain no-repeat;width:260px;height:64px;filter:none;mix-blend-mode:normal}
.notice{width:42px;height:42px;position:relative;border:0;background:transparent;color:#ddd0ed;display:grid;place-items:center;cursor:pointer}.notice svg{width:25px;height:25px;fill:none;stroke:currentColor;stroke-width:1.4;stroke-linejoin:round;stroke-linecap:round}.notice span{position:absolute;right:7px;top:7px;width:5px;height:5px;border-radius:50%;background:#d6a1ef;box-shadow:0 0 8px #c283e7}
.membership h1{margin-bottom:20px}.pass-scene{height:240px;perspective:1100px;margin:0 8px 16px}.pass{position:relative;width:100%;height:100%;transform-style:preserve-3d;transition:transform .7s cubic-bezier(.22,.7,.2,1)}.pass.flipped{transform:rotateY(180deg)}.pass-face{position:absolute;inset:0;backface-visibility:hidden;border:1px solid #806b9a80;border-radius:24px;padding:17px 18px;text-align:center;background:linear-gradient(135deg,#16112185,#100d19b0);box-shadow:inset 0 1px #fff1}.pass-back{transform:rotateY(180deg);background:#181021}.pass-top{display:flex;justify-content:space-between;color:#c5b7d6;font:500 9px Onest;letter-spacing:.12em;margin-bottom:11px}.pass .count{font-size:22px}.pass .stars{margin:11px 0;gap:8px 12px}.pass .star{width:40px;height:40px}.pass .balance-label{font-size:19px}.flip-link{margin-top:13px;color:#e4c8f2;font:600 15px Jura;border:0;padding:4px 8px;background:transparent;cursor:pointer;display:inline-flex;align-items:center;gap:10px}.flip-link svg{width:17px;height:17px;fill:none;stroke:currentColor;stroke-width:1.3}.qr-side{display:flex;align-items:center;gap:17px;margin-top:12px;text-align:left}.qr-side img{width:142px;height:142px;background:white;border:8px solid white;border-radius:12px}.qr-side h2{font-size:21px}.qr-side p{font:500 14px/1.5 Jura;margin:10px 0}.qr-note{color:#b9a7cb;font:400 11px/1.5 Onest}.pass-back .flip-link{margin-top:18px}.pass-summary{display:flex;justify-content:space-between;align-items:center;padding:7px 0 14px;border-bottom:1px solid #493652;font:500 13px/1.5 Jura}.pass-summary b{font-weight:650}.text-link{background:none;border:0;padding:8px 0 8px 8px;color:#dfbde9;font:600 14px Jura;cursor:pointer}.history-title{margin:20px 0 4px}.history-title h2{font-size:24px}.visit{display:flex;align-items:center;gap:13px;padding:12px 0;border-bottom:1px solid #3c2d48}.visit-date{width:48px;flex-shrink:0;text-align:center;color:#c4b2d7}.visit-date b{display:block;font:650 27px/1 Jura}.visit-date span{font:400 10px Onest}.visit-copy h3{font:650 19px Jura;margin:0 0 5px}.visit-copy p{font:400 12px/1.5 Onest;color:#bfb0cd;margin:0}.visit-check{margin-left:auto;color:#b7d9df;font-size:17px}.membership .action{margin-top:16px}
button:focus-visible{outline:2px solid #96bcff;outline-offset:4px}dialog{color:#f6edff;background:#151020;border:1px solid #6a507e;border-radius:24px;width:min(390px,calc(100vw - 24px));max-height:90vh;padding:25px;font-family:Onest;box-shadow:0 24px 100px #000a}dialog::backdrop{background:#08060dba;backdrop-filter:blur(6px)}.dialog-header{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:22px}.dialog-header h2{font:650 26px Jura}.close{background:#2c213c;color:#f5e7ff;border:0;border-radius:50%;width:36px;height:36px;font:500 22px Jura;cursor:pointer}dl{margin:0 0 22px}dl div{display:flex;justify-content:space-between;gap:18px;padding:12px 0;border-bottom:1px solid #3e2e4a;font-size:13px}dt{color:#c1afcf}dd{margin:0;text-align:right}.dialog-action{display:block;width:100%;text-align:left;border:1px solid #675177;border-radius:13px;background:#24182f;color:#f2e6ff;padding:15px;margin:10px 0;font:650 18px Jura;cursor:pointer}.dialog-action span{float:right}.helper{font:400 13px/1.6 Onest;color:#c7b8d1}.dialog-note{color:#baa6cc;font-size:11px;line-height:1.5}.cancel-visit{font:400 12px Onest;color:#b7a9c6;padding:8px 0 2px}.freeze-form label{display:block;font:600 16px Jura;margin:16px 0 8px}.freeze-form input{width:100%;border:1px solid #806491;border-radius:10px;padding:12px;background:#241830;color:#fff;font:400 15px Onest;color-scheme:dark}.freeze-form .action{margin-top:20px}.error{color:#eac3e1;font-size:13px}.frozen-note{font:400 13px/1.6 Onest;color:#d9bedf}
@media(prefers-reduced-motion:reduce){.pass{transition:none}}

.bookings:before{background-image:url(../design-assets/backgrounds/ritm-schedule.png)}.bookings h1{margin-bottom:16px}.booking-heading{display:flex;justify-content:space-between;align-items:center;font:500 14px Jura;color:#c7b7d7;margin-bottom:14px}.next-booking{padding:20px 18px 8px;border:1px solid transparent;border-radius:21px;background:linear-gradient(#151021,#151021) padding-box,linear-gradient(125deg,#c992ed,#666bcb,#b384c9) border-box}.next-top{display:flex;align-items:center;justify-content:space-between;gap:8px;font:500 9px Onest;letter-spacing:.06em;color:#bfb0d5}.confirmed{color:#bee3db;font:500 11px Jura;letter-spacing:0}.booking-date{font:600 18px Jura;margin-top:23px}.booking-time{font:650 36px Jura;margin:9px 0 20px}.booking-time span{font-size:24px;color:#bcb0cb}.next-booking h2{font:650 24px Jura}.trainer{font:400 13px/1.5 Onest;color:#c2b1d0;margin:8px 0}.booking-location{font:500 14px Jura;color:#e2d0ed;margin:13px 0 19px}.booking-rule{font:400 12px/1.6 Onest;color:#c2b1d0;border-top:1px solid #42314f;padding-top:15px;margin-bottom:18px}.cancel-link{width:100%;min-height:42px;border:0;background:none;color:#beafcc;font:600 15px Jura;cursor:pointer;margin-top:4px}.following-label{font:600 16px Jura;color:#c7b5d8;margin:23px 0 12px}.following-booking{border:1px solid #463251;border-radius:16px;padding:17px 16px;background:#140f1dd4}.following-date{font:500 14px Jura;color:#d4beda;margin-bottom:14px}.following-booking h2{font-size:19px}.following-booking .trainer{font-size:11px}.following-booking .text-link{display:block;margin-left:auto;margin-top:4px}.booking-success{border:1px solid #51405d;border-radius:16px;padding:20px;font:500 15px/1.6 Jura;color:#d2e7df;background:#151021}
@media(min-width:1100px){main{max-width:1280px;margin:auto}}

.bookings .content{height:670px;overflow-y:auto;padding-bottom:20px;scrollbar-width:none}.next-booking{padding:16px 16px 4px}.booking-date{margin-top:15px}.booking-time{margin:6px 0 12px;font-size:32px}.booking-location{margin:9px 0 12px}.booking-rule{padding-top:11px;margin-bottom:12px}.following-label{margin:16px 0 10px}.following-booking{padding:13px 14px}.following-date{margin-bottom:10px}.booking-heading{margin-bottom:10px}.next-booking .action{padding:12px 10px}.cancel-link{min-height:38px}

.month-progress{margin:0 0 16px;padding:11px 13px 10px;border-radius:13px;background:#20162e99}.month-top{display:flex;justify-content:space-between;align-items:center;font:500 14px Jura;color:#e4d5ef}.month-top .text-link{padding:2px 0 2px 8px;font-size:13px}.goal-track{height:4px;background:#493956;border-radius:4px;margin:10px 0 8px;overflow:hidden}.goal-track span{display:block;height:100%;border-radius:4px;background:linear-gradient(90deg,#89b8ff,#d6b5ef)}.month-progress p{font:400 11px/1.4 Onest;margin:0;color:#c5b6cf}#goal-dialog input{width:100%;padding:12px;margin:12px 0 18px;border:1px solid #715687;border-radius:12px;background:#271a35;color:#fff;font:500 20px Jura}#goal-dialog label{font:600 17px Jura}.month-progress.no-goal .goal-track{display:none}
