:root{--bg: #f3eee6;--bg-outside: #e4dcd0;--paper: rgba(255, 252, 248, .72);--ink: #241e1a;--muted: #6d645c;--faint: #8a8076;--line: rgba(36, 30, 26, .1);--clay: #9a4e32;--shadow: 0 20px 50px rgba(70, 46, 28, .08);--serif: "Iowan Old Style", Palatino, "Palatino Linotype", Georgia, serif;--sans: "Avenir Next", "Segoe UI", sans-serif;color:var(--ink);background:var(--bg-outside);font-family:var(--sans);font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased}*{box-sizing:border-box}html,body,#root{min-height:100%}body{margin:0;background:var(--bg-outside)}button,input{font:inherit;color:inherit}button{touch-action:manipulation}.app{width:min(100%,430px);height:100dvh;margin:0 auto;background:radial-gradient(900px 420px at 70% -10%,rgba(255,255,255,.85),transparent 55%),var(--bg);display:flex;flex-direction:column;position:relative;overflow:hidden}.top{display:flex;justify-content:space-between;align-items:flex-end;padding:calc(18px + env(safe-area-inset-top)) 22px 0}.brand,.brand-sub,.flag,.kicker,.hero-label,.candidate-label,.unconfirmed{margin:0;letter-spacing:.16em;text-transform:uppercase}.brand{font-size:13px;font-weight:650}.brand-sub,.flag{margin-top:4px;color:var(--faint);font-size:10px}.sheet{flex:1;overflow-y:auto;padding:28px 22px 24px}.hello{margin:8px 0 0;font-family:var(--serif);font-size:46px;font-weight:500;letter-spacing:-.03em;line-height:.95}.kicker{margin:28px 0 14px;color:var(--muted);font-size:11px}.hero{width:100%;text-align:left;border:0;border-radius:26px;padding:22px 22px 20px;background:var(--paper);box-shadow:var(--shadow);display:flex;flex-direction:column;gap:6px}.hero-name,.case-name,.understand-title{font-family:var(--serif);font-weight:500;letter-spacing:-.03em}.hero-name{font-size:34px;line-height:1}.hero-age,.case-age{margin:0;color:var(--muted);font-size:14px}.hero-label{margin-top:16px;color:var(--clay);font-size:10px}.hero-fact{margin-top:4px;font-size:22px;line-height:1.25;font-weight:600}.hero-next,.hero-when{color:var(--muted);font-size:15px;line-height:1.4}.hero-when{margin-top:8px}.quiet{list-style:none;margin:26px 0 0;padding:0}.quiet li{padding:16px 2px;border-top:1px solid var(--line)}.quiet-name,.quiet-note{margin:0}.quiet-name{font-size:16px}.quiet-note{margin-top:3px;color:var(--muted);font-size:14px}.reset{margin:22px auto 0;display:block;border:0;background:transparent;color:var(--faint);font-size:12px;letter-spacing:.08em;text-transform:uppercase;min-height:44px}.dock{flex-shrink:0;padding:12px 18px calc(14px + env(safe-area-inset-bottom));background:linear-gradient(to top,var(--bg) 78%,rgba(243,238,230,0))}.dock-stack{display:flex;flex-direction:column;gap:8px}.primary,.text-action,.back,.record{cursor:pointer}.primary{width:100%;min-height:64px;border:0;border-radius:18px;background:var(--ink);color:#f6f1ea;display:flex;align-items:center;justify-content:center;gap:10px;font-size:14px;font-weight:650;letter-spacing:.14em;text-transform:uppercase}.primary:active{transform:translateY(1px)}.mic{width:18px;height:18px}.text-action{width:100%;min-height:48px;border:0;background:transparent;color:var(--muted);letter-spacing:.12em;text-transform:uppercase;font-size:13px}.back{border:0;background:transparent;padding:0 0 8px;min-height:44px;color:var(--muted);letter-spacing:.12em;text-transform:uppercase;font-size:12px}.case-name{margin:6px 0 0;font-size:42px;line-height:.95}.block{margin-top:32px}.block h2,.candidate-label,.unconfirmed{margin:0;color:var(--muted);font-size:11px;font-weight:600;letter-spacing:.16em;text-transform:uppercase}.facts{list-style:none;margin:14px 0 0;padding:0}.facts li{padding:13px 0;border-top:1px solid var(--line);font-size:17px;line-height:1.35}.visit{margin-top:16px;padding-top:14px;border-top:1px solid var(--line)}.visit header{display:flex;justify-content:space-between;gap:12px;align-items:baseline}.visit h3,.visit header p,.visit-body,.provenance{margin:0}.visit h3{font-size:18px;font-weight:600}.visit header p,.provenance{color:var(--muted);font-size:14px}.visit-body{margin-top:8px;font-size:16px;line-height:1.45}.provenance{margin-top:10px;display:flex;gap:10px;font-size:12px;letter-spacing:.08em;text-transform:uppercase}.capture{min-height:62dvh;display:flex;flex-direction:column;align-items:center;justify-content:flex-end;text-align:center;padding-bottom:12px}.capture-status,.sorting{margin:0;font-family:var(--serif);font-size:34px;line-height:1.15;letter-spacing:-.03em}.capture-hint,.timer,.stop-offer{margin:10px 0 0;color:var(--muted)}.timer{font-variant-numeric:tabular-nums;font-size:22px;letter-spacing:.08em;color:var(--ink)}.record{margin-top:28px;width:112px;height:112px;border-radius:50%;border:0;background:var(--ink);display:grid;place-items:center}.record span{width:28px;height:28px;border-radius:50%;background:#f3eee6}.record.is-live{background:transparent;box-shadow:0 0 0 1px var(--ink)}.record.is-live span{width:26px;height:26px;border-radius:6px;background:var(--clay);animation:pulse 1.4s ease-in-out infinite}.record:disabled{cursor:default;opacity:1}.stop-offer{letter-spacing:.12em;text-transform:uppercase;font-size:12px}.capture-status.is-live{color:var(--clay)}.understand-title{margin:0;font-size:38px;line-height:.98}.candidate-note{margin:12px 0 0;color:var(--muted);font-size:15px}.cards{display:flex;flex-direction:column;gap:12px;margin-top:22px}.candidate{padding:16px 16px 14px;border-radius:18px;background:#fffcf88c}.candidate h2{margin:8px 0 0;font-size:20px;font-weight:600;line-height:1.3}.candidate p{margin:6px 0 0;color:var(--muted);line-height:1.4}.unconfirmed{margin-top:12px;color:var(--faint);font-size:10px}.edit{width:100%;margin-top:8px;border:0;border-bottom:1px solid var(--line);background:transparent;padding:8px 0;font-size:18px}.taken{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:16px;background:#f3eee6f0;animation:fade .88s ease}.taken p{margin:0;font-family:var(--serif);font-size:32px}.taken-mark{width:18px;height:18px;border-radius:50%;background:var(--clay)}@keyframes pulse{50%{transform:scale(.86)}}@keyframes fade{0%{opacity:0}to{opacity:1}}@media(prefers-reduced-motion:reduce){.record.is-live span,.taken{animation:none}}
