:root{--ink:#1d2b26;--ink-2:#4f5e58;--ink-3:#7c8983;--paper:#faf6ee;--paper-2:#f3ecdf;--card:#fff;--line:#ece4d5;--pine:#1f5f4a;--pine-deep:#123f31;--pine-soft:#e3efe9;--apricot:#e0802e;--apricot-deep:#b85f14;--apricot-soft:#fdefdf;--ok:#1f7a52;--ok-soft:#e0f2e9;--warn:#9a6400;--warn-soft:#fbf0d5;--bad:#b83227;--bad-soft:#fbe6e3;--mute-soft:#eff0ee;--radius:14px;--radius-sm:10px;--shadow:0 1px 2px #1d2b260d, 0 6px 18px #1d2b260f;--font:-apple-system, BlinkMacSystemFont, "PingFang SC", "Microsoft YaHei", "Noto Sans SC", sans-serif;--font-title:"Songti SC", "Noto Serif SC", STSong, "Source Han Serif SC", SimSun, serif}*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{background:var(--paper);color:var(--ink);font-family:var(--font);-webkit-font-smoothing:antialiased;margin:0;font-size:15px;line-height:1.55}h1,h2,h3,h4,p{margin:0}a{color:inherit;text-decoration:none}button{font:inherit;color:inherit;cursor:pointer;background:0 0;border:0;padding:0}.num{font-variant-numeric:tabular-nums}.v-shell,.v-detail{background:var(--paper);width:100%;max-width:500px;min-height:100dvh;margin:0 auto}.v-shell{padding-bottom:calc(68px + env(safe-area-inset-bottom))}.v-detail{padding:0 16px calc(92px + env(safe-area-inset-bottom))}.v-page{flex-direction:column;gap:16px;padding:16px 16px 24px;display:flex}.v-tabbar{z-index:20;width:100%;max-width:500px;padding-bottom:env(safe-area-inset-bottom);border-top:1px solid var(--line);background:#fff;grid-template-columns:repeat(4,1fr);display:grid;position:fixed;bottom:0;left:50%;transform:translate(-50%)}.v-tab{color:var(--ink-3);flex-direction:column;align-items:center;gap:1px;padding:8px 0 7px;font-size:11px;display:flex}.v-tab.is-on{color:var(--pine);font-weight:600}.v-head{z-index:10;background:var(--paper);grid-template-columns:44px 1fr 44px;align-items:center;margin:0 -16px 8px;padding:6px 8px;display:grid;position:sticky;top:0}.v-head h1{text-align:center;font-size:16px;font-weight:600}.v-head__back{place-items:center;width:44px;height:44px;display:grid}.v-title{font-family:var(--font-title);font-size:24px;font-weight:700}.v-lead{color:var(--ink-2);font-size:14px}.v-section{margin-bottom:10px;font-size:16px;font-weight:600}.v-section--row{justify-content:space-between;align-items:baseline;display:flex}.v-section--row h2{font-size:16px;font-weight:600}.v-section--row a{color:var(--pine);font-size:13px;font-weight:400}.v-note{color:var(--ink-3);padding:10px 2px 0;font-size:13px}.v-empty{min-height:60dvh;color:var(--ink-3);flex-direction:column;justify-content:center;align-items:center;gap:12px;display:flex}.stack{flex-direction:column;gap:10px;display:flex}.v-card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:14px;display:block}.v-btn{background:var(--paper-2);min-height:44px;color:var(--ink-3);white-space:nowrap;border-radius:12px;justify-content:center;align-items:center;padding:0 18px;font-size:15px;font-weight:600;display:inline-flex}.v-btn:disabled{cursor:not-allowed;opacity:.6}.v-btn--primary{background:var(--apricot-deep);color:#fff}.v-btn--danger{background:var(--bad);color:#fff}.v-btn--ghost{border:1px solid var(--line);color:var(--ink-2);background:0 0}.v-btn--ghost-dark{color:#fff;background:#ffffff1f}.v-btn--block{width:100%}.v-btn--grow{flex:1}.v-btn--sm{border-radius:10px;min-height:34px;padding:0 14px;font-size:13px}.field{flex-direction:column;gap:5px;margin-bottom:14px;display:flex}.field>span{color:var(--ink-2);font-size:13px}.field em{color:var(--ink-3);font-style:normal}.field input{border:1px solid var(--line);border-radius:var(--radius-sm);width:100%;height:46px;color:var(--ink);font:inherit;background:#fff;outline:none;padding:0 12px;font-size:16px}.field input:focus{border-color:var(--pine)}.field input:disabled{background:var(--paper-2);color:var(--ink-3)}.form-card{margin-bottom:12px}.form-error{border-radius:var(--radius-sm);background:var(--bad-soft);color:var(--bad);margin-bottom:12px;padding:9px 12px;font-size:13px}.auth{background:var(--pine-deep);max-width:500px;min-height:100dvh;margin:0 auto}.auth__hero{color:#fff;text-align:center;flex-direction:column;align-items:center;padding:56px 16px 64px;display:flex}.auth__hero--small{padding:32px 16px 56px}.auth__hero h1{font-family:var(--font-title);letter-spacing:2px;margin-top:14px;font-size:30px}.auth__hero--small h1{font-size:24px}.auth__hero p{color:#bcd6ca;margin-top:4px;font-size:14px}.auth__badge{background:var(--paper);border-radius:50%;place-items:center;width:88px;height:88px;display:grid}.auth__card{background:var(--paper);border-radius:22px 22px 0 0;min-height:50dvh;margin-top:-32px;padding:24px 20px 32px}.auth__card h2{margin-bottom:16px;font-size:20px}.auth__consent{color:var(--ink-3);margin-top:10px;font-size:12.5px}.auth__switch{color:var(--ink-2);text-align:center;margin-top:14px;font-size:14px}.auth__switch a{color:var(--pine);font-weight:600}.level-hero{background:var(--pine-deep);color:#fff;border-radius:18px;padding:18px 16px 16px}.level-hero__row{align-items:center;gap:14px;display:flex}.level-hero__badge{background:var(--paper);border-radius:50%;flex:none;place-items:center;width:72px;height:72px;display:grid}.level-hero__hello{color:#bcd6ca;font-size:13px}.level-hero h1{font-family:var(--font-title);font-size:23px;line-height:1.3}.level-hero__tag{color:#f6c9a0;font-size:12px}.level-hero__next{color:#bcd6ca;margin:16px 0 8px;font-size:13px}.level-hero__link{color:#f6c9a0;margin-top:10px;font-size:13px;display:inline-block}.progress{grid-template-columns:56px 1fr 52px;align-items:center;gap:8px;margin-bottom:6px;font-size:12.5px;display:grid}.progress>span:last-child{text-align:right}.progress .is-done{color:#f6c9a0}.meter{background:var(--paper-2);border-radius:3px;height:6px;overflow:hidden}.meter i{background:var(--pine);border-radius:3px;height:100%;display:block}.meter--light{background:#ffffff2e}.meter--light i{background:#f2a45f}.stats{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);grid-template-columns:repeat(4,1fr);padding:12px 4px;display:grid}.stats--me{grid-template-columns:repeat(3,1fr)}.stats--two{grid-template-columns:repeat(2,1fr);margin-bottom:12px}.stats>div{flex-direction:column;align-items:center;min-width:0;display:flex}.stats b{font-variant-numeric:normal;white-space:nowrap;font-size:17px;font-weight:700}.stats span{color:var(--ink-3);font-size:12px}.task-list{padding:2px 14px}.task{justify-content:space-between;align-items:center;gap:12px;padding:12px 0;display:flex}.task+.task{border-top:1px solid var(--line)}.task__body{flex-direction:column;min-width:0;display:flex}.task__body b{font-weight:600}.task__body small{color:var(--ink-2);font-size:12.5px}.task__note{text-align:right;flex:none;max-width:44%;font-size:12.5px}.tone-ok{color:var(--ok)!important}.tone-warn{color:var(--warn)!important}.tone-bad{color:var(--bad)!important}.tone-mute{color:var(--ink-3)!important}.tag{border-radius:7px;flex:none;padding:2px 8px;font-size:12px;font-weight:600}.tag--ok{background:var(--ok-soft);color:var(--ok)}.tag--warn{background:var(--warn-soft);color:var(--warn)}.tag--bad{background:var(--bad-soft);color:var(--bad)}.tag--mute{background:var(--mute-soft);color:var(--ink-2)}.chip{background:var(--mute-soft);color:var(--ink-2);border-radius:7px;padding:1px 8px;font-size:12px;font-weight:600;display:inline-block}.chip--upcoming{background:var(--apricot-soft);color:var(--apricot-deep)}.chip--ongoing{background:var(--pine-soft);color:var(--pine)}.chip--mine{background:var(--pine);color:#fff}.chip--old{background:var(--apricot-soft);color:var(--apricot-deep)}.a-card h3{margin:6px 0 2px;font-size:16px;font-weight:600;line-height:1.4}.a-card__top{align-items:center;gap:6px;display:flex}.a-card__fee{color:var(--apricot-deep);margin-left:auto;font-weight:700}.a-card__fee small{font-weight:400}.a-card__meta{color:var(--ink-2);font-size:13px}.a-card__seats{color:var(--ink-2);grid-template-columns:1fr auto;align-items:center;gap:8px;margin-top:8px;font-size:12.5px;display:grid}.segmented{background:var(--paper-2);border-radius:11px;grid-auto-columns:1fr;grid-auto-flow:column;padding:3px;display:grid}.segmented button{min-height:36px;color:var(--ink-2);border-radius:9px;font-size:14px}.segmented .is-on{color:var(--ink);background:#fff;font-weight:600;box-shadow:0 1px 2px #1d2b261a}.d-hero{padding:4px 2px 14px}.d-hero h1{font-family:var(--font-title);margin:8px 0 12px;font-size:23px;line-height:1.35}.d-hero dl{flex-direction:column;gap:7px;margin:0;display:flex}.d-hero dl>div{grid-template-columns:56px 1fr;display:grid}.d-hero dt{color:var(--ink-3);font-size:13.5px}.d-hero dd{margin:0;font-size:14px}.d-hero dd small{color:var(--ink-2)}.d-nav{color:var(--pine);font-size:13px;font-weight:600;display:block}.d-seats{align-items:center;gap:18px;margin-bottom:16px;display:flex}.d-seats__main{flex-direction:column;flex:none;display:flex}.d-seats__main b{font-size:24px;line-height:1.2}.d-seats__main b small{color:var(--ink-3);font-size:14px;font-weight:400}.d-seats__main span{color:var(--ink-3);font-size:12px}.d-seats__split{color:var(--ink-2);flex-direction:column;gap:2px;font-size:13px;display:flex}.d-seats__split b{color:var(--ink)}.dot{border-radius:50%;width:8px;height:8px;margin-right:6px;display:inline-block}.dot--old{background:var(--apricot)}.dot--new{background:var(--pine)}.d-desc{white-space:pre-wrap;margin-bottom:8px;font-size:14px}.v-detail>section+section{margin-top:16px}.v-action{z-index:20;width:100%;max-width:500px;padding:10px 16px calc(10px + env(safe-area-inset-bottom));border-top:1px solid var(--line);background:#fff;justify-content:space-between;align-items:center;gap:12px;display:flex;position:fixed;bottom:0;left:50%;transform:translate(-50%)}.v-action__state{font-weight:600}.pay-qr-notice{border-radius:var(--radius-sm);background:var(--paper-2);color:var(--bad);justify-content:space-between;align-items:center;gap:12px;padding:10px 14px;font-size:13px;display:flex}.pay-qr-notice b{flex:none}.pay-qr h2{font-size:15px}.pay-qr p{color:var(--ink-2);margin:4px 0 12px;font-size:13px}.pay-qr img{border-radius:var(--radius-sm);width:100%;max-width:240px;margin:0 auto 12px;display:block}.pay-qr .pay-qr__empty{border-radius:var(--radius-sm);background:var(--paper-2);text-align:center;padding:16px 12px}.pay-qr label.is-disabled{opacity:.5;pointer-events:none}.ck-form{border:1px solid var(--line);border-radius:var(--radius);background:#fff;margin-top:8px;padding:18px 16px}.ck-form h2{font-size:17px}.ck-form>p:not(.form-error){color:var(--ink-2);margin-bottom:16px;font-size:13px}.ck-form .field input{letter-spacing:.1em;text-align:center;height:54px;font-size:22px}.ck-form .field input::placeholder{letter-spacing:0;font-size:15px}.ck-done{text-align:center;flex-direction:column;align-items:center;gap:6px;padding:48px 8px 0;display:flex}.ck-done h2{font-size:22px}.ck-done p{color:var(--ink-2)}.ck-done .v-btn{margin-top:20px}.ck-done__mark{background:var(--pine);color:#fff;border-radius:50%;place-items:center;width:84px;height:84px;margin-bottom:8px;display:grid}.ck-done p.ck-done__tip{max-width:300px;color:var(--ink-3);font-size:13px}.route{margin:0;padding:0;list-style:none}.route__item{grid-template-columns:56px 1fr;gap:12px;padding-bottom:18px;display:grid;position:relative}.route__item:not(:last-child):before{content:"";background:var(--line);width:2px;position:absolute;top:56px;bottom:0;left:27px}.route__item.is-passed:not(:last-child):before{background:var(--pine)}.route__node{border:2px solid var(--line);background:var(--card);border-radius:50%;place-items:center;width:56px;height:56px;display:grid;position:relative}.route__item.is-passed .route__node{border-color:var(--pine)}.route__item.is-current .route__node{border-color:var(--apricot);box-shadow:0 0 0 4px var(--apricot-soft)}.route__item.is-locked .route__node svg{opacity:.45;filter:grayscale(.7)}.route__body{border:1px solid var(--line);border-radius:var(--radius);background:var(--card);min-width:0;padding:10px 12px}.route__item.is-current .route__body{border-color:var(--apricot)}.route__body header{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.route__body h2{font-family:var(--font-title);font-size:18px}.route__rank{color:var(--ink-3);font-size:12px}.route__req{color:var(--ink);margin-top:3px;font-size:13.5px;font-weight:600}.route__perk{color:var(--ink-2);margin-top:2px;font-size:13px}.route__gap{border-top:1px dashed var(--line);color:var(--apricot-deep);flex-wrap:wrap;gap:4px 12px;margin-top:8px;padding-top:8px;font-size:12.5px;display:flex}.route__gap .is-done{color:var(--ok)}.rules h2{margin-bottom:6px;font-size:15px}.rules ul{color:var(--ink-2);margin:0;padding-left:18px;font-size:13px}.rules li+li{margin-top:4px}.rules b{color:var(--ink)}.me-head{align-items:center;gap:14px;display:flex}.me-head h1{font-family:var(--font-title);font-size:22px}.me-head p{color:var(--ink-2);font-size:13px}.menu{padding:2px 14px}.menu a{align-items:center;gap:8px;min-height:50px;display:flex}.menu a+a{border-top:1px solid var(--line)}.menu small{color:var(--ink-2);margin-left:auto;font-size:12.5px}.menu i{border-top:1.8px solid var(--ink-3);border-right:1.8px solid var(--ink-3);flex:none;width:7px;height:7px;margin-left:auto;transform:rotate(45deg)}.menu small+i{margin-left:0}.fee header{justify-content:space-between;align-items:center;gap:10px;display:flex}.fee small{color:var(--ink-2);font-size:12.5px}.fee__calc{color:var(--ink-2);margin-top:6px;font-size:13px}.fee__calc b{color:var(--ink);font-size:15px}.v-toast{z-index:100;background:var(--ink);color:#fff;opacity:0;pointer-events:none;border-radius:12px;max-width:calc(100vw - 48px);padding:9px 16px;font-size:14px;transition:opacity .18s,transform .18s;position:fixed;top:18px;left:50%;transform:translate(-50%,-12px)}.v-toast.is-on{opacity:1;transform:translate(-50%)}.v-toast--ok{background:var(--ok)}.v-toast--bad{background:var(--bad)}.v-dialog-mask{z-index:90;background:#0f141280;place-items:center;padding:24px;display:grid;position:fixed;inset:0}.v-dialog{background:#fff;border-radius:18px;width:100%;max-width:320px;padding:20px}.v-dialog h3{font-size:17px}.v-dialog p{color:var(--ink-2);margin:6px 0 16px;font-size:14px}.v-dialog__actions{grid-template-columns:1fr 1fr;gap:10px;display:grid}@media (prefers-reduced-motion:reduce){.v-toast{transition:none}}
