@font-face{font-family:Rinjani;src:url(/fonts/RinjaniRegular.ttf) format("truetype");font-weight:400;font-display:swap}@font-face{font-family:Rinjani;src:url(/fonts/RinjaniBold.ttf) format("truetype");font-weight:700;font-display:swap}@font-face{font-family:Foregen;src:url(/fonts/Foregen-Regular.ttf) format("truetype");font-weight:400;font-display:swap}:root{--teal: #56B9AB;--teal-deep: #00A8A2;--yellow: #FFDF5D;--yellow-warm: #FBC861;--orange: #E5673E;--orange-deep: #CA6139;--cream: #F6F2ED;--ink: #262222;--gray: #8a8580;--line: #ece8e2;--display: "Rinjani", sans-serif;--accent: "Foregen", sans-serif;--body: "Inter", sans-serif}*{margin:0;padding:0;box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body,#root{height:100%}body{font-family:var(--body);color:var(--ink);background:var(--cream)}.splash,.login-wrap{min-height:100%;display:flex;align-items:center;justify-content:center}.login-wrap{background:linear-gradient(160deg,var(--yellow-warm),var(--orange));padding:24px}.login-card{background:#fff;border-radius:24px;padding:36px 28px;width:100%;max-width:380px;box-shadow:0 20px 60px #00000026;text-align:center}.login-logo{font-family:var(--display);font-weight:700;font-size:34px;letter-spacing:1px}.login-tagline{color:var(--gray);font-size:13px;text-transform:uppercase;letter-spacing:1.5px;margin-bottom:24px}.login-card form{display:flex;flex-direction:column;gap:12px}.login-card input,.login-card select{padding:14px 16px;border:1px solid var(--line);border-radius:12px;font-size:16px;background:var(--cream);font-family:var(--body);width:100%}.login-card input:focus,.login-card select:focus{outline:2px solid var(--teal);background:#fff}.login-btn{background:var(--orange);color:#fff;border:0;padding:16px;border-radius:12px;font-weight:700;font-size:16px;cursor:pointer;margin-top:4px}.login-btn:disabled{opacity:.6}.login-switch{background:none;border:0;color:var(--gray);margin-top:16px;cursor:pointer;font-size:14px}.error-banner{background:#e5673e1a;color:var(--orange-deep);border:1px solid var(--orange);border-radius:10px;padding:10px 14px;font-size:14px;font-weight:600}.app-shell{display:flex;flex-direction:column;height:100%;max-width:480px;margin:0 auto;background:var(--cream)}.app-content{flex:1;overflow-y:auto;padding:20px 20px 90px}.tabbar{position:fixed;bottom:0;left:0;right:0;max-width:480px;margin:0 auto;display:flex;justify-content:space-around;background:#fff;border-top:1px solid var(--line);padding:10px 0 max(10px,env(safe-area-inset-bottom))}.tab{text-decoration:none;color:#bdb8b2;font-size:11px;font-weight:500;padding:4px 8px}.tab.active{color:var(--orange)}.eyebrow{font-family:var(--display);font-weight:700;font-size:13px;text-transform:uppercase;letter-spacing:.5px;color:var(--gray);margin:22px 0 12px}.muted{color:var(--gray);font-size:15px}.balance-card{background:linear-gradient(135deg,var(--teal),var(--teal-deep));border-radius:22px;padding:26px;color:#fff;text-align:center}.balance-label{font-size:13px;opacity:.85;text-transform:uppercase;letter-spacing:1px}.balance-amount{font-family:var(--display);font-size:52px;font-weight:700;line-height:1.1;display:flex;align-items:center;justify-content:center;gap:6px}.balance-sub{font-size:14px;opacity:.9;margin-top:4px}.qr-display{text-align:center;margin:20px 0}.qr-display img{box-shadow:0 2px 12px #00000014}.qr-hint{font-size:13px;color:var(--gray);margin-top:10px}.packs{display:grid;grid-template-columns:1fr 1fr;gap:12px}.pack{position:relative;background:#fff;border:2px solid var(--line);border-radius:16px;padding:18px 14px;text-align:center;cursor:pointer;display:flex;flex-direction:column;gap:6px;font-family:var(--body)}.pack.featured{border-color:var(--yellow-warm)}.pack:disabled{opacity:.6}.pack-tag{position:absolute;top:-9px;left:50%;transform:translate(-50%);background:var(--yellow-warm);color:var(--ink);font-size:10px;font-weight:700;padding:2px 10px;border-radius:10px;text-transform:uppercase}.pack-coins{font-family:var(--display);font-size:26px;font-weight:700}.pack-price{color:var(--gray);font-size:14px}.pack-buy{background:var(--orange);color:#fff;border-radius:9px;padding:8px;font-weight:700;font-size:14px}.txn-list{background:#fff;border-radius:16px;padding:4px 16px}.txn{display:flex;justify-content:space-between;align-items:center;padding:13px 0;border-bottom:1px solid var(--line)}.txn:last-child{border-bottom:0}.txn-left{display:flex;align-items:center;gap:12px}.txn-ico{width:40px;height:40px;border-radius:12px;display:flex;align-items:center;justify-content:center;font-size:18px}.txn-ico.in{background:#56b9ab29}.txn-ico.out{background:#e5673e1f}.txn-name{font-weight:600;font-size:15px}.txn-date{font-size:12px;color:var(--gray);margin-top:2px}.txn-val{font-weight:700;font-size:16px;display:flex;align-items:center;gap:3px}.txn-val.plus{color:var(--teal-deep)}.txn-val.minus{color:var(--orange)}.tab{display:flex;flex-direction:column;align-items:center;gap:4px}.tab-icon svg{width:24px;height:24px;display:block}.tab-label{font-size:10.5px}.recap-header{display:flex;align-items:center;gap:14px;margin-bottom:20px}.back-btn{width:42px;height:42px;border-radius:50%;background:#fff;border:1px solid var(--line);display:flex;align-items:center;justify-content:center;cursor:pointer;flex:0 0 42px;color:var(--ink)}.back-btn svg{width:22px;height:22px}.recap-h-title{font-size:22px;font-weight:700}.recap-h-sub{font-size:14px;color:var(--gray)}.compose{display:flex;gap:12px;background:#fff;border-radius:16px;padding:14px;margin-bottom:18px;box-shadow:0 2px 8px #0000000a}.compose-avatar,.post-avatar{width:42px;height:42px;border-radius:50%;flex:0 0 42px;display:flex;align-items:center;justify-content:center;font-family:var(--display);font-weight:700;color:#fff;background:var(--teal-deep);font-size:15px}.compose-body{flex:1}.compose textarea{width:100%;border:0;resize:none;font-family:var(--body);font-size:15px;outline:none;background:transparent}.compose-btn{background:var(--orange);color:#fff;border:0;border-radius:10px;padding:8px 20px;font-weight:700;cursor:pointer;float:right;margin-top:6px}.compose-btn:disabled{opacity:.5}.post{background:#fff;border-radius:16px;padding:16px;margin-bottom:14px;box-shadow:0 2px 8px #0000000a}.post-head{display:flex;align-items:center;gap:12px;margin-bottom:10px}.post-name{font-weight:700;font-size:15px}.post-time{font-size:12px;color:var(--gray)}.post-body{font-size:15px;line-height:1.5;margin-bottom:8px}.post-img{width:100%;border-radius:12px;margin-top:4px}.post-actions{display:flex;align-items:center;justify-content:space-between}.like-btn{background:none;border:0;cursor:pointer;font-size:15px;color:var(--gray);padding:4px 0}.like-btn.liked{color:var(--orange)}.post-delete{background:none;border:0;cursor:pointer;font-size:14px;opacity:.5;padding:4px 8px}.programme{display:flex;flex-direction:column;height:calc(100vh - 110px)}.programme-frame{flex:1;width:100%;border:0;border-radius:14px;background:#fff}.programme-fallback{text-align:center;font-size:13px;color:var(--gray);padding:12px 0 4px}.programme-fallback a{color:var(--orange);font-weight:600}.year-tabs{display:flex;gap:10px;margin-bottom:22px}.year-pill{flex:1;padding:12px 0;border-radius:14px;background:#fff;font-family:var(--display);font-weight:700;font-size:22px;color:var(--gray);border:2px solid var(--line);cursor:pointer}.year-pill.on{background:var(--ink);color:#fff;border-color:var(--ink)}.level-row{width:100%;display:flex;align-items:center;justify-content:space-between;background:#fff;border-radius:16px;padding:18px 20px;margin-bottom:12px;box-shadow:0 2px 8px #0000000a;cursor:pointer;border:0;border-left:5px solid var(--teal);text-align:left}.level-row:nth-child(3n+1){border-left-color:var(--orange)}.level-row:nth-child(3n){border-left-color:var(--yellow-warm)}.lv-info h4{font-size:18px;font-weight:700}.lv-count{font-size:13px;color:var(--gray);margin-top:2px}.lv-chev{color:var(--gray);font-size:22px}.recap-empty,.vote-closed,.vote-thanks{text-align:center;padding:50px 20px}.recap-empty-emoji,.vote-closed-emoji,.vote-thanks-emoji{font-size:50px;margin-bottom:14px}.recap-empty-title,.vote-closed-title,.vote-thanks-title{font-family:var(--display);font-size:26px;font-weight:700;margin-bottom:8px}.lesson{width:100%;background:#fff;border:0;border-radius:18px;overflow:hidden;margin-bottom:18px;box-shadow:0 2px 10px #0000000d;cursor:pointer;text-align:left;padding:0}.lesson-thumb{height:190px;position:relative;background:var(--cream);overflow:hidden;display:flex;align-items:center;justify-content:center}.lesson-thumb img{width:100%;height:100%;object-fit:cover;position:absolute;top:0;right:0;bottom:0;left:0}.lesson-deco{position:absolute;width:120px;height:90px;border-radius:50%;pointer-events:none}.lesson-art{font-family:var(--display);font-size:34px;font-weight:700;color:var(--ink);opacity:.13;position:absolute;left:18px;top:14px;line-height:.9}.lesson-play{position:absolute;width:58px;height:58px;border-radius:50%;background:#fbc861f2;display:flex;align-items:center;justify-content:center;box-shadow:0 4px 14px #00000040}.lesson-play svg{width:24px;height:24px;fill:var(--ink);margin-left:3px}.lesson-badge{position:absolute;right:12px;bottom:12px;color:#fff;font-size:11px;font-weight:700;padding:3px 8px;border-radius:5px}.lesson-badge.youtube{background:red}.lesson-badge.dropbox{background:#0061ff}.lesson-badge.vimeo{background:#1ab7ea}.video-modal{position:fixed;top:0;right:0;bottom:0;left:0;background:#000000eb;z-index:100;display:flex;align-items:center;justify-content:center;padding:16px}.video-close{position:absolute;top:16px;right:16px;background:#fff3;color:#fff;border:0;width:40px;height:40px;border-radius:50%;font-size:18px;cursor:pointer;z-index:2}.video-frame{width:100%;max-width:900px;aspect-ratio:16/9;max-height:82vh}.video-frame iframe{width:100%;height:100%;border:0;border-radius:10px}.lesson-meta{padding:14px 18px 18px}.lesson-date{font-size:13px;font-weight:700;color:var(--orange);text-transform:uppercase;letter-spacing:.5px}.lesson-title{font-size:18px;font-weight:700;margin-top:4px;text-transform:uppercase}.comp-card{width:100%;border:0;border-radius:22px;padding:26px 24px;margin-bottom:18px;color:#fff;text-align:left;cursor:pointer;box-shadow:0 6px 20px #0000001a}.comp-card.c-orange{background:linear-gradient(135deg,var(--orange),var(--orange-deep))}.comp-card.c-teal{background:linear-gradient(135deg,var(--teal),var(--teal-deep))}.comp-card.c-dark{background:linear-gradient(135deg,#3a3433,var(--ink))}.comp-kind{font-size:12px;text-transform:uppercase;letter-spacing:1px;opacity:.85;margin-bottom:8px}.comp-card h3{font-family:var(--display);font-size:30px;font-weight:700;line-height:1.05;margin-bottom:10px}.comp-card p{font-size:14px;opacity:.9;line-height:1.4;margin-bottom:14px}.comp-count{font-size:14px;font-weight:600;margin-bottom:14px}.comp-cta{display:inline-block;background:#fff3;padding:10px 18px;border-radius:12px;font-weight:700;font-size:14px}.reg-card{background:#fff;border-radius:18px;padding:22px;box-shadow:0 2px 10px #0000000d;margin-bottom:20px}.reg-q{font-family:var(--display);font-size:22px;font-weight:700;margin-bottom:18px}.reg-lbl{font-size:13px;font-weight:700;color:var(--gray);text-transform:uppercase;letter-spacing:.5px;margin-bottom:9px}.role-pick{display:flex;gap:10px;margin-bottom:18px}.role-opt{flex:1;padding:16px 0;border-radius:14px;border:2px solid var(--line);font-weight:700;cursor:pointer;background:#fff;font-family:var(--body)}.role-opt .role-emo{font-size:28px;margin-bottom:4px}.role-opt.on{border-color:var(--orange);background:#e5673e12}.role-opt:disabled{opacity:.45;cursor:not-allowed}.reg-input{display:flex;align-items:center;gap:10px;background:var(--cream);border-radius:12px;padding:14px 16px;margin-bottom:18px}.reg-input svg{width:18px;height:18px}.reg-input span{color:var(--gray);font-size:15px}.reg-btn{width:100%;background:var(--orange);color:#fff;border:0;padding:16px;border-radius:13px;font-weight:700;font-size:16px;cursor:pointer}.reg-btn:disabled{opacity:.6}.reg-note{font-size:13px;color:var(--gray);text-align:center;margin-top:12px;line-height:1.4}.reg-done{background:#56b9ab1f;border:1px solid var(--teal);color:var(--teal-deep);border-radius:14px;padding:16px;text-align:center;font-weight:600;margin-bottom:20px}.reg-stats{display:flex;gap:10px;margin-bottom:22px}.reg-stats .rs{flex:1;background:#fff;border-radius:13px;padding:14px 8px;text-align:center;font-size:13px;color:var(--gray);box-shadow:0 2px 8px #0000000a}.reg-stats .rs b{display:block;font-family:var(--display);font-size:26px;color:var(--ink);font-weight:700}.reg-row{display:flex;align-items:center;gap:12px;background:#fff;border-radius:14px;padding:12px 16px;margin-bottom:10px;box-shadow:0 1px 6px #0000000a}.reg-avatar{width:42px;height:42px;border-radius:50%;flex:0 0 42px;display:flex;align-items:center;justify-content:center;font-family:var(--display);font-weight:700;color:#fff;font-size:16px}.reg-info{flex:1}.reg-name{font-weight:700;font-size:16px}.reg-country{font-size:13px;color:var(--gray)}.rtag{font-size:11px;font-weight:700;padding:4px 10px;border-radius:20px}.rtag.lead{background:#56b9ab29;color:var(--teal-deep)}.rtag.follow{background:#e5673e1f;color:var(--orange)}.vote-open-banner{background:#56b9ab1f;border:1px solid var(--teal);border-radius:14px;padding:14px 16px;margin-bottom:18px;text-align:center;font-weight:600;color:var(--teal-deep)}.couple-card{width:100%;display:flex;align-items:center;gap:14px;background:#fff;border-radius:16px;padding:16px;margin-bottom:12px;box-shadow:0 2px 8px #0000000d;border:2px solid transparent;text-align:left}.couple-card.votable{cursor:pointer}.couple-badge{width:54px;height:54px;border-radius:14px;flex:0 0 54px;display:flex;align-items:center;justify-content:center;font-family:var(--display);font-weight:700;font-size:22px;color:#fff}.couple-name{flex:1}.couple-name h4{font-size:18px;font-weight:700}.couple-name .vsub{font-size:13px;color:var(--gray);margin-top:2px}.vote-radio{width:26px;height:26px;border-radius:50%;border:2px solid var(--line);flex:0 0 26px}.compose-actions{display:flex;align-items:center;justify-content:space-between;margin-top:8px}.compose-photo{display:flex;align-items:center;gap:6px;background:none;border:0;color:var(--teal-deep);font-weight:600;cursor:pointer;font-size:14px}.compose-photo svg{width:20px;height:20px}.compose-btn{float:none}.compose-preview{position:relative;margin-top:10px}.compose-preview img{width:100%;border-radius:12px;display:block}.compose-preview-x{position:absolute;top:8px;right:8px;width:30px;height:30px;border-radius:50%;background:#0009;color:#fff;border:0;cursor:pointer;font-size:14px}.partner-input{border:0;outline:none;background:transparent;font-family:var(--body);font-size:15px;flex:1;width:100%}.partner-results{display:flex;flex-direction:column;gap:6px;margin-bottom:16px}.partner-result{display:flex;align-items:center;gap:12px;background:var(--cream);border:0;border-radius:12px;padding:10px 12px;cursor:pointer;text-align:left}.partner-chosen{display:flex;align-items:center;gap:12px;background:#56b9ab14;border:1px solid var(--teal);border-radius:12px;padding:12px;margin-bottom:16px}.partner-x{margin-left:auto;background:none;border:0;color:var(--gray);font-size:16px;cursor:pointer}.pairing-requests{background:#fbc8611f;border:1px solid var(--yellow-warm);border-radius:16px;padding:16px;margin-bottom:20px}.confirm-btn{background:var(--teal-deep);color:#fff;border:0;border-radius:10px;padding:9px 16px;font-weight:700;cursor:pointer;font-size:14px}.appbar{position:sticky;top:0;z-index:20;display:flex;align-items:center;gap:14px;background:var(--yellow-warm);padding:14px 18px}.appbar-title{font-family:var(--display);font-size:24px;font-weight:700;color:var(--ink)}.appbar-spacer{width:24px}.burger{width:26px;height:20px;background:none;border:0;cursor:pointer;display:flex;flex-direction:column;justify-content:space-between;padding:0}.burger span{display:block;height:2.5px;background:var(--ink);border-radius:2px}.drawer-mask{position:fixed;top:0;right:0;bottom:0;left:0;background:#0006;opacity:0;pointer-events:none;transition:opacity .25s;z-index:30}.drawer-mask.open{opacity:1;pointer-events:auto}.drawer{position:fixed;top:0;left:0;bottom:0;width:290px;max-width:82%;background:var(--cream);z-index:31;transform:translate(-100%);transition:transform .25s;display:flex;flex-direction:column;padding:0 0 20px;box-shadow:4px 0 30px #00000026}.drawer.open{transform:translate(0)}.drawer-head{background:var(--yellow-warm);padding:32px 24px 22px}.drawer-logo{font-family:var(--display);font-size:30px;font-weight:700;color:var(--ink)}.drawer-tagline{font-family:var(--accent);font-size:12px;text-transform:uppercase;letter-spacing:1.5px;color:var(--ink);opacity:.7}.drawer-user{display:flex;align-items:center;gap:12px;padding:18px 24px;border-bottom:1px solid var(--line)}.drawer-avatar{width:46px;height:46px;border-radius:50%;background:var(--teal-deep);color:#fff;display:flex;align-items:center;justify-content:center;font-family:var(--display);font-weight:700}.drawer-user-name{font-weight:700}.drawer-user-sub{font-size:13px;color:var(--gray)}.drawer-nav{flex:1;padding:12px 0;overflow-y:auto}.drawer-item{width:100%;display:flex;align-items:center;gap:14px;padding:15px 24px;background:none;border:0;font-size:16px;font-weight:500;color:var(--ink);cursor:pointer;text-align:left;font-family:var(--body)}.drawer-item:active{background:#0000000a}.drawer-ic{font-size:20px;width:24px;text-align:center}.drawer-signout{margin:0 24px;padding:13px;background:#fff;border:1px solid var(--line);border-radius:12px;font-weight:700;color:var(--orange);cursor:pointer}.drawer-divider{height:1px;background:var(--line);margin:10px 24px}.role-switch{display:flex;align-items:center;flex-wrap:wrap;gap:8px;padding:12px 18px;background:#fff;border-bottom:1px solid var(--line)}.role-switch-label{font-size:12px;color:var(--gray);font-weight:600}.role-switch button{padding:7px 14px;border:1.5px solid var(--teal-deep);background:#fff;color:var(--teal-deep);border-radius:20px;font-size:13px;font-weight:700;cursor:pointer}.app-content{padding-top:18px}.section-title{font-family:var(--display);font-size:24px;font-weight:700;margin-bottom:14px}.artist-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-bottom:10px}.artist-card{background:#fff;border-radius:18px;overflow:hidden;box-shadow:0 2px 10px #0000000a}.artist-img{aspect-ratio:1;position:relative;overflow:hidden}.artist-img img{width:100%;height:100%;object-fit:contain;object-position:bottom;filter:grayscale(1)}.artist-img.band{display:flex;align-items:center;justify-content:center}.band-emoji{font-size:52px}.artist-name{padding:13px 14px 15px;font-weight:700;font-size:15px}.dj-grid{display:grid;grid-template-columns:1fr 1fr 1fr;gap:10px;margin-bottom:10px}.dj-card{text-align:center}.dj-img{aspect-ratio:1;border-radius:50%;overflow:hidden;margin-bottom:8px}.dj-img img{width:100%;height:100%;object-fit:cover;object-position:top center;filter:grayscale(1)}.dj-name{font-size:13px;font-weight:600;line-height:1.15}.lead{font-size:16px;line-height:1.5;margin-bottom:18px}.resto-card{width:100%;background:#fff;border:0;border-radius:18px;overflow:hidden;box-shadow:0 2px 10px #0000000d;margin-bottom:16px;cursor:pointer;text-align:left;padding:0}.resto-card img{width:100%;height:170px;object-fit:cover;display:block}.resto-card-body{padding:14px 16px 16px}.resto-card-name{font-family:var(--display);font-size:20px;font-weight:700}.resto-card-tag{font-size:13px;color:var(--gray);margin-top:2px}.back-btn.solo{margin-bottom:16px}.resto-hero{width:100%;height:220px;object-fit:cover;border-radius:16px;margin-bottom:16px}.resto-title{font-family:var(--display);font-size:28px;font-weight:700}.resto-tag{font-size:14px;color:var(--orange);font-weight:600;margin-bottom:14px}.resto-text{font-size:16px;line-height:1.6;margin-bottom:20px}.resto-address{font-size:14px;color:var(--muted);margin-bottom:16px}.resto-actions{display:flex;flex-direction:column;gap:10px}.resto-btn{width:100%;padding:15px;border-radius:13px;border:0;background:var(--ink);color:#fff;font-weight:700;font-size:15px;cursor:pointer}.resto-btn.teal{background:var(--teal-deep)}.where-hero{width:100%;border-radius:16px;margin-bottom:16px;display:block}.infocard{display:flex;gap:12px;background:#fff;border-radius:14px;padding:14px 16px;margin-bottom:10px;box-shadow:0 1px 6px #0000000a}.infocard.col{flex-direction:column;gap:6px}.info-ic{font-size:22px}.infocard p{font-size:15px;line-height:1.45}.where-map{width:100%;border-radius:16px;display:block;margin-bottom:8px;cursor:pointer}.map-hint{font-size:13px;color:var(--gray);text-align:center;margin-bottom:8px}.link-row{display:flex;justify-content:space-between;align-items:center;background:#fff;border-radius:12px;padding:14px 16px;margin-bottom:8px;box-shadow:0 1px 6px #0000000a}.link-pdf{color:var(--orange);font-weight:600}.credits-logo{text-align:center;padding:30px 0}.credits-brand{font-family:var(--display);font-size:40px;font-weight:700;color:var(--ink)}.credits-tagline{font-family:var(--accent);color:var(--gray);letter-spacing:1.5px;font-size:14px;text-transform:uppercase}.eyebrow.nomargin{margin:0 0 4px}.eu-card{background:#fff;border-radius:16px;padding:20px;box-shadow:0 2px 8px #0000000a}.eu-card img{width:100%;display:block}.hosp-emergency{display:flex;gap:12px;background:#e5673e1a;border:1px solid var(--orange);border-radius:14px;padding:14px 16px;margin-bottom:4px}.hosp-ic{font-size:22px}.hosp-card{background:#fff;border-radius:16px;padding:18px;box-shadow:0 2px 8px #0000000a;margin-bottom:8px}.hosp-card h4{font-size:18px;font-weight:700;margin-bottom:12px}.hosp-row{display:flex;justify-content:space-between;padding:8px 0;border-bottom:1px solid var(--line);font-size:14px}.hosp-row span:first-child{color:var(--gray)}.hosp-row:last-of-type{border-bottom:0}.hosp-actions{display:flex;flex-direction:column;gap:10px;margin-top:14px}.private-lessons{padding:0 4px}.pl-card{background:#fff;border-radius:18px;overflow:hidden;box-shadow:0 2px 10px #0000000a;margin-bottom:16px}.pl-img{aspect-ratio:1;overflow:hidden;background:var(--teal)}.pl-img img{width:100%;height:100%;object-fit:contain;object-position:bottom;filter:grayscale(1)}.pl-body{padding:16px 18px 20px}.pl-body h3{font-family:var(--heading);font-size:20px;margin-bottom:8px}.pl-body p{font-size:15px;line-height:1.5;color:var(--gray);margin-bottom:16px}.massage{padding:0 4px}.massage-header{text-align:center;margin-bottom:20px}.massage-title{font-family:var(--heading);font-size:28px;margin-bottom:4px}.massage-sub{color:var(--gray);font-size:15px}.massage-intro{font-size:16px;line-height:1.6;margin-bottom:20px}.massage-list{display:flex;flex-direction:column;gap:10px;margin-bottom:24px}.massage-item{display:flex;align-items:center;gap:12px;background:#fff;padding:14px 16px;border-radius:14px;box-shadow:0 2px 8px #0000000a;font-size:15px}.massage-emoji{font-size:22px;flex-shrink:0}.massage-cta{text-align:center;margin-top:8px}.massage-cta p{margin-bottom:12px;color:var(--gray);font-size:14px}.search-box{display:flex;align-items:center;gap:10px;background:#fff;border-radius:14px;padding:13px 16px;margin-bottom:12px;border:1px solid var(--line)}.search-box svg{width:18px;height:18px}.search-box input{border:0;outline:none;font-size:16px;font-family:var(--body);flex:1;background:transparent}.attendees-count{font-size:13px;color:var(--gray);margin-bottom:12px}.attendee-row{display:flex;align-items:center;gap:12px;background:#fff;border-radius:14px;padding:12px 16px;margin-bottom:8px;box-shadow:0 1px 6px #0000000a}.attendee-avatar{width:44px;height:44px;border-radius:50%;flex:0 0 44px;display:flex;align-items:center;justify-content:center;font-family:var(--display);font-weight:700;color:#fff;overflow:hidden}.attendee-avatar img{width:100%;height:100%;object-fit:cover}.attendee-name{font-weight:700;font-size:16px}.attendee-sub{font-size:13px;color:var(--gray)}.programme-bar{display:flex;gap:8px;margin-bottom:10px}.prog-btn{flex:1;text-align:center;background:#fff;border:1px solid var(--line);border-radius:10px;padding:11px;font-weight:600;font-size:14px;color:var(--ink);cursor:pointer;text-decoration:none}.programme-hint{font-size:12.5px;color:var(--gray);text-align:center;padding:10px 4px 0;line-height:1.4}.resto-gallery{display:flex;gap:10px;overflow-x:auto;margin-bottom:20px;padding-bottom:4px;-webkit-overflow-scrolling:touch}.resto-gallery img{height:130px;width:180px;object-fit:cover;border-radius:12px;flex:0 0 auto;cursor:pointer}.cancel-btn{width:100%;background:#fff;border:1.5px solid var(--orange);color:var(--orange);padding:14px;border-radius:12px;font-weight:700;font-size:15px;cursor:pointer;margin-top:12px}.cancel-btn:disabled{opacity:.6}.profile-avatar-wrap{position:relative;width:120px;height:120px;margin:10px auto 0}.profile-avatar{width:120px;height:120px;border-radius:50%;overflow:hidden;background:var(--teal-deep);color:#fff;display:flex;align-items:center;justify-content:center;font-family:var(--display);font-weight:700;font-size:40px}.profile-avatar img{width:100%;height:100%;object-fit:cover}.profile-avatar-btn{position:absolute;bottom:0;right:0;width:40px;height:40px;border-radius:50%;background:var(--orange);color:#fff;border:3px solid var(--cream);font-size:17px;cursor:pointer}.profile-hint{text-align:center;font-size:13px;color:var(--gray);margin:12px 0 24px}.profile-form{display:flex;flex-direction:column;gap:16px}.field{display:flex;flex-direction:column;gap:7px}.field>span{font-size:13px;font-weight:700;color:var(--gray);text-transform:uppercase;letter-spacing:.5px}.field input,.field select{padding:14px 16px;border:1px solid var(--line);border-radius:12px;font-size:16px;font-family:var(--body);background:#fff;width:100%}.field input:focus,.field select:focus{outline:2px solid var(--teal)}.level-pick{display:grid;grid-template-columns:1fr 1fr;gap:8px}.level-opt{padding:13px;border-radius:11px;border:2px solid var(--line);background:#fff;font-weight:600;cursor:pointer;font-family:var(--body);font-size:14px}.level-opt.on{border-color:var(--orange);background:#e5673e12;color:var(--orange-deep)}.success-banner{background:#56b9ab1f;color:var(--teal-deep);border:1px solid var(--teal);border-radius:10px;padding:10px 14px;font-size:14px;font-weight:600}.profile-email{text-align:center;font-size:13px;color:var(--gray);margin-top:24px}.login-link{background:none;border:0;color:var(--orange);font-weight:600;cursor:pointer;font-size:14px;margin-top:14px}.install-banner{position:fixed;left:12px;right:12px;bottom:80px;max-width:456px;margin:0 auto;background:#fff;border-radius:16px;box-shadow:0 8px 30px #0000002e;padding:14px 16px;display:flex;align-items:center;gap:12px;z-index:40}.install-icon img{width:44px;height:44px;border-radius:11px}.install-text{flex:1;display:flex;flex-direction:column;gap:2px}.install-text b{font-size:14px}.install-text span{font-size:12.5px;color:var(--gray);line-height:1.35}.install-btn{background:var(--orange);color:#fff;border:0;border-radius:10px;padding:10px 18px;font-weight:700;cursor:pointer}.install-x{position:absolute;top:8px;right:10px;background:none;border:0;color:var(--gray);font-size:15px;cursor:pointer}.drawer-user{width:100%;background:none;border:0;border-bottom:1px solid var(--line);text-align:left;cursor:pointer;font-family:var(--body)}.drawer-avatar img{width:100%;height:100%;object-fit:cover;border-radius:50%}.barman{min-height:100vh;background:var(--cream);max-width:480px;margin:0 auto;padding-bottom:120px}.barman-bar{display:flex;align-items:center;justify-content:space-between;background:var(--ink);color:#fff;padding:16px 18px;position:sticky;top:0;z-index:10}.barman-role{font-size:12px;letter-spacing:2px;opacity:.6}.barman-name{font-family:var(--display);font-size:20px;font-weight:700}.barman-signout{background:#ffffff26;color:#fff;border:0;border-radius:9px;padding:8px 14px;font-weight:600;cursor:pointer}.barman-lookup{padding:24px 18px}.scan-btn{width:100%;background:var(--teal-deep);color:#fff;border:0;border-radius:18px;padding:28px;font-size:19px;font-weight:700;cursor:pointer;display:flex;flex-direction:column;align-items:center;gap:8px}.scan-ico{font-size:40px}.lookup-or{text-align:center;color:var(--gray);margin:20px 0 14px;font-size:14px}.dancer-result{width:100%;display:flex;align-items:center;gap:12px;background:#fff;border:0;border-radius:14px;padding:12px 16px;margin-bottom:8px;cursor:pointer;text-align:left;box-shadow:0 1px 6px #0000000a}.dancer-avatar{width:46px;height:46px;border-radius:50%;flex:0 0 46px;background:var(--teal);color:#fff;display:flex;align-items:center;justify-content:center;font-family:var(--display);font-weight:700;overflow:hidden}.dancer-avatar.big{width:60px;height:60px;flex-basis:60px;font-size:22px}.dancer-avatar img{width:100%;height:100%;object-fit:cover}.dancer-info{flex:1}.dancer-name{font-weight:700;font-size:16px}.dancer-balance{font-size:13px;color:var(--gray)}.barman-order{padding:18px}.barman-views{margin:16px 18px 0}.txn-history{padding:6px 18px 24px}.txn-hist-row{background:#fff;border-radius:12px;padding:12px 14px;margin-bottom:8px;box-shadow:0 1px 6px #0000000a}.txn-hist-main{display:flex;align-items:center;justify-content:space-between}.txn-hist-dancer{font-weight:700;font-size:15px}.txn-hist-amt{font-weight:700;display:flex;align-items:center;gap:3px}.txn-hist-amt.out{color:var(--orange-deep)}.txn-hist-amt.in{color:var(--teal-deep)}.txn-hist-sub{font-size:12px;color:var(--gray);margin-top:3px}.dancer-card{display:flex;align-items:center;gap:14px;background:#fff;border-radius:16px;padding:16px;margin-bottom:18px;box-shadow:0 2px 10px #0000000d}.dancer-x{background:none;border:0;color:var(--gray);font-size:18px;cursor:pointer}.cat-toggle{display:flex;gap:8px;margin-bottom:14px}.cat-toggle button{flex:1;padding:12px;border:1.5px solid var(--line);background:#fff;border-radius:12px;font-size:15px;font-weight:700;cursor:pointer;color:var(--gray)}.cat-toggle button.on{border-color:var(--teal-deep);color:var(--teal-deep);background:#56b9ab14}.product-grid{display:grid;grid-template-columns:1fr 1fr 1fr;gap:10px;margin-bottom:18px}.product-item{position:relative;background:#fff;border:0;border-radius:14px;padding:14px 8px;cursor:pointer;display:flex;flex-direction:column;align-items:center;gap:5px;box-shadow:0 1px 6px #0000000a}.product-item.refund-item{background:#e5673e1a;outline:2px solid var(--orange)}.product-item.refund-item .product-price{color:var(--orange-deep)}.product-emoji{font-size:26px}.product-name{font-size:12px;font-weight:600;text-align:center;line-height:1.2}.product-price{font-size:13px;color:var(--teal-deep);font-weight:700}.product-qty{position:absolute;top:-7px;right:-7px;background:var(--orange);color:#fff;width:24px;height:24px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:13px;font-weight:700}.cart{background:#fff;border-radius:14px;padding:6px 16px;margin-bottom:16px}.cart-row{display:flex;justify-content:space-between;align-items:center;padding:11px 0;border-bottom:1px solid var(--line);font-size:15px}.cart-row:last-child{border-bottom:0}.cart-line{display:flex;align-items:center;gap:8px;font-weight:700}.cart-minus{background:var(--cream);border:0;width:26px;height:26px;border-radius:7px;font-size:18px;cursor:pointer;color:var(--orange)}.charge-bar{position:fixed;bottom:0;left:0;right:0;max-width:480px;margin:0 auto;background:#fff;border-top:1px solid var(--line);padding:14px 18px max(14px,env(safe-area-inset-bottom));display:flex;align-items:center;gap:14px}.charge-total{flex:1}.charge-total span:first-child{font-size:13px;color:var(--gray);display:block}.charge-amount{font-family:var(--display);font-size:28px;font-weight:700;display:flex;align-items:center;gap:4px}.charge-btn{background:var(--orange);color:#fff;border:0;border-radius:14px;padding:16px 26px;font-weight:700;font-size:17px;cursor:pointer;display:flex;align-items:center;gap:4px}.charge-btn:disabled{opacity:.4}.barman.charged{display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding-top:40vh}.charged-check{width:90px;height:90px;border-radius:50%;background:var(--teal-deep);color:#fff;font-size:48px;display:flex;align-items:center;justify-content:center;margin-bottom:20px}.barman.charged h2{font-family:var(--display);font-size:30px;display:flex;align-items:center;gap:6px}.qr-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#000;z-index:100;display:flex;flex-direction:column}.qr-head{display:flex;justify-content:space-between;align-items:center;padding:18px;color:#fff;font-weight:600}.qr-close{background:#fff3;color:#fff;border:0;width:36px;height:36px;border-radius:50%;font-size:16px;cursor:pointer}.qr-viewport{flex:1;position:relative;overflow:hidden}.qr-viewport video{width:100%;height:100%;object-fit:cover}.qr-frame{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:230px;height:230px;border:3px solid #fff;border-radius:20px;box-shadow:0 0 0 100vmax #0006}.qr-unsupported{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;color:#fff;padding:30px;text-align:center;gap:10px}.qr-unsupported .reg-btn{max-width:200px;margin-top:16px}.admin{min-height:100vh;background:var(--cream);max-width:560px;margin:0 auto;padding-bottom:40px}.admin-bar{display:flex;align-items:center;justify-content:space-between;background:linear-gradient(135deg,#3a3433,var(--ink));color:#fff;padding:16px 18px}.admin-role{font-size:12px;letter-spacing:2px;opacity:.6}.admin-name{font-family:var(--display);font-size:20px;font-weight:700}.admin-tabs{display:flex;background:#fff;border-bottom:1px solid var(--line);position:sticky;top:0;z-index:10;overflow-x:auto}.admin-tab{flex:1;padding:14px 8px;background:none;border:0;border-bottom:3px solid transparent;font-weight:600;color:var(--gray);cursor:pointer;white-space:nowrap}.admin-tab.on{color:var(--orange);border-bottom-color:var(--orange)}.admin-body{padding:20px 18px}.admin-section{font-family:var(--display);font-size:19px;font-weight:700;margin:4px 0 14px}.admin-section-sub{font-family:var(--body);font-size:13px;font-weight:500;color:var(--gray)}.rev-row{display:flex;align-items:center;justify-content:space-between;background:#fff;border-radius:12px;padding:12px 16px;margin-bottom:8px;box-shadow:0 1px 6px #0000000a}.rev-name{font-weight:600;font-size:15px}.rev-val{font-weight:700;display:flex;align-items:center;gap:4px;color:var(--teal-deep)}.admin-stats{display:grid;grid-template-columns:1fr 1fr;gap:12px}.stat-card{background:#fff;border-radius:16px;padding:22px 18px;box-shadow:0 2px 8px #0000000a}.stat-card.wide{grid-column:span 2}.stat-val{font-family:var(--display);font-size:34px;font-weight:700;color:var(--teal-deep)}.stat-lbl{font-size:13px;color:var(--gray);margin-top:2px}.admin-picked{background:#fff;border-radius:14px;padding:16px;margin-bottom:18px;box-shadow:0 1px 6px #0000000a}.adjust-actions,.vote-controls{display:flex;gap:12px;margin-top:16px}.adjust-btn{flex:1;padding:16px;border:0;border-radius:13px;font-weight:700;font-size:16px;cursor:pointer}.adjust-btn.add{background:var(--teal-deep);color:#fff}.adjust-btn.sub{background:var(--orange);color:#fff}.adjust-btn:disabled{opacity:.4}.vote-state{background:#fff;border-radius:14px;padding:18px;text-align:center;font-size:17px;box-shadow:0 1px 6px #0000000a}.vote-state.open{background:#56b9ab1f;color:var(--teal-deep)}.result-row{margin-bottom:14px}.result-head{display:flex;align-items:center;gap:10px;margin-bottom:6px}.result-rank{font-size:16px;font-weight:700;min-width:30px}.result-name{flex:1;font-weight:600}.result-votes{font-size:14px;color:var(--gray)}.result-bar{height:12px;background:var(--line);border-radius:6px;overflow:hidden}.result-fill{height:100%;border-radius:6px;transition:width .4s}.add-couple-form{display:flex;gap:8px;margin-bottom:12px}.add-couple-form input[type=text],.add-couple-form input:not([type]){flex:1;padding:10px 12px;border:1px solid var(--line);border-radius:10px;font-size:14px;font-family:var(--body)}.couple-manage-row{display:flex;align-items:center;gap:10px;background:#fff;border-radius:12px;padding:10px 14px;margin-bottom:8px;box-shadow:0 1px 6px #0000000a;font-size:14px}.add-couple-form select{flex:1;padding:10px 12px;border:1px solid var(--line);border-radius:10px;font-size:14px;font-family:var(--body);background:#fff}.couple-setting-head{font-weight:700;font-size:13px;color:var(--teal-deep);margin:16px 0 8px;text-transform:uppercase;letter-spacing:.5px}.setting-move{background:none;border:1px solid var(--line);border-radius:8px;padding:5px 8px;font-size:12px;font-weight:600;color:var(--gray);cursor:pointer;white-space:nowrap}.vote-setting-head{font-family:var(--display);font-size:18px;font-weight:700;margin:18px 0 10px}.role-row{background:#fff;border-radius:14px;padding:14px 16px;margin-bottom:10px;box-shadow:0 1px 6px #0000000a}.role-row-top{display:flex;align-items:center;justify-content:space-between;gap:10px}.role-badge{display:inline-block;flex:0 0 auto;align-self:center;white-space:nowrap;font-size:11px;font-weight:700;padding:3px 10px;border-radius:20px;text-transform:uppercase}.role-badge.attendee{background:var(--line);color:var(--gray)}.role-badge.barman{background:#56b9ab29;color:var(--teal-deep)}.role-badge.admin{background:#e5673e24;color:var(--orange-deep)}.role-actions{display:flex;gap:6px;margin-top:12px}.role-actions button{flex:1;padding:9px;border:1.5px solid var(--line);background:#fff;border-radius:9px;font-size:13px;font-weight:600;cursor:pointer;color:var(--gray)}.role-actions button.on{border-color:var(--orange);color:var(--orange);background:#e5673e0f}
