@font-face{font-family:Heraclito;src:url(/fonts/Heraclito-Regular.ttf) format("truetype");font-weight:400;font-display:swap}@font-face{font-family:Heraclito;src:url(/fonts/Heraclito-Medium.ttf) format("truetype");font-weight:500;font-display:swap}@font-face{font-family:Heraclito;src:url(/fonts/Heraclito-SemiBold.ttf) format("truetype");font-weight:600;font-display:swap}@font-face{font-family:Heraclito;src:url(/fonts/Heraclito-Bold.ttf) format("truetype");font-weight:700;font-display:swap}@font-face{font-family:Heading Now;src:url(/fonts/HeadingNow-94Regular.woff2) format("woff2"),url(/fonts/HeadingNow-94Regular.ttf) format("truetype");font-weight:400;font-display:swap}:root{--bg: #0D0E0F;--glass: rgba(76, 68, 90, .6);--glass-strong: rgba(76, 68, 90, .85);--t1: rgba(255, 255, 255, .85);--t2: rgba(255, 255, 255, .7);--t3: rgba(255, 255, 255, .52);--t4: rgba(255, 255, 255, .3);--line: rgba(255, 255, 255, .1);--violet: #A570FF;--violet-light: #CFB3FE;--violet-deep: #673BAE;--glow: rgba(103, 59, 174, .55);--grad-num: linear-gradient(135deg, #F8F5FD 0%, #CFB3FE 50%, #BA91FF 75%, #A570FF 100%);--grad-btn: linear-gradient(180deg, #B49BFF 0%, #7C4DFF 100%);--font: "Heraclito", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--font-display: "Heading Now", "Heraclito", system-ui, sans-serif;--font-num: "Heading Now", "Heraclito", system-ui, sans-serif;--safe-bottom: max(env(safe-area-inset-bottom, 0px), var(--tg-safe-area-inset-bottom, 0px));color-scheme:dark}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body{margin:0;height:100%;background:var(--bg)}body{color:var(--t1);font-family:var(--font);-webkit-font-smoothing:antialiased;overscroll-behavior:none;-webkit-user-select:none;user-select:none}input,textarea{-webkit-user-select:text;user-select:text}button{font:inherit;color:inherit;cursor:pointer}button:focus-visible,a:focus-visible{outline:2px solid var(--violet);outline-offset:2px}button:not(:disabled){transition:transform .15s ease}button:not(:disabled):active{transform:scale(.97);transition-duration:.08s}.fab-checkin:not(:disabled):active,.fab-manual:active{transform:translate(-50%) scale(.97)}#root{position:fixed;inset:0;overflow:hidden;isolation:isolate;background:var(--bg)}.app{position:absolute;inset:0}.boot{position:absolute;inset:0;display:grid;place-items:center}.boot .spinner{width:32px;height:32px;border-radius:50%;border:3px solid rgba(255,255,255,.12);border-top-color:var(--violet-light);animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.btn.loading,.qr-btn.loading,.add.loading{position:relative;color:transparent!important;pointer-events:none}.btn.loading:after,.qr-btn.loading:after,.add.loading:after{content:"";position:absolute;left:50%;top:50%;width:18px;height:18px;margin:-9px 0 0 -9px;border-radius:50%;border:2px solid rgba(255,255,255,.35);border-top-color:#fff;animation:spin .8s linear infinite}.add.loading:after{border-color:#0d0e0f40;border-top-color:#0d0e0f}.item .icon img,.product-icon img,.stock .icon img,.oi img{display:block;max-width:100%;max-height:100%;object-fit:contain}.stock .icon img,.oi img{width:28px;height:28px;margin:0 auto}.app:before{content:"";position:absolute;left:50%;top:-180px;width:520px;height:360px;transform:translate(-50%);background:radial-gradient(closest-side,var(--glow),rgba(103,59,174,0));pointer-events:none;z-index:0}.page{position:absolute;inset:0;overflow-y:auto;padding:20px 16px calc(112px + var(--safe-bottom));z-index:1;scrollbar-width:none}.page::-webkit-scrollbar{display:none}.app:after{content:"";position:absolute;inset:auto 0 0;height:120px;background:linear-gradient(180deg,#0d0e0f00,#0d0e0fe6 70%);pointer-events:none;z-index:3}.tabbar{position:absolute;left:16px;right:16px;bottom:calc(18px + var(--safe-bottom));height:64px;display:grid;grid-template-columns:repeat(3,1fr);gap:4px;padding:8px;border-radius:999px;background:#2824329e;backdrop-filter:blur(20px) saturate(150%);-webkit-backdrop-filter:blur(20px) saturate(150%);border:1px solid rgba(255,255,255,.1);box-shadow:0 12px 34px #00000080,inset 0 1px #ffffff14;z-index:4}.tab{background:none;border:0;border-radius:999px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:0px;font-size:12px;line-height:1;color:var(--t2);transition:background-color .2s ease,color .2s ease}.tab svg{width:22px;height:22px;flex:none}.tab[aria-current=page]{background:#f8f5fd;color:#0d0e0f;font-weight:600;box-shadow:0 2px 10px #00000040}.balance-wrap{text-align:center;padding:16px 0 24px}.nick{font-size:14px;color:var(--t3);line-height:20px}.balance{font-family:var(--font-num);font-size:96px;line-height:100px;font-weight:400;letter-spacing:0;background:var(--grad-num);-webkit-background-clip:text;background-clip:text;color:transparent;font-variant-numeric:tabular-nums;margin-top:8px}.balance-label{font-size:18px;color:var(--t2);margin-top:8px;line-height:24px}.balance-row{display:flex;align-items:center;justify-content:center;gap:8px;margin-top:8px}.balance-row .balance{padding:0 .12em;margin:0 -.12em}.place{margin-top:12px;display:inline-block;font-size:14px;color:var(--t1);background:var(--glass);border-radius:999px;padding:8px 16px;line-height:20px}.place.muted{color:var(--t3)}.checkin{display:block;width:100%;border:0;border-radius:999px;background:var(--grad-btn);color:#fff;text-align:left;padding:16px 24px;margin-bottom:16px;box-shadow:0 10px 30px #7c4dff73}.checkin b{display:block;font-size:18px;font-weight:600;line-height:24px}.checkin span{font-size:12px;opacity:.85;line-height:16px}.checked{margin-bottom:16px;background:var(--glass);border-radius:16px;padding:12px 16px;font-size:14px;color:var(--t1);line-height:20px}.plates{display:grid;grid-template-columns:1fr 1fr;gap:8px}.plate{text-align:left;border:0;background:var(--glass);border-radius:20px;padding:16px 16px 12px;min-height:104px;display:flex;flex-direction:column;justify-content:space-between}.plate-title{font-size:14px;color:var(--t2);line-height:20px}.plate-sum{font-family:var(--font-num);font-size:28px;font-weight:400;letter-spacing:0;color:var(--t1);font-variant-numeric:tabular-nums}.plate-meta{font-size:12px;color:var(--t3);line-height:16px}.plate.bonus{grid-column:1 / -1;background:linear-gradient(160deg,#a570ff73,#4c445a99)}.spent{width:100%;display:grid;grid-template-columns:40px 1fr auto;gap:12px;align-items:center;text-align:left;background:none;border:0;box-shadow:inset 0 0 0 1px #ffffff24;border-radius:20px;padding:16px}.spent-icon{width:40px;height:40px;border-radius:50%;background:var(--glass);display:grid;place-items:center;color:var(--t2)}.spent-icon svg{width:22px;height:22px}.spent .plate-sum{color:var(--t2)}.spent-text{display:flex;flex-direction:column;gap:4px}.link-btn{display:block;margin:16px auto 0;background:none;border:0;color:var(--violet-light);font-size:14px;padding:8px;line-height:20px}.page-head{margin:4px 0 16px}.page-head h2{font-size:28px;line-height:1;font-weight:600;letter-spacing:-.02em;margin:0 0 8px}.page-head p{margin:0;color:var(--t3);font-size:14px;line-height:20px}.month{font-family:var(--font-display);text-transform:uppercase;font-size:12px;color:var(--t3);margin:16px 0 8px}.month:first-of-type{margin-top:0}.row{width:100%;border:0;background:var(--glass);border-radius:20px;padding:12px 16px;display:grid;grid-template-columns:48px 1fr auto;gap:12px;align-items:center;text-align:left;margin-bottom:8px}.row.today{background:#4c445ad9;box-shadow:inset 0 0 0 1.5px #a570ffbf,0 0 24px #7c4dff40}.row.past-missed{opacity:.55}.row.event{background:#4c445a59}.date{text-align:center;line-height:1}.date b{display:block;font-size:20px;font-weight:600;line-height:24px}.date span{font-size:12px;color:var(--t3);line-height:16px}.date.range b{font-size:16px;letter-spacing:-.02em}.date.range span{white-space:nowrap}.row-title{font-size:14px;line-height:20px;color:var(--t1)}.row-meta{font-size:12px;color:var(--t3);margin-top:4px;line-height:16px}.pts{font-size:12px;color:var(--t2);white-space:nowrap;font-variant-numeric:tabular-nums;line-height:16px}.pts.good{color:var(--violet-light)}.pts.lime,.pts.orange,.pts.violet{display:inline-flex;align-items:center;gap:4px;border-radius:999px;padding:4px 4px 4px 8px;font-size:12px;font-weight:600;line-height:16px}.pts.lime{background:#e3fc40;color:#3a4300}.pts.orange{background:#f87c54;color:#5c1a05}.pts.violet{background:#ba91ff;color:#241053}.rs{flex:none;white-space:nowrap;border-radius:999px;padding:8px 12px;font-size:12px;font-weight:500;line-height:16px}.rs.action{background:var(--grad-btn);color:#fff;font-weight:600}.rs.booked{background:#a570ff29;color:var(--violet-light);font-weight:600}.rs.muted{background:#ffffff14;color:var(--t3)}.rs.full{padding:4px 8px;border:1px solid rgba(255,181,71,.5);color:#ffb547}.coin.xs{width:16px;height:16px}.coin.sm{width:22px;height:22px}.coin.md{width:28px;height:28px}.coin.lg{width:60px;height:60px}.now-card{width:100%;border:0;text-align:left;border-radius:28px;padding:16px;background:linear-gradient(150deg,#7b4bd9d9,#574a72bf);box-shadow:0 0 30px #7c4dff59;margin-bottom:8px}.now-card .label{font-size:16px;font-weight:600;color:var(--t1);display:flex;align-items:center;gap:8px;flex-wrap:wrap;line-height:20px}.now-card .label .format{font-size:12px;padding:4px 8px;line-height:16px}.now-card .label i{width:8px;height:8px;border-radius:50%;background:var(--violet-light);box-shadow:0 0 10px var(--violet)}.now-top{display:flex;align-items:center;justify-content:space-between;gap:8px}.now-top .pts{flex:none}.now-card+.card-hint,.section-label+.now-card{margin-top:0}.now-card h3{margin:8px 0;font-size:20px;line-height:24px;font-weight:600;letter-spacing:-.01em}.now-card .meta{font-size:12px;color:var(--t2);line-height:16px}.now-card .go{margin-top:12px;font-size:14px;color:var(--t1);line-height:20px}.now-open{display:block;width:100%;padding:0;border:0;background:none;text-align:left;color:inherit}.now-action{display:flex;align-items:center;justify-content:center;gap:8px;width:100%;height:44px;margin-top:16px;border:0;border-radius:999px;background:var(--grad-btn);color:#fff;font-size:16px;font-weight:600;box-shadow:0 6px 20px #7c4dff59;line-height:20px}.now-action svg{width:18px;height:18px;flex:none}.now-action:disabled{background:#ffffff14;color:var(--t2);box-shadow:none;cursor:default}.now-hint{margin:16px 0 0;font-size:14px;line-height:20px;color:var(--t2)}.now-action:disabled svg{color:var(--violet-light)}.section-label{font-family:var(--font-display);text-transform:uppercase;font-size:12px;color:var(--t3);margin:16px 0 8px}.empty-note{background:var(--glass);border-radius:20px;padding:16px;font-size:14px;line-height:20px;color:var(--t1)}.speaker{display:flex;gap:12px;align-items:center;background:#ffffff0d;border-radius:16px;padding:12px;margin:4px 0 16px}.avatar{width:44px;height:44px;border-radius:50%;flex:none;display:grid;place-items:center;font-weight:600;color:#0d0e0f;background:var(--grad-num)}.speaker b{display:block;font-size:16px;font-weight:600;line-height:20px}.speaker span{font-size:12px;color:var(--t3);line-height:16px}.lesson-desc{font-size:16px;line-height:20px;color:var(--t1);margin:0 0 16px}.when{margin:0 0 16px}.when-date{font-size:28px;line-height:1.05;font-weight:600;letter-spacing:-.02em}.when-row{display:flex;align-items:center;gap:8px;margin-top:8px;flex-wrap:wrap}.when-time{font-size:28px;line-height:1;font-weight:600;letter-spacing:-.02em;background:var(--grad-num);-webkit-background-clip:text;background-clip:text;color:transparent;font-variant-numeric:tabular-nums}.format{display:inline-flex;align-items:center;gap:8px;font-size:16px;font-weight:500;padding:8px 16px;border-radius:999px;border:1px solid rgba(255,255,255,.18);color:var(--t1);line-height:20px}.format.online{border-color:#a570ff99;color:var(--violet-light);background:#a570ff1f}.format svg{width:16px;height:16px}.lesson-kicker{font-family:var(--font-display);text-transform:uppercase;font-size:12px;color:var(--t3);margin-bottom:4px}.lesson-title{font-size:22px;line-height:28px;font-weight:600;letter-spacing:-.01em;margin:0 0 8px}.eh-top{display:flex;justify-content:space-between;align-items:center;gap:8px}.eh-pill{display:inline-flex;align-items:center;gap:8px;height:38px;padding:0 16px;border-radius:999px;background:#ffffff14;font-size:16px;font-weight:500;line-height:20px;color:#fff;font-variant-numeric:tabular-nums;white-space:nowrap}.eh-pill.pts{font-size:16px;font-weight:600;padding:0 12px 0 16px}.sheet .eh-title{font-size:26px;line-height:32px;font-weight:600;letter-spacing:-.01em;margin:16px 0}.eh-when{display:flex;flex-wrap:wrap;gap:8px}.eh-meta{font-size:12px;line-height:16px;color:var(--t2);margin-top:8px}.eh-line{height:1px;background:var(--line);margin:16px 0}.eh-speaker{display:flex;align-items:center;gap:16px}.eh-photo{width:112px;height:112px;flex:none;border-radius:20px;background:var(--glass);overflow:hidden}.eh-photo svg,.eh-photo img{display:block;width:112px;height:112px;object-fit:cover}.eh-name{font-size:18px;line-height:24px;font-weight:600;color:#fff}.eh-role{font-size:12px;line-height:16px;color:var(--t2);margin-top:4px}.eh-desc{background:var(--glass);border-radius:20px;padding:16px;font-size:16px;line-height:20px;color:var(--t1);margin:16px 0}.eh-desc .regalia{margin:0}.eh-tbd{display:flex;align-items:center;gap:12px;background:var(--glass);border-radius:20px;padding:16px;font-size:16px;line-height:24px;font-weight:500;color:var(--t2)}.eh-tbd svg{width:24px;height:24px;flex:none;color:var(--t3)}.eh-pill.tone-lesson{background:#e3fc40;color:#3a4300}.eh-pill.tone-roast{background:#f87c54;color:#5c1a05}.eh-pill.tone-demo{background:#ba91ff;color:#241053}.speaker-big{background:var(--glass);border-radius:24px;padding:16px;margin:0 0 16px}.speaker-top{display:flex;align-items:center;gap:16px}.avatar.xl{width:76px;height:76px;font-size:26px;line-height:32px}.sp-label{font-size:12px;color:var(--t3);margin-bottom:4px;line-height:16px}.sp-name{font-size:20px;line-height:24px;font-weight:600;letter-spacing:-.01em}.sp-role{font-size:14px;color:var(--t2);margin-top:4px;line-height:20px}.regalia{list-style:none;margin:16px 0 0;padding:0;display:grid;gap:8px}.regalia li{position:relative;padding-left:16px;font-size:14px;line-height:20px;color:var(--t1)}.regalia li:before{content:"";position:absolute;left:2px;top:7px;width:7px;height:7px;border-radius:50%;background:var(--violet);box-shadow:0 0 8px var(--violet)}.qr-points{display:flex;justify-content:space-between;align-items:center;background:#ffffff0d;border-radius:16px;padding:12px 16px;font-size:14px;color:var(--t1);margin-bottom:4px;line-height:20px}.qr-points b{font-family:var(--font-num);font-weight:400;font-size:18px;color:var(--violet-light);font-variant-numeric:tabular-nums}.shop-head{position:sticky;top:-12px;margin:-8px 0 16px;display:flex;align-items:center;justify-content:space-between;gap:8px;z-index:2}.pill{display:inline-flex;align-items:center;gap:8px;min-width:0;height:44px;padding:0 16px 0 8px;border-radius:999px;background:#282432b8;backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);border:1px solid rgba(255,255,255,.08);font-size:16px;font-weight:600;color:var(--t1);white-space:nowrap;line-height:20px}.pill .avatar{width:32px;height:32px;font-size:14px;line-height:20px}.pill .nick-txt{overflow:hidden;text-overflow:ellipsis}.pill .sep{width:1px;height:18px;background:#ffffff2e;flex:none}.pill .muted{color:var(--t2);font-weight:500;font-size:14px;line-height:20px}.pill.balance-pill{padding:0 16px 0 8px;font-size:18px;font-variant-numeric:tabular-nums;line-height:24px}button.pill{transition:transform .12s ease}button.pill:active{transform:scale(.96)}.coin{width:26px;height:26px;border-radius:50%;flex:none;background:url(/img/coin.png) center / contain no-repeat}.item-open{background:none;border:0;padding:0;text-align:left;display:flex;flex-direction:column;gap:8px}.buy{border:0;border-radius:999px;padding:8px;font-size:12px;font-weight:600;line-height:16px;letter-spacing:-.01em;white-space:nowrap;background:var(--grad-btn);color:#fff}.buy:disabled{background:#ffffff14;color:var(--t3);cursor:default}.hero-open{background:none;border:0;padding:0;text-align:left;display:grid;grid-template-columns:1fr auto;align-items:center;gap:12px;width:100%}.hero .buy{width:100%;margin-top:16px;padding:12px;font-size:14px;line-height:20px}.tag{display:inline-block;font-size:12px;padding:0 8px;border-radius:999px;border:1px solid var(--line);color:var(--t3);margin-right:4px;line-height:16px}.tag.online{border-color:#a570ff73;color:var(--violet-light)}.banner{background:var(--glass);border-radius:20px;padding:16px;margin-bottom:16px;font-size:14px;line-height:20px;color:var(--t1)}.banner b{font-weight:600}.banner .sub{color:var(--t3);font-size:12px;display:block;margin-top:4px;line-height:16px}.hero{border-radius:24px;padding:16px;background:linear-gradient(150deg,#673baed9,#230b7abf 60%,#4c445a99);margin-bottom:16px}.hero small{font-family:var(--font-display);text-transform:uppercase;font-size:12px;color:var(--violet-light)}.hero h3{margin:4px 0 8px;font-size:22px;font-weight:600;letter-spacing:-.01em;line-height:28px}.hero .price{font-size:16px;color:var(--t1);line-height:20px}.hero .icon{font-size:52px;line-height:60px}.cat{font-family:var(--font-display);text-transform:uppercase;font-size:12px;color:var(--t3);margin:16px 0 8px}.grid{display:grid;grid-template-columns:1fr 1fr;gap:8px}.item{border:0;text-align:left;background:var(--glass);border-radius:24px;padding:8px;display:flex;flex-direction:column;gap:4px;position:relative}.item .icon{width:100%;aspect-ratio:1.75;display:grid;place-items:center;font-size:52px;line-height:1}.item .name{font-size:14px;line-height:20px;color:var(--t1);height:40px;padding:0 8px;overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2}.item-foot{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:4px 0 0 8px;margin-top:auto}.item-price{display:inline-flex;align-items:center;gap:4px;font-size:18px;font-weight:600;letter-spacing:-.01em;color:var(--t1);font-variant-numeric:tabular-nums;white-space:nowrap;line-height:24px}.add{width:44px;height:44px;flex:none;border-radius:50%;border:0;display:grid;place-items:center;background:#f8f5fd;color:#0d0e0f}.add svg{width:22px;height:22px}.add:disabled{background:#ffffff14;color:var(--t4);cursor:default}.add.done:disabled{background:var(--violet);color:#0d0e0f}.item.sold,.hero.sold{filter:grayscale(1);opacity:.45}.badge{position:absolute;top:14px;left:14px;font-size:12px;padding:4px 8px;border-radius:999px;background:#0d0e0fcc;color:var(--t1);line-height:16px}.badge.bought{background:var(--violet);color:#0d0e0f}.badge.top{background:var(--grad-num);color:#0d0e0f;font-weight:600}.backdrop{position:absolute;inset:0;background:#0000008c;z-index:10;opacity:0;transition:opacity .2s ease}.backdrop.on{opacity:1}.sheet{position:absolute;inset:auto 0 0;max-height:86%;background:#1a1820;border-radius:24px 26px 0 0;z-index:11;padding:8px 16px calc(24px + var(--safe-bottom));overflow-y:auto;transform:translateY(100%);transition:transform .28s cubic-bezier(.2,.8,.2,1)}.sheet.on{transform:translateY(0)}.handle{width:40px;height:5px;border-radius:3px;background:#fff3;margin:0 auto 16px}.sheet h3{font-size:22px;font-weight:600;letter-spacing:-.01em;margin:0 0 8px;line-height:28px}.sheet .sub{color:var(--t3);font-size:14px;margin:0 0 16px;line-height:20px}.list{margin:0;padding:0;list-style:none}.list li{display:flex;justify-content:space-between;gap:12px;padding:12px 0;border-bottom:1px solid var(--line);font-size:14px;line-height:20px}.list li:last-child{border-bottom:0}.list .muted{color:var(--t3)}.list .plus{color:var(--violet-light);font-variant-numeric:tabular-nums;white-space:nowrap}.rules p{margin:0 0 12px;font-size:14px;line-height:20px;color:var(--t1)}.rules h4{font-size:16px;margin:16px 0 8px;font-weight:600;line-height:20px}.btn{display:block;width:100%;border:0;border-radius:999px;padding:16px;font-size:16px;font-weight:600;margin-top:16px;background:var(--grad-btn);color:#fff;line-height:20px}.btn.ghost{background:#ffffff14;color:var(--t1);font-weight:500;margin-top:8px}.btn:disabled{background:#ffffff14;color:var(--t3);cursor:default}.hint{font-size:14px;color:var(--t2);margin-top:16px;text-align:center;line-height:20px}.hint.good{color:var(--violet-light)}.product-icon.small{height:96px;font-size:52px;line-height:64px}.product-icon{height:150px;border-radius:20px;background:none;display:grid;place-items:center;font-size:72px;margin-bottom:16px;line-height:92px}.product-desc{font-size:14px;line-height:20px;color:var(--t1);margin:0 0 8px}.product-how{font-size:14px;color:var(--t3);margin:0 0 16px;line-height:20px}.product-price{display:flex;align-items:center;gap:8px;font-size:26px;font-weight:600;letter-spacing:-.02em;line-height:32px}.sizes{display:flex;gap:8px;margin-top:12px;flex-wrap:wrap}.size{min-width:48px;padding:8px 12px;border-radius:999px;border:1px solid var(--line);background:#ffffff0a;font-size:14px;line-height:20px}.size[aria-pressed=true]{border-color:var(--violet);background:#a570ff2e}.size:disabled{opacity:.3;text-decoration:line-through;cursor:default}.full{position:absolute;inset:0;z-index:20;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:32px}.scanner{background:radial-gradient(circle at 50% 40%,#2b2833,#050506 70%)}.viewfinder{width:230px;height:230px;position:relative;margin-bottom:24px}.viewfinder:before,.viewfinder:after,.viewfinder span:before,.viewfinder span:after{content:"";position:absolute;width:44px;height:44px;border:4px solid #fff}.viewfinder:before{top:0;left:0;border-right:0;border-bottom:0;border-radius:16px 0 0}.viewfinder:after{top:0;right:0;border-left:0;border-bottom:0;border-radius:0 14px 0 0}.viewfinder span:before{bottom:0;left:0;border-right:0;border-top:0;border-radius:0 0 0 14px}.viewfinder span:after{bottom:0;right:0;border-left:0;border-top:0;border-radius:0 0 14px}.viewfinder .fake-qr{position:absolute;inset:40px;opacity:.55}.scan-line{position:absolute;left:20px;right:20px;height:2px;background:var(--violet);box-shadow:0 0 12px var(--violet);top:50%;animation:scan 1.4s ease-in-out infinite alternate}@keyframes scan{0%{top:22%}to{top:78%}}.result{background:#0d0e0ff7}.result .big,.empty-screen .big{width:88px;height:88px;flex:none;border-radius:50%;background:#a570ff26;color:var(--violet-light);display:grid;place-items:center;margin:0 auto 16px}.big svg{width:44px;height:44px}.result h3{font-size:26px;margin:0 0 8px;font-weight:600;letter-spacing:-.01em;line-height:32px}.result .plus-big{font-size:44px;font-weight:600;background:var(--grad-num);-webkit-background-clip:text;background-clip:text;color:transparent;margin:8px 0;line-height:56px}.result p{color:var(--t2);font-size:16px;margin:0 0 8px;max-width:280px;line-height:20px}.result .btn{max-width:280px}.projector{background:#0d0e0f;justify-content:flex-start;padding-top:24px}.projector .cap{font-size:12px;color:var(--t3);margin-bottom:8px;line-height:16px}.projector h3{margin:0 0 4px;font-size:20px;font-weight:600;line-height:24px}.projector .qr{width:250px;height:250px;background:#fff;border-radius:16px;padding:12px;margin:16px 0 12px}.stats{display:flex;gap:8px;margin-bottom:8px}.stat{background:var(--glass);border-radius:16px;padding:8px 16px;min-width:104px}.stat b{display:block;font-size:22px;font-variant-numeric:tabular-nums;line-height:28px}.stat span,.refresh{font-size:12px;color:var(--t3);line-height:16px}.empty-screen{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:32px;z-index:2}.empty-screen h3{font-size:24px;margin:0 0 8px;font-weight:600;line-height:32px}.empty-screen p{color:var(--t2);font-size:16px;line-height:20px;margin:0;max-width:290px}.empty-screen .btn{max-width:290px}.now-card .btn{margin-top:16px}.now-card .btn.ghost{margin-top:8px;background:#ffffff1a}.qr-row{display:flex;gap:8px;margin-top:16px}.qr-btn{flex:1;min-width:0;display:flex;align-items:center;justify-content:center;gap:8px;height:52px;border:0;border-radius:999px;background:var(--grad-btn);color:#fff;font-size:16px;font-weight:600;white-space:nowrap;line-height:20px}.full.link-checkin{padding-left:16px;padding-right:16px}.lc{width:100%;max-width:358px;text-align:center;background:var(--glass);border-radius:24px;padding:24px}.lc-label{display:flex;align-items:center;justify-content:center;gap:8px;font-size:12px;color:var(--t2);line-height:16px}.lc h3{margin:8px 0;font-size:24px;line-height:28px}.lc .lc-meta{font-size:14px;color:var(--t2);margin:0 0 24px;line-height:20px}.lc-rate{display:grid;justify-items:center;gap:8px;font-size:14px;color:var(--t1);margin-bottom:4px;line-height:20px}.lc-rate i{font-style:normal;color:var(--t3);font-size:12px;line-height:16px}.lc .btn{display:flex;align-items:center;justify-content:center;gap:8px}.lc .seg{justify-content:center;margin:4px 0 8px}.lc .seg button{min-width:44px;min-height:44px}.qr-btn.ghost{background:#ffffff1a;color:var(--t1);font-weight:500}.qr-btn svg{width:18px;height:18px;flex:none}.link-btn.under-card{margin:8px auto -8px}.card-hint.under-card{margin:4px 4px 0}.card-hint{font-size:14px;color:var(--t2);margin:8px 0 0;line-height:20px}.live{display:flex;align-items:center;gap:8px;margin-top:16px;font-size:14px;color:var(--t1);line-height:20px}.live .dot{width:8px;height:8px;border-radius:50%;background:var(--violet-light);box-shadow:0 0 10px var(--violet);animation:pulse 1.2s ease-in-out infinite}@keyframes pulse{50%{opacity:.35}}.count-line{display:flex;align-items:baseline;gap:8px;margin-top:8px}.big-count{font-size:48px;line-height:1;font-weight:600;letter-spacing:-.03em;background:var(--grad-num);-webkit-background-clip:text;background-clip:text;color:transparent;font-variant-numeric:tabular-nums}.count-line span{font-size:14px;color:var(--t2);line-height:20px}.count-cell{text-align:right;line-height:1.1}.count-cell b{display:block;font-size:18px;font-weight:600;font-variant-numeric:tabular-nums;line-height:24px}.count-cell span{font-size:12px;color:var(--t3);line-height:16px}.ostats{display:grid;grid-template-columns:repeat(auto-fit,minmax(72px,1fr));gap:8px;margin-bottom:12px}.ostat{background:var(--glass);border-radius:16px;padding:8px 12px}.ostat b{display:block;font-size:22px;font-weight:600;font-variant-numeric:tabular-nums;line-height:28px}.ostat b small{font-size:14px;color:var(--t3);font-weight:500;line-height:20px}.ostat span{font-size:12px;color:var(--t3);line-height:16px}.search{width:100%;height:44px;border-radius:16px;border:1px solid var(--line);background:#ffffff0f;color:var(--t1);padding:0 16px;font:inherit;font-size:16px;outline:none;line-height:20px}.search:focus,.field input:focus{border-color:#a570ffb3}.seg{display:flex;gap:8px;margin:12px 0;overflow-x:auto;scrollbar-width:none}.seg::-webkit-scrollbar{display:none}.seg button{flex:none;border:1px solid var(--line);background:none;border-radius:999px;padding:8px 12px;font-size:12px;color:var(--t2);white-space:nowrap;line-height:16px}.seg button[aria-pressed=true]{background:#f8f5fd;color:#0d0e0f;border-color:transparent;font-weight:600}.plist{background:var(--glass);border-radius:20px;padding:0 16px}.prow{display:grid;grid-template-columns:36px 1fr auto;gap:8px;align-items:center;padding:8px 0;border-bottom:1px solid var(--line)}.prow:last-child{border-bottom:0}.prow .avatar,.ocard-head .avatar{width:36px;height:36px;font-size:14px;line-height:20px}.name{font-size:14px;color:var(--t1);line-height:20px}.meta{font-size:12px;color:var(--t3);margin-top:0;line-height:16px}.prow .time{text-align:right;font-size:12px;color:var(--t2);font-variant-numeric:tabular-nums;display:flex;flex-direction:column;align-items:flex-end;gap:4px;line-height:16px}.prow .tag{margin:0}.tag.warn{border-color:#ffb54780;color:#ffb547}.foot-note{font-size:12px;color:var(--t3);line-height:20px;margin:16px 0 0}.rcard{width:100%;border:0;text-align:left;background:var(--glass);border-radius:20px;padding:16px;margin-bottom:8px;display:block}.rcard-top{display:flex;justify-content:space-between;align-items:center;gap:8px;margin-bottom:4px}.rcard-top b{font-size:18px;font-weight:600;line-height:24px}.rcard-meta{font-size:12px;color:var(--t2);margin-top:8px;line-height:16px}.bar{height:6px;border-radius:3px;background:#ffffff14;margin-top:8px;overflow:hidden}.bar i{display:block;height:100%;border-radius:3px;background:var(--grad-btn)}.st{flex:none;font-size:12px;padding:4px 8px;border-radius:999px;border:1px solid var(--line);color:var(--t3);line-height:16px}.st.open{background:#a570ff2e;border-color:#a570ff99;color:var(--violet-light)}.st.warn{border-color:#ffb54780;color:#ffb547}.st.lime{border-color:#c7ec2eb3;color:#e9ff8a}.alert{background:#ffb5471a;border:1px solid rgba(255,181,71,.35);color:#ffd9a0;border-radius:16px;padding:12px 16px;font-size:14px;line-height:20px;margin-bottom:12px}.btn-row{display:grid;grid-template-columns:1fr 1fr;gap:8px}.btn-row .btn,.btn-row .btn.ghost,.btn-row .btn.danger{margin-top:0;padding:16px 8px;white-space:nowrap}.btn.danger{background:#ff8a8024;color:#ff8a80;margin-top:8px}.srow{width:100%;border:0;text-align:left;display:grid;grid-template-columns:96px 1fr 12px;gap:8px;align-items:center;background:var(--glass);border-radius:16px;padding:12px 16px;margin-bottom:8px}.srow .t{font-size:14px;font-weight:600;font-variant-numeric:tabular-nums;line-height:20px}.srow .who{display:flex;flex-direction:column;gap:0px;min-width:0}.srow .team{font-size:14px;color:var(--t1);line-height:20px}.srow .by{font-size:12px;color:var(--t3);line-height:16px}.srow.free{box-shadow:inset 0 0 0 1px #a570ff80}.srow.free .team{color:var(--violet-light)}.srow.off{opacity:.5}.srow .team.muted{color:var(--t3)}.chev{color:var(--t3);font-size:18px;line-height:24px}.field{margin-bottom:12px}.field>label,.field>.lbl{display:block;font-size:12px;color:var(--t3);margin-bottom:8px;line-height:16px}.field input{width:100%;height:46px;border-radius:16px;border:1px solid var(--line);background:#ffffff0f;color:var(--t1);padding:0 16px;font:inherit;font-size:16px;color-scheme:dark;outline:none;line-height:20px}.field .seg{margin:0}.two{display:grid;grid-template-columns:1fr 1fr;gap:8px}.stepper{display:inline-flex;align-items:center;gap:16px;background:#ffffff0f;border-radius:999px;padding:4px}.stepper button{width:44px;height:44px;border:0;border-radius:50%;background:#ffffff14;font-size:20px;line-height:24px}.stepper b{min-width:20px;text-align:center;font-size:16px;line-height:20px}.preview{background:#ffffff0d;border-radius:16px;padding:12px 16px;font-size:14px;line-height:20px;color:var(--t1)}.preview .sub2{display:block;color:var(--t3);font-size:12px;margin-top:4px;line-height:16px}.preview .err{color:#ff8a80}.preview .warn-txt{color:#ffb547}.section-label .link{text-transform:none;font-family:var(--font)}.mini{border:0;border-radius:999px;padding:8px 12px;font-size:12px;font-weight:600;background:#ffffff1a;color:var(--t1);line-height:16px}.ocard{background:var(--glass);border-radius:20px;padding:12px 16px 0;margin-bottom:8px}.ocard-head{display:grid;grid-template-columns:36px 1fr;gap:8px;align-items:center;padding-bottom:8px}.oitem{display:grid;grid-template-columns:28px 1fr auto;gap:8px;align-items:center;padding:8px 0;border-top:1px solid var(--line)}.oi{font-size:22px;text-align:center;line-height:28px}.oname{font-size:14px;color:var(--t1);line-height:20px}.issue{border:0;border-radius:999px;padding:8px 16px;font-size:12px;font-weight:600;background:#f8f5fd;color:#0d0e0f;line-height:16px}.issued{font-size:12px;color:var(--violet-light);white-space:nowrap;line-height:16px}.stock{display:grid;grid-template-columns:32px 1fr auto;gap:12px;align-items:center;background:var(--glass);border-radius:16px;padding:12px 16px;margin-bottom:8px}.stock .icon{font-size:24px;text-align:center;line-height:32px}.stock .bar{margin-top:8px;height:4px}.stock .n{font-size:18px;font-weight:600;font-variant-numeric:tabular-nums;text-align:right;line-height:24px}.stock .n span{display:block;font-size:12px;color:var(--t3);font-weight:500;line-height:16px}.stock.out{opacity:.5}.projector .btn-row{width:100%;max-width:340px;margin-top:16px}.fab-checkin{position:absolute;left:50%;bottom:calc(96px + var(--safe-bottom));transform:translate(-50%);z-index:4;height:44px;padding:0 20px 0 16px;display:inline-flex;align-items:center;gap:8px;border:0;border-radius:999px;background:var(--grad-btn);color:#fff;font-size:16px;font-weight:600;white-space:nowrap;box-shadow:0 6px 20px #7c4dff59;line-height:20px}.fab-checkin svg{width:18px;height:18px;flex:none}.fab-manual{position:absolute;left:50%;bottom:calc(96px + var(--safe-bottom));transform:translate(-50%);z-index:4;height:44px;padding:0 20px;display:inline-flex;align-items:center;gap:8px;border:1px solid var(--line);border-radius:999px;background:#282432b8;-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);color:var(--t1);font-size:16px;font-weight:600;white-space:nowrap;box-shadow:0 10px 30px #0006;line-height:20px}.fab-manual b{color:var(--violet-light);font-weight:600;font-size:20px;line-height:20px}.search.err{border-color:#ffb54799}.field-err{color:#ffd9a0;font-size:14px;line-height:20px;margin:-4px 0 12px}.alert.info{background:#ffffff0f;border-color:var(--line);color:var(--t2)}.srow.static{grid-template-columns:96px 1fr}.fab-checkin.success{background:#2c2b32;color:var(--t1);box-shadow:0 10px 30px #0006;animation:fab-morph .3s ease-out;transition:opacity .3s ease-in,transform .3s ease-in}.fab-checkin.success svg{color:var(--violet-light)}.fab-checkin.success .coin{margin-left:0}.fab-checkin.leaving{opacity:0;transform:translate(-50%,16px)}@keyframes fab-morph{0%{background:#7c4dff;transform:translate(-50%) scale(.96)}}.page.has-fab{padding-bottom:calc(176px + var(--safe-bottom))}.toast{position:absolute;left:16px;right:16px;bottom:calc(96px + var(--safe-bottom));z-index:30;display:flex;align-items:center;justify-content:space-between;gap:12px;background:#2c2b32;color:var(--t1);border-radius:16px;padding:12px 16px;font-size:14px;line-height:20px;box-shadow:0 10px 30px #0006;animation:toast-in .2s ease-out}.toast button{flex:none;border:0;background:none;color:var(--violet-light);font-weight:600;font-size:14px;padding:4px;line-height:20px}@keyframes toast-in{0%{transform:translateY(8px);opacity:0}}@media(prefers-reduced-motion:reduce){.sheet,.backdrop{transition:none}.scan-line,.live .dot,.toast,.fab-checkin.success{animation:none}}.balance,.plate-sum,.qr-points b,.month,.section-label,.lesson-kicker,.hero small,.cat{letter-spacing:-.03em}.srow.slot{grid-template-columns:96px 1fr 0}.srow.slot:disabled{cursor:default}.srow.slot.mine{box-shadow:inset 0 0 0 1px #a570ff80}.srow.slot.mine .team{color:var(--violet-light);font-weight:600}.srow.slot.sel{box-shadow:inset 0 0 0 2px var(--violet);background:#a570ff29}.srow.slot.sel .team{color:#fff;font-weight:600}.team-pill{display:inline-block;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:12px;line-height:16px;padding:4px 8px;border-radius:999px;background:#ffffff14;color:var(--t2)}.booking-card{position:relative;background:var(--glass);border-radius:20px;padding:16px;margin:0 0 8px}.booking-top{display:flex;align-items:center;justify-content:space-between;min-height:28px}.booking-label{font-family:var(--font-display);text-transform:uppercase;font-size:12px;letter-spacing:-.03em;color:var(--violet-light)}.booking-when{font-size:22px;line-height:28px;font-weight:600;margin-top:4px;font-variant-numeric:tabular-nums}.booking-meta{font-size:14px;line-height:20px;color:var(--t2);margin-top:4px}.more-btn{width:44px;height:44px;margin:-8px -8px -8px 0;border:0;background:none;padding:0;display:grid;place-items:center;color:var(--violet-light)}.more-btn span{width:28px;height:28px;border-radius:50%;border:1.5px solid currentColor;display:grid;place-items:center}.more-btn svg{width:14px;height:4px}.action-menu{position:absolute;right:12px;top:48px;z-index:2;min-width:200px;background:#2c2b32;border-radius:16px;padding:4px;box-shadow:0 10px 30px #0006;animation:toast-in .15s ease-out}.action-menu button{display:flex;align-items:center;gap:12px;width:100%;min-height:44px;padding:8px 12px;border:0;background:none;border-radius:12px;font-size:16px;line-height:20px;color:var(--t1);text-align:left}.action-menu button svg{width:18px;height:18px;flex:none}.action-menu button.danger{color:#ff8a80}.result-inline{text-align:center;padding:8px 0 0}.result-inline .big{width:88px;height:88px;border-radius:50%;background:#a570ff26;color:var(--violet-light);display:grid;place-items:center;margin:0 auto 16px}.result-inline .big svg{width:44px;height:44px}.result-inline h3{margin-bottom:8px}.error-screen .btn{max-width:290px}.projector .qr img,.projector .qr canvas{width:100%;height:100%;display:block;image-rendering:pixelated}.dev-token{font:11px/16px ui-monospace,Menlo,monospace;color:var(--t3);word-break:break-all;max-width:300px;margin-top:8px;-webkit-user-select:all;user-select:all}.full.checking{background:#0d0e0ff7}.full.checking .spinner{width:40px;height:40px;border-radius:50%;border:3px solid rgba(255,255,255,.12);border-top-color:var(--violet-light);animation:spin .8s linear infinite;margin-bottom:16px}.srow .who .team-pill{align-self:flex-start}.sheet-actions{position:sticky;bottom:calc(-24px - var(--safe-bottom));margin:8px -16px calc(-24px - var(--safe-bottom));padding:8px 16px calc(24px + var(--safe-bottom));background:linear-gradient(180deg,#1a182000,#1a1820 24px);z-index:1}.sheet-actions .btn:first-child{margin-top:8px}.projector .qr{width:min(86vw,52vh,560px);height:min(86vw,52vh,560px);padding:8px}.projector .qr svg{width:100%;height:100%;display:block}.sheet .plist+.btn-row,.sheet .plist+.btn{margin-top:16px}
