:root{--bg: #fff7e8;--panel: #ffffff;--ink: #25313c;--ink-soft: #46535f;--muted: #6f7c87;--primary: #ff9f1c;--primary-dark: #e88700;--primary-soft: #fff1dc;--green: #7ccf7a;--green-soft: #e7f6e7;--blue: #5ab3ff;--blue-soft: #e8f3ff;--red: #ff6b6b;--red-soft: #ffecec;--purple: #a88beb;--purple-soft: #f1ebfb;--tile: #f4dfb8;--line: #f0e6d2;--road: #cfd6dc;--water: #bfe3f7;--forest: #a9d9a0;--shadow: 0 10px 30px rgba(37, 49, 60, .12);--elev-1: 0 2px 8px rgba(37, 49, 60, .08);--elev-2: 0 6px 18px rgba(37, 49, 60, .1);--radius-xl: 24px;--radius-md: 14px;--radius-sm: 10px;--ease-pop: cubic-bezier(.34, 1.56, .64, 1);--ease-out: cubic-bezier(.22, 1, .36, 1);--safe-top: env(safe-area-inset-top, 0px);--safe-bottom: env(safe-area-inset-bottom, 0px)}*{box-sizing:border-box}html,body{margin:0;padding:0;height:100%}body{background:var(--bg);color:var(--ink);font-family:Rubik,Heebo,Assistant,system-ui,sans-serif;font-size:16px;line-height:1.5;-webkit-font-smoothing:antialiased;overscroll-behavior-y:contain}h1,h2,h3{line-height:1.2;margin:0}button{font-family:inherit;cursor:pointer;border:none;background:none;color:inherit;font-size:inherit}input{font-family:inherit;font-size:16px}.num{unicode-bidi:plaintext;font-variant-numeric:tabular-nums}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:48px;padding:10px 22px;border-radius:var(--radius-md);font-weight:700;font-size:16px;transition:transform 80ms ease,box-shadow 80ms ease;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent}.btn:active{transform:translateY(1px) scale(.97)}.btn-primary{background:var(--primary);color:#fff;border-bottom:3px solid var(--primary-dark);box-shadow:var(--elev-2)}.btn-primary:active{border-bottom-width:1px}.btn-secondary{background:var(--panel);color:var(--ink);border:2px solid var(--line)}.btn-danger{background:var(--red-soft);color:var(--red);border:2px solid var(--red)}.btn-ghost{color:var(--muted);min-height:44px}.btn:disabled{opacity:.45;pointer-events:none}.card{background:var(--panel);border-radius:var(--radius-md);box-shadow:var(--elev-2);padding:16px}.field{margin-block-end:14px}.field label{display:block;font-size:13px;color:var(--ink-soft);margin-block-end:4px;font-weight:600}.field input{width:100%;height:48px;padding:0 14px;border:2px solid var(--line);border-radius:var(--radius-sm);background:var(--panel);color:var(--ink);outline:none}.field input:focus{border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-soft)}.field .err{color:var(--red);font-size:13px;margin-block-start:4px}.banner-error{background:var(--red-soft);color:var(--red);border-radius:var(--radius-sm);padding:10px 14px;font-size:14px;margin-block-end:12px}@keyframes pop-in{0%{transform:scale(0)}70%{transform:scale(1.1)}to{transform:scale(1)}}@keyframes float-up{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(-24px)}}@keyframes slide-up{0%{transform:translateY(100%)}to{transform:translateY(0)}}@keyframes shimmer{0%{background-position:-200% 0}to{background-position:200% 0}}@keyframes pulse-soft{0%,to{transform:scale(1)}50%{transform:scale(1.04)}}@keyframes confetti-fall{0%{transform:translateY(-10px) rotate(0);opacity:1}to{transform:translateY(80vh) rotate(540deg);opacity:0}}.skeleton{background:linear-gradient(100deg,var(--line) 40%,#fff 50%,var(--line) 60%);background-size:200% 100%;animation:shimmer 1.2s linear infinite;border-radius:var(--radius-sm)}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;transition-duration:.01ms!important}}
