:root{--bg: #fafaf7;--bg-elev: #ffffff;--bg-muted: #f1efe9;--ink: #14140f;--ink-2: #3a3a32;--ink-3: #76746b;--ink-4: #b8b6ac;--line: #e7e4dc;--line-2: #d8d4ca;--accent: oklch(.45 .08 145);--accent-ink: #ffffff;--accent-soft: oklch(.94 .03 145);--warn: oklch(.65 .14 50);--radius: 14px;--radius-sm: 10px;--radius-lg: 22px;--shadow-1: 0 1px 2px rgba(20,20,15,.04), 0 1px 1px rgba(20,20,15,.03);--shadow-2: 0 8px 24px -8px rgba(20,20,15,.12), 0 2px 6px rgba(20,20,15,.05);--serif: "Fraunces", "Times New Roman", serif;--sans: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body,#root{height:100%}body{margin:0;font-family:var(--sans);color:var(--ink);background:#ece9e1;font-size:15px;line-height:1.4;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}button{font-family:inherit;cursor:pointer;border:0;background:none;color:inherit;padding:0}input,select,textarea{font-family:inherit;font-size:inherit;color:inherit}.app-shell{width:100%;max-width:440px;margin:0 auto;height:100dvh;background:var(--bg);position:relative;overflow:hidden;display:flex;flex-direction:column;box-shadow:0 30px 80px -20px #0000002e}@media (min-width: 480px){body{display:flex;align-items:center;justify-content:center;padding:24px 0}.app-shell{width:440px;flex:0 0 440px;height:min(900px,calc(100dvh - 48px));border-radius:28px}}.ph{position:relative;background:repeating-linear-gradient(135deg,#e6e3da 0,#e6e3da 8px,#ddd9ce 8px,#ddd9ce 16px);color:var(--ink-3);display:flex;align-items:center;justify-content:center;font-family:ui-monospace,SF Mono,Menlo,monospace;font-size:10px;letter-spacing:.04em;text-transform:lowercase;overflow:hidden}.ph:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(180deg,#fff3,#0000000a);pointer-events:none}.ph span{position:relative;z-index:1;padding:4px 8px;background:#ffffffb3;border-radius:4px}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:14px 20px;border-radius:999px;font-weight:600;font-size:15px;letter-spacing:-.005em;transition:transform .12s ease,background .15s ease,opacity .15s ease;min-height:48px;white-space:nowrap}.btn:active{transform:scale(.97)}.btn-primary{background:var(--ink);color:#fff}.btn-primary:hover{background:#000}.btn-accent{background:var(--accent);color:var(--accent-ink)}.btn-ghost{background:transparent;color:var(--ink-2)}.btn-outline{background:transparent;color:var(--ink);border:1px solid var(--line-2)}.btn-block{width:100%}.btn:disabled{opacity:.35;cursor:not-allowed}.field{display:flex;flex-direction:column;gap:6px}.field label{font-size:13px;color:var(--ink-3);font-weight:500}.input{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:1px solid var(--line);background:var(--bg-elev);border-radius:var(--radius);padding:14px 16px;font-size:16px;color:var(--ink);outline:none;transition:border-color .15s ease,box-shadow .15s ease}.input:focus{border-color:var(--ink);box-shadow:0 0 0 4px #14140f0f}.chip{display:inline-flex;align-items:center;gap:6px;padding:8px 14px;border-radius:999px;background:var(--bg-elev);border:1px solid var(--line);color:var(--ink-2);font-size:13px;font-weight:500;white-space:nowrap;transition:all .15s ease}.chip[data-active=true]{background:var(--ink);color:#fff;border-color:var(--ink)}.chip-sm{padding:4px 10px;font-size:11px}.scroll-x{display:flex;gap:8px;overflow-x:auto;scrollbar-width:none;-ms-overflow-style:none;padding:0 16px}.scroll-x::-webkit-scrollbar{display:none}.scroll-y{overflow-y:auto;scrollbar-width:thin;-webkit-overflow-scrolling:touch}:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:4px}.serif{font-family:var(--serif);font-weight:500;letter-spacing:-.02em}.muted{color:var(--ink-3)}.tiny{font-size:11px;letter-spacing:.04em;text-transform:uppercase;color:var(--ink-3);font-weight:600}@keyframes ts-fadeUp{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}@keyframes ts-fade{0%{opacity:0}to{opacity:1}}@keyframes ts-slideUp{0%{transform:translateY(100%)}to{transform:translateY(0)}}
