.candidate-form{background:#fff;border-radius:12px;padding:24px;box-shadow:0 2px 8px #0000001a;max-width:500px}.candidate-form h3{margin:0 0 20px;font-size:1.25rem;color:#333}.form-error{background:#fee;color:#c33;padding:12px;border-radius:6px;margin-bottom:16px;font-size:.9rem;border-left:4px solid #c33}.form-group{margin-bottom:20px;display:flex;flex-direction:column}.form-group label{font-weight:600;margin-bottom:8px;color:#333;font-size:.95rem}.form-group input{padding:10px 12px;border:1px solid #ddd;border-radius:6px;font-size:.95rem;font-family:inherit;transition:border-color .2s}.form-group input:focus{outline:none;border-color:#5b63d1;box-shadow:0 0 0 3px #5b63d11a}.form-group input:disabled{background-color:#f5f5f5;cursor:not-allowed}.form-group small{margin-top:6px;color:#999;font-size:.85rem}.image-preview{margin-bottom:16px;border-radius:8px;overflow:hidden;background:#f5f5f5;height:200px;display:flex;align-items:center;justify-content:center}.image-preview img{width:100%;height:100%;object-fit:cover}.btn{padding:10px 16px;border:none;border-radius:6px;font-size:.95rem;font-weight:600;cursor:pointer;transition:all .2s;font-family:inherit}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-primary{background:#5b63d1;color:#fff;width:100%}.btn-primary:hover:not(:disabled){background:#4a50b8;transform:translateY(-2px);box-shadow:0 4px 12px #5b63d14d}.btn-secondary{background:#888;color:#fff;width:100%}.btn-secondary:hover:not(:disabled){background:#777}.candidate-list{background:#fff;border-radius:12px;padding:24px;box-shadow:0 2px 8px #0000001a}.list-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px}.list-header h3{margin:0;font-size:1.25rem;color:#333}.state-badge{padding:6px 12px;border-radius:20px;font-size:.85rem;font-weight:600;color:#fff}.state-badge[data-state="0"]{background:orange}.state-badge[data-state="1"]{background:#4caf50}.state-badge[data-state="2"]{background:#666}.empty{text-align:center;color:#999;padding:40px 20px;font-size:1rem}.candidates-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:16px;margin-bottom:24px}.candidate-card{background:#f9f9f9;border-radius:8px;overflow:hidden;border:2px solid #eee;transition:all .2s;position:relative}.candidate-card:hover{border-color:#5b63d1;box-shadow:0 4px 12px #0000001a}.candidate-card.editing{border-color:#4caf50;background:#f0f8f5}.candidate-image{width:100%;height:160px;background:#e0e0e0;overflow:hidden;display:flex;align-items:center;justify-content:center}.candidate-image img{width:100%;height:100%;object-fit:cover}.candidate-info{padding:12px}.candidate-info h4{margin:0 0 8px;font-size:1rem;color:#333}.vote-count{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px;padding:8px;background:#fff;border-radius:4px}.vote-count .label{font-size:.85rem;color:#666}.vote-count .value{font-weight:700;font-size:1.25rem;color:#5b63d1}.candidate-info .url{margin:0;font-size:.75rem;color:#999;word-break:break-all}.candidate-actions{display:flex;gap:4px;padding:8px;background:#fff;border-top:1px solid #eee}.btn-sm{flex:1;padding:6px 8px;font-size:.9rem;border:none;border-radius:4px;cursor:pointer;transition:all .2s;font-weight:600}.btn-edit{background:#5b63d1;color:#fff}.btn-edit:hover:not(:disabled){background:#4a50b8}.btn-delete{background:#d32f2f;color:#fff}.btn-delete:hover:not(:disabled){background:#b71c1c}.btn-sm:disabled{opacity:.5;cursor:not-allowed}.candidate-stats{text-align:center;padding-top:16px;border-top:1px solid #eee;color:#666;font-size:.9rem}.candidate-stats p{margin:4px 0}.admin-page{min-height:calc(100vh - 160px);background:linear-gradient(135deg,#667eea,#764ba2);padding:40px 20px}.admin-container{max-width:1200px;margin:0 auto}.admin-page h1{text-align:center;color:#fff;margin:0 0 30px;font-size:2.5rem;text-shadow:0 2px 8px rgba(0,0,0,.2)}.alert{padding:16px;border-radius:8px;margin-bottom:20px;font-size:.95rem;border-left:4px solid}.alert-info{background:#e3f2fd;border-left-color:#2196f3;color:#1565c0}.alert-success{background:#e8f5e9;border-left-color:#4caf50;color:#2e7d32}.alert-warning{background:#fff3e0;border-left-color:#ff9800;color:#e65100}.alert-error{background:#ffebee;border-left-color:#f44336;color:#c62828}.admin-status{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:16px;margin-bottom:24px}.status-card{background:#fff;border-radius:12px;padding:20px;text-align:center;box-shadow:0 4px 12px #0000001a}.status-card h3{margin:0 0 12px;font-size:.95rem;color:#666;text-transform:uppercase;letter-spacing:.5px}.status-value{margin:0;font-size:2rem;font-weight:700;color:#333}.status-value[data-state="0"]{color:orange}.status-value[data-state="1"]{color:#4caf50}.status-value[data-state="2"]{color:#f44336}.admin-controls{display:flex;gap:12px;margin-bottom:30px;justify-content:center;flex-wrap:wrap}.btn-lg{padding:14px 28px;font-size:1.05rem}.btn-success{background:#4caf50;color:#fff}.btn-success:hover:not(:disabled){background:#388e3c;transform:translateY(-2px);box-shadow:0 6px 16px #4caf504d}.btn-danger{background:#f44336;color:#fff}.btn-danger:hover:not(:disabled){background:#d32f2f;transform:translateY(-2px);box-shadow:0 6px 16px #f443364d}.btn-secondary{background:#2196f3;color:#fff}.btn-secondary:hover:not(:disabled){background:#1976d2;transform:translateY(-2px);box-shadow:0 6px 16px #2196f34d}.btn:disabled{opacity:.6;cursor:not-allowed;transform:none}.admin-content{display:grid;grid-template-columns:1fr 1fr;gap:24px}.form-section,.list-section{display:flex;flex-direction:column;gap:12px}@media (max-width: 768px){.admin-page h1{font-size:2rem}.admin-content,.admin-status{grid-template-columns:1fr}.candidates-grid{grid-template-columns:repeat(auto-fill,minmax(150px,1fr))}}@media (max-width: 480px){.admin-page h1{font-size:1.5rem}.admin-page{padding:20px 10px}.alert{font-size:.85rem;padding:12px}.btn-lg{padding:10px 16px;font-size:.9rem}.candidates-grid{grid-template-columns:1fr}}*{box-sizing:border-box}html,body{margin:0;padding:0}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,sans-serif;background:#f5f5f5;color:#222}.app{display:flex;flex-direction:column;min-height:100vh}.header{display:flex;justify-content:space-between;align-items:center;padding:16px 20px;background:#fff;border-bottom:1px solid #eee;box-shadow:0 2px 4px #0000000d;z-index:100}.logo{font-weight:700;font-size:1.2rem;color:#5b63d1}nav{display:flex;gap:24px}nav a{text-decoration:none;color:#333;font-weight:500;transition:color .2s;font-size:.95rem}nav a:hover{color:#5b63d1}.main{flex:1;padding:20px}.footer{text-align:center;padding:20px;color:#888;border-top:1px solid #eee;background:#fff;font-size:.9rem}.btn{padding:8px 12px;border:1px solid #ccc;background:#fff;border-radius:6px;cursor:pointer;font-weight:500;transition:all .2s;font-family:inherit}.btn:hover{border-color:#5b63d1;color:#5b63d1}.btn.primary{background:#5b63d1;color:#fff;border-color:#5b63d1}.btn.primary:hover{background:#4a50b8;border-color:#4a50b8}.wallet{display:flex;gap:8px;align-items:center}.addr{font-family:Courier New,monospace;color:#333;font-size:.85rem}.home{max-width:1000px;margin:0 auto}.home h1{color:#333;margin-bottom:12px}.home>p{color:#666;margin-bottom:24px}.status{background:#fff;padding:16px;border-radius:8px;margin-bottom:24px;border-left:4px solid #5b63d1}.status div{margin:8px 0}.candidates{background:#fff;padding:24px;border-radius:8px}.candidates h2{margin-top:0}@media (max-width: 768px){.header{flex-wrap:wrap;gap:12px}nav{order:3;width:100%;gap:12px}.logo{flex:1}.main{padding:12px}}
