:root{--bg:#fafafa;--surface:#fff;--surface-2:#f5f5f5;--text:#262626;--text-mid:#525252;--muted:#a3a3a3;--border:#e5e5e5;--border-strong:#d4d4d4;--yes:#22c55e;--yes-soft:#f0fdf4;--no:#ef4444;--no-soft:#fef2f2;--warn:#92400e;--warn-soft:#fffbeb;--warn-border:#fde68a;--action:#171717;--action-fg:#fff;--link:#007aff;--hero-grad:linear-gradient(135deg,#fff7ed,#fff1f2);--radius:12px;--radius-lg:16px;--shadow:0 4px 14px rgba(0,0,0,.08);--font:"Inter",ui-sans-serif,system-ui,-apple-system,"Segoe UI",Roboto,Helvetica,Arial,sans-serif}*{box-sizing:border-box}body,html{margin:0;padding:0;background:var(--bg);color:var(--text);font-family:var(--font);-webkit-font-smoothing:antialiased}main{max-width:430px;margin:0 auto;padding:24px 16px 48px;min-height:100vh;display:flex;flex-direction:column;gap:16px}.brand{font-size:22px;font-weight:800;letter-spacing:-.02em;color:var(--text)}h1{font-size:24px;line-height:1.2;margin:0}p.lead{color:var(--text-mid);font-size:15px;line-height:1.5;margin:0}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);padding:18px;display:flex;flex-direction:column;gap:14px}.btn,button{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:1px solid transparent;border-radius:var(--radius);padding:14px 18px;font-size:15px;font-weight:600;font-family:inherit;cursor:pointer;text-decoration:none;text-align:center;display:inline-block}.btn-primary{background:var(--action);color:var(--action-fg);box-shadow:var(--shadow)}.btn-primary:hover{filter:brightness(1.15)}.btn-secondary{background:var(--surface);color:var(--text-mid);border-color:var(--border)}.btn-secondary:hover{border-color:var(--border-strong)}button:disabled{opacity:.45;cursor:default;box-shadow:none}.code-box{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;background:var(--surface-2);border:1px solid var(--border);border-radius:10px;padding:12px 14px;font-size:13px;word-break:break-all;color:var(--text-mid)}.row{display:flex;gap:10px;flex-wrap:wrap}.row>*{flex:1 1;min-width:130px}.meta{color:var(--muted);font-size:13px}.error{color:var(--no);font-size:14px}.spacer{flex:1 1}.footnote{color:var(--muted);font-size:12px;line-height:1.5}.input{background:var(--surface);border:1.5px solid var(--border);border-radius:10px;padding:11px 12px;font-size:15px;font-family:inherit;color:var(--text);width:100%}.input:focus{outline:none;border-color:var(--text)}.hero{text-align:center;padding:18px 14px;border-radius:var(--radius-lg);background:var(--hero-grad)}.hero .title{font-size:28px;font-weight:800}.hero .sub{font-size:13px;color:var(--text-mid);margin-top:4px}.chips{display:flex;gap:6px;flex-wrap:wrap}.chip{padding:9px 14px;border-radius:8px;border:1.5px solid var(--border);background:var(--surface);color:var(--text-mid);font-size:13px;font-weight:500;cursor:pointer}.chip.selected{background:var(--action);border-color:var(--action);color:var(--action-fg);font-weight:600}.stepper{display:flex;align-items:center;gap:12px}.stepper button{width:34px;height:34px;padding:0;border-radius:17px;border:1.5px solid var(--border);background:var(--surface);color:var(--text-mid);font-size:17px;line-height:1}.stepper .value{font-size:18px;font-weight:700;min-width:24px;text-align:center}.label{display:block;font-size:12px;font-weight:600;color:var(--text-mid);margin-bottom:6px}.vote-card{background:var(--surface);border:2px solid var(--border);border-radius:var(--radius-lg);overflow:hidden;box-shadow:var(--shadow)}.vote-card .photo{height:150px;background:var(--surface-2);display:flex;align-items:center;justify-content:center;color:var(--muted);font-size:12px;font-family:ui-monospace,monospace;position:relative}.vote-card .counter{position:absolute;top:8px;left:50%;transform:translateX(-50%);padding:2px 10px;border-radius:10px;background:rgba(0,0,0,.5);color:#fff;font-size:10px;font-weight:500}.vote-card .tag{position:absolute;bottom:8px;left:10px;padding:3px 10px;border-radius:6px;background:var(--action);color:var(--action-fg);font-size:10px;font-weight:600}.vote-card .photo-img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}.vote-card .photo-ph-label{color:var(--muted);font-size:12px;font-family:ui-monospace,monospace}.vote-card .photo-hint{left:50%;transform:translateX(-50%);padding:2px 10px;background:rgba(0,0,0,.5);color:#fff;font-size:10px;font-weight:500}.vote-card .photo-dots,.vote-card .photo-hint{position:absolute;bottom:8px;border-radius:10px}.vote-card .photo-dots{right:10px;display:flex;align-items:center;gap:5px;padding:4px 7px;background:rgba(0,0,0,.45)}.vote-card .photo-dot{width:6px;height:6px;border-radius:50%;background:transparent;border:1px solid hsla(0,0%,100%,.75)}.vote-card .photo-dot.on{background:#fff;border-color:#fff}.vote-card .photo-count{position:absolute;bottom:8px;right:10px;padding:3px 8px;border-radius:10px;background:rgba(0,0,0,.45);color:#fff;font-size:10px;font-weight:500}.vote-card .body{padding:12px 14px}.vote-card .name-row{display:flex;justify-content:space-between;align-items:flex-start}.vote-card .name{font-size:17px;font-weight:700}.vote-card .price{font-size:13px;font-weight:600;color:var(--muted)}.vote-card .facts{display:flex;gap:10px;margin-top:3px}.vote-card .desc,.vote-card .facts{font-size:12px;color:var(--text-mid)}.vote-card .desc{margin-top:7px;line-height:1.45}.vote-buttons{display:flex;justify-content:center;gap:22px;padding-top:10px}.vote-btn{width:58px;height:58px;padding:0;border-radius:29px;background:var(--surface);font-size:22px;line-height:1}.vote-btn.no{border:2.5px solid var(--no);color:var(--no)}.vote-btn.yes{border:2.5px solid var(--yes);color:var(--yes)}.dots{display:flex;justify-content:center;gap:5px;margin-top:10px}.dot{width:8px;height:8px;border-radius:4px;background:var(--border-strong)}.dot.current{background:var(--action)}.dot.yes{background:var(--yes)}.dot.no{background:var(--no)}.undo{text-align:center;margin-top:8px}.undo button{background:none;border:none;padding:4px 8px;color:var(--link);font-size:13px;font-weight:500}.progress-ring{flex-direction:column;gap:4px}.progress-ring,.voter-row{display:flex;align-items:center}.voter-row{justify-content:space-between;padding:10px 12px;border-radius:var(--radius);background:var(--surface-2);border:1px solid var(--border);font-size:13px;color:var(--muted)}.voter-row.voted{background:var(--yes-soft);border-color:#bbf7d0;color:var(--text-mid)}.winner-card{padding:14px;border-radius:var(--radius-lg);border:2px solid var(--action);background:linear-gradient(135deg,var(--bg) 0,var(--yes-soft) 100%)}.winner-card .kicker{font-size:11px;font-weight:700;letter-spacing:.08em;color:#16a34a;margin-bottom:6px}.rank-row{display:flex;justify-content:space-between;align-items:center;padding:6px 10px;border-radius:6px;font-size:13px}.rank-row.first{background:var(--surface-2);font-weight:600}.rank-bar{height:5px;border-radius:3px}.pill{display:inline-block;padding:2px 8px;border-radius:5px;font-size:11px;font-weight:600}.pill.yes{background:#dcfce7;color:#16a34a}.pill.no{background:#fee2e2;color:#dc2626}.account{border:1px solid var(--border);border-radius:var(--radius);padding:10px 14px;background:var(--surface)}.account-row{display:flex;align-items:center;justify-content:space-between;gap:12px}.account-status{color:var(--muted);font-size:13px}.account-status strong{color:var(--text)}.btn-link{background:none;border:none;padding:0;color:var(--link);font-size:13px;font-weight:600;cursor:pointer;width:auto}.account-form{margin-top:12px;display:flex;flex-direction:column;gap:10px}.account-form form{display:flex;gap:8px}.account-form form>.input{flex:1 1}.account-form form>.btn-primary{flex:0 0 auto;padding:10px 14px}