*{margin:0;padding:0;box-sizing:border-box;font-family:var(--font);-webkit-tap-highlight-color:transparent}
html,body{height:100%}
body{background:var(--bg-0);color:var(--text)}
button{border:none;cursor:pointer;background:none;color:inherit;touch-action:manipulation;font-family:inherit}
a{color:inherit;text-decoration:none}
::-webkit-scrollbar{width:6px;height:6px}
::-webkit-scrollbar-thumb{background:var(--bg-2);border-radius:10px}
::-webkit-scrollbar-track{background:transparent}
::selection{background:var(--accent);color:var(--on-accent)}
.card{background:var(--bg-1);border:1px solid var(--border);border-radius:16px;padding:20px}
.field{text-align:left;margin-bottom:14px}
.field label{display:block;font-size:12px;color:var(--text-dim);margin-bottom:6px}
.field input,.field textarea,.field select{width:100%;padding:12px 14px;border-radius:var(--radius-sm);border:1px solid var(--border);background:var(--bg-2);color:var(--text);font-size:14px;outline:none;font-family:var(--font)}
.field input:focus,.field textarea:focus,.field select:focus{border-color:var(--accent)}
.field select{appearance:none;-webkit-appearance:none;-moz-appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='M1 1l5 5 5-5' stroke='%23888' stroke-width='1.5' fill='none' stroke-linecap='round'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 14px center;padding-right:36px;cursor:pointer}
.field select option{background:var(--bg-1);color:var(--text)}
textarea{resize:vertical;min-height:80px}
.btn{padding:13px 20px;border-radius:var(--radius-sm);background:var(--accent);color:var(--on-accent);font-weight:600;font-size:14px;cursor:pointer;border:none;transition:filter .15s ease,transform .1s ease}
.btn:hover{filter:brightness(1.08)}
.btn:active{transform:scale(.98)}
.btn.secondary{background:var(--bg-2);border:1px solid var(--border);color:var(--text)}
.btn.small{padding:9px 16px;font-size:13px}
.btn.block{width:100%}
.msg{font-size:13px;margin-top:12px;min-height:16px;color:var(--text-dim)}
.msg.error{color:var(--accent)}
.msg.success{color:#2ecc71}
.skeleton{border-radius:var(--radius-md);background:linear-gradient(90deg,var(--bg-1) 25%,var(--bg-2) 37%,var(--bg-1) 63%);background-size:400% 100%;animation:shimmer 1.4s ease infinite}
@keyframes shimmer{0%{background-position:100% 0}100%{background-position:0 0}}
.empty{text-align:center;color:var(--text-dim);font-size:14px;padding:40px 0}
.live-dot{width:7px;height:7px;border-radius:50%;background:currentColor;display:inline-block;animation:pulse 1.4s infinite}
@keyframes pulse{0%,100%{opacity:.5}50%{opacity:1}}
@media(prefers-reduced-motion:reduce){.live-dot,.skeleton{animation:none!important}}
