@font-face{font-family:Bricolage Grotesque Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(./bricolage-grotesque-vietnamese-wght-normal-BUzh504Q.woff2) format("woff2-variations");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Bricolage Grotesque Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(./bricolage-grotesque-latin-ext-wght-normal-CcLUaPy7.woff2) format("woff2-variations");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Bricolage Grotesque Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(./bricolage-grotesque-latin-wght-normal-DLoelf7F.woff2) format("woff2-variations");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(data:font/woff2;base64,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) format("woff2-variations");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(./jetbrains-mono-cyrillic-wght-normal-D73BlboJ.woff2) format("woff2-variations");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(./jetbrains-mono-greek-wght-normal-Bw9x6K1M.woff2) format("woff2-variations");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(./jetbrains-mono-vietnamese-wght-normal-Bt-aOZkq.woff2) format("woff2-variations");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(./jetbrains-mono-latin-ext-wght-normal-DBQx-q_a.woff2) format("woff2-variations");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(./jetbrains-mono-latin-wght-normal-B9CIFXIH.woff2) format("woff2-variations");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--bg:#FBF3E6;--surface:#FFFAF0;--ink:#2A1B14;--ink-muted:#7A6455;--line:#EBDCC6;--accent:#E5502B;--accent-ink:#FFFFFF;--accent-soft:#FBDDD2;--accent-text:#A8381A;--cow:#2E86A8;--success:#2F9E5B;--warning:#E3A008;--danger:#C92A3A;--font-display:"Bricolage Grotesque Variable",system-ui,sans-serif;--font-body:"Bricolage Grotesque Variable",system-ui,sans-serif;--font-mono:"JetBrains Mono Variable",ui-monospace,monospace;--text-xs:12px;--text-sm:14px;--text-md:16px;--text-lg:20px;--text-xl:28px;--text-display:48px;--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:24px;--space-6:32px;--space-7:48px;--space-8:64px;--radius-card:16px;--radius-pill:999px;--radius-key:12px;--shadow-1:0 1px 2px rgba(42,27,20,.1);--shadow-2:0 6px 18px rgba(42,27,20,.16);--shadow-3:0 16px 40px rgba(42,27,20,.24);--dur-fast:.12s;--dur:.22s;--dur-slow:.48s;--ease:cubic-bezier(.2,.8,.2,1);--max-w:520px;--tap:44px;--nav-top:0px;--nav-bottom:calc(var(--tap) + var(--space-5))}@media(prefers-color-scheme:dark){:root{--bg:#1A1210;--surface:#261A16;--ink:#FBEFE0;--ink-muted:#B79F8C;--line:#3B2B24;--accent:#FF6A3D;--accent-ink:#1A0D08;--accent-soft:#4A2418;--accent-text:#FF8A63;--cow:#5BC0E3;--success:#4CC983;--warning:#F2B83A;--danger:#F0636F;--shadow-1:0 1px 2px rgba(0,0,0,.4);--shadow-2:0 6px 18px rgba(0,0,0,.5);--shadow-3:0 16px 40px rgba(0,0,0,.6)}}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;background:var(--bg);color:var(--ink);font-family:var(--font-body);font-size:var(--text-md);line-height:1.4;-webkit-tap-highlight-color:transparent;overscroll-behavior:none}h1,h2,h3{font-family:var(--font-display);margin:0;line-height:1.1;letter-spacing:-.02em}.num{font-family:var(--font-mono);font-variant-numeric:tabular-nums}.container{width:100%;max-width:var(--max-w);margin:0 auto;padding:0 var(--space-4)}.screen{animation:screen-in var(--dur-slow) var(--ease) both;min-height:100%;padding-bottom:calc(var(--tap) + var(--space-7))}@keyframes screen-in{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);height:52px;padding:0 var(--space-5);border:2px solid transparent;border-radius:var(--radius-pill);font:700 var(--text-md) var(--font-display);white-space:nowrap;cursor:pointer;transition:transform var(--dur-fast) var(--ease),background var(--dur-fast),box-shadow var(--dur-fast)}.btn:active:not(:disabled){transform:scale(.97)}.btn:focus-visible,.icon-btn:focus-visible,.tab:focus-visible,.chip:focus-visible,.list-row:focus-visible,.key:focus-visible{outline:3px solid var(--accent);outline-offset:2px}.btn:disabled,.icon-btn:disabled,.chip:disabled,.key:disabled{opacity:.4;cursor:not-allowed}.btn-primary{background:var(--accent);color:var(--accent-ink);box-shadow:0 4px #00000038,var(--shadow-2)}.btn-primary:hover:not(:disabled){filter:brightness(1.07)}.btn-secondary{background:var(--surface);color:var(--ink);border-color:var(--line);box-shadow:var(--shadow-1)}.btn-secondary:hover:not(:disabled){border-color:var(--accent)}.btn-tertiary{background:transparent;color:var(--ink-muted)}.btn-tertiary:hover:not(:disabled){color:var(--ink);background:var(--accent-soft)}.btn-danger{background:var(--danger);color:#fff}.btn-danger:hover:not(:disabled){filter:brightness(1.1)}.icon-btn{display:inline-grid;place-items:center;width:var(--tap);height:var(--tap);border-radius:var(--radius-pill);border:2px solid transparent;background:transparent;color:var(--ink);cursor:pointer;transition:background var(--dur-fast),transform var(--dur-fast)}.icon-btn:hover:not(:disabled){background:var(--accent-soft)}.icon-btn:active:not(:disabled){transform:scale(.92)}.icon-btn.primary{background:var(--accent);color:var(--accent-ink)}.icon-btn.secondary{background:var(--surface);border-color:var(--line)}.icon-btn.danger{color:var(--danger)}.card{background:var(--surface);border:2px solid var(--line);border-radius:var(--radius-card);padding:var(--space-4);box-shadow:var(--shadow-1)}.list-row{display:flex;align-items:center;gap:var(--space-3);min-height:var(--tap);padding:var(--space-3) var(--space-4);border-radius:var(--radius-card);background:var(--surface);border:2px solid var(--line);color:var(--ink);text-align:left;width:100%;font:inherit}button.list-row{cursor:pointer;transition:border-color var(--dur-fast),transform var(--dur-fast)}button.list-row:hover:not(:disabled){border-color:var(--accent)}button.list-row:active:not(:disabled){transform:scale(.99)}button.list-row:disabled{opacity:.5}.field{width:100%;height:52px;padding:0 var(--space-4);border-radius:var(--radius-card);border:2px solid var(--line);background:var(--surface);color:var(--ink);font:600 var(--text-md) var(--font-body)}.field:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 4px var(--accent-soft)}.field-error{color:var(--danger);font-size:var(--text-sm);margin-top:var(--space-1)}.field[aria-invalid=true]{border-color:var(--danger)}.chip{display:inline-flex;align-items:center;gap:var(--space-1);height:36px;padding:0 var(--space-3);border-radius:var(--radius-pill);border:2px solid var(--line);background:var(--surface);color:var(--ink);font:600 var(--text-sm) var(--font-body);cursor:pointer;white-space:nowrap}.chip:hover:not(:disabled){border-color:var(--accent)}.chip:active:not(:disabled){transform:scale(.96)}.chip[aria-pressed=true]{background:var(--accent);color:var(--accent-ink);border-color:var(--accent)}.tabbar{position:fixed;left:0;right:0;bottom:0;z-index:20;display:flex;justify-content:center;gap:var(--space-1);padding:var(--space-2) var(--space-3) calc(var(--space-2) + env(safe-area-inset-bottom));background:color-mix(in srgb,var(--surface) 92%,transparent);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-top:2px solid var(--line)}.tab{flex:1;max-width:120px;min-height:var(--tap);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;border:0;background:transparent;border-radius:var(--radius-card);color:var(--ink-muted);font:600 var(--text-xs) var(--font-body);cursor:pointer;transition:color var(--dur-fast),background var(--dur-fast)}.tab:hover{color:var(--ink)}.tab:active{transform:scale(.95)}.tab[aria-current=page]{color:var(--accent-text);background:var(--accent-soft)}@media(min-width:1024px){:root{--nav-top:64px;--nav-bottom:0px}.tabbar{top:0;bottom:auto;height:calc(var(--nav-top) + env(safe-area-inset-top));align-items:center;padding:env(safe-area-inset-top) var(--space-5) 0;border-top:0;border-bottom:2px solid var(--line)}.tab{flex:0 0 auto;max-width:none;flex-direction:row;gap:var(--space-2);padding:0 var(--space-4);font-size:var(--text-sm)}}.empty{display:grid;justify-items:center;text-align:center;gap:var(--space-3);padding:var(--space-6) var(--space-4)}.empty .circle{width:96px;height:96px;border-radius:50%;background:var(--accent-soft);display:grid;place-items:center;color:var(--accent)}.empty h3{font-size:var(--text-lg)}.empty p{margin:0;color:var(--ink-muted)}.skeleton{border-radius:var(--radius-card);background:linear-gradient(90deg,var(--line) 25%,var(--surface) 50%,var(--line) 75%);background-size:200% 100%;animation:shimmer 1.2s linear infinite}@keyframes shimmer{to{background-position:-200% 0}}.toast{position:fixed;left:50%;bottom:calc(var(--tap) + var(--space-7));transform:translate(-50%);z-index:60;background:var(--ink);color:var(--bg);padding:var(--space-3) var(--space-5);border-radius:var(--radius-pill);font-weight:600;box-shadow:var(--shadow-3);max-width:calc(100vw - 32px)}.key{height:56px;border-radius:var(--radius-key);border:2px solid var(--line);background:var(--surface);color:var(--ink);font:700 var(--text-lg) var(--font-mono);box-shadow:0 3px 0 var(--line);cursor:pointer;transition:transform var(--dur-fast),background var(--dur-fast)}.key:hover:not(:disabled){border-color:var(--accent)}.key:active:not(:disabled){transform:translateY(3px);box-shadow:none}.key[data-mark=out]{opacity:.35;text-decoration:line-through}.key[data-mark=in]{border-color:var(--success);color:var(--success)}.key[data-mark=maybe]{border-color:var(--warning)}.peg{--peg-size:clamp(22px,7.6vw,30px);display:inline-grid;place-items:center;flex:0 1 var(--peg-size);width:var(--peg-size);min-width:0;height:auto;aspect-ratio:1/1;max-width:30px;border-radius:50%;font-size:calc(var(--peg-size)*.53);line-height:1;overflow:hidden;border:2px solid var(--ink)}.peg-bull{background:var(--accent-soft)}.peg-cow{background:color-mix(in srgb,var(--cow) 22%,var(--surface))}.peg-none{border-color:var(--line);background:transparent}.slot{width:64px;height:76px;border-radius:var(--radius-key);border:3px solid var(--ink);background:var(--surface);display:grid;place-items:center;font:800 40px var(--font-mono);box-shadow:var(--shadow-2)}.slot[data-active=true]{border-color:var(--accent);box-shadow:0 0 0 5px var(--accent-soft)}.sheet{position:fixed;inset:0;z-index:50;display:grid;place-items:center;padding:var(--space-4);background:#1a121099;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.sheet>.card{width:100%;max-width:var(--max-w);max-height:92vh;overflow:auto;box-shadow:var(--shadow-3)}@keyframes shake{0%,to{transform:translate(0)}20%{transform:translate(-8px)}40%{transform:translate(8px)}60%{transform:translate(-5px)}80%{transform:translate(5px)}}.shake{animation:shake var(--dur-slow) var(--ease)}@keyframes breathe{0%,to{transform:scale(1)}50%{transform:scale(1.03)}}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}
