:root{--color-ink:#1a3c34;--color-ink-soft:#2d5a4e;--color-gold:#c4a574;--color-gold-soft:#d4bc94;--color-gold-deep:#a8894f;--color-cream:#f7f3ec;--color-warm:#efe8dc;--color-warm-deep:#e2d6c4;--color-surface:#fffcf7;--color-text:#1f2a26;--color-text-secondary:#5c6b65;--color-text-tertiary:#8a9691;--color-border:#e5ddd0;--color-danger:#b54a3c;--color-success:#2f6b55;--color-overlay:#1a3c347a;--font-display:"Noto Serif SC", "Songti SC", serif;--font-body:"Noto Sans SC", "PingFang SC", "Microsoft YaHei", sans-serif;--text-xs:11px;--text-sm:12px;--text-caption:13px;--text-body:15px;--text-md:17px;--text-lg:22px;--text-xl:28px;--text-hero:40px;--space-4:4px;--space-8:8px;--space-12:12px;--space-16:16px;--space-20:20px;--space-24:24px;--space-32:32px;--radius-sm:8px;--radius-md:14px;--radius-lg:22px;--radius-pill:999px;--shadow-soft:none;--phone-width:390px;--phone-height:844px;--nav-height:64px;--safe-bottom:env(safe-area-inset-bottom,0px);--ease-out:cubic-bezier(.22, 1, .36, 1);--dur:.28s}*,:before,:after{box-sizing:border-box}html,body,#root{min-height:100%;margin:0}body{font-family:var(--font-body);color:var(--color-text);-webkit-font-smoothing:antialiased;background:radial-gradient(80% 50% at 20% 0,#d8e4dc 0%,#0000 55%),radial-gradient(70% 45% at 90% 10%,#efe2c8 0%,#0000 50%),#ebe4d8}button,input,textarea,select{font:inherit;color:inherit}button{cursor:pointer;background:0 0;border:none;padding:0}a{color:inherit;text-decoration:none}img{max-width:100%;display:block}.app-shell{place-items:center;min-height:100vh;padding:24px 16px;display:grid}.phone{width:min(100%, var(--phone-width));height:min(100vh - 48px, var(--phone-height));background:var(--color-cream);border:1px solid var(--color-warm-deep);border-radius:28px;flex-direction:column;display:flex;position:relative;overflow:hidden}.phone-scroll{-webkit-overflow-scrolling:touch;flex:1;overflow:auto}.phone-scroll::-webkit-scrollbar{width:0;height:0}.page{min-height:100%;padding:20px 20px calc(var(--nav-height) + 20px);animation:fade-up var(--dur) var(--ease-out)}.page--flush{padding-bottom:calc(var(--nav-height) + 12px)}.page--no-nav{padding-bottom:28px}@keyframes fade-up{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@keyframes pop-in{0%{opacity:0;transform:scale(.96)}to{opacity:1;transform:scale(1)}}.h-display{font-family:var(--font-display);letter-spacing:.02em;margin:0;font-weight:600}.h1{color:var(--color-ink);font-size:28px;line-height:1.25}.h2{color:var(--color-ink);font-size:22px;line-height:1.3}.h3{color:var(--color-ink);margin:0;font-size:17px;line-height:1.35}.text-secondary{color:var(--color-text-secondary)}.text-tertiary{color:var(--color-text-tertiary)}.muted{color:var(--color-text-secondary);font-size:13px;line-height:1.5}.lead{color:var(--color-text-secondary);margin:0;font-size:15px;line-height:1.65}.stack{flex-direction:column;display:flex}.stack-8{gap:8px}.stack-12{gap:12px}.stack-16{gap:16px}.stack-20{gap:20px}.stack-24{gap:24px}.row{align-items:center;gap:8px;display:flex}.row-between{justify-content:space-between;align-items:center;gap:12px;display:flex}.btn{border-radius:var(--radius-pill);min-height:48px;transition:transform var(--dur) var(--ease-out), background var(--dur) var(--ease-out), opacity var(--dur) var(--ease-out);justify-content:center;align-items:center;gap:8px;padding:0 20px;font-size:15px;font-weight:600;display:inline-flex}.btn:active{transform:scale(.98)}.btn-primary{background:var(--color-ink);color:var(--color-cream)}.btn-primary:disabled{opacity:.4;cursor:not-allowed}.btn-secondary{background:var(--color-warm);color:var(--color-ink);border:1px solid var(--color-warm-deep)}.btn-ghost{color:var(--color-ink-soft);border:1px solid var(--color-border);background:0 0}.btn-gold{background:var(--color-gold);color:var(--color-ink)}.btn-block{width:100%}.btn-icon{border:1px solid var(--color-border);background:var(--color-surface);border-radius:50%;place-items:center;width:52px;height:52px;font-size:20px;display:grid}.btn-icon.like{background:var(--color-ink);color:var(--color-gold-soft);border-color:var(--color-ink)}.btn-icon.skip{color:var(--color-text-secondary)}.chip{border-radius:var(--radius-pill);background:var(--color-warm);color:var(--color-ink-soft);border:1px solid #0000;align-items:center;gap:4px;padding:6px 10px;font-size:12px;display:inline-flex}.chip-gold{color:var(--color-gold-deep);background:#c4a5742e}.chip-ink{color:var(--color-ink);background:#1a3c3414}.chip-select{border-radius:var(--radius-md);border:1px solid var(--color-border);background:var(--color-surface);text-align:left;min-height:44px;transition:border-color var(--dur) var(--ease-out), background var(--dur) var(--ease-out);padding:10px 14px;font-size:14px}.chip-select.active{border-color:var(--color-ink);color:var(--color-ink);background:#1a3c340f;font-weight:600}.chip-grid{grid-template-columns:1fr 1fr;gap:10px;display:grid}.field label{color:var(--color-ink-soft);margin-bottom:8px;font-size:13px;font-weight:600;display:block}.field input,.field textarea,.field select,.input{border:1px solid var(--color-border);background:var(--color-surface);border-radius:var(--radius-md);outline:none;width:100%;padding:12px 14px}.field input:focus,.field textarea:focus,.field select:focus{border-color:var(--color-ink-soft)}.field textarea{resize:vertical;min-height:96px}.card-soft{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:16px}.intro-card{gap:10px;display:grid}.intro-card--done{opacity:.72}.intro-card__hit{text-align:left;width:100%;color:inherit;cursor:pointer;background:0 0;border:0;padding:0;display:block}.intro-card__actions{grid-template-columns:1fr 1fr;gap:8px;display:grid}.intro-reason{font-size:var(--text-sm);color:var(--color-text-secondary);border-left:2px solid color-mix(in srgb, var(--color-gold) 50%, transparent);background:color-mix(in srgb, var(--color-gold-soft) 12%, transparent);padding:8px 10px}.intro-badge{font-size:var(--text-xs);color:var(--color-ink);margin:6px 0 0;font-weight:600}.bottom-nav{height:calc(var(--nav-height) + var(--safe-bottom));padding:6px 12px var(--safe-bottom);border-top:1px solid var(--color-border);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);z-index:20;background:#fffcf7f0;grid-template-columns:repeat(4,1fr);display:grid;position:absolute;bottom:0;left:0;right:0}.nav-item{font-size:var(--text-xs);color:var(--color-text-tertiary);border-radius:12px;flex-direction:column;justify-content:center;align-items:center;gap:3px;padding:4px 0;display:flex}.nav-item.active{color:var(--color-ink);font-weight:600}.nav-icon-wrap{place-items:center;display:grid;position:relative}.nav-icon{width:22px;height:22px;display:block}.nav-badge{background:var(--color-ink);min-width:16px;height:16px;color:var(--color-cream);text-align:center;border-radius:8px;padding:0 4px;font-size:10px;font-weight:600;line-height:16px;position:absolute;top:-6px;right:-10px}.nav-label{line-height:1}.nav-item.active .nav-icon{color:var(--color-ink)}.nav-item:not(.active) .nav-icon{color:var(--color-text-tertiary)}.avatar{font-family:var(--font-display);color:var(--color-cream);border-radius:50%;flex-shrink:0;place-items:center;font-weight:600;display:grid;position:relative;overflow:hidden}.avatar--photo img{object-fit:cover;width:100%;height:100%;display:block}.avatar-upload{align-items:center;gap:14px;display:flex}.avatar-upload input[type=file]{font-size:var(--text-sm)}.notify-list{gap:8px;margin:0;padding:0;list-style:none;display:grid}.notify-item{text-align:left;border:1px solid var(--color-border);width:100%;color:inherit;cursor:pointer;background:#fffcf7b3;border-radius:14px;gap:4px;padding:12px 14px;display:grid}.notify-item strong{font-size:var(--text-sm)}.notify-item span{font-size:var(--text-sm);color:var(--color-text-secondary)}.notify-item time{font-size:var(--text-xs);color:var(--color-text-tertiary)}.notify-item--unread{border-color:color-mix(in srgb, var(--color-gold) 45%, var(--color-border));background:color-mix(in srgb, var(--color-gold-soft) 18%, transparent)}.avatar-verified{background:var(--color-gold);width:18px;height:18px;color:var(--color-ink);border:2px solid var(--color-cream);border-radius:50%;place-items:center;font-size:11px;display:grid;position:absolute;bottom:-2px;right:-2px}.modal-backdrop{background:var(--color-overlay);z-index:40;animation:fade-up .2s var(--ease-out);place-items:center;padding:24px;display:grid;position:absolute;inset:0}.modal-card{background:var(--color-surface);border-radius:var(--radius-lg);text-align:center;width:100%;animation:pop-in var(--dur) var(--ease-out);padding:28px 22px}.progress-bar{background:var(--color-warm);border-radius:var(--radius-pill);height:4px;overflow:hidden}.progress-bar>span{background:var(--color-ink);border-radius:inherit;height:100%;transition:width var(--dur) var(--ease-out);display:block}.tag-wrap{flex-wrap:wrap;gap:8px;display:flex}.empty-state{text-align:center;background:var(--color-surface);border:1px solid var(--color-border);border-radius:18px;padding:40px 16px}.empty-state .h3{margin-bottom:8px}.stack-4{gap:4px}.observe-page{flex-direction:column;gap:22px;display:flex}.observe-hero{animation:fade-up var(--dur) var(--ease-out);padding:8px 0 4px}.observe-hero__brand{letter-spacing:.28em;color:var(--color-gold-deep);margin:0;font-size:12px}.observe-hero__title{color:var(--color-ink);margin:10px 0 0;font-size:34px;line-height:1.15}.observe-hero__sub{color:var(--color-text-secondary);margin:10px 0 0;font-size:14px}.observe-hero__sub strong{color:var(--color-ink);font-weight:600}.season-feature{color:var(--color-cream);animation:fade-up var(--dur) var(--ease-out);transition:transform var(--dur) var(--ease-out);background:radial-gradient(90% 80% at 100% 0,#c4a57447,#0000 55%),linear-gradient(155deg,#243f37 0%,#1a3c34 48%,#152e28 100%);border-radius:20px;padding:22px 20px 18px;display:block}.season-feature:active{transform:scale(.985)}.season-feature.is-enrolled{outline:2px solid var(--color-gold);outline-offset:2px}.season-feature__top{justify-content:space-between;align-items:center;margin-bottom:18px;display:flex}.season-feature__tag{letter-spacing:.12em;color:var(--color-gold-soft);background:#c4a57438;border-radius:999px;padding:5px 10px;font-size:11px}.season-feature__period{color:#f7f3ecb8;font-size:12px}.season-feature__name{color:inherit;margin:0;font-size:32px;line-height:1.1}.season-feature__desc{color:#f7f3ecc7;max-width:16em;margin:10px 0 0;font-size:13px;line-height:1.55}.season-feature__foot{color:var(--color-gold-soft);align-items:center;gap:12px;margin-top:22px;font-size:12px;display:flex}.season-feature__meter{background:#ffffff24;border-radius:999px;flex:1;height:3px;overflow:hidden}.season-feature__meter>span{background:var(--color-gold);border-radius:inherit;height:100%;display:block}.observe-block__head{justify-content:space-between;align-items:baseline;margin-bottom:12px;display:flex}.observe-block__head h3{font-family:var(--font-display);color:var(--color-ink);margin:0;font-size:18px;font-weight:600}.observe-block__head span{color:var(--color-text-tertiary);font-size:12px}.season-grid{grid-template-columns:1fr 1fr;gap:10px;display:grid}.season-tile{background:var(--color-surface);border:1px solid var(--color-border);animation:fade-up var(--dur) var(--ease-out) both;transition:border-color var(--dur) var(--ease-out), background var(--dur) var(--ease-out);border-radius:16px;flex-direction:column;gap:6px;padding:16px 14px;display:flex}.season-tile:active{background:var(--color-warm)}.season-tile.is-enrolled{border-color:var(--color-ink)}.season-tile__name{font-family:var(--font-display);color:var(--color-ink);font-size:18px;font-weight:600}.season-tile__meta{color:var(--color-text-tertiary);font-size:12px}.season-national{background:var(--color-warm);border:1px solid var(--color-warm-deep);transition:transform var(--dur) var(--ease-out);border-radius:18px;justify-content:space-between;align-items:center;gap:14px;padding:18px;display:flex}.season-national:active{transform:scale(.99)}.season-national.is-enrolled{border-color:var(--color-ink)}.season-national strong{font-family:var(--font-display);color:var(--color-ink);font-size:18px;display:block}.season-national p{color:var(--color-text-secondary);margin:6px 0 0;font-size:12px}.season-national__go{background:var(--color-ink);color:var(--color-cream);border-radius:999px;flex-shrink:0;padding:8px 14px;font-size:13px;font-weight:600}.season-more{width:100%;color:var(--color-ink-soft);text-align:center;margin-top:12px;padding:10px 0;font-size:13px}.status-bar{background:var(--color-ink);width:100%;color:var(--color-cream);border-radius:14px;justify-content:space-between;align-items:center;padding:14px 16px;font-size:14px;font-weight:600;display:flex}.season-detail{padding-bottom:100px}.season-detail__banner{color:var(--color-cream);animation:fade-up var(--dur) var(--ease-out);background:radial-gradient(80% 70% at 0 0,#c4a57440,#0000 50%),linear-gradient(160deg,#2a4a41,#1a3c34 55%,#132722);border-radius:22px;margin:4px 0 20px;padding:24px 20px 20px}.season-detail__banner.is-national{background:radial-gradient(70% 60% at 100% 0,#e2d6c433,#0000 50%),linear-gradient(160deg,#3a342c,#2a2620 60%,#1c1915)}.season-detail__eyebrow{letter-spacing:.14em;color:var(--color-gold-soft);margin:0;font-size:12px}.season-detail__title{color:inherit;margin:12px 0 0;font-size:36px;line-height:1.1}.season-detail__lead{color:#f7f3eccc;margin:12px 0 0;font-size:14px;line-height:1.6}.season-detail__stats{grid-template-columns:1fr 1fr;gap:12px;margin-top:22px;display:grid}.season-detail__stats strong{font-family:var(--font-display);font-size:26px;line-height:1.1;display:block}.season-detail__stats span{color:#f7f3eca6;margin-top:4px;font-size:12px;display:block}.season-detail__meter{margin-top:16px}.season-detail__body{padding:0 2px}.season-detail__flow{color:var(--color-text-secondary);margin:0;font-size:13px;line-height:1.65}.detail-points{flex-direction:column;gap:12px;margin:0;padding:0;list-style:none;display:flex}.detail-points li{color:var(--color-text-secondary);padding-left:18px;font-size:14px;line-height:1.55;position:relative}.detail-points li:before{content:"";background:var(--color-gold);border-radius:50%;width:6px;height:6px;position:absolute;top:.55em;left:0}.detail-footer{padding:12px 20px calc(12px + var(--safe-bottom));border-top:1px solid var(--color-border);background:#fffcf7f5;position:absolute;bottom:0;left:0;right:0}.me-page{flex-direction:column;gap:20px;display:flex}.me-profile{color:var(--color-cream);animation:fade-up var(--dur) var(--ease-out);background:radial-gradient(90% 80% at 100% 0,#c4a57442,#0000 55%),linear-gradient(155deg,#243f37 0%,#1a3c34 48%,#152e28 100%);border-radius:20px;align-items:center;gap:16px;padding:20px 18px;display:flex}.me-profile__name{color:inherit;align-items:baseline;gap:8px;margin:0;font-size:26px;line-height:1.15;display:flex}.me-profile__name span{color:#f7f3ecb8;font-size:16px;font-weight:500}.me-profile__meta{color:#f7f3ecb8;flex-wrap:wrap;align-items:center;gap:6px;margin:8px 0 0;font-size:12px;display:flex}.me-profile__meta i{background:var(--color-gold);opacity:.7;border-radius:50%;width:3px;height:3px}.me-profile__edit{color:var(--color-ink);background:var(--color-gold-soft);border-radius:999px;margin-top:12px;padding:6px 12px;font-size:12px;font-weight:600;display:inline-block}.me-progress{padding:4px 2px 0}.me-progress__head{justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:10px;display:flex}.me-progress__head strong{font-family:var(--font-display);color:var(--color-ink);font-size:16px;display:block}.me-progress__head p{color:var(--color-text-tertiary);margin:4px 0 0;font-size:12px}.me-progress__pct{font-family:var(--font-display);color:var(--color-gold-deep);font-size:22px;font-weight:600;line-height:1}.me-progress__bar{background:var(--color-warm);border-radius:999px;height:4px;overflow:hidden}.me-progress__bar>span{background:linear-gradient(90deg, var(--color-ink-soft), var(--color-gold));border-radius:inherit;height:100%;display:block}.me-status{border-radius:14px;justify-content:space-between;align-items:center;gap:12px;padding:14px 16px;font-size:14px;font-weight:600;display:flex}.me-status--ink{background:var(--color-ink);color:var(--color-cream)}.me-status--warm{background:var(--color-warm);color:var(--color-ink);border:1px solid var(--color-warm-deep)}.me-status__go{opacity:.85;flex-shrink:0;font-size:13px}.me-block{flex-direction:column;display:flex}.me-facts{grid-template-columns:1fr 1fr;gap:10px;display:grid}.me-fact{background:var(--color-surface);border:1px solid var(--color-border);border-radius:14px;padding:14px 12px}.me-fact span{color:var(--color-text-tertiary);font-size:11px;display:block}.me-fact strong{font-family:var(--font-display);color:var(--color-ink);margin-top:6px;font-size:16px;font-weight:600;display:block}.me-fact--wide{grid-column:1/-1}.me-stats{grid-template-columns:1fr 1fr;gap:10px;margin-top:10px;display:grid}.me-stats>div{background:var(--color-warm);text-align:center;border-radius:14px;padding:12px}.me-stats strong{font-family:var(--font-display);color:var(--color-ink);font-size:22px;display:block}.me-stats span{color:var(--color-text-tertiary);margin-top:2px;font-size:11px;display:block}.me-menu{border:1px solid var(--color-border);background:var(--color-surface);border-radius:16px;overflow:hidden}.me-menu__item{color:var(--color-ink);border-bottom:1px solid var(--color-border);justify-content:space-between;align-items:center;padding:15px 16px;font-size:14px;display:flex}.me-menu__item:last-child{border-bottom:none}.me-menu__item span:last-child{color:var(--color-text-tertiary)}.me-reset{color:var(--color-text-tertiary);text-align:center;margin-top:4px;padding:12px 0 4px;font-size:12px}.season-feature__gate{color:var(--color-gold-soft);margin:12px 0 0;font-size:12px}.season-feature.is-locked{opacity:.88}.season-tile__gate{color:var(--color-gold-deep);margin-top:2px;font-size:11px}.season-tile.is-locked,.season-national.is-locked{opacity:.72}.elig-ok{color:var(--color-success);margin:0;font-size:13px;font-weight:600}.elig-fail{background:#b54a3c14;border:1px solid #b54a3c38;border-radius:12px;padding:12px 14px}.elig-fail p{color:var(--color-danger);margin:0 0 8px;font-size:13px;font-weight:600}.elig-fail ul{color:var(--color-text-secondary);margin:0;padding-left:18px;font-size:12px;line-height:1.55}.empty-pool{padding:8px 2px}.empty-pool__title{color:var(--color-ink);margin:0;font-size:28px}.empty-pool__lead{color:var(--color-text-secondary);margin:12px 0 0;font-size:14px;line-height:1.65}.empty-pool__meta{color:var(--color-gold-deep);margin:14px 0 0;font-size:13px;font-weight:600}.page-header--hero{animation:fade-up var(--dur) var(--ease-out);padding:8px 0 4px}.page-header__brand{font-size:var(--text-sm);letter-spacing:.28em;color:var(--color-gold-deep);margin:0}.page-header__title{color:var(--color-ink);margin:10px 0 0;font-size:34px;line-height:1.15}.page-header__sub{color:var(--color-text-secondary);margin:10px 0 0;font-size:14px}.page-header__sub strong{color:var(--color-ink);font-weight:600}.page-header--standard{justify-content:space-between;align-items:flex-start;gap:12px;display:flex}.page-header__eyebrow{font-size:var(--text-caption);color:var(--color-text-secondary);margin:0}.page-header__title-sm{font-size:var(--text-lg);color:var(--color-ink);margin:4px 0 0;line-height:1.3}.page-header__action{flex-shrink:0;min-height:40px;font-size:13px}.top-bar{justify-content:space-between;align-items:center;gap:12px;margin-bottom:16px;display:flex}.top-bar__back{border-radius:var(--radius-pill);min-height:36px;color:var(--color-ink);background:var(--color-warm);padding:0 12px;font-size:13px}.top-bar__title{font-size:var(--text-md);color:var(--color-ink);margin:0;font-weight:600}.top-bar__right{justify-content:flex-end;min-width:64px;display:flex}.flow-steps{margin:0 0 16px;padding:0;list-style:none;display:flex}.flow-step{text-align:center;flex:1;position:relative}.flow-step__line{background:var(--color-warm-deep);z-index:0;height:2px;position:absolute;top:13px;left:-50%;right:50%}.flow-step.is-done .flow-step__line,.flow-step.is-active .flow-step__line{background:var(--color-gold)}.flow-step__dot{z-index:1;background:var(--color-warm);width:28px;height:28px;color:var(--color-text-tertiary);border-radius:50%;place-items:center;margin:0 auto 6px;font-size:12px;font-weight:700;display:grid;position:relative}.flow-step.is-active .flow-step__dot,.flow-step.is-done .flow-step__dot{background:var(--color-ink);color:var(--color-cream)}.flow-step.is-done .flow-step__dot{outline:2px solid var(--color-gold);outline-offset:1px}.flow-step__label{font-size:var(--text-sm);color:var(--color-text-tertiary)}.flow-step.is-active .flow-step__label{color:var(--color-ink);font-weight:700}.sticky-footer{padding:12px 20px calc(12px + var(--safe-bottom));border-top:1px solid var(--color-border);z-index:15;background:#fffcf7f5;flex-direction:column;gap:8px;display:flex;position:absolute;bottom:0;left:0;right:0}.verify-page,.chat-page{position:relative}.verify-page{flex-direction:column;gap:20px;padding-bottom:140px;display:flex}.verify-list{border:1px solid var(--color-border);background:var(--color-surface);border-radius:16px;margin:0;padding:0;list-style:none;overflow:hidden}.verify-list__item{border-bottom:1px solid var(--color-border);justify-content:space-between;align-items:center;gap:12px;padding:15px 16px;font-size:14px;display:flex}.verify-list__item:last-child{border-bottom:none}.verify-panel{background:var(--color-warm);border:1px solid var(--color-warm-deep);border-radius:18px;padding:20px 18px}.verify-panel strong{font-family:var(--font-display);color:var(--color-ink);font-size:18px;display:block}.verify-panel p{color:var(--color-text-secondary);margin:8px 0 0;font-size:13px;line-height:1.6}.verify-panel.is-done{color:var(--color-cream);animation:pop-in var(--dur) var(--ease-out);background:radial-gradient(80% 70% at 100% 0,#c4a57440,#0000 55%),linear-gradient(155deg,#243f37,#1a3c34);border:none}.verify-panel.is-done strong{color:inherit}.verify-panel.is-done p{color:#f7f3ecc7}.welcome-page{flex-direction:column;min-height:100%;padding-bottom:20px;display:flex}.welcome-hero{background:radial-gradient(ellipse 100% 70% at 20% -10%, #2d5a4e29, transparent 55%), radial-gradient(ellipse 80% 50% at 100% 10%, #c4a57438, transparent 50%), linear-gradient(180deg, #efe8dc 0%, var(--color-cream) 55%, var(--color-cream) 100%);flex-direction:column;flex:1;justify-content:flex-end;margin:-20px -20px 0;padding:72px 24px 28px;display:flex;position:relative;overflow:hidden}.welcome-hero__glow{pointer-events:none;background:radial-gradient(#1a3c340f,#0000 70%);height:180px;position:absolute;inset:auto -20% 35%}.welcome-hero__eyebrow{font-size:var(--text-sm);letter-spacing:.32em;color:var(--color-gold-deep);animation:fade-up var(--dur) var(--ease-out) both;margin:0;position:relative}.welcome-hero__brand{color:var(--color-ink);animation:fade-up calc(var(--dur) + 40ms) var(--ease-out) both;margin:14px 0 0;font-size:clamp(44px,12vw,56px);line-height:1.05;position:relative}.welcome-hero__brand:after{content:"";background:var(--color-gold);border-radius:999px;width:36px;height:2px;margin-top:16px;display:block}.welcome-hero__tagline{font-family:var(--font-display);color:var(--color-ink-soft);max-width:10em;animation:fade-up calc(var(--dur) + 80ms) var(--ease-out) both;margin:18px 0 0;font-size:20px;line-height:1.4;position:relative}.welcome-hero__lead{max-width:16em;color:var(--color-text-secondary);animation:fade-up calc(var(--dur) + .12s) var(--ease-out) both;margin:12px 0 0;font-size:14px;line-height:1.65;position:relative}.welcome-actions{animation:fade-up calc(var(--dur) + .16s) var(--ease-out) both;flex-direction:column;gap:10px;margin-top:24px;display:flex}.welcome-link{text-align:center;color:var(--color-ink-soft);padding:10px 0 2px;font-size:14px;font-weight:500;display:block}.welcome-link:active{opacity:.7}.welcome-reset{letter-spacing:.04em;color:var(--color-text-tertiary);text-align:center;opacity:.7;margin-top:16px;font-size:11px}.messages-page,.discover-page{flex-direction:column;gap:18px;display:flex}.thread-list{border:1px solid var(--color-border);background:var(--color-surface);border-radius:16px;overflow:hidden}.thread-row{border-bottom:1px solid var(--color-border);transition:background var(--dur) var(--ease-out);align-items:center;gap:12px;padding:14px 16px;display:flex}.thread-row:last-child{border-bottom:none}.thread-row:active{background:var(--color-warm)}.thread-row__body{flex:1;min-width:0}.thread-row__top{justify-content:space-between;align-items:baseline;gap:8px;display:flex}.thread-row__top strong{color:var(--color-ink);font-size:15px}.thread-row__top time{font-size:var(--text-xs);color:var(--color-text-tertiary);flex-shrink:0}.thread-row__preview{font-size:var(--text-caption);color:var(--color-text-secondary);text-overflow:ellipsis;white-space:nowrap;margin:4px 0 0;overflow:hidden}.chat-page{flex-direction:column;min-height:100%;padding-bottom:76px;display:flex}.chat-meta{font-size:var(--text-caption);color:var(--color-text-secondary);margin:-8px 0 12px}.chat-meta a{color:var(--color-gold-deep);font-weight:600}.chat-thread{flex-direction:column;flex:1;gap:10px;padding-bottom:8px;display:flex}.chat-hint{background:var(--color-warm);color:var(--color-text-secondary);border-radius:14px;padding:14px 16px;font-size:13px;line-height:1.6}.chat-bubble{background:var(--color-surface);border:1px solid var(--color-border);max-width:82%;color:var(--color-text);animation:fade-up .18s var(--ease-out);border-radius:16px 16px 16px 6px;align-self:flex-start;padding:10px 14px;font-size:14px;line-height:1.55}.chat-bubble--me{background:var(--color-ink);color:var(--color-cream);border:none;border-radius:16px 16px 6px;align-self:flex-end}.chat-composer{padding:10px 16px calc(10px + var(--safe-bottom));border-top:1px solid var(--color-border);background:#fffcf7f5;gap:8px;display:flex;position:absolute;bottom:0;left:0;right:0}.chat-composer input{border:1px solid var(--color-border);border-radius:var(--radius-pill);background:var(--color-surface);flex:1;min-height:44px;padding:12px 16px}.chat-composer .btn{min-height:44px;padding:0 16px}.profile-card{border-radius:var(--radius-lg);border:1px solid var(--color-border);background:var(--color-surface);overflow:hidden}.profile-hero{--hue:160;text-align:left;width:100%;min-height:240px;color:var(--color-cream);background:linear-gradient(160deg, hsl(var(--hue) 24% 34%), hsl(calc(var(--hue) + 20) 18% 22%));flex-direction:column;justify-content:flex-end;padding:20px;display:flex}.profile-hero.is-private{background:repeating-linear-gradient(45deg, hsl(var(--hue) 16% 30%), hsl(var(--hue) 16% 30%) 8px, hsl(calc(var(--hue) + 16) 12% 24%) 8px, hsl(calc(var(--hue) + 16) 12% 24%) 16px)}.profile-hero__name{color:inherit;margin:12px 0 0;font-size:26px}.profile-hero__meta{opacity:.9;margin:6px 0 0;font-size:14px}.profile-card__body{flex-direction:column;gap:12px;padding:16px;display:flex}.discover-season{background:var(--color-warm);border:1px solid var(--color-warm-deep);color:var(--color-ink);border-radius:14px;justify-content:space-between;align-items:center;gap:12px;padding:12px 14px;font-size:13px;font-weight:600;display:flex}.discover-actions{justify-content:center;gap:28px;display:flex}.passport-card{color:var(--color-cream);background:radial-gradient(80% 60% at 100% 0,#c4a57447,#0000 55%),linear-gradient(155deg,#243f37,#1a3c34 55%,#152e28);border-radius:20px;flex-direction:column;gap:10px;padding:22px 20px;display:flex}.passport-card__mark{letter-spacing:.14em;opacity:.75;margin:0;font-size:11px}.passport-card__name{color:inherit;margin:0;font-size:28px}.passport-card__city{color:var(--color-gold-soft);margin:0}.passport-card__line{background:#ffffff26;border:none;height:1px;margin:4px 0}.passport-card p{margin:0;font-size:14px;line-height:1.5}.passport-card__vis{opacity:.8}.toast-inline{text-align:center;color:var(--color-success);animation:fade-up .2s var(--ease-out);margin:-8px 0 0;font-size:12px}.match-loading{text-align:center;background:var(--color-surface);border:1px solid var(--color-border);border-radius:20px;padding:32px 20px}.match-loading .h2{margin:0}.match-loading .lead{margin:12px 0 0}.pulse-bar{background:var(--color-warm);border-radius:999px;height:4px;margin-top:22px;overflow:hidden}.pulse-bar>span{border-radius:inherit;background:linear-gradient(90deg, var(--color-ink-soft), var(--color-gold));width:40%;height:100%;animation:pulse-slide 1.2s var(--ease-out) infinite;display:block}@keyframes pulse-slide{0%{transform:translate(-120%)}to{transform:translate(280%)}}.task-row{background:var(--color-surface);border:1px solid var(--color-border);transition:transform var(--dur) var(--ease-out), background var(--dur) var(--ease-out);border-left-width:3px;border-radius:14px;justify-content:space-between;align-items:center;gap:12px;padding:14px 16px;display:flex}.task-row:active{background:var(--color-warm);transform:scale(.99)}.task-row--day1{border-left-color:var(--color-gold)}.task-row--day2{border-left-color:var(--color-ink-soft)}.task-row--day3{border-left-color:var(--color-ink)}@media (width<=480px){.app-shell{place-items:stretch stretch;padding:0}.phone{border:none;border-radius:0;width:100%;height:100dvh}}.install-page{background:radial-gradient(70% 50% at 50% -10%,#2f6b4f 0%,#0000 55%),linear-gradient(160deg,#1a2e22 0%,#243d30 45%,#1c3228 100%);place-items:center;min-height:100dvh;padding:24px 16px;display:grid}.install-card{color:#1a2e22;background:#fbf8f2;border:1px solid #ffffff1f;border-radius:16px;width:100%;max-width:720px;padding:32px 28px}.install-head{text-align:center;margin-bottom:28px}.install-head h1{letter-spacing:.14em;color:#1f4d38;margin:0 0 8px;font-family:Songti SC,STSong,Noto Serif SC,Georgia,serif;font-size:1.75rem}.install-head p{color:#5c6b62;margin:0;font-size:.92rem}.install-steps{grid-template-columns:repeat(4,1fr);gap:8px;margin-bottom:24px;display:grid}.install-step{text-align:center;color:#8a918a;font-size:.78rem}.install-step i{background:#e5e0d6;border-radius:50%;place-items:center;width:28px;height:28px;margin:0 auto 6px;font-style:normal;font-weight:600;display:grid}.install-step.is-on{color:#1f4d38;font-weight:600}.install-step.is-on i{color:#f7f3ea;background:#1f4d38}.install-step.is-done i{color:#fff;background:#b08a3c}.install-card h2{margin:0 0 12px;font-size:1.1rem}.install-muted{color:#5c6b62;margin:0 0 14px;font-size:.88rem;line-height:1.55}.install-error{color:#8f3d32;background:#faf0ee;border:1px solid #e0b4ad;border-radius:10px;margin:0 0 14px;padding:10px 12px;font-size:.88rem}.install-checklist{gap:8px;margin:0;padding:0;list-style:none;display:grid}.install-checklist li{background:#fff;border:1px solid #d4cbbd;border-radius:10px;justify-content:space-between;gap:12px;padding:10px 12px;font-size:.9rem;display:flex}.install-checklist em{font-size:.8rem;font-style:normal}.install-checklist em.ok{color:#1f4d38}.install-checklist em.bad{color:#8f3d32}.install-form{grid-template-columns:1fr 1fr;gap:12px;display:grid}.install-form label{color:#5c6b62;gap:6px;font-size:.8rem;display:grid}.install-form label.full{grid-column:1/-1}.install-form input,.install-form select{width:100%;font:inherit;color:#1a2e22;background:#fff;border:1px solid #d4cbbd;border-radius:10px;padding:10px 12px}.install-actions{flex-wrap:wrap;justify-content:flex-end;gap:10px;margin-top:20px;display:flex}.install-done{text-align:center}@media (width<=560px){.install-form{grid-template-columns:1fr}.install-steps{grid-template-columns:repeat(2,1fr)}}
