*,:after,:before{box-sizing:border-box;margin:0;padding:0}:root{--surface:#fafaf9;--ink-1:#111110;--ink-2:#6b6b6a;--ink-3:#a0a09f;--line:#e8e8e7;--line-2:#d4d4d3;--accent:#0d7a6a;--warn:#b45309;--danger:#dc2626;--radius:8px}html{font-size:16px}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Helvetica,Arial,sans-serif;background:var(--surface);color:var(--ink-1);line-height:1.5;-webkit-font-smoothing:antialiased}a{color:inherit}.shell{max-width:920px;margin:0 auto;padding:clamp(24px,5vw,48px) clamp(20px,5vw,32px)}.mono{font-family:SF Mono,ui-monospace,Cascadia Code,monospace}.btn{display:inline-flex;align-items:center;gap:6px;padding:7px 14px;border-radius:var(--radius);font-size:14px;font-weight:500;border:1px solid var(--line-2);background:#fff;color:var(--ink-1);cursor:pointer;text-decoration:none;transition:background .1s,border-color .1s;white-space:nowrap}.btn:hover{background:#f5f5f4;border-color:#c4c4c3}.btn-primary{background:var(--accent);color:#fff;border-color:var(--accent)}.btn-primary:hover{background:#0a6659;border-color:#0a6659}.btn-sm{padding:4px 10px;font-size:13px}.btn-danger{color:var(--danger);border-color:#fca5a5}.btn-danger:hover{background:#fef2f2}.card{background:#fff;border:1px solid var(--line);border-radius:var(--radius)}.field{display:flex;flex-direction:column;gap:5px}.field label{font-size:13px;font-weight:500;color:var(--ink-2)}.input{padding:8px 10px;border:1px solid var(--line-2);border-radius:6px;font-size:14px;color:var(--ink-1);background:#fff;outline:none;width:100%;transition:border-color .1s}.input:focus{border-color:var(--accent)}.input[type=file]{padding:6px 8px}.alert{padding:12px 14px;border-radius:var(--radius);font-size:14px;border:1px solid transparent}.alert-error{background:#fef2f2;border-color:#fca5a5;color:#991b1b}.alert-warn{background:#fffbeb;border-color:#fcd34d;color:#92400e}.spinner{display:inline-block;width:14px;height:14px;border:2px solid hsla(0,0%,100%,.4);border-top-color:#fff;border-radius:50%;animation:spin .6s linear infinite}@keyframes spin{to{transform:rotate(1turn)}}.strong{font-weight:600}