:root{--c-primary:#1f517c;--c-primary-soft:#e9eef2;--c-primary-line:#9eb3c6;--c-primary-faint:#d9e1e9;--c-primary-pale:#ecf0f4;--c-bg:#f6f3ec;--c-card:#fff;--c-ink:#2b2a33;--c-ink-2:#4a4650;--c-mut:#66616b;--c-tab:#8a8590;--c-line:#e7e1d4;--c-line-2:#d9d2c3;--c-ok:#00694a;--c-ok-bg:#e3f2ec;--c-warn:#7a4b0b;--c-warn-bg:#fbf1de;--c-err:#8e2c2c;--c-err-bg:#f8e3e1;--c-err-line:#b42318;--c-neutral-bg:#ece7dc;--c-scan-1:#141318;--c-scan-2:#26252c;--font-sans:"Noto Sans TC", system-ui, sans-serif;--font-serif:"Noto Serif TC", "Songti TC", serif;--app-max:480px;--tabbar-h:68px;--safe-bottom:env(safe-area-inset-bottom,0px);--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}*{box-sizing:border-box}html,body{background:var(--c-bg);min-height:100%;color:var(--c-ink);font-family:var(--font-sans);-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent;margin:0}html[lang=en] body{font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif}button{cursor:pointer;font-family:inherit}#root{min-height:100dvh}.app{max-width:var(--app-max);background:var(--c-bg);flex-direction:column;min-height:100dvh;margin:0 auto;display:flex;position:relative}.page{flex-direction:column;flex:1;display:flex}.page.has-tabs{padding-bottom:calc(var(--tabbar-h) + var(--safe-bottom))}.serif{font-family:var(--font-serif)}.mut{color:var(--c-mut)}.st{box-shadow:0 0 0 1px var(--c-line);object-fit:cover;background:#fff;border-radius:50%;flex-shrink:0;display:block}.btn{cursor:pointer;border-radius:14px;justify-content:center;align-items:center;gap:8px;width:100%;height:52px;font-family:inherit;font-size:16px;font-weight:500;text-decoration:none;display:flex}.btn-p{background:var(--c-primary);color:#fff;border:none}.btn-s{color:var(--c-ink);border:1px solid var(--c-line-2);background:#fff}.btn-w{color:var(--c-primary);background:#fff;border:none}.btn-o{color:#fff;border:1px solid var(--c-primary-line);background:0 0}.card{background:var(--c-card);border:1px solid var(--c-line);border-radius:18px}.bar{height:56px;color:var(--c-mut);border-bottom:1px solid var(--c-line);flex-shrink:0;justify-content:space-between;align-items:center;padding:0 20px;font-size:14px;display:flex}.bar.back{padding:0 20px 0 8px}.chip{border-radius:999px;align-items:center;gap:6px;padding:4px 12px;font-size:13px;font-weight:500;display:inline-flex}.ttl{font-family:var(--font-serif);margin:0;font-size:26px;font-weight:700;line-height:1.35}.sub{color:var(--c-mut);white-space:pre-line;margin:8px 0 0;font-size:15px;line-height:1.7}.ban{border-radius:14px;padding:12px 14px;font-size:14px;line-height:1.6}.b-warn{background:var(--c-warn-bg);color:var(--c-warn)}.b-err{background:var(--c-err-bg);color:var(--c-err)}.b-info{background:var(--c-primary-soft);color:var(--c-primary)}.b-ok{background:var(--c-ok-bg);color:var(--c-ok)}.inp{border:1px solid var(--c-line-2);width:100%;height:52px;color:var(--c-ink);background:#fff;border-radius:14px;padding:0 16px;font-family:inherit;font-size:16px}.inp:focus{outline:2px solid var(--c-primary);outline-offset:1px}.inp.bad{border:2px solid var(--c-err-line)}select.inp{appearance:none;background:#fff url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 24 24' fill='none' stroke='%232B2A33' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E") right 16px center no-repeat;padding-right:44px}.lbl{margin-bottom:8px;font-size:14px;font-weight:500;display:block}.errt{color:var(--c-err-line);margin-top:6px;font-size:13px}button:disabled{cursor:default}.btn:disabled{opacity:.55}.kv{justify-content:space-between;gap:12px;font-size:15px;display:flex}.kv>:first-child{white-space:nowrap;flex-shrink:0}.kv>:last-child{overflow-wrap:anywhere;text-align:right;min-width:0}.icb{border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:88px;height:88px;display:flex}.body{flex-direction:column;flex:1;padding:24px;display:flex}.ctr{text-align:center;align-items:center}.foot{flex-direction:column;gap:10px;width:100%;margin-top:auto;padding-top:20px;display:flex}.ib{width:44px;height:44px;color:var(--c-ink);background:0 0;border:none;justify-content:center;align-items:center;padding:0;display:flex}.photo-ph{background:var(--c-line);height:160px;color:var(--c-mut);border-radius:16px;justify-content:center;align-items:center;font-size:14px;display:flex;overflow:hidden}.photo{background:var(--c-line);border-radius:16px;width:100%;height:auto;display:block}.tabs{width:100%;max-width:var(--app-max);z-index:20;height:calc(var(--tabbar-h) + var(--safe-bottom));padding-bottom:var(--safe-bottom);border-top:1px solid var(--c-line);background:#fff;grid-template-columns:repeat(5,minmax(0,1fr));display:grid;position:fixed;bottom:0;left:50%;transform:translate(-50%)}.tab{color:var(--c-tab);background:0 0;border:none;flex-direction:column;justify-content:center;align-items:center;gap:3px;min-height:44px;font-size:12px;text-decoration:none;display:flex}.tab.on{color:var(--c-primary);font-weight:500}.tab.scan{color:var(--c-primary);justify-content:flex-end;padding-bottom:8px;font-weight:500}.tab.scan .fab{background:var(--c-primary);color:#fff;border:4px solid #fff;border-radius:50%;justify-content:center;align-items:center;width:58px;height:58px;margin-top:-30px;display:flex;box-shadow:0 6px 16px #1f517c4d}.sheet-bg{z-index:40;background:#2b2a338c;flex-direction:column;justify-content:flex-end;align-items:center;display:flex;position:fixed;inset:0}.sheet{width:100%;max-width:var(--app-max);max-height:82%;padding:8px 22px calc(28px + var(--safe-bottom));color:var(--c-ink);background:#fff;border-radius:24px 24px 0 0;animation:.25s ease-out both sheetup;overflow-y:auto}@keyframes sheetup{0%{opacity:0;transform:translateY(40px)}to{opacity:1;transform:none}}@keyframes stampin{0%{opacity:0;filter:blur(2px);transform:scale(1.7)rotate(0)}55%{opacity:1;filter:blur();transform:scale(.93)rotate(-7deg)}75%{transform:scale(1.02)rotate(-5deg)}to{transform:scale(1)rotate(-5deg)}}@keyframes fadein{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}.stampin{animation:.9s cubic-bezier(.2,.8,.3,1) both stampin}.fadein{animation:.4s ease-out .75s both fadein}@media (prefers-reduced-motion:reduce){.stampin,.fadein,.sheet{animation:none}}.sr-only{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}
