:root{--paper:#e9ddc3;--ink:#383329;--gold:#d3ba7d;--stamp:#9c302c;--serif:"STSong","SimSun",serif}
*{box-sizing:border-box}body{margin:0;min-height:100svh;background:radial-gradient(ellipse at 50% 34%,#35443c 0,#1d2927 70%);color:var(--paper);font-family:"Microsoft YaHei","PingFang SC",sans-serif;font-size:14px;line-height:1.7}button,input{font:inherit}button{cursor:pointer;border:1px solid #c8cabb50;border-radius:3px;background:#ffffff06;color:#d5d9ca;padding:10px 15px;min-height:44px;line-height:1.6;transition:background .15s}button:hover{background:#ffffff12}button:disabled{opacity:.4;cursor:default}button:focus-visible,input:focus-visible,summary:focus-visible{outline:2px solid var(--gold);outline-offset:4px}.primary{background:var(--gold);border-color:var(--gold);color:#2e3027;font-weight:600}.primary:hover{background:#e2c994}.app{max-width:1050px;margin:auto;padding:24px 28px 30px}.mast{display:flex;justify-content:space-between;align-items:center;gap:16px;border-bottom:1px solid #ffffff24;padding-bottom:16px;margin-bottom:25px}.brand{font:20px var(--serif);letter-spacing:.14em}.mast small{font-size:10px;color:#b9c1b8;letter-spacing:.08em}.screen{display:none}.screen.active{display:block}.home-layout{display:grid;grid-template-columns:1fr 400px;gap:80px;align-items:center;min-height:calc(100svh - 140px)}.intro{max-width:440px}.eyebrow{font-size:11px;color:var(--gold);letter-spacing:.2em}.intro h1{font:400 44px/1.5 var(--serif);letter-spacing:.06em;margin:20px 0}.intro p{font-size:14px;line-height:2.2;color:#bbc3b8;max-width:350px}.route-rules{display:grid;gap:13px;padding:19px 0;margin-top:24px;border-top:1px solid #ffffff26;border-bottom:1px solid #ffffff26;font-size:12px;color:#d1d5c8}.route-rules b{font:16px Georgia,serif;color:var(--gold);display:inline-block;width:30px}.home-stage{max-width:350px;width:100%;margin:auto}.progress-info{font-size:11px;letter-spacing:.05em;color:#d3c291;text-align:center;margin-bottom:17px}.book-cover{position:relative;width:100%;max-width:292px;aspect-ratio:2/3;margin:0 auto;background:#581f23 url('../images-v2/cover.webp') center/100% 100%;border-radius:2px 6px 6px 2px;box-shadow:inset 8px 0 8px #0005,inset -1px 0 1px #f5dcab66,4px 0 0 #a79a7a,6px 0 0 #e6dcc2,8px 0 0 #a79a7a,9px 0 0 #4e2925,10px 20px 24px #0005;overflow:hidden}.cover-type{position:absolute;top:10.5%;left:9%;right:8%;text-align:center;color:#f0d796;text-shadow:0 1px #3a0b08}.cover-type small{font-size:8px;letter-spacing:.16em}.cover-title{font:500 36px/1.3 var(--serif);letter-spacing:.2em;margin:15px -8px 8px 0}.cover-title span{display:block;font-size:20px;letter-spacing:.2em;margin-top:7px}.cover-theme{font:8px var(--serif);margin-top:13px;white-space:nowrap}.cover-foot{position:absolute;bottom:7.5%;left:0;right:0;text-align:center;font-size:8px;color:#e5cf9e;letter-spacing:.15em}.home-actions,.book-actions{max-width:310px;margin:23px auto 0;display:grid;gap:10px}.home-actions{max-width:292px}.home-actions button{width:100%}.footnote{text-align:center;color:#a5b2a1;font-size:10px;line-height:1.9;margin:14px auto;max-width:330px}.fallback{margin-top:20px;border-top:1px solid #ffffff20;padding-top:13px;font-size:11px;color:#bbc7b7}.fallback summary{cursor:pointer;min-height:34px}.fallback button{width:100%;margin:8px 0;font-size:12px}.fallback label{display:block;margin-top:10px}.number-entry{display:flex;gap:8px;align-items:center}.number-entry input{min-width:0;width:70px;flex:1;border:1px solid #c4caba60;border-radius:3px;background:#17221e;color:var(--paper);padding:10px}.number-entry button{flex:2}#entry-status,#scan-status{font-size:12px;line-height:1.8;color:#e2c591;text-align:center;overflow-wrap:anywhere}#entry-status:empty{display:none}#scanner-module{background:#15211e;border:1px solid #b2b99d40;padding:12px;border-radius:4px;margin:18px 0}#scanner-box{width:100%;max-width:340px;margin:auto}#video{width:100%}.scan-actions{text-align:center;margin:12px 0}.scan-hint{font-size:11px;color:#b0baab;text-align:center}
#passport-screen{max-width:390px;margin:auto}.book-top{display:flex;justify-content:space-between;align-items:center;margin-bottom:21px;color:#bdc7b9;font-size:11px}.book-top button{border:0;background:none;padding:0;min-height:32px;font-size:11px}.book-top span{color:var(--gold)}#passport-page-container{perspective:1400px;margin:0 auto;max-width:310px}.passport-page{position:relative;width:100%;aspect-ratio:2/3;padding:27px 29px 24px 35px;border-radius:2px 6px 6px 2px;color:var(--ink);background:linear-gradient(90deg,#b5a686 0,#ddd0b2 3%,#eddfc4 8%,#e9ddc3 88%,#d4c4a2 100%);box-shadow:inset 1px 0 #ffffff50,4px 0 #ad9f7b,6px 0 #e6dcc2,8px 0 #ad9f7b,12px 20px 25px #0005;overflow:hidden;transform-origin:left center;animation:page-turn .3s ease}.passport-page::before{content:"";position:absolute;inset:13px;border:1px solid #7c725526;pointer-events:none}.paper-head{display:flex;justify-content:space-between;padding-bottom:14px;border-bottom:1px solid #6b5a3d44;font:10px var(--serif);letter-spacing:.12em}.paper-head span:last-child{font-family:Georgia,serif;color:#847454}.chapter-label{font-size:9px;letter-spacing:.16em;color:#8c7651;margin-top:23px}.chapter-title{font:500 26px/1.4 var(--serif);letter-spacing:.08em;margin:7px 0 8px}.chapter-tag{font-size:10px;color:#827354;letter-spacing:.08em}.stamp-space{height:206px;display:grid;place-items:center;margin:9px -4px 0;position:relative}.empty-stamp-slot{text-align:center;color:#938367;font-size:11px;line-height:2.2}.empty-stamp-slot::before{content:"";display:block;width:28px;height:1px;background:#bbaa8c;margin:0 auto 18px}.empty-stamp-slot p{margin:0}.stamp-img{width:191px;height:191px;object-fit:contain;mix-blend-mode:multiply;transform:rotate(-6deg)}.stamp-animate{animation:stamp .5s cubic-bezier(.17,.67,.31,1.2)}.completion{display:flex;justify-content:space-between;padding-top:11px;border-top:1px solid #6b5a3d33;font-size:8px;color:#847458}.completion b{font-weight:400;color:var(--stamp)}.paper-footer{position:absolute;bottom:23px;left:35px;right:29px;display:flex;justify-content:space-between;font-size:9px;color:#8f8064}.paper-footer i{font:10px Georgia,serif}.page-nav{display:flex;gap:8px;align-items:center;justify-content:space-between;max-width:310px;margin:22px auto 0}.page-nav button{font-size:11px;padding:8px 12px}#passport-page-number{font-size:10px;color:#c5ccbe;text-align:center;white-space:nowrap}.book-actions button{width:100%;font-size:12px}.book-actions p{font-size:11px;color:#d3c9ac;text-align:center;margin:0}.book-actions p:empty{display:none}.book-actions [style*="display: none"]{display:none}#passport-summary{font-size:11px;color:var(--gold);text-align:center;margin:16px 0 0}
#station-screen{max-width:600px;margin:45px auto}.station-number{font-size:11px;color:var(--gold);letter-spacing:.16em}#station-title-img-container h1{font:400 36px var(--serif);letter-spacing:.1em;margin:12px 0 10px}#station-title-img-container p{font-size:12px;color:#b5c0ae;margin:0 0 30px}#station-content{background:linear-gradient(115deg,#ecdfc5,#ded1b2);border:1px solid #f0e7d0;color:var(--ink);padding:25px 28px;border-radius:3px;box-shadow:10px 15px 35px #0003}#station-content>p{font-size:13px;line-height:1.9}#station-content button{display:block;width:100%;color:#6c2d29;border-color:#6c2d2950;margin:12px 0 0}#station-content button:first-of-type{background:#642d2c;color:#f1e5cc;border-color:#642d2c}.question-block>p{font:500 19px/1.8 var(--serif);margin:0 0 21px}.option{display:flex;align-items:flex-start;gap:9px;min-height:48px;padding:12px;border:1px solid #88765350;border-radius:3px;margin:9px 0;cursor:pointer;font-size:14px;line-height:1.65}.option:has(input:checked){border-color:#85443b;background:#8b3b3210}.option input{accent-color:#85443b;margin-top:5px;flex-shrink:0}#question-feedback{font-size:12px!important;color:#7a4a35;min-height:43px;margin:19px 0 15px!important}
.passport-modal{position:fixed;inset:0;z-index:50;display:none;justify-content:center;align-items:center;background:radial-gradient(ellipse at 50% 35%,#35443c,#18231f 80%);overflow:auto;padding:22px}.passport-modal-content{max-width:340px;width:100%;text-align:center;margin:auto}.passport-modal .book-cover{max-width:252px}.passport-modal .cover-title{font-size:31px}.passport-modal .cover-title span{font-size:18px}.passport-modal .cover-type small{font-size:7px}.passport-modal .cover-theme{font-size:7px;margin-top:9px}.passport-modal .cover-foot{font-size:7px}.receive-label{font-size:11px;color:var(--gold);letter-spacing:.1em;margin:0 0 16px}.passport-modal h2{font:400 21px var(--serif);letter-spacing:.1em;margin:23px 0 12px}.passport-modal .receive-copy{color:#b6c2af;font-size:11px;line-height:1.9;margin:0 auto 17px;max-width:300px}.passport-modal .primary{width:252px}.passport-modal .footnote{font-size:9px;margin:11px auto 0}#loading-overlay{display:flex;position:fixed;inset:0;z-index:9999;background:#1d2927;align-items:center;justify-content:center;flex-direction:column;font-size:14px;color:var(--gold)}.spinner{width:30px;height:30px;border:2px solid #d3ba7d40;border-top-color:var(--gold);border-radius:50%;animation:spin 1s linear infinite}
#photo-fullscreen,#sign-fullscreen,#photo-display{display:none;position:fixed;inset:0;z-index:100;flex-direction:column;background:#111b17;color:var(--paper);height:100dvh}#photo-fullscreen video{width:100%;height:calc(100% - 85px);object-fit:contain}.camera-hint{position:absolute;top:env(safe-area-inset-top,0);left:0;right:0;padding:17px;text-align:center;background:linear-gradient(#000b,#0000);font-size:12px;color:#fff;pointer-events:none}.photo-controls{display:flex;gap:12px;align-items:center;justify-content:center;min-height:85px;padding:12px 14px calc(12px + env(safe-area-inset-bottom,0px));background:#111b17}.photo-controls button{font-size:12px;padding:8px 12px}.mirror-toggle{display:flex;align-items:center;gap:6px;font-size:12px}#capture-btn-full{position:absolute;bottom:115px;left:50%;transform:translateX(-50%);border-radius:50%;width:70px;height:70px;background:#fff;border:5px solid #ddd;box-shadow:0 0 0 3px #fff5}#capture-btn-full:disabled{background:#777}.signature-head{background:#e9ddc3;color:var(--ink);text-align:center;padding:18px 15px 14px;flex-shrink:0}.signature-head h2{font:500 22px var(--serif);margin:0 0 7px}.signature-head p{font-size:12px;color:#7d6e50;margin:0}#sign-fullscreen{background:#fff}#sign-canvas-full{width:100%;min-height:0;flex:1;display:block;background:#fff;touch-action:none}.sign-controls{display:flex;flex-wrap:wrap;justify-content:center;gap:8px;padding:13px 12px calc(13px + env(safe-area-inset-bottom,0px));background:#e9ddc3;flex-shrink:0}.sign-controls button{font-size:12px;color:#652f2a;border-color:#652f2a55}.sign-controls button:last-child{background:#642d2c;color:#f1e5cc}#photo-display{z-index:200;align-items:center;justify-content:center;overflow:auto;padding:22px 16px calc(22px + env(safe-area-inset-bottom,0px));gap:15px}#photo-display img{max-width:100%;max-height:65dvh;object-fit:contain}#photo-save-status{font-size:12px;max-width:440px;text-align:center;color:#cfdbca;line-height:1.9;margin:0}#photo-display button{font-size:13px;background:var(--gold);border-color:var(--gold);color:#2e3027}
@keyframes spin{to{transform:rotate(360deg)}}@keyframes page-turn{from{opacity:.4;transform:rotateY(-13deg)}to{opacity:1;transform:rotateY(0)}}@keyframes stamp{from{transform:scale(1.6) rotate(-12deg);opacity:0}to{transform:scale(1) rotate(-6deg);opacity:1}}
@media(max-width:760px){.app{padding:16px 19px 25px}.mast{margin-bottom:22px;padding-bottom:13px}.brand{font-size:16px}.mast small{font-size:9px}.home-layout{display:block;min-height:0}.intro{display:none}.home-stage{max-width:330px}.book-top{margin:0 10px 20px}#passport-page-container{max-width:292px}.passport-page{padding:25px 26px 23px 32px}.chapter-label{margin-top:19px}.chapter-title{font-size:25px}.stamp-space{height:194px;margin-top:8px}.stamp-img{width:183px;height:183px}.paper-footer{left:32px;right:26px}.page-nav,.book-actions{max-width:292px}#station-screen{margin:25px auto}#station-title-img-container h1{font-size:30px}#station-content{padding:23px 20px}.question-block>p{font-size:18px}.home-actions{margin-top:24px}}
@media(max-width:360px),(max-height:740px) and (max-width:760px){.book-cover,#passport-page-container{max-width:260px}.cover-title{font-size:32px;margin-top:10px}.cover-title span{font-size:18px}.cover-theme{font-size:7px;margin-top:9px}.passport-page{padding:22px 24px 22px 29px}.paper-head{padding-bottom:11px}.chapter-label{margin-top:14px;font-size:8px}.chapter-title{font-size:23px;margin-top:6px}.chapter-tag{font-size:9px}.stamp-space{height:162px}.stamp-img{width:155px;height:155px}.completion{font-size:7px;padding-top:9px}.paper-footer{left:29px;right:24px;bottom:20px}.passport-modal .book-cover{max-width:220px}.passport-modal .cover-title{font-size:27px;margin-top:10px}.passport-modal .cover-title span{font-size:16px}.passport-modal h2{font-size:20px;margin-top:19px}.passport-modal{padding:18px}.passport-modal .primary{width:220px}.passport-modal .cover-theme{font-size:6px}.passport-modal .cover-type small{font-size:6px}.passport-modal .receive-copy{font-size:10px}.book-top{margin-bottom:17px}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important}}

.download-link{display:block;text-align:center;padding:11px 15px;min-height:44px;color:#ead29a;border:1px solid #d3ba7d88;border-radius:3px;text-underline-offset:4px;font-size:12px}.download-link:focus-visible{outline:2px solid var(--gold);outline-offset:4px}

/* 微信内的浏览器打开指引；不依赖新图片或外部资源。 */
.wechat-guide[hidden]{display:none}.wechat-guiding{overflow:hidden}.wechat-guide{position:fixed;inset:0;z-index:10000;overflow-y:auto;background:radial-gradient(ellipse at 60% 25%,#34473c,#192720 80%);color:var(--paper);padding:100px 25px 28px;padding-top:max(100px,calc(env(safe-area-inset-top,0px) + 78px));overscroll-behavior:contain}.wechat-guide-content{max-width:370px;margin:auto}.wechat-guide-brand{font-size:11px;color:var(--gold);letter-spacing:.13em;margin:0 0 20px}.wechat-guide h1{font:400 29px/1.55 var(--serif);letter-spacing:.04em;margin:0 0 17px;outline:none}.wechat-guide-intro{font-size:13px;line-height:1.9;color:#c0ccba;margin:0 0 25px}.wechat-menu-cue{position:absolute;top:max(20px,calc(env(safe-area-inset-top,0px) + 12px));right:24px;display:flex;gap:10px;align-items:center;color:var(--gold);font-size:12px}.wechat-menu-cue b{font:bold 28px/1 Georgia,serif;letter-spacing:3px;border:1px solid #d3ba7d55;border-radius:20px;padding:0 9px 8px}.wechat-menu-cue i{position:absolute;right:21px;top:42px;width:45px;height:38px;border-right:1px solid var(--gold);border-bottom:1px solid var(--gold);border-radius:0 0 23px 0;transform:rotate(-10deg)}.wechat-menu-cue i::after{content:"";position:absolute;right:-4px;top:0;width:7px;height:7px;border-top:1px solid var(--gold);border-right:1px solid var(--gold);transform:rotate(-45deg)}.wechat-guide-steps{list-style:none;margin:0;padding:20px 0;border-top:1px solid #d3ba7d40;border-bottom:1px solid #d3ba7d40;display:grid;gap:19px}.wechat-guide-steps li{display:flex;gap:14px;align-items:flex-start;font-size:13px;line-height:1.8}.wechat-guide-steps li>span{flex-shrink:0;width:24px;height:24px;border:1px solid #d3ba7d70;border-radius:50%;font:14px/22px Georgia,serif;text-align:center;color:var(--gold)}.wechat-guide-steps strong{font-weight:600;color:#efd99f}.wechat-guide-steps small{display:block;font-size:10px;color:#aebda6;margin-top:3px}.wechat-station-note{font-size:11px;color:#d9c68f;line-height:1.8;margin:17px 0}.wechat-guide-actions{display:grid;gap:10px}.wechat-guide-actions button{width:100%;font-size:13px}.wechat-guide-actions input{width:100%;min-width:0;background:#101d1733;border:1px solid #c0c9ae50;color:#d5ddcc;padding:9px 11px;border-radius:3px;font-size:11px;line-height:1.7}.wechat-guide-actions [role=status]{font-size:10px;line-height:1.9;color:#b5c2aa;margin:0}.wechat-guide-actions .wechat-continue{background:none;border-color:transparent;color:#b7c4ac;font-size:11px;padding:8px;min-height:40px}.wechat-progress-note{font-size:10px;line-height:1.9;color:#aebda6;margin:15px 0 0;border-top:1px solid #ffffff18;padding-top:15px}.wechat-guide-title:focus-visible{outline:none}
@media(max-width:360px),(max-height:740px) and (max-width:760px){.wechat-guide{padding:88px 22px 24px}.wechat-guide-brand{font-size:10px;margin-bottom:14px}.wechat-guide h1{font-size:25px;margin-bottom:12px}.wechat-guide-intro{font-size:12px;margin-bottom:20px}.wechat-guide-steps{gap:15px;padding:17px 0}.wechat-guide-steps li{font-size:12px}.wechat-station-note{margin:14px 0}.wechat-menu-cue{right:20px;top:17px}.wechat-progress-note{margin-top:11px}}

/* 扫码授权与相机预览：打开后始终在手机当前视口内。 */
#scanner-module{position:fixed;inset:0;z-index:300;background:#17231ff5;border:0;border-radius:0;margin:0;overflow-y:auto;overscroll-behavior:contain;padding:20px 18px;padding-top:max(20px,env(safe-area-inset-top,0px));padding-bottom:max(24px,env(safe-area-inset-bottom,0px))}.scanner-panel{max-width:420px;margin:0 auto}.scanner-heading{display:flex;justify-content:space-between;align-items:center;gap:14px;border-bottom:1px solid #d3ba7d40;padding-bottom:12px}.scanner-heading h2{font:400 23px/1.5 var(--serif);margin:0;color:var(--paper)}.scanner-heading button{font-size:12px;padding:8px 13px}#scanner-box{max-width:380px;margin:16px auto;background:#0d1713;border:1px solid #c5cbb033;border-radius:4px;overflow:hidden}#video{min-height:210px}#video video{display:block;width:100%;height:auto;object-fit:contain}#scan-status{min-height:44px;margin:13px 0}.scan-actions{display:flex;flex-wrap:wrap;justify-content:center;gap:10px}.scan-actions button{font-size:12px;flex:1 1 150px}.camera-permission-help{margin-top:20px;border-top:1px solid #c5cbb033;padding-top:13px;font-size:12px;color:#c2cdbd}.camera-permission-help summary{cursor:pointer;min-height:34px;color:#e1cd9b}.camera-permission-help p{line-height:1.9;margin:9px 0}.scanner-panel .scan-hint{margin:12px 0;font-size:11px;line-height:1.9}
@media(max-width:360px),(max-height:650px){#scanner-module{padding:13px 15px}.scanner-heading h2{font-size:21px}#scanner-box{margin:12px auto}#video{min-height:170px}.camera-permission-help{margin-top:14px}.scan-actions{gap:8px}}
.scanner-open{overflow:hidden}
/* 相机悬浮窗：左上返回、取景四角与扫描线。 */
#scanner-module{background:#07130fed;padding:24px 16px}.scanner-panel{width:100%;max-width:440px;margin:0 auto;background:#172a21;border:1px solid #cdb77f40;border-radius:14px;padding:20px;box-shadow:0 20px 70px #0007}.scanner-heading{position:relative;justify-content:center;min-height:47px;padding:0 0 13px}.scanner-heading h2{font-size:20px}.scanner-heading .scanner-back{position:absolute;left:-6px;top:-2px;border:0;padding:8px 6px;font-size:12px;color:#dbc793;background:transparent}.scanner-heading h2{margin-left:45px;margin-right:12px}#scanner-box{position:relative;border-color:#d3ba7d40;border-radius:9px}.scanner-target-frame{position:absolute;left:50%;top:50%;width:150px;height:150px;transform:translate(-50%,-50%);pointer-events:none;z-index:2;background:linear-gradient(var(--gold),var(--gold)) left top/24px 3px no-repeat,linear-gradient(var(--gold),var(--gold)) left top/3px 24px no-repeat,linear-gradient(var(--gold),var(--gold)) right top/24px 3px no-repeat,linear-gradient(var(--gold),var(--gold)) right top/3px 24px no-repeat,linear-gradient(var(--gold),var(--gold)) left bottom/24px 3px no-repeat,linear-gradient(var(--gold),var(--gold)) left bottom/3px 24px no-repeat,linear-gradient(var(--gold),var(--gold)) right bottom/24px 3px no-repeat,linear-gradient(var(--gold),var(--gold)) right bottom/3px 24px no-repeat}.scanner-sweep{position:absolute;left:4px;right:4px;top:5%;height:2px;background:linear-gradient(90deg,transparent,#ead392,transparent);box-shadow:0 0 12px #e9c96f88;animation:scanner-sweep 2.6s ease-in-out infinite alternate}@keyframes scanner-sweep{to{top:95%}}@media(prefers-reduced-motion:reduce){.scanner-sweep{animation:none;top:50%}}@media(max-width:360px),(max-height:650px){#scanner-module{padding:12px 10px}.scanner-panel{padding:14px;border-radius:10px}.scanner-heading h2{font-size:18px}.scanner-heading .scanner-back{font-size:11px}}
#scanner-box #qr-shaded-region>div{display:none}.scanner-heading{position:sticky;top:0;z-index:3;background:#172a21}
