:root{color:#20201d;font-synthesis:none;text-rendering:optimizelegibility;--stamp:#c94f3d;--stamp-dark:#963426;--stamp-pale:#eed8d2;--mountain:#50675d;--mountain-pale:#dde4de;--ink:#20201d;--muted:#817b71;--line:#d7d0c4;--paper:#f5f1e8;--paper-deep:#eee8dc;--white:#faf8f2;--danger:#9f3528;--data-font:"SFMono-Regular", "Menlo", monospace;--number-font:"PingFang SC", "Noto Sans CJK SC", "Microsoft YaHei", sans-serif;background:#e8e3d9;font-family:PingFang SC,Hiragino Sans GB,Noto Sans CJK SC,Microsoft YaHei,sans-serif}*{box-sizing:border-box}html{background:#e8e3d9}body{background:#e8e3d9;min-width:320px;min-height:100vh;margin:0}button,input,select{font:inherit}button{-webkit-tap-highlight-color:transparent}button:focus-visible,input:focus-visible,select:focus-visible,a:focus-visible{outline-offset:2px;outline:3px solid #b7433238}#root{min-height:100vh}.screen{background:var(--paper);width:min(100%,480px);min-height:100dvh;margin:0 auto;animation:.2s ease-out page-in;position:relative;overflow-x:hidden}.page-body{padding:18px 22px 120px}.app-header{height:62px;padding:env(safe-area-inset-top) 12px 0;background:var(--paper);z-index:20;border-bottom:1px solid var(--line);grid-template-columns:64px 1fr 64px;align-items:center;display:grid;position:sticky;top:0}.header-side{align-items:center;width:64px;display:flex}.header-action{justify-content:flex-end}.header-title{letter-spacing:.02em;white-space:nowrap;justify-self:center;font-size:14px;font-weight:650}.icon-button{width:44px;height:44px;color:var(--ink);cursor:pointer;background:0 0;border:0;border-radius:6px;place-items:center;padding:0;display:grid}.icon-button:active,.home-button:active{background:var(--paper-deep)}.home-button{min-width:58px;height:44px;color:var(--stamp);cursor:pointer;background:0 0;border:0;border-radius:6px;justify-content:center;align-items:center;gap:4px;padding:0 6px;font-size:12px;font-weight:700;display:inline-flex}.brand-mark{border:1px solid var(--stamp);width:30px;height:30px;color:var(--stamp);border-radius:4px;place-items:center;font-family:STKaiti,KaiTi,serif;font-weight:700;display:grid}.primary-button{border:1px solid var(--stamp);background:var(--stamp);color:#fff9f0;cursor:pointer;border-radius:8px;justify-content:space-between;align-items:center;gap:12px;width:100%;min-height:54px;padding:0 17px;font-size:15px;font-weight:700;transition:transform .12s,background .12s;display:flex}.primary-button>span{align-items:center;min-width:0;display:inline-flex}.primary-button:active{background:var(--stamp-dark);transform:translateY(1px)}.primary-button:disabled{opacity:.42;cursor:not-allowed}.primary-button.secondary{color:var(--mountain);background:0 0;border-color:#8da095}.button-with-icon{align-items:center;gap:9px;min-height:20px;line-height:1;display:inline-flex}.button-with-icon svg{flex:none;display:block}.sticky-action{z-index:15;width:min(100%,480px);padding:9px 20px calc(9px + env(safe-area-inset-bottom));background:var(--paper);border-top:1px solid var(--line);position:fixed;bottom:0;left:50%;transform:translate(-50%)}.eyebrow,.step-label,.section-kicker{color:var(--stamp);font:700 11px var(--data-font);letter-spacing:.13em;text-transform:uppercase;margin:0}.eyebrow,.section-kicker{letter-spacing:.04em;text-transform:none;font-family:inherit}.section-intro h1{letter-spacing:-.035em;margin:12px 0 8px;font-size:28px;line-height:1.24}.section-intro>p:last-child{color:var(--muted);margin:0;font-size:14px;line-height:1.65}.china-progress-map{color:#bcb3a6;width:100%;height:auto;display:block}.province-hex polygon{stroke:var(--paper);stroke-width:1.8px;vector-effect:non-scaling-stroke}.province-hex text{fill:#4d4942;text-anchor:middle;pointer-events:none;font-size:10px;font-weight:700}.province-hex text.light-label{fill:#fff9f0}.schematic-note{fill:var(--muted);text-anchor:middle;letter-spacing:.08em;font-size:8px}.ghost-map{opacity:.2;filter:grayscale(.45)}.ghost-map .province-hex text,.ghost-map .schematic-note{opacity:0}.home-screen{padding:calc(20px + env(safe-area-inset-top)) 22px calc(116px + env(safe-area-inset-bottom));flex-direction:column;display:flex}.home-topbar{z-index:3;border-bottom:1px solid var(--ink);justify-content:space-between;align-items:center;padding-bottom:16px;display:flex;position:relative}.brand-pill{color:var(--ink);align-items:center;gap:7px;font-size:14px;font-weight:750;display:inline-flex}.brand-pill svg,.brand-name>span{color:var(--stamp)}.version-label{font:10px var(--data-font);color:var(--muted);letter-spacing:.08em}.home-map-watermark{z-index:0;pointer-events:none;width:440px;position:absolute;top:145px;right:-118px;transform:rotate(-4deg)}.home-hero{z-index:2;padding-top:clamp(56px,10.8vh,96px);position:relative}.home-hero h1{letter-spacing:-.065em;margin:17px 0 22px;font-size:clamp(43px,12.3vw,59px);font-weight:790;line-height:1.08}.hero-subtitle{color:#59554e;width:88%;margin:0;font-size:16px;line-height:1.85}.hero-aside{color:var(--muted);margin:9px 0 0;font-size:12px;line-height:1.6}.home-index{z-index:2;color:var(--muted);font:10px var(--data-font);letter-spacing:.04em;align-items:center;gap:9px;margin-top:auto;padding:14px 0 13px;display:flex;position:relative}.home-index i{background:var(--line);flex:1;height:1px}.home-action{z-index:2;position:relative}.home-action>p{text-align:center;color:var(--muted);margin:12px 0 0;font-size:11px}.calculate-body{padding-top:18px;padding-bottom:102px}.field-group{margin-top:19px}.field-group>label{margin-bottom:11px;font-size:14px;font-weight:700;display:block}.select-shell{border:1px solid var(--line);background:var(--white);border-radius:8px;align-items:center;padding:0 15px;display:flex}.select-shell select,.select-shell input{appearance:none;min-width:0;height:50px;font:700 24px var(--number-font);font-variant-numeric:tabular-nums;color:var(--ink);background:0 0;border:0;outline:none;flex:1}.select-shell input::-webkit-inner-spin-button{appearance:none;margin:0}.select-shell input::-webkit-outer-spin-button{appearance:none;margin:0}.select-shell>span{color:var(--muted)}.field-help,.field-error{color:var(--muted);margin:7px 2px 0;font-size:11px}.field-error{color:var(--danger)}.quick-options{grid-template-columns:repeat(3,1fr);gap:7px;display:grid}.quick-options.four-options{grid-template-columns:repeat(4,1fr)}.quick-options button{border:1px solid var(--line);color:#59554e;cursor:pointer;background:0 0;border-radius:6px;min-height:44px}.quick-options button.active{color:var(--stamp);border-color:var(--stamp);background:var(--stamp-pale);font-weight:750}.custom-age{border-bottom:1px solid var(--line);height:45px;color:var(--muted);align-items:center;gap:7px;margin-top:5px;padding:0 4px;font-size:12px;display:flex}.custom-age input{text-align:right;width:72px;height:100%;font:700 21px var(--number-font);font-variant-numeric:tabular-nums;color:var(--ink);background:0 0;border:0;outline:none;margin-left:auto}.travel-frequency-field{padding-top:2px}.gentle-note{border-top:1px solid var(--line);color:var(--muted);margin-top:18px;padding:10px 0;font-size:12px;line-height:1.6}.gentle-note span{color:var(--stamp);margin-right:8px;font-weight:750}.weekend-body{padding-top:clamp(48px,9vh,80px)}.folio-meta{border-bottom:1px solid var(--ink);color:var(--muted);font:10px var(--data-font);letter-spacing:.08em;justify-content:space-between;margin-bottom:clamp(52px,9vh,84px);padding-bottom:11px;display:flex}.balance-number{color:var(--stamp);font:780 clamp(82px, 25vw, 112px)/.95 var(--number-font);letter-spacing:-.075em;font-variant-numeric:tabular-nums;margin:13px 0 -2px}.weekend-body>h1{letter-spacing:-.03em;margin:0;font-size:26px}.balance-explainer{color:#5d5851;max-width:92%;margin:19px 0 0;font-size:15px;line-height:1.65}.balance-explainer b{color:var(--ink)}.balance-secondary{border-top:1px solid var(--line);border-bottom:1px solid var(--line);margin-top:30px;padding:19px 0}.balance-secondary span,.balance-secondary small{color:var(--muted);font-size:11px;display:block}.balance-secondary strong{font:720 27px var(--number-font);font-variant-numeric:tabular-nums;margin:2px 6px 4px 0;display:inline-block}.balance-secondary>div>span{color:var(--ink);font-size:14px;font-weight:650;display:inline}.balance-secondary small{margin-top:4px;display:block}.next-question{margin-top:36px}.next-question p{margin:10px 0 0;font-size:19px;font-weight:700;line-height:1.5}.attractions-body{padding-bottom:142px}.compact-intro{padding:4px 0 14px}.compact-intro h1{font-size:27px}.search-box{border:1px solid var(--line);background:var(--white);color:#837d73;z-index:10;border-radius:8px;align-items:center;gap:9px;height:47px;padding:0 13px;display:flex;position:sticky;top:68px}.search-box input{min-width:0;height:100%;color:var(--ink);background:0 0;border:0;outline:0;flex:1;font-size:16px}.search-box button{width:44px;height:44px;color:var(--muted);background:0 0;border:0;place-items:center;display:grid}.list-caption{color:var(--muted);letter-spacing:.02em;margin:17px 2px 7px;font-size:11px}.province-row,.attraction-row{border:0;border-bottom:1px solid var(--line);width:100%;color:var(--ink);cursor:pointer;background:0 0}.province-row{text-align:left;grid-template-columns:34px 1fr 20px;align-items:center;gap:11px;min-height:64px;padding:0 2px;display:grid}.province-status{color:#776f64;border:1px solid #cfc7ba;border-radius:4px;place-items:center;width:29px;height:29px;font-size:12px;font-weight:750;display:grid}.province-status.has-progress{border-color:var(--mountain);background:var(--mountain-pale);color:var(--mountain)}.province-copy{flex-direction:column;gap:5px;display:flex}.province-name{font-size:16px;font-weight:700}.province-copy small{color:var(--muted);font-variant-numeric:tabular-nums;font-size:10px}.province-progress{background:#e1dbd0;width:min(150px,52vw);height:2px;overflow:hidden}.province-progress i{background:var(--mountain);height:100%;display:block}.province-row>svg{color:#9d968b}.attraction-row{text-align:left;grid-template-columns:28px 1fr;align-items:center;gap:10px;min-height:60px;padding:8px 8px 8px 2px;display:grid}.selection-box{color:#fff9f0;border:1px solid #bdb5a9;border-radius:4px;place-items:center;width:23px;height:23px;display:grid}.attraction-row.selected{background:var(--mountain-pale)}.attraction-row.selected .selection-box{background:var(--mountain);border-color:var(--mountain)}.attraction-copy{flex-direction:column;gap:4px;min-width:0;display:flex}.attraction-copy strong{font-size:14px;font-weight:620;line-height:1.4}.attraction-copy small{color:var(--muted);align-items:center;gap:3px;font-size:10px;display:flex}.empty-state{text-align:center;color:var(--muted);padding:60px 10px;font-size:14px}.progress-footer{z-index:15;width:min(100%,480px);padding:11px 20px calc(11px + env(safe-area-inset-bottom));background:var(--paper);border-top:1px solid var(--line);position:fixed;bottom:0;left:50%;transform:translate(-50%)}.progress-copy{color:var(--muted);justify-content:space-between;font-size:10px;display:flex}.progress-copy strong{color:var(--mountain);font:750 13px var(--number-font);font-variant-numeric:tabular-nums}.progress-track{background:#ded8cd;height:4px;margin:8px 0 10px;overflow:hidden}.progress-track span{background:var(--mountain);height:100%;transition:width .2s;display:block}.progress-footer>button{background:var(--stamp);color:#fff9f0;border:0;border-radius:7px;justify-content:space-between;align-items:center;width:100%;height:46px;padding:0 15px;font-weight:700;display:flex}.sheet-layer{z-index:50;justify-content:center;align-items:flex-end;display:flex;position:fixed;inset:0}.sheet-backdrop{background:#20201d80;border:0;width:100%;position:absolute;inset:0}.bottom-sheet{width:min(100%,480px);max-height:min(86dvh,740px);padding:6px 20px calc(11px + env(safe-area-inset-bottom));background:var(--paper);border-radius:12px 12px 0 0;flex-direction:column;animation:.2s ease-out sheet-in;display:flex;position:relative}.sheet-handle{background:#c8c0b4;width:38px;height:3px;margin:1px auto 13px}.sheet-header{justify-content:space-between;align-items:center;display:flex}.sheet-header h2{margin:0;font-size:25px}.sheet-header p{color:var(--muted);font:11px var(--data-font);margin:5px 0 0}.select-all{min-height:44px;color:var(--mountain);cursor:pointer;background:0 0;border:0;align-self:flex-end;margin:0;padding:8px 3px;font-size:13px;font-weight:750}.sheet-list{overscroll-behavior:contain;border-top:1px solid var(--line);overflow-y:auto}.sheet-empty{text-align:center;color:var(--muted);padding:52px 20px;font-size:14px;line-height:1.7}.sheet-done{background:var(--stamp);color:#fff9f0;border:0;border-radius:7px;flex:none;height:44px;margin-top:8px;font-weight:700}.result-body{padding-top:25px;padding-bottom:160px}.report-masthead{border-bottom:1px solid var(--ink);justify-content:space-between;align-items:flex-end;padding-bottom:13px;display:flex}.report-masthead div{flex-direction:column;gap:4px;display:flex}.report-masthead div span,.report-masthead>span{color:var(--muted);font:9px var(--data-font);letter-spacing:.08em}.report-masthead strong{font-size:22px}.report-balance{border-bottom:1px solid var(--line);padding:30px 0 26px}.report-balance p{color:var(--muted);margin:0 0 7px;font-size:13px}.report-balance div{align-items:baseline;gap:12px;display:flex}.report-balance strong{color:var(--stamp);font:780 clamp(64px, 19vw, 84px)/1 var(--number-font);letter-spacing:-.065em;font-variant-numeric:tabular-nums}.report-balance span{font-size:18px;font-weight:700}.report-metrics{border-bottom:1px solid var(--line);grid-template-columns:1fr 1fr;padding:22px 0;display:grid}.report-metrics>div+div{border-left:1px solid var(--line);padding-left:20px}.report-metrics span,.report-metrics small{color:var(--muted);font-size:11px;display:block}.report-metrics strong{color:var(--mountain);font:750 34px var(--number-font);font-variant-numeric:tabular-nums;margin:7px 0 4px;display:block}.section-title-row{justify-content:space-between;align-items:flex-end;display:flex}.section-title-row div>span{color:var(--stamp);font:700 9px var(--data-font);letter-spacing:.12em}.section-title-row h2{margin:5px 0 0;font-size:20px}.section-title-row>small{color:var(--muted);font-size:10px}.map-section{border-bottom:1px solid var(--ink);padding:24px 0 18px}.map-section .china-progress-map{width:92%;margin:8px auto 1px}.map-legend{color:var(--muted);justify-content:center;gap:18px;font-size:9px;display:flex}.map-legend span{align-items:center;gap:4px;display:inline-flex}.map-legend i{border-radius:50%;width:10px;height:10px;display:inline-block}.map-legend .unlit{background:#e9e3d9}.map-legend .partial{background:#8da79d}.map-legend .lit{background:var(--mountain)}.pace-conclusion{border-bottom:1px solid var(--line);padding:34px 0 32px}.pace-conclusion>p{color:var(--muted);margin:22px 0 3px;font-size:13px}.pace-conclusion>div{align-items:baseline;gap:8px;display:flex}.pace-conclusion strong{color:var(--mountain);font:780 82px/.95 var(--number-font);letter-spacing:-.055em;font-variant-numeric:tabular-nums}.pace-conclusion div span{font-size:25px;font-weight:700}.pace-conclusion .pace-count strong{font-size:68px}.pace-conclusion .pace-count span{color:var(--muted);font-size:24px}.pace-conclusion h2{margin:7px 0 12px;font-size:25px}.pace-conclusion>small{color:var(--muted);font-size:10px}.target-section{border-bottom:1px solid var(--line);padding:31px 0 28px}.target-section>p{color:#5d5851;margin:23px 0 10px;font-size:13px;line-height:1.65}.target-section>p+.required-rate{margin-top:8px}.target-options{grid-template-columns:repeat(4,1fr);gap:6px;display:grid}.target-options button{border:1px solid var(--line);min-height:44px;color:var(--ink);background:0 0;border-radius:5px;font-size:13px}.target-options button.active{border-color:var(--stamp);background:var(--stamp-pale);color:var(--stamp);font-weight:750}.required-rate{align-items:baseline;gap:9px;display:flex}.required-rate strong{color:var(--stamp);font:780 70px/1 var(--number-font);font-variant-numeric:tabular-nums}.required-rate span{font-size:18px;font-weight:700}.report-footnote{color:var(--muted);margin:16px 0 0;font-size:10px;line-height:1.6}.result-actions{z-index:15;width:min(100%,480px);padding:9px 20px calc(9px + env(safe-area-inset-bottom));background:var(--paper);border-top:1px solid var(--line);grid-template-columns:1.2fr .8fr;gap:8px;display:grid;position:fixed;bottom:0;left:50%;transform:translate(-50%)}.balance-number,.report-balance strong{animation:.26s ease-out number-in}.share-layer{z-index:60;padding:max(16px, env(safe-area-inset-top)) 16px max(16px, env(safe-area-inset-bottom));background:#20201d9e;place-items:center;display:grid;position:fixed;inset:0}.share-modal{background:var(--paper);border-radius:10px;width:min(100%,390px);max-height:94dvh;padding:16px;overflow-y:auto}.share-modal header{justify-content:space-between;align-items:flex-start;margin-bottom:13px;display:flex}.share-modal h2{margin:0;font-size:19px}.share-modal header p{color:var(--muted);margin:4px 0 0;font-size:11px}.share-modal img{aspect-ratio:3/4;object-fit:contain;border:1px solid var(--line);width:min(100%,300px);height:auto;margin:0 auto;display:block}.download-button{background:var(--stamp);color:#fff9f0;border-radius:7px;justify-content:center;align-items:center;gap:8px;height:50px;margin-top:13px;font-weight:700;text-decoration:none;display:flex}@keyframes page-in{0%{opacity:.72;transform:translateY(3px)}to{opacity:1;transform:translateY(0)}}@keyframes sheet-in{0%{opacity:.65;transform:translateY(22px)}to{opacity:1;transform:translateY(0)}}@keyframes number-in{0%{opacity:.55;transform:translateY(5px)}to{opacity:1;transform:translateY(0)}}@media (width<=359px){.page-body,.home-screen{padding-left:18px;padding-right:18px}.home-hero h1{font-size:40px}.home-index{gap:6px}.quick-options button{font-size:12px}.report-balance strong{font-size:60px}.report-balance span{font-size:16px}.target-options button{font-size:12px}}@media (width>=700px){body{padding:24px 0}.screen{border:1px solid #d6cfc3;min-height:calc(100dvh - 48px)}.sticky-action,.progress-footer,.result-actions{bottom:24px}.sticky-action:after,.progress-footer:after,.result-actions:after{content:"";background:var(--paper);pointer-events:none;height:24px;position:absolute;top:100%;left:0;right:0}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important}}
