:root{--bg-base: #080808;--bg-elevated: rgba(255, 255, 255, .022);--bg-input: #111111;--bg-input-focus: #131613;--border-subtle: rgba(255, 255, 255, .06);--border-card: rgba(255, 255, 255, .07);--border-input: #333333;--border-input-hover: #444444;--text-primary: #f5f5f0;--text-secondary: #a8a8a0;--text-tertiary: #8a8a82;--text-muted: #6a6a62;--accent-green-deep: #2d5016;--accent-green: #4a7c2f;--accent-gold: #c9a84c;--accent-zama: #f5d96a;--error: #e05555;--font-display: "Fraunces", "Times New Roman", serif;--font-body: "IBM Plex Sans", system-ui, -apple-system, sans-serif;--font-mono: "IBM Plex Mono", "Courier New", monospace;--radius-sm: 6px;--radius-md: 8px;--radius-lg: 12px}*,*:before,*:after{box-sizing:border-box}html,body{margin:0;padding:0;background:var(--bg-base);color:var(--text-primary);font-family:var(--font-body);font-size:16px;line-height:1.6;letter-spacing:-.005em;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;min-height:100vh;min-height:100dvh}body{display:flex;flex-direction:column;position:relative;overflow-x:hidden}body:before{content:"";position:fixed;inset:0;pointer-events:none;z-index:0;background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='220' height='220'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='2' stitchTiles='stitch'/><feColorMatrix values='0 0 0 0 1  0 0 0 0 1  0 0 0 0 1  0 0 0 0.06 0'/></filter><rect width='100%' height='100%' filter='url(%23n)'/></svg>");opacity:.55;mix-blend-mode:screen}a{color:var(--accent-green);text-decoration:none;transition:color .15s ease}a:hover{color:var(--accent-gold)}button{font-family:var(--font-body);cursor:pointer}button:disabled{cursor:not-allowed}h1,h2,h3{font-family:var(--font-display);font-weight:500;letter-spacing:-.02em;margin:0;color:var(--text-primary);font-variation-settings:"opsz" 144}h1{font-size:2rem;line-height:1.1}h2{font-size:1.5rem;line-height:1.2}h3{font-size:1.125rem;line-height:1.3}p{margin:0}.app{position:relative;z-index:1;flex:1;width:100%;display:flex;flex-direction:column;align-items:center;padding:0 0 64px;animation:app-fade-in .4s ease-out both}@keyframes app-fade-in{0%{opacity:0}to{opacity:1}}.app-header{width:100%;display:flex;align-items:center;justify-content:space-between;gap:24px;padding:22px 56px;border-bottom:1px solid var(--border-subtle);margin:0 0 56px;position:relative;z-index:2}.brand{display:inline-flex;align-items:baseline;gap:.55em;text-decoration:none;color:inherit;line-height:1}.brand .chev{display:none}.brand-mark{font-family:var(--font-display);font-weight:700;font-size:1.05rem;letter-spacing:.04em;color:var(--text-primary);font-variation-settings:"opsz" 144}.brand-suffix{font-family:var(--font-body);font-weight:300;font-size:.78rem;letter-spacing:.22em;text-transform:uppercase;color:var(--text-secondary)}.brand-tag{font-family:var(--font-body);font-size:.72rem;font-weight:400;color:var(--text-tertiary);letter-spacing:.14em;text-transform:uppercase}.brand-tag-sep{display:inline-block;margin:0 .6em;color:var(--accent-gold);opacity:.7}.card{width:100%;max-width:540px;background:var(--bg-elevated);border:1px solid var(--border-card);border-radius:var(--radius-lg);padding:40px 36px;margin:0 16px;position:relative;z-index:1;box-shadow:0 1px #ffffff05 inset,0 24px 60px -30px #0009}.card+.card{margin-top:16px}.card-title{font-family:var(--font-display);font-weight:500;font-size:1.625rem;letter-spacing:-.018em;color:var(--text-primary);margin:0 0 12px;line-height:1.15;font-variation-settings:"opsz" 144}.card-subtitle{font-family:var(--font-body);font-size:.9375rem;color:var(--text-tertiary);margin:0 0 28px;line-height:1.6}.card-subtitle strong{color:var(--text-secondary);font-weight:500}.field{margin-bottom:22px}.label{display:block;font-family:var(--font-body);font-size:.68rem;font-weight:500;letter-spacing:.18em;text-transform:uppercase;color:var(--text-tertiary);margin-bottom:10px}.input{width:100%;background:var(--bg-input);border:1px solid var(--border-input);color:var(--text-primary);border-radius:var(--radius-md);padding:14px 16px;font-family:var(--font-body);font-size:.9375rem;font-weight:400;outline:none;transition:border-color .2s ease,box-shadow .2s ease,background .2s ease}.input::placeholder{color:#555550}.input:hover:not(:focus){border-color:var(--border-input-hover)}.input:focus{border-color:var(--accent-green);background:var(--bg-input-focus);box-shadow:0 0 0 4px #4a7c2f1f}.input.error{border-color:var(--error);box-shadow:0 0 0 4px #e055551a}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;width:100%;padding:14px 20px;border-radius:var(--radius-md);font-family:var(--font-body);font-size:.9375rem;font-weight:500;letter-spacing:.005em;border:1px solid transparent;background:transparent;color:var(--text-primary);cursor:pointer;transition:background .15s ease-out,border-color .15s ease-out,transform .15s ease-out,box-shadow .15s ease-out,color .15s ease-out;text-decoration:none}.btn .chev{display:none}.btn:focus-visible{outline:2px solid var(--accent-green);outline-offset:2px}.btn-primary{background:var(--accent-green-deep);border-color:var(--accent-green-deep);color:var(--text-primary);font-weight:500}.btn-primary:hover:not(:disabled){background:#244012;border-color:#244012;transform:translateY(-1px);box-shadow:0 4px 18px -8px #4a7c2f66}.btn-primary:active:not(:disabled){transform:translateY(0);background:#1f3810}.btn-primary:disabled{background:#1d3210;border-color:#1d3210;color:#6f7a66;opacity:1}.btn-secondary{background:transparent;border-color:var(--border-input);color:var(--text-secondary)}.btn-secondary:hover:not(:disabled){border-color:var(--text-tertiary);color:var(--text-primary);background:#ffffff05;transform:translateY(-1px)}.btn-secondary:active:not(:disabled){transform:translateY(0)}.btn-secondary:disabled{color:var(--text-muted);border-color:#ffffff0d;opacity:.55}.alert{margin-top:16px;padding:11px 14px;border-radius:var(--radius-md);font-family:var(--font-body);font-size:.85rem;line-height:1.5;border:1px solid transparent;letter-spacing:.005em;animation:alert-fade-in .22s ease-out}@keyframes alert-fade-in{0%{opacity:0;transform:translateY(-2px)}to{opacity:1;transform:translateY(0)}}.alert-error{background:#e055550f;border-color:#e0555538;color:var(--error)}.alert-info{background:#4a7c2f0d;border-color:#4a7c2f40;color:var(--accent-green)}.alert-success{background:#4a7c2f12;border-color:#4a7c2f52;color:var(--accent-green)}.alert-success strong{color:var(--accent-gold);font-weight:600}.alert.hidden{display:none}.hidden{display:none!important}.otp{display:grid;grid-template-columns:repeat(6,1fr);gap:10px;margin:8px 0}.otp-input{width:100%;aspect-ratio:1 / 1.15;text-align:center;background:var(--bg-input);border:1px solid var(--border-input);color:var(--text-primary);border-radius:var(--radius-md);font-family:var(--font-display);font-weight:600;font-size:1.5rem;letter-spacing:-.015em;outline:none;transition:border-color .2s ease,box-shadow .2s ease,background .2s ease;font-variation-settings:"opsz" 72}.otp-input:focus{border-color:var(--accent-green);background:var(--bg-input-focus);box-shadow:0 0 0 4px #4a7c2f26}.otp.shake{animation:shake .32s cubic-bezier(.36,.07,.19,.97)}.otp.shake .otp-input{border-color:var(--error)}@keyframes shake{10%,90%{transform:translate(-1px)}20%,80%{transform:translate(2px)}30%,50%,70%{transform:translate(-4px)}40%,60%{transform:translate(4px)}}.projects{display:grid;grid-template-columns:1fr;gap:12px;margin-top:12px}.project{display:block;width:100%;text-align:left;background:#ffffff05;border:1px solid var(--border-card);border-radius:var(--radius-lg);padding:20px 18px;color:var(--text-primary);cursor:pointer;transition:border-color .2s ease,background .2s ease,transform .15s ease;font-family:var(--font-body)}.project:hover:not(:disabled){border-color:#4a7c2f73;background:#4a7c2f0a;transform:translateY(-1px)}.project.selected{border-color:var(--accent-green);background:#4a7c2f14;box-shadow:inset 0 0 0 1px var(--accent-green)}.project:disabled{opacity:.5;cursor:not-allowed}.project-name{font-family:var(--font-display);font-weight:500;font-size:1.0625rem;margin-bottom:6px;color:var(--text-primary);letter-spacing:-.01em;font-variation-settings:"opsz" 72}.project-desc{color:var(--text-tertiary);font-size:.875rem;line-height:1.5}.modal-backdrop{position:fixed;inset:0;background:#080808c7;backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);display:flex;align-items:center;justify-content:center;padding:16px;z-index:50;animation:modal-backdrop-in .2s ease-out}@keyframes modal-backdrop-in{0%{opacity:0}to{opacity:1}}.modal-backdrop.hidden{display:none}.modal{background:#0f0f0f;border:1px solid var(--border-card);border-radius:var(--radius-lg);padding:28px 26px;width:100%;max-width:440px;box-shadow:0 20px 60px #0009;animation:modal-in .22s ease-out}@keyframes modal-in{0%{opacity:0;transform:translateY(8px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}.modal h2{font-family:var(--font-display);font-weight:500;font-size:1.375rem;margin:0 0 12px;letter-spacing:-.018em;font-variation-settings:"opsz" 144}.modal-actions{display:flex;gap:12px;margin-top:28px}.status{display:flex;align-items:center;gap:12px;padding:14px 16px;background:#ffffff05;border:1px solid var(--border-card);border-radius:var(--radius-md);font-size:.9375rem}.status-text{color:var(--text-secondary);font-family:var(--font-body)}.loader{display:inline-flex;align-items:center;gap:4px;color:var(--accent-green)}.loader .chev{display:inline-block;font-family:var(--font-display);font-weight:700;font-size:.85rem;animation:pulse-chev .9s ease-in-out infinite}.loader .chev:nth-child(2){animation-delay:.15s}.loader .chev:nth-child(3){animation-delay:.3s}@keyframes pulse-chev{0%,to{opacity:.25;transform:translateY(0)}50%{opacity:1;transform:translateY(-2px)}}.ranking{display:flex;flex-direction:column;gap:8px;margin-top:20px}.rank-row{display:flex;align-items:center;gap:14px;padding:16px 18px;background:#ffffff05;border:1px solid var(--border-card);border-radius:var(--radius-md);transition:border-color .2s ease}.rank-row:hover{border-color:#4a7c2f40}.rank-row:first-child{border-color:#c9a84c4d;background:#c9a84c09}.rank-pos{font-family:var(--font-display);font-weight:600;font-size:1.125rem;color:var(--accent-green);min-width:36px;font-variation-settings:"opsz" 72;letter-spacing:-.01em}.rank-row:first-child .rank-pos{color:var(--accent-gold)}.rank-name{flex:1;font-family:var(--font-display);font-weight:500;color:var(--text-primary);letter-spacing:-.01em;font-variation-settings:"opsz" 72;font-size:1rem}.rank-votes{color:var(--text-tertiary);font-variant-numeric:tabular-nums;font-size:.875rem;letter-spacing:.015em;font-family:var(--font-body)}.tx-link{display:inline-block;margin-top:6px;font-family:var(--font-mono);font-size:.8125rem;color:var(--accent-green);word-break:break-all;letter-spacing:0}.tx-link:hover{color:var(--accent-gold)}.success-card{text-align:center}.success-card .alert,.success-card .success-tx,.success-card .btn{text-align:left}.success-tx{margin-top:28px;padding:16px 18px;background:#ffffff05;border:1px solid var(--border-card);border-radius:var(--radius-md);display:flex;flex-direction:column;align-items:center;gap:8px;text-align:center}.success-tx-label{font-family:var(--font-body);font-size:.66rem;font-weight:500;letter-spacing:.18em;text-transform:uppercase;color:var(--text-tertiary)}.success-card .tx-link{margin-top:0;text-align:center}.zama-coin{width:110px;height:110px;margin:0 auto 28px;perspective:380px;display:block;animation:zama-coin-enter .62s cubic-bezier(.34,1.56,.64,1) both}@keyframes zama-coin-enter{0%{opacity:0;transform:scale(.5)}to{opacity:1;transform:scale(1)}}.zama-coin-inner{position:relative;width:100%;height:100%;transform-style:preserve-3d;animation:zama-coin-spin 2.6s linear infinite}.zama-coin-face{position:absolute;inset:0;border-radius:50%;display:flex;align-items:center;justify-content:center;backface-visibility:hidden;-webkit-backface-visibility:hidden;background:radial-gradient(circle at 32% 28%,rgba(255,250,220,.55),transparent 55%),linear-gradient(135deg,#f5d96a,#d8b143 35%,#a87f1e 75%,#6e5012);box-shadow:inset 0 0 0 2px #fff5c838,inset 0 -8px 16px #3c28058c,inset 0 6px 10px #fff5c84d,0 12px 32px #c9a84c52,0 4px 12px #00000080;font-family:var(--font-display);font-weight:700;color:#2a1d05}.zama-coin-face.front{transform:translateZ(2px)}.zama-coin-face.back{transform:rotateY(180deg) translateZ(2px)}.zama-coin-z{font-style:italic;font-size:3rem;letter-spacing:-.04em;text-shadow:0 1px 2px rgba(255,245,200,.5),0 -1px 1px rgba(60,40,5,.7);font-variation-settings:"opsz" 144;line-height:1}@keyframes zama-coin-spin{0%{transform:rotateY(0)}to{transform:rotateY(360deg)}}.app-footer{margin-top:auto;padding:18px 56px;border-top:1px solid var(--border-subtle);text-align:center;font-family:var(--font-body);font-size:.7rem;color:var(--text-muted);letter-spacing:.12em;text-transform:uppercase;position:relative;z-index:1}.app-footer-sep{display:inline-block;margin:0 .7em;color:var(--accent-gold);opacity:.55}.muted{color:var(--text-tertiary);font-size:.875rem}.text-center{text-align:center}.mt-8{margin-top:8px}.mt-16{margin-top:16px}.mt-24{margin-top:24px}.row{display:flex;gap:12px;align-items:center}@media (max-width: 1024px){.app-header{padding:20px 32px;margin-bottom:40px}.app-footer{padding:16px 32px}}@media (min-width: 1024px){.app{padding-bottom:80px}.card{padding:48px 40px}.card-title{font-size:1.875rem}#vote-view{max-width:900px}#vote-view .projects{grid-template-columns:repeat(3,1fr);gap:14px}#pending-view,#declared-view{max-width:640px}}@media (max-width: 768px){.app-header{padding:18px 20px;flex-direction:column;align-items:flex-start;gap:10px;margin-bottom:32px}.brand-tag{font-size:.65rem}.card{padding:32px 24px;margin:0 16px}.card-title{font-size:1.5rem}.otp{gap:8px}.otp-input{font-size:1.25rem}.modal{padding:24px 20px}.modal-actions{flex-direction:column}.zama-coin{width:92px;height:92px}.zama-coin-z{font-size:2.5rem}.app-footer{padding:16px 20px;font-size:.62rem;letter-spacing:.1em;line-height:1.6}}@media (max-width: 380px){.otp{gap:6px}.otp-input{font-size:1.1rem}}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}.otp.shake{animation:none}.zama-coin-inner{animation:none;transform:rotateY(15deg)}.loader .chev{animation:none;opacity:.7}}
