@charset "UTF-8";
:root{font-family:"PingFang SC","Microsoft YaHei",system-ui,sans-serif;color:#23473d;background:#e9ebe2;font-synthesis:none;line-height:1.6;--paper:#f6f4eb;--green:#285345;--muted:#829084;--border:#dce0d1;--header:60px;--nav:66px}
*{box-sizing:border-box}body{margin:0;background:var(--paper);max-width:480px;min-height:100svh;margin-inline:auto;box-shadow:0 0 80px #213f3610}button,input,select{font:inherit}button,a,.file-button,.upload-button{-webkit-tap-highlight-color:transparent}button{cursor:pointer;border:0}button:disabled{opacity:.45;cursor:not-allowed}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,summary:focus-visible{outline:3px solid #97b578;outline-offset:3px}button,input,select{min-height:44px}h1,h2,h3,p{margin:0}a{color:inherit}h1{font-size:25px;letter-spacing:-.5px;font-weight:650}h3{font-weight:600}[hidden]{display:none!important}.small{font-size:11px;color:var(--muted);line-height:1.8}.site-header{height:var(--header);padding:0 22px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid #dfe2d6}.brand{display:flex;gap:9px;align-items:center;text-decoration:none;font-size:17px;font-weight:700}.brand-icon{width:29px;height:29px;border-radius:9px;background:var(--green);color:#e9e8bf;display:grid;place-items:center;font-family:serif}.brand small{font-size:10px;color:#8e9783;font-weight:400;border-left:1px solid #cdd6c0;padding-left:10px;margin-left:10px}.demo-badge{font-size:9px;letter-spacing:.7px;color:#94a08c;border:1px solid #dde2d2;padding:2px 7px;border-radius:5px}main{padding-bottom:calc(var(--nav) + env(safe-area-inset-bottom))}.stamp-page{padding:18px 20px 9px;display:flex;flex-direction:column;gap:14px;min-height:calc(100svh - var(--header) - var(--nav) - env(safe-area-inset-bottom))}.postcard{height:142px;position:relative;border-radius:14px;overflow:hidden;background:#dfe5d2}.postcard svg{width:100%;height:100%;position:absolute;inset:0}.postcard-copy{position:absolute;left:18px;top:17px}.postcard-copy p{font-size:7px;letter-spacing:2px;color:#496e56}.postcard-copy h1{font-family:"Songti SC","SimSun",serif;font-size:22px;letter-spacing:2px;margin-top:5px;color:#2e513e;font-weight:500}.postcard-tag{position:absolute;bottom:11px;left:18px;color:#e7ead5;font-size:8px;letter-spacing:2px}.passport-summary{display:flex;justify-content:space-between;gap:8px;align-items:center;padding:17px 2px 0}.passport-summary strong{font-size:13px;font-weight:600}.passport-summary p{font-size:10px;margin-top:4px;color:#919885}.collected-total{text-align:center;min-width:39px;padding-left:12px;border-left:1px solid #dce1d1}.collected-total strong{font-size:24px;line-height:1}.collected-total span{font-size:8px;display:block;color:#929e86}.stamp-station{margin-top:auto;min-width:0}.station-heading{display:flex;justify-content:space-between;align-items:center;margin:0 auto 10px;max-width:360px;font-size:12px}#station-caption{font-size:9px;color:#8f9a85}.touch-pad{position:relative;width:min(100%,360px,calc(100svh - 390px));aspect-ratio:1;margin:0 auto;overflow:hidden;background:#fffef9;border:1px solid #dde2ce;border-radius:12px;color:#82997c;touch-action:none;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none;overscroll-behavior:contain;box-shadow:inset 0 0 40px #edf0e315}.corner{position:absolute;width:18px;height:18px;border:solid #9bac8d;pointer-events:none;opacity:.7}.top-left{top:14px;left:14px;border-width:1px 0 0 1px}.top-right{top:14px;right:14px;border-width:1px 1px 0 0}.bottom-left{bottom:14px;left:14px;border-width:0 0 1px 1px}.bottom-right{bottom:14px;right:14px;border-width:0 1px 1px 0}.pad-idle{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;pointer-events:none}.pad-idle svg{width:65px;height:65px;margin-bottom:5px;fill:none;stroke:#a8b795;stroke-width:1.4;stroke-linecap:round;stroke-linejoin:round}.pad-idle strong{font-size:17px;font-weight:500;letter-spacing:2px;color:#798b70}.pad-idle span{font-size:10px;color:#a2ab95}.pad-caption{position:absolute;bottom:20px;left:15px;right:15px;text-align:center;font-size:9px;color:#a5ae98;pointer-events:none}.touch-lines{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}.touch-lines polygon{fill:#7c9a6b12;stroke:#6c915a88;stroke-width:1.4;stroke-dasharray:4 4}.touch-dot{position:absolute;width:24px;height:24px;transform:translate(-50%,-50%);border:1px solid #7da065;border-radius:50%;background:#cbdcc1;box-shadow:0 0 0 7px #e0e8d64d;display:grid;place-items:center;color:#527b40;font-size:10px;pointer-events:none}.touching #pad-idle{opacity:0}.stamp-reveal{position:absolute;inset:15px 15px 28px;display:flex;flex-direction:column;align-items:center;justify-content:center;pointer-events:none;gap:2px}.stamp-reveal>div{width:72%;max-width:235px;aspect-ratio:1;animation:stamp-in .45s cubic-bezier(.19,1,.22,1) both}.stamp-reveal strong{font-size:15px;color:var(--green);max-width:100%;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.stamp-reveal span{font-size:9px;color:#8c9a7e}.stamp-artwork{display:block;width:100%;height:100%;object-fit:contain}.custom-artwork{padding:6px}.has-stamp #pad-idle{display:none}.has-stamp .pad-caption{font-size:8px;bottom:11px}.result{font-size:11px;color:#8b947f;padding:10px 3px 2px;line-height:1.6;min-height:34px;text-align:center;overflow-wrap:anywhere}.result.success{color:#4d7a4e}.result.error{color:#a26d48}.station-actions{display:flex;align-items:center;justify-content:space-between;gap:10px;max-width:360px;margin:auto;min-height:30px}.text-button{background:none;color:#6c8461;font-size:10px;padding:4px 0;min-height:32px}.test-label{font-size:8px;color:#a5ac97}.bottom-nav{position:fixed;bottom:0;left:50%;transform:translateX(-50%);width:min(100%,480px);height:calc(var(--nav) + env(safe-area-inset-bottom));padding:4px 9px calc(5px + env(safe-area-inset-bottom));border-top:1px solid #dee3d4;background:#faf9f2;display:grid;grid-template-columns:repeat(4,1fr);z-index:10}.bottom-nav button{background:none;color:#9ba38f;font-size:9px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;line-height:1.2}.bottom-nav button>span{font-size:23px;font-family:system-ui;font-weight:300;line-height:1.2}.bottom-nav .active{color:#305f47;font-weight:600}.eyebrow{font-size:8px;letter-spacing:2px;color:#94a283;margin-bottom:7px}.enroll-panel>h1,.library>h1,.guide>h1{margin-bottom:7px}.enroll-panel label{display:block;font-size:11px;margin-top:15px;color:#68805e}input,select{width:100%;min-width:0;border:1px solid #dce1cf;border-radius:8px;padding:10px;background:#fffef9;color:var(--green);font-size:13px;display:block;margin-top:5px}input[type=color]{height:44px;padding:4px}.form-row{display:grid;grid-template-columns:1fr 90px;gap:15px}.art-picker-row{display:grid;grid-template-columns:126px 1fr;gap:17px;margin-top:14px;align-items:center}.art-preview{width:126px;height:126px;border:1px solid #e0e5d4;border-radius:10px;background:#fffef9;padding:9px}.art-controls label{margin-top:0}.art-controls .upload-button{margin-top:8px;color:#75896c;position:relative;font-size:11px;cursor:pointer;min-height:36px;display:flex;align-items:center;text-decoration:underline;text-underline-offset:4px}.upload-button input,.file-button input{position:absolute;inset:0;margin:0;width:100%;height:100%;opacity:0;cursor:pointer}.art-controls .small{font-size:9px}.sample-progress{display:flex;gap:8px;margin:17px 0 10px}.sample-slot{flex:1;text-align:center;border:1px dashed #d0d9c5;border-radius:7px;font-size:11px;padding:9px 0;color:#a2ac96}.sample-slot.done{background:#e8efdc;border-style:solid;color:#567e43}.primary,.secondary{min-height:42px;border-radius:9px;padding:11px 16px;font-size:12px}.primary{width:100%;background:var(--green);color:#fff}.secondary{background:#fffef9;border:1px solid #d6dfc9;color:#658056}.enroll-panel .secondary{width:100%;margin-top:12px}.enroll-actions{margin-top:12px;text-align:center}.enroll-actions .text-button{display:block;margin:7px auto}.library,.guide{padding:25px 20px 30px}.library h1 span{font-size:12px;color:#98a387;font-weight:400;margin-left:6px}.actions{display:flex;gap:10px;margin:20px 0 12px}.actions>*{flex:1;text-align:center}.file-button{position:relative;overflow:hidden;display:flex;align-items:center;justify-content:center;cursor:pointer}.stamp-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin-top:20px}.empty-state{grid-column:1/-1;text-align:center;padding:45px 15px;border:1px dashed #d6ddc8;border-radius:12px;font-size:12px;color:#92a183}.empty-state p{font-size:10px;margin-top:8px}.stamp-card{padding:16px 12px;background:#fffef9;border:1px solid #e0e5d5;border-radius:12px;text-align:center;min-width:0}.seal{width:118px;height:118px;max-width:100%;margin:0 auto 8px;filter:grayscale(1);opacity:.28}.stamp-card.collected .seal{filter:none;opacity:1}.stamp-card h3{font-size:13px;overflow-wrap:anywhere}.stamp-card p{font-size:9px;color:#9ba58f;margin:5px 0}.stamp-state{font-size:10px;color:#99a88b}.collected .stamp-state{color:#5d814e}.card-actions{display:flex;justify-content:center;gap:12px;margin-top:6px}.card-actions button{font-size:9px;color:#98a38a;background:none;padding:4px 0;min-height:30px}.guide details{padding:16px 0;border-bottom:1px solid #dce3d1}.guide summary{font-size:13px;cursor:pointer}.guide details p{font-size:11px;color:#849576;line-height:1.9;margin-top:10px}.guide pre{font-size:11px;overflow:auto;max-height:200px}.touch-stats{display:flex;gap:15px;font-size:11px;padding-top:15px}.guide-downloads{display:flex;flex-direction:column;gap:12px;margin:22px 0;font-size:11px;text-underline-offset:3px}.storage-notice{padding:13px 18px;background:#fff0de;color:#986b3f;font-size:11px}body[data-mode=enroll] .touch-pad{width:min(100%,340px)}body[data-mode=enroll] .station-heading{margin-top:9px}body[data-mode=enroll] .station-actions{display:none}.touch-pad,.stamp-artwork{-webkit-touch-callout:none}@keyframes stamp-in{0%{opacity:0;transform:scale(1.4) rotate(-15deg)}60%{opacity:1;transform:scale(.95) rotate(-7deg)}100%{opacity:1;transform:scale(1) rotate(-7deg)}}
@media(max-height:740px) and (orientation:portrait){:root{--header:52px;--nav:60px}.stamp-page{padding-top:12px;gap:10px}.postcard{height:105px}.postcard-copy{top:12px}.postcard-copy h1{font-size:19px}.passport-summary{padding-top:11px}.passport-summary strong{font-size:12px}.passport-summary p{font-size:9px}.touch-pad{width:min(100%,340px,calc(100svh - 355px))}.station-heading{margin-bottom:7px}.stamp-reveal>div{width:68%}.stamp-reveal strong{font-size:13px}}
@media(orientation:landscape) and (max-height:600px){.touch-pad{width:min(100%,320px)}.stamp-page{min-height:0}.stamp-station{margin-top:20px}}
@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}
