:root{--ink:#12211c;--paper:#f3efe4;--fox:#d9541f;--fox-dim:#b8461a;--sage:#5b7a6c;--sage-dim:#3d5449;--text:#1c1c1c;--text-on-dark:#f3efe4;--card-bg:#fff;--card-border:rgba(18,33,28,.12);--danger:#b23a2f;--success:#2f7a4f;--shadow:0 1px 2px rgba(18,33,28,.06),0 8px 24px rgba(18,33,28,.08);--radius:14px;--font-display:"Newsreader",Georgia,serif;--font-ui:"Manrope",-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif}:root[data-theme=dark]{--paper:#0f1a16;--text:#f3efe4;--card-bg:#17251f;--card-border:hsla(44,38%,92%,.12);--sage:#8fa89b}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--paper:#0f1a16;--text:#f3efe4;--card-bg:#17251f;--card-border:hsla(44,38%,92%,.12);--sage:#8fa89b}}*{box-sizing:border-box}body,html{padding:0;margin:0}body{background:var(--paper);color:var(--text);font-family:var(--font-ui);-webkit-font-smoothing:antialiased;min-height:100vh}h1,h2,h3{font-family:var(--font-display);font-weight:500;line-height:1.15;margin:0}a{color:inherit}button{cursor:pointer}button,input,select,textarea{font-family:var(--font-ui)}a:focus-visible,button:focus-visible,input:focus-visible,textarea:focus-visible{outline:2px solid var(--fox);outline-offset:2px}.btn{border:none;border-radius:999px;padding:.7rem 1.5rem;font-weight:600;font-size:.95rem;transition:transform .12s ease,opacity .12s ease}.btn:active{transform:scale(.97)}.btn-primary{background:var(--fox);color:#fff}.btn-primary:hover{background:var(--fox-dim)}.btn-ghost{background:transparent;color:var(--text);border:1px solid var(--card-border)}.btn-danger{background:var(--danger);color:#fff}.btn:disabled{opacity:.5;cursor:not-allowed}.field{display:flex;flex-direction:column;gap:.35rem;margin-bottom:1rem}.field label{font-size:.85rem;color:var(--sage);font-weight:600}.field input,.field select,.field textarea{border:1px solid var(--card-border);border-radius:10px;padding:.65rem .8rem;font-size:1rem;background:var(--card-bg);color:var(--text)}.card{background:var(--card-bg);border:1px solid var(--card-border);border-radius:var(--radius);box-shadow:var(--shadow)}.error-text{color:var(--danger);font-size:.85rem}@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}