:root{--paper: #FCFCF8;--ink: #083D44;--teal: #026370;--lime: #E5FF97;--body: #1A1F1E;--muted: #6B7370;--note: #3A5559;--white: #FFFFFF;--border: #E4E6DC;--inset: #F3F4EE;--danger: #B42318;--ghost: #C9D0C8;--disabled: #ECEEE8;--disabled-text: #9AA19C;--on-primary: #FFFFFF;--touch: 44px;--radius: 8px;--space: 16px;--ui: "PingFang SC", "Hiragino Sans GB", "Noto Sans CJK SC", "Source Han Sans SC", sans-serif;--display: "Songti SC", "STSong", "Noto Serif CJK SC", "Source Han Serif SC", Georgia, serif;--plate-shadow: 0 1px 4px rgba(8, 61, 68, .06);--fast: .2s}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{font-family:var(--ui);background:var(--paper);color:var(--body);font-size:15px;line-height:1.55;-webkit-font-smoothing:antialiased}a{color:var(--teal)}button{font:inherit}.app{max-width:430px;margin:0 auto;min-height:100%;min-height:100dvh;background:radial-gradient(ellipse 80% 40% at 50% -6%,rgba(243,244,238,.9),transparent 62%),var(--paper);display:flex;flex-direction:column}.page{flex:1;padding:12px 16px calc(24px + env(safe-area-inset-bottom))}.app.has-tab .page{padding-bottom:calc(72px + env(safe-area-inset-bottom))}.display{font-family:var(--display);font-size:32px;font-weight:400;line-height:1.15;color:var(--ink);margin:0 0 12px}h1,.brand,.title{font-family:var(--display);font-size:20px;font-weight:400;line-height:1.3;color:var(--ink);margin:0 0 12px}.card-title{font-family:var(--ui);font-size:15px;font-weight:600;color:var(--ink);margin:0}.eyebrow{font-size:12px;font-weight:600;line-height:1.4;color:var(--ink);letter-spacing:.04em;margin:0 0 4px}.caption{font-size:13px;color:var(--muted);margin:20px 0 8px}.muted{color:var(--muted);font-size:13px;line-height:1.5}.note{color:var(--note)}.tabular{font-variant-numeric:tabular-nums}.hero{padding:8px 0 20px}.hero .muted{margin-top:8px}.empty{padding:48px 8px 24px;display:flex;flex-direction:column;align-items:stretch}.empty .display{margin-bottom:8px}.empty .muted{margin-bottom:24px}.empty .btn{width:100%}.empty .btn+.btn{margin-top:8px}.error{color:var(--danger);background:var(--inset);padding:12px 16px;border-radius:var(--radius);margin:12px 0;font-size:14px}.plate{background:var(--white);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--plate-shadow);padding:16px;margin:12px 0}.plate>.btn{width:100%;margin-top:8px}.plate .field:first-child{margin-top:0}.plate .field:last-child{margin-bottom:0}.list{background:var(--white);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--plate-shadow);overflow:hidden;margin:12px 0}.list-row{display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:48px;padding:12px 16px;border-bottom:1px solid var(--border);width:100%;background:none;text-align:left;font:inherit;color:inherit;text-decoration:none}.list-row:last-child{border-bottom:0}.list-row .grow{flex:1;min-width:0}.list-row .grow>div:first-child{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.chevron{color:var(--muted);flex-shrink:0;font-size:16px;line-height:1}.unit-row{display:flex;align-items:center;justify-content:space-between;gap:8px;min-height:44px;padding:8px 0;border-bottom:1px solid var(--border)}.unit-row:last-of-type{border-bottom:0}.avatar{width:48px;height:48px;border-radius:50%;background:var(--inset);color:var(--ink);display:flex;align-items:center;justify-content:center;font-family:var(--display);font-size:20px;flex-shrink:0}.profile{display:flex;align-items:center;gap:12px;padding:8px 0 20px}.profile .name{font-weight:600;color:var(--ink);font-size:15px}label.field{display:block;margin:12px 0;font-size:15px}label.field span{display:block;margin-bottom:6px;color:var(--note);font-size:13px}input,textarea,select{width:100%;min-height:40px;border:1px solid var(--border);border-radius:var(--radius);padding:8px 12px;font:inherit;background:var(--inset);color:var(--body)}input:focus,textarea:focus,select:focus{outline:2px solid color-mix(in srgb,var(--teal) 35%,transparent);outline-offset:1px;background:var(--white)}textarea{min-height:120px;resize:vertical}.btn{display:inline-flex;align-items:center;justify-content:center;min-height:var(--touch);padding:0 20px;border-radius:999px;border:0;background:transparent;color:var(--ink);font:inherit;text-decoration:none;cursor:pointer}.btn-primary{background:var(--teal);color:var(--on-primary)}.btn-ghost{background:transparent;color:var(--ink);box-shadow:inset 0 0 0 1px var(--ghost)}.btn-text{background:transparent;color:var(--teal);min-width:var(--touch)}.btn-danger-text{background:none;border:0;color:var(--danger)}.btn-mini{font-size:12px;padding:0 12px;width:auto;flex:0 0 auto}.btn:disabled,.btn-primary:disabled{background:var(--disabled);color:var(--disabled-text);box-shadow:none;cursor:not-allowed}.btn-row{display:flex;gap:8px;margin-top:16px}.btn-row .btn{flex:1}.btn:active:not(:disabled){opacity:.85}.back{padding:0;margin:0 0 8px;justify-content:flex-start}.stack{margin-top:16px}.stack>.btn{width:100%}.stack>.btn+.btn{margin-top:8px}.segment{display:flex;gap:0;background:var(--inset);border-radius:999px;padding:4px;margin:12px 0}.segment button{flex:1;min-height:36px;border:0;background:transparent;border-radius:999px;font:inherit;font-size:14px;color:var(--muted);cursor:pointer}.segment button.on{background:var(--white);color:var(--ink);font-weight:600}.tabbar{position:fixed;left:50%;transform:translate(-50%);bottom:0;width:100%;max-width:430px;display:flex;background:var(--paper);border-top:1px solid var(--border);padding-bottom:env(safe-area-inset-bottom);z-index:5}.tabbar a{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;min-height:48px;padding:6px 0 8px;color:var(--muted);text-decoration:none;font-size:12px;line-height:1.15;position:relative}.tabbar a.on{color:var(--teal);font-weight:600}.tabbar svg{width:22px;height:22px;display:block}.badge{position:absolute;top:4px;right:calc(50% - 22px);min-width:16px;height:16px;padding:0 4px;border-radius:8px;background:var(--danger);color:var(--on-primary);font-size:11px;font-weight:600;line-height:16px;text-align:center}.passage{font-family:var(--display);font-size:18px;line-height:1.85;white-space:pre-wrap;color:var(--ink);max-width:340px}.passage-title{font-size:13px;color:var(--muted);margin-bottom:8px}.record-wrap{display:flex;flex-direction:column;align-items:center;padding:16px 0 8px}.record-btn{width:84px;height:84px;border-radius:50%;border:0;background:var(--lime);color:var(--ink);display:flex;align-items:center;justify-content:center;cursor:pointer}.record-btn svg{width:28px;height:28px}.record-btn.hot{background:var(--teal);color:#fff;animation:pulse 1.4s ease-in-out infinite}.record-btn.done{background:var(--ink);color:#fff}.record-cap{margin-top:8px;font-size:13px;color:var(--muted)}@keyframes pulse{0%,to{transform:scale(1)}50%{transform:scale(1.04)}}@media(prefers-reduced-motion:reduce){.record-btn.hot{animation:none}}.wechat-tip{background:var(--inset);padding:12px 16px;border-radius:var(--radius);font-size:14px;margin:12px 0}.poster{display:block;background:var(--ink);color:var(--on-primary);border-radius:var(--radius);min-height:148px;padding:16px;text-decoration:none;margin:0 0 12px;background-image:linear-gradient(180deg,#0b4a52,#083d44)}.poster .name{font-size:15px;font-weight:600;margin-top:72px}.poster .meta{font-size:13px;opacity:.86;margin-top:4px}.legal{white-space:pre-wrap;font-size:15px;line-height:1.7}.checkin-ok{text-align:center;padding:8px 0 16px;color:var(--ink);font-weight:600}.hint{background:var(--inset);border-radius:var(--radius);padding:12px 16px;font-size:13px;color:var(--note);margin:12px 0}.qr{display:block;margin:12px auto 0;border-radius:var(--radius)}
