:root{--bg-page:#e5e5e5;--bg-gray:#e5e5e5;--surface:#f4f5f6;--surface-white:#fff;--primary:#a1d1c4;--primary-pressed:#8fc7b7;--primary-disabled:#d7dedc;--text-main:#222;--text-secondary:#8a8a8a;--text-muted:#a9a6a6;--border:#dcdcdc;--focus:#5db7b5;--accent:#f28a71;--info:#6f8394;--danger:#e26d5c;--shadow:0 2px 8px #2837410a}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body,#app{min-height:100%}body{background:var(--bg-page);min-width:320px;color:var(--text-main);margin:0;font-family:-apple-system,BlinkMacSystemFont,PingFang SC,Microsoft YaHei,sans-serif;overflow-x:hidden}button,input{font:inherit}button{cursor:pointer}.phone-shell{width:100%;max-width:430px;min-height:100vh;padding:max(34px, env(safe-area-inset-top)) 20px 136px;background:var(--bg-page);margin:0 auto;position:relative;overflow-x:hidden}main.phone-shell:has(.bottom-bar){padding-bottom:210px}.phone-shell--centered{padding-top:max(28px, env(safe-area-inset-top))}.page-with-footer{padding-bottom:12px}.page-enter{animation:.18s ease-out enter}@keyframes enter{0%{opacity:.35}to{opacity:1}}.page-header{margin-bottom:18px}.page-header.left{text-align:left}.page-header.center{text-align:center}.page-header h1,.nav-title h1,.success-page h1,.login-page h1{color:var(--text-main);letter-spacing:-.01em;margin:0;font-size:28px;font-weight:700;line-height:1.2}.page-header p,.login-page p,.success-page p,.muted{color:var(--text-secondary);margin:10px 0 0;font-size:14px;line-height:1.55}.nav-title{justify-content:center;align-items:center;min-height:44px;margin-bottom:22px;display:flex;position:relative}.back-btn{color:var(--text-main);background:0 0;border:0;min-width:44px;min-height:44px;padding:0;font-size:28px;line-height:1}.nav-title .back-btn{position:absolute;top:0;left:-6px}.back-btn.standalone{margin:-8px 0 12px -8px}.card{background:var(--surface-white);border:none;border-radius:16px;margin:14px 0;padding:16px}.card h2{margin:0 0 14px;font-size:16px;font-weight:600;line-height:1.35}.btn-primary,.btn-secondary{white-space:nowrap;border:0;border-radius:14px;justify-content:center;align-items:center;min-height:50px;padding:0 18px;font-size:16px;font-weight:600;transition:background .16s,color .16s,opacity .16s,transform 80ms,box-shadow .16s,border-color .16s;display:inline-flex}.btn-primary{color:#fff;background:var(--primary)}.btn-primary:not(:disabled):active{background:var(--primary-pressed);transform:translateY(1px)}.btn-primary:disabled,.btn-secondary:disabled{color:#9aa09e;box-shadow:none;cursor:not-allowed;opacity:1;background:#d8dedc;border:1px solid #cbd2cf}.btn-secondary{color:#526662;border:1px solid var(--border);background:#fff}.btn-secondary:not(:disabled):active{border-color:var(--primary);background:#edf6f3}.btn-secondary.compact{border-radius:12px;min-height:42px;padding:0 12px;font-size:13px}.full{width:100%}.wide{flex:1.8!important}.stepper{margin:18px 0 20px;position:relative}.stepper--four{grid-template-columns:repeat(4,1fr);align-items:center;gap:0;display:grid}.stepper--four:before{content:"";background:var(--border);z-index:0;height:1px;position:absolute;top:18px;left:12%;right:8%}.step-item{z-index:1;color:var(--text-muted);justify-content:center;align-items:center;gap:5px;min-height:36px;font-size:12px;display:flex;position:relative}.step-item.active{color:#4b8f83;background:#e4f3ef;border-radius:999px;font-weight:600}.step-num{border:1px solid var(--border);width:22px;height:22px;color:var(--text-muted);background:#fff;border-radius:999px;justify-content:center;align-items:center;font-size:12px;display:inline-flex}.step-item.active .step-num,.step-item.done .step-num{border-color:var(--primary);background:var(--primary);color:#fff}.stepper--three{grid-template-columns:repeat(3,1fr);align-items:start;gap:0;margin:18px 4px 26px;display:grid}.stepper--three:before{content:"";background:linear-gradient(90deg, var(--primary) 0 50%, var(--border) 50% 100%);height:2px;position:absolute;top:18px;left:17%;right:17%}.stepper--three.pay-step:before{background:var(--primary)}.step-node{z-index:1;color:var(--text-muted);justify-items:center;gap:8px;font-size:12px;display:grid;position:relative}.step-node span{color:#fff;background:#ccd0d2;border-radius:999px;justify-content:center;align-items:center;width:36px;height:36px;font-weight:600;display:flex}.step-node.done span,.step-node.active span{background:var(--primary)}.step-node b{color:var(--text-muted);font-size:12px}.step-node.active b{color:var(--text-main)}.pay-step .step-node.active b{color:var(--primary)}.steps-bar{grid-template-columns:repeat(4,1fr);gap:8px;margin:16px 0 22px;display:grid}.steps-bar i{background:var(--border);border-radius:999px;height:5px}.steps-bar i.done{background:#c9e6de}.steps-bar i.on{background:var(--primary)}.row-between{justify-content:space-between;align-items:center;gap:12px;display:flex}.no-margin{margin:0}.tiny{font-size:12px}.toast{left:50%;top:max(18px, env(safe-area-inset-top));z-index:50;color:#fff;background:#1e1e1ed1;border-radius:999px;width:max-content;max-width:calc(100% - 40px);padding:10px 14px;font-size:13px;position:fixed;transform:translate(-50%);box-shadow:0 8px 22px #00000029}.form-card{padding:16px}.form-line{color:#333;grid-template-columns:92px minmax(0,1fr);align-items:center;gap:10px;min-height:54px;margin-top:12px;font-size:14px;font-weight:500;display:grid}.form-line input,.form-line select{border:1px solid var(--border);width:100%;height:44px;color:var(--text-main);appearance:none;background:#fff;border-radius:12px;outline:none;padding:0 12px;font-size:14px;font-weight:400}.form-line input:focus,.form-line select:focus{border-color:var(--focus);box-shadow:0 0 0 3px #5db7b51f}.form-line input::placeholder{color:#b6b6b6}.form-line span i{color:var(--danger);margin-left:3px;font-style:normal}.form-line.invalid input,.form-line.invalid select{border-color:var(--danger);box-shadow:0 0 0 3px #e26d5c1a}.field-error{color:var(--danger);margin:4px 0 0 102px;font-size:12px;line-height:1.4}.form-line--code{grid-template-columns:72px minmax(0,1fr) auto}.select-line{position:relative}.select-line b{color:#999;pointer-events:none;font-size:18px;position:absolute;right:14px}.select-line input{padding-right:34px}.bottom-bar{z-index:20;width:100%;max-width:430px;padding:14px 20px max(16px, env(safe-area-inset-bottom));border-top:1px solid var(--border);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#fffffff5;align-items:center;gap:12px;display:flex;position:fixed;bottom:0;left:50%;transform:translate(-50%);box-shadow:0 -4px 12px #1e28320a}.bottom-bar>button{flex:1;min-width:0}.bottom-bar.single .btn-primary{flex:1}.bottom-bar--draft .draft-link{color:var(--text-muted);text-align:left;background:0 0;border:0;flex:0 0 142px;gap:4px;padding:0;font-size:12px;display:grid}.bottom-bar--draft .draft-link b{color:var(--accent);font-size:13px}.tax-card{padding:20px}.tax-card>strong{letter-spacing:-.04em;margin-top:4px;font-size:34px;font-weight:700;display:block}.tax-lines{margin-top:18px}.tax-total{justify-content:space-between;align-items:baseline;gap:12px;padding-bottom:18px;display:flex}.tax-total span{color:#555;font-weight:600}.tax-total strong{letter-spacing:-.04em;font-size:33px}.detail-row{color:#555;border-top:1px solid #ececec;justify-content:space-between;padding:16px 0;display:flex}.detail-row b{color:var(--text-main)}.status-chip{white-space:nowrap;border:0;border-radius:999px;justify-content:center;align-items:center;padding:6px 12px;font-size:12px;font-weight:600;transition:background .16s,color .16s,transform 80ms;display:inline-flex}.status-chip.ok{color:#197a66;background:#d7f0e9}button.status-chip.ok,label.status-chip.ok{color:#106f5b;background:#c8efe5}button.status-chip:active,label.status-chip:active{transform:translateY(1px)}.status-chip.danger{color:var(--danger);background:#fcebe8}.check-card .notice{margin-top:14px}.notice{border-radius:14px;padding:12px;font-size:13px;line-height:1.55}.notice.info{color:#4f766f;background:#eef7f4}.notice.warn{color:#e36d45;background:#fff1ea}.upload-page .page-header{margin-bottom:22px}.material-card{border-radius:16px;padding:0 18px}.material-simple-row{justify-content:space-between;align-items:center;gap:12px;padding:18px 0;display:flex}.material-simple-row.with-divider{border-bottom:1px solid #eee}.material-simple-row p{margin:0;font-size:16px;font-weight:600}.material-simple-row small{color:var(--text-secondary);margin-top:6px;font-size:12px;display:block}.material-count{color:var(--text-muted);margin-left:8px;font-size:13px;font-weight:500}.status-chip.orange{color:#c9563c;background:#fff0e8}button.status-chip.orange,label.status-chip.orange{border:1px solid #f0a38f}.status-chip.gray{color:#666;background:#e8e9e9}.status-chip input,.upload-drop input{display:none}.material-row{grid-template-columns:54px minmax(0,1fr) 112px;align-items:center;gap:12px;padding:22px 0;display:grid;position:relative}.material-row.with-divider{border-bottom:1px solid #eee}.file-icon{background:#dff2ee;border-radius:12px;width:46px;height:54px;position:relative}.file-icon:before{content:"";border-bottom:15px solid #bfe4dc;border-left:15px solid #0000;position:absolute;top:0;right:0}.file-icon span,.file-icon:after{content:"";background:#7fc5b8;border-radius:3px;height:3px;position:absolute;left:10px;right:10px}.file-icon span{top:24px}.file-icon:after{top:34px}.file-icon.complete{box-shadow:inset 0 0 0 999px #ffffff0d}.file-icon.complete:after{content:"✓";background:var(--primary);color:#fff;border-radius:50%;justify-content:center;align-items:center;width:22px;height:22px;font-size:13px;display:flex;top:32px;left:auto;right:-5px}.material-name{font-size:17px;font-weight:600}.material-meta{grid-template-columns:1fr auto;place-items:center end;gap:7px;display:grid}.material-meta .status-chip{grid-column:1/-1;justify-self:end}.progress-line{background:#edf0f0;border-radius:999px;width:76px;height:6px;overflow:hidden}.progress-line i{border-radius:inherit;background:var(--primary);height:100%;display:block}.material-meta em{color:#888;font-size:12px;font-style:normal}.upload-drop{border:2px dashed var(--primary);text-align:center;cursor:pointer;background:#ffffff9e;border-radius:16px;place-items:center;min-height:176px;padding:22px;display:grid}.upload-doc{border:2px solid var(--primary);width:70px;height:70px;color:var(--primary);border-radius:16px;justify-content:center;align-items:center;margin:0 auto 18px;font-size:34px;display:flex}.upload-drop h2{margin:0;font-size:18px}.upload-drop p{color:var(--text-secondary);margin:10px 0 0;font-size:13px}.upload-tip{text-align:center;color:var(--accent);margin:24px 0;font-size:13px}.pay-page .card{border-radius:16px}.pay-amount{padding:20px}.pay-amount>div:first-child{border-bottom:1px solid #ececec;justify-content:space-between;align-items:baseline;padding-bottom:18px;display:flex}.pay-amount span{color:#666;font-weight:600}.pay-amount strong{letter-spacing:-.04em;font-size:31px;font-weight:700}.deadline{justify-content:space-between;align-items:center;padding-top:16px;display:flex}.deadline b{color:var(--accent)}.qr-card{text-align:center;padding:24px 18px}.qr{background:conic-gradient(#111 25%, #fff 0 50%, #111 0 75%, #fff 0), repeating-linear-gradient(45deg, #111 0 5px, #fff 5px 10px);background-blend-mode:difference;border:12px solid #fff;border-radius:16px;width:174px;height:174px;margin:0 auto 16px;box-shadow:0 2px 8px #0000000f}.qr-card p{color:#666;margin:0;font-weight:600}.segmented{box-shadow:none;background:0 0;border-radius:0;grid-template-columns:1fr 1fr;gap:8px;margin:20px 0 0;padding:0;display:grid}.segmented button{border:1px solid var(--border);background:var(--surface);min-height:46px;color:var(--text-secondary);border-radius:14px;font-weight:600}.segmented button.active{border-color:var(--primary);color:#197a66;background:#d7f0e9}.poll-card{color:#666;background:#fff;border-radius:16px;align-items:center;min-height:50px;padding:0 18px;font-size:13px;font-weight:500;display:flex}.success-page{text-align:center;padding:24px 8px 36px}.success-head{padding-top:8px}.success-icon{width:58px;height:58px;color:var(--primary);background:#e5f4f0;border-radius:50%;justify-content:center;align-items:center;margin:0 auto 20px;font-size:30px;font-weight:700;display:flex}.success-page>p{margin-bottom:26px}.result-card{text-align:left;padding:0 18px}.result-card div{border-bottom:1px solid #ececec;justify-content:space-between;align-items:center;gap:16px;min-height:54px;display:flex}.result-card div:last-child{border-bottom:0}.result-card span{color:#666}.result-card b{text-align:right}.success-page>button{margin-top:12px}.shortcut-card{grid-template-columns:1fr 1fr;padding:0;display:grid;overflow:hidden}.shortcut-card button{min-height:70px;color:var(--text-main);background:#fff;border:0;justify-content:center;align-items:center;gap:6px;font-weight:600;display:flex}.shortcut-card button:first-child{border-right:1px solid #ececec}.success-links{grid-template-columns:1fr 1fr;gap:12px;margin-top:24px;display:grid}.success-links button{color:var(--accent);background:0 0;border:0;font-size:15px;font-weight:600}.login-page{text-align:left;min-height:calc(100vh - 56px)}.auth-page{text-align:center}.login-hero{margin-bottom:38px;padding-top:32px}.login-hero h1{letter-spacing:-.01em;margin:0;font-size:32px;font-weight:700;line-height:1.18}.login-hero p{color:var(--text-secondary);margin:10px 0 0;font-size:15px;line-height:1.55}.login-card{gap:14px;margin:0;display:grid}.login-field{border:1px solid var(--border);min-height:50px;color:var(--text-secondary);background:#fff;border-radius:14px;align-items:center;gap:10px;padding:0 14px;font-weight:400;display:flex;position:relative}.login-field input{z-index:1;opacity:1;width:100%;min-width:0;height:48px;color:var(--text-main);background:0 0;border:0;outline:0;flex:1;position:relative}.login-field input::placeholder{color:var(--text-secondary)}.login-field .field-icon{flex:none}.login-field .status-chip{z-index:2;margin-left:auto;position:relative}.login-field--code input{padding-right:4px}.area-row{gap:10px;display:flex}.area-dropdown{flex:1 1 0;min-width:0;position:relative}.area-dropdown__trigger{border:1px solid var(--border);cursor:pointer;-webkit-user-select:none;user-select:none;background:#fff;border-radius:14px;justify-content:space-between;align-items:center;gap:8px;height:50px;padding:0 14px;display:flex}.area-dropdown__trigger.disabled{color:var(--text-secondary);cursor:default}.area-dropdown__text{text-overflow:ellipsis;white-space:nowrap;min-width:0;color:var(--text-main);flex:1;font-size:15px;overflow:hidden}.area-dropdown__trigger.disabled .area-dropdown__text{color:var(--text-secondary)}.area-dropdown__arrow{color:#999;flex:none;font-size:18px;font-style:normal;transition:transform .2s}.area-dropdown__arrow.open{transform:rotate(180deg)}.area-dropdown__list{z-index:30;border:1px solid var(--border);-webkit-overflow-scrolling:touch;background:#fff;border-radius:14px;max-height:240px;position:absolute;top:calc(100% + 4px);left:0;right:0;overflow-y:auto;box-shadow:0 4px 16px #0000001a}.area-dropdown__item{color:var(--text-main);cursor:pointer;padding:12px 14px;font-size:15px}.area-dropdown__item:active{background:#f0f8f6}.area-dropdown__item.active{color:var(--primary);background:#eef7f4;font-weight:600}.area-dropdown__item+.area-dropdown__item{border-top:1px solid #f2f2f2}.login-notice{background:var(--surface);border-radius:16px;justify-content:space-between;align-items:center;gap:12px;margin-top:20px;padding:14px 16px;display:flex}.login-notice p{margin:0;font-size:14px;font-weight:600;line-height:1.4}.login-notice b{background:#fff1ea;border-radius:50%;flex:0 0 28px;justify-content:center;align-items:center;width:28px;height:28px;display:flex}.login-notice p span,.login-notice b{color:var(--accent)}.login-notice small{color:var(--text-secondary);margin-top:5px;font-size:12px;display:block}.login-error{color:var(--danger);margin:0;padding:8px 0 0;font-size:13px;font-weight:600}.record-link{color:var(--accent);background:0 0;border:0;margin:88px auto 0;font-size:16px;font-weight:600;display:block}.record-link:active,.success-links button:active,.draft-link:active{opacity:.72}.face-icon{width:76px;height:76px;color:var(--primary);background:#e4f3ef;border-radius:24px;justify-content:center;align-items:center;margin:0 auto 20px;font-size:32px;font-weight:700;display:flex}.face-icon--checking{background:#eef7f4}.face-icon--ok{color:#197a66;background:#d7f0e9}.face-icon--fail{color:var(--danger);background:#fcebe8}.auth-status-block{text-align:center}.auth-status-block h2{margin:0 0 10px}.auth-fail-reason{color:var(--danger);margin:0 0 8px;font-size:14px;line-height:1.55}.loading-spinner--small{border-width:3px;width:28px;height:28px}.status-chip:disabled{opacity:.6;cursor:not-allowed}.auth-card{margin-top:20px}.auth-page .full+.full{margin-top:12px}.records-page{padding-bottom:18px}.records-page .bottom-bar{border:1px solid var(--border);border-radius:16px;width:100%;max-width:none;margin-top:18px;position:static;transform:none}.records-title{align-items:center;gap:8px;margin-bottom:18px;display:flex}.records-title h1{margin:0;font-size:28px;font-weight:700;line-height:1.18}.search-box{border:1px solid var(--border);height:50px;color:var(--text-muted);background:#fff;border-radius:16px;align-items:center;gap:10px;padding:0 14px;display:flex}.search-box input{width:100%;height:100%;color:var(--text-main);background:0 0;border:0;outline:0}.search-box input::placeholder{color:var(--text-muted)}.filter-row{grid-template-columns:1fr 1fr;gap:12px;margin:12px 0 18px;display:grid}.filter-btn{border:1px solid var(--border);min-height:44px;color:var(--text-main);appearance:none;background:#fff;border-radius:14px;justify-content:center;align-items:center;gap:4px;padding:0 12px;font-size:14px;font-weight:500;display:flex}select.filter-btn{text-align:center;display:block}.filter-btn:active{border-color:var(--primary);background:#edf6f3}.record-card-simple{margin:12px 0}.record-card-simple .row-between>b{text-align:left;font-size:16px}.record-tail{margin-top:14px}.record-tail button{border:0}.plain-next{color:var(--text-main);background:0 0;border:0;font-size:24px}.empty-card{text-align:center;color:var(--text-secondary)}.record-card{margin:12px 0;padding:18px;position:relative}.record-card h2{margin:12px 112px 14px 0;font-size:16px}.record-line{grid-template-columns:72px minmax(0,1fr);gap:12px;margin:9px 0;font-size:13px;display:grid}.record-line span{color:#777}.record-line b{color:#333;font-weight:600}.record-action{border-radius:14px;min-width:82px;min-height:42px;font-weight:600;position:absolute;top:70px;right:18px}.record-action.fill{background:var(--primary);color:#fff;border:0}.record-action.outline{border:1px solid var(--primary);color:var(--primary);background:#fff}.record-warning{color:var(--danger);justify-content:space-between;align-items:center;margin-top:14px;font-size:13px;font-weight:600;display:flex}.record-warning b{font-size:22px}.filter-arrow{margin-left:4px;font-size:12px}.date-picker-panel{background:var(--surface-white);border:1px solid var(--border);border-radius:16px;gap:12px;margin:-8px 0 14px;padding:16px;display:grid}.date-field{color:#555;grid-template-columns:48px 1fr;align-items:center;gap:10px;font-size:14px;font-weight:600;display:grid}.date-field input{border:1px solid var(--border);height:42px;color:var(--text-main);background:#fff;border-radius:12px;outline:none;padding:0 10px;font-size:14px}.date-field input:focus{border-color:var(--focus)}.date-actions{justify-content:flex-end;gap:10px;display:flex}.date-actions .compact{border-radius:10px;min-height:38px;padding:0 16px;font-size:13px}.empty-card p{margin:0 0 6px;font-size:15px;font-weight:600}.empty-card small{color:var(--text-secondary);font-size:13px;display:block}.tip-surface{color:var(--text-secondary);text-align:left;margin-top:18px;font-size:12px;line-height:1.65}.tip-surface span{color:var(--accent);font-weight:600}.auth-actions{gap:12px;margin-top:28px;display:grid}@media (width<=360px){.phone-shell{padding-left:14px;padding-right:14px}.page-header h1,.nav-title h1,.success-page h1,.login-hero h1{font-size:26px}.form-line{grid-template-columns:82px minmax(0,1fr)}.field-error{margin-left:92px}.bottom-bar{padding-left:14px;padding-right:14px}.bottom-bar--draft .draft-link{flex-basis:118px}.material-row{grid-template-columns:46px minmax(0,1fr)}.material-meta{grid-column:2;grid-template-columns:1fr auto;justify-items:start}.record-action{width:100%;margin-top:12px;position:static}}.loading-overlay{z-index:9999;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#ffffffd1;flex-direction:column;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.loading-overlay p{color:var(--text-secondary);margin-top:16px;font-size:15px}.loading-spinner{border:3px solid var(--border);border-top-color:var(--primary);border-radius:50%;width:36px;height:36px;animation:.7s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}
