:root{--ocean-900:#1d3514;--ocean-800:#274a20;--ocean-700:#35632c;--ocean-600:#4a8039;--indigo-900:#232049;--indigo-700:#302b57;--teal-500:#4a8039;--teal-400:#5c9a48;--sand-50:#f6f8f4;--sand-100:#eef2ea;--ink-900:#1c2418;--ink-600:#4f5b48;--ink-400:#869080;--line:#e3e8de;--white:#ffffff;--radius:12px;--radius-sm:8px;--shadow-sm:0 1px 3px rgba(16,32,46,0.08);--shadow-md:0 4px 16px rgba(16,32,46,0.12);--shadow-lg:0 12px 40px rgba(16,32,46,0.18);--font:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif}*{box-sizing:border-box}body,html{margin:0;padding:0;font-family:var(--font);color:var(--ink-900);background:var(--white);-webkit-font-smoothing:antialiased}a{color:inherit;text-decoration:none}button{font-family:inherit}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:10px 18px;border-radius:var(--radius-sm);border:1px solid transparent;font-size:14px;font-weight:600;cursor:pointer;transition:transform .08s ease,box-shadow .15s ease,background .15s ease}.btn:active{transform:translateY(1px)}.btn-primary{background:var(--indigo-700);color:#fff}.btn-primary:hover{background:var(--indigo-900)}.btn-accent{background:var(--ocean-700);color:#fff}.btn-accent:hover{background:var(--ocean-600)}.btn-ghost{background:transparent;color:var(--ocean-800);border-color:var(--line)}.btn-ghost:hover{background:var(--sand-100)}.btn:disabled{opacity:.55;cursor:not-allowed}.card{background:var(--white);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow-sm)}.muted{color:var(--ink-600)}.scroll::-webkit-scrollbar{width:8px;height:8px}.scroll::-webkit-scrollbar-thumb{background:#cbd5e1;border-radius:8px}.scroll::-webkit-scrollbar-track{background:transparent}@keyframes fadeInUp{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.animate-in{animation:fadeInUp .25s ease both}@keyframes shimmer{0%{background-position:-200px 0}to{background-position:calc(200px + 100%) 0}}@keyframes typingBounce{0%,80%,to{transform:translateY(0);opacity:.4}40%{transform:translateY(-5px);opacity:1}}@keyframes spin{to{transform:rotate(1turn)}}.spinner{width:18px;height:18px;border:2px solid rgba(255,255,255,.4);border-top-color:#fff;border-radius:50%;animation:spin .7s linear infinite}.spinner-dark{border-color:var(--line);border-top-color:var(--ocean-700)}