:root{--color-primary:#e67e22;--color-primary-hover:#d35400;--color-secondary:#2c3e50;--color-accent:#27ae60;--color-danger:#e74c3c;--color-background:#fdf6f0;--color-card:#fff;--color-text:#2c3e50;--color-text-secondary:#7f8c8d;--color-link:#e67e22;--color-border:#e8e0d8;--color-row-even:#fff;--color-row-odd:#f8fafc;--color-row-hover:#fef9f3;--tag-social-bg:#3498db1a;--tag-social-border:#3498db;--tag-community-bg:#e67e221a;--tag-community-border:#e67e22;--tag-foundation-bg:#9b59b61a;--tag-foundation-border:#9b59b6;--tag-volunteer-bg:#2ecc711a;--tag-volunteer-border:#2ecc71;--tag-elderly-bg:#e74c3c1a;--tag-elderly-border:#e74c3c;--font-family:"Noto Sans SC", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--font-family-en:"Inter", sans-serif;--text-xs:.8125rem;--text-sm:.875rem;--text-base:.9375rem;--text-lg:1.125rem;--text-xl:1.25rem;--text-2xl:1.5rem;--text-3xl:2rem;--space-xs:.25rem;--space-sm:.5rem;--space-md:1rem;--space-lg:1.5rem;--space-xl:2rem;--space-2xl:3rem;--radius-sm:4px;--radius-md:8px;--radius-lg:12px;--transition-fast:.15s ease;--transition-normal:.2s ease-out}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-size:16px}body{font-family:var(--font-family);font-size:var(--text-base);color:var(--color-text);background-color:var(--color-background);min-height:100vh;line-height:1.6}a{color:var(--color-link);transition:color var(--transition-fast);text-decoration:none}a:hover{color:var(--color-primary-hover);text-decoration:underline}#app{flex-direction:column;min-height:100vh;display:flex}.container{width:100%;max-width:1400px;padding:0 var(--space-md);margin:0 auto}.btn{justify-content:center;align-items:center;gap:var(--space-xs);padding:var(--space-sm) var(--space-md);font-size:var(--text-sm);font-family:var(--font-family);border-radius:var(--radius-sm);cursor:pointer;transition:all var(--transition-fast);border:none;font-weight:500;text-decoration:none;display:inline-flex}.btn-primary{background-color:var(--color-primary);color:#fff}.btn-primary:hover{background-color:var(--color-primary-hover);text-decoration:none}.btn-outline{color:var(--color-primary);border:1px solid var(--color-primary);background-color:#0000}.btn-outline:hover{background-color:var(--color-primary);color:#fff;text-decoration:none}.btn-danger{background-color:var(--color-danger);color:#fff}.btn-danger:hover{background-color:#c0392b;text-decoration:none}.btn-sm{padding:var(--space-xs) var(--space-sm);font-size:var(--text-xs)}.header{background:linear-gradient(135deg, var(--color-primary) 0%, #f39c12 100%);text-align:center;padding:80px 0;position:relative;overflow:hidden}.header:before{content:"";opacity:.5;background:url("data:image/svg+xml,%3Csvg width='60' height='60' viewBox='0 0 60 60' xmlns='http://www.w3.org/2000/svg'%3E%3Cg fill='none' fill-rule='evenodd'%3E%3Cg fill='%23ffffff' fill-opacity='0.05'%3E%3Cpath d='M36 34v-4h-2v4h-4v2h4v4h2v-4h4v-2h-4zm0-30V0h-2v4h-4v2h4v4h2V6h4V4h-4zM6 34v-4H4v4H0v2h4v4h2v-4h4v-2H6zM6 4V0H4v4H0v2h4v4h2V6h4V4H6z'/%3E%3C/g%3E%3C/g%3E%3C/svg%3E");position:absolute;inset:0}.header-content{z-index:1;position:relative}.page-title{justify-content:center;align-items:center;gap:var(--space-sm);font-size:var(--text-3xl);color:#fff;margin-bottom:var(--space-sm);text-shadow:0 2px 4px #0000001a;font-weight:700;display:inline-flex}.page-title svg{width:1.5em;height:1.5em}.page-subtitle{font-size:var(--text-lg);color:#ffffffe6;font-weight:400}.header-actions{top:var(--space-md);right:var(--space-lg);z-index:10;position:absolute}.auth-actions .btn{color:var(--color-primary);background:#fff;border:none}.auth-actions .btn:hover{background:var(--color-background)}.user-menu{position:relative}.user-btn{align-items:center;gap:var(--space-sm);padding:var(--space-xs) var(--space-sm);border-radius:var(--radius-md);cursor:pointer;font-family:var(--font-family);font-size:var(--text-sm);color:var(--color-text);transition:all var(--transition-fast);background:#fff;border:none;display:flex}.user-btn:hover{background:var(--color-background)}.user-avatar{background:var(--color-primary);color:#fff;width:28px;height:28px;font-weight:600;font-size:var(--text-xs);border-radius:50%;justify-content:center;align-items:center;display:flex}.user-name{text-overflow:ellipsis;white-space:nowrap;max-width:120px;overflow:hidden}.dropdown-arrow{color:var(--color-text-secondary);font-size:10px}.dropdown-menu{margin-top:var(--space-xs);border-radius:var(--radius-md);z-index:100;background:#fff;min-width:160px;display:none;position:absolute;top:100%;right:0;overflow:hidden;box-shadow:0 4px 12px #00000026}.dropdown-menu.show{display:block}.dropdown-item{align-items:center;gap:var(--space-sm);padding:var(--space-sm) var(--space-md);font-size:var(--text-sm);color:var(--color-text);text-align:left;cursor:pointer;width:100%;transition:background-color var(--transition-fast);font-family:var(--font-family);background:0 0;border:none;text-decoration:none;display:flex}.dropdown-item:hover{background:var(--color-background);color:var(--color-text);text-decoration:none}.dropdown-item svg{color:var(--color-text-secondary)}.main{padding:var(--space-xl) 0;flex:1}.filter-bar{align-items:center;gap:var(--space-md);padding:var(--space-md) var(--space-lg);background:var(--color-card);border-radius:var(--radius-md);margin-bottom:var(--space-lg);flex-wrap:wrap;display:flex;box-shadow:0 1px 3px #2c3e5014}.filter-group{align-items:center;gap:var(--space-sm);display:flex}.filter-group label{font-size:var(--text-sm);color:var(--color-text-secondary);white-space:nowrap}.filter-group select{padding:var(--space-sm) var(--space-md);font-size:var(--text-sm);font-family:var(--font-family);color:var(--color-text);background-color:var(--color-background);border:1px solid var(--color-border);border-radius:var(--radius-sm);cursor:pointer;transition:border-color var(--transition-fast), box-shadow var(--transition-fast);min-width:140px}.filter-group select:hover{border-color:var(--color-primary)}.filter-group select:focus{border-color:var(--color-primary);outline:none;box-shadow:0 0 0 3px #e67e2226}.job-count{font-size:var(--text-sm);color:var(--color-text-secondary);margin-left:auto}.job-count span{color:var(--color-primary);font-weight:600}.deadline-filter{gap:var(--space-xs);display:flex}.deadline-btn{padding:var(--space-xs) var(--space-sm);font-size:var(--text-xs);font-family:var(--font-family);color:var(--color-text-secondary);background:var(--color-background);border:1px solid var(--color-border);border-radius:var(--radius-sm);cursor:pointer;transition:all var(--transition-fast);white-space:nowrap}.deadline-btn:hover{border-color:var(--color-primary);color:var(--color-primary)}.deadline-btn.active{background:var(--color-primary);border-color:var(--color-primary);color:#fff}.table-wrapper{background:var(--color-card);border-radius:var(--radius-md);overflow:hidden;box-shadow:0 1px 3px #2c3e5014}.table-hint{padding:var(--space-sm) var(--space-md);font-size:var(--text-xs);color:var(--color-text-secondary);border-bottom:1px solid var(--color-border);background:#f8fafc}.table-scroll{-webkit-overflow-scrolling:touch;overflow-x:auto}.job-table{border-collapse:collapse;width:100%;min-width:1200px;font-size:var(--text-sm)}.job-table thead{background:var(--color-secondary);z-index:10;position:sticky;top:0}.job-table th{padding:var(--space-md) var(--space-sm);text-align:left;color:#fff;white-space:nowrap;border-bottom:2px solid var(--color-secondary);font-weight:600}.job-table tbody tr{transition:background-color var(--transition-fast)}.job-table tbody tr:nth-child(2n){background-color:var(--color-row-even)}.job-table tbody tr:nth-child(odd){background-color:var(--color-row-odd)}.job-table tbody tr:hover{background-color:var(--color-row-hover)}.job-table td{padding:var(--space-md) var(--space-sm);border-bottom:1px solid var(--color-border);vertical-align:middle}.col-org{width:140px}.col-type{width:100px}.col-position{width:120px}.col-area{width:70px}.col-deadline{width:100px}.col-contact{width:70px}.col-phone{width:120px}.col-email{width:160px}.col-wechat{width:100px}.col-actions{width:60px}.org-name{color:var(--color-text);font-weight:600}.position-name{color:var(--color-secondary);font-weight:500}.area-text,.deadline-text{color:var(--color-text-secondary)}.deadline-text.warning{color:var(--color-danger);font-weight:500}.contact-text,.email-text{text-overflow:ellipsis;white-space:nowrap;max-width:140px;overflow:hidden}.phone-link{color:var(--color-link);font-weight:500}.email-link{text-overflow:ellipsis;white-space:nowrap;max-width:140px;display:block;overflow:hidden}.wechat-text{color:var(--color-accent);font-weight:500}.action-delete{padding:var(--space-xs) var(--space-sm);color:var(--color-danger);border:1px solid var(--color-danger);border-radius:var(--radius-sm);font-size:var(--text-xs);cursor:pointer;transition:all var(--transition-fast);opacity:0;background:0 0}.job-table tbody tr:hover .action-delete{opacity:1}.action-delete:hover{background:var(--color-danger);color:#fff}.action-delete:disabled{opacity:.3;cursor:not-allowed}.tag{padding:var(--space-xs) var(--space-sm);font-size:var(--text-xs);border-radius:var(--radius-sm);white-space:nowrap;font-weight:500;display:inline-block}.tag-social{background-color:var(--tag-social-bg);color:var(--tag-social-border);border:1px solid var(--tag-social-border)}.tag-community{background-color:var(--tag-community-bg);color:var(--tag-community-border);border:1px solid var(--tag-community-border)}.tag-foundation{background-color:var(--tag-foundation-bg);color:var(--tag-foundation-border);border:1px solid var(--tag-foundation-border)}.tag-volunteer{background-color:var(--tag-volunteer-bg);color:var(--tag-volunteer-border);border:1px solid var(--tag-volunteer-border)}.tag-elderly{background-color:var(--tag-elderly-bg);color:var(--tag-elderly-border);border:1px solid var(--tag-elderly-border)}.empty-state{text-align:center;padding:var(--space-2xl);color:var(--color-text-secondary);background:var(--color-card);border-radius:var(--radius-md)}.empty-state p{font-size:var(--text-lg)}.modal{z-index:1000;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.modal-overlay{background:#00000080;position:absolute;inset:0}.modal-content{border-radius:var(--radius-lg);background:#fff;width:90%;max-width:480px;max-height:90vh;position:relative;overflow-y:auto;box-shadow:0 8px 32px #0003}.modal-content.modal-large{max-width:700px}.modal-header{padding:var(--space-md) var(--space-lg);border-bottom:1px solid var(--color-border);justify-content:space-between;align-items:center;display:flex}.modal-header h3{font-size:var(--text-lg);color:var(--color-text);font-weight:600}.modal-close{width:32px;height:32px;color:var(--color-text-secondary);cursor:pointer;border-radius:var(--radius-sm);transition:all var(--transition-fast);background:0 0;border:none;justify-content:center;align-items:center;font-size:24px;display:flex}.modal-close:hover{background:var(--color-background);color:var(--color-text)}.modal-form{padding:var(--space-lg)}.form-group{margin-bottom:var(--space-md)}.form-group label{font-size:var(--text-sm);color:var(--color-text);margin-bottom:var(--space-xs);font-weight:500;display:block}.form-group input,.form-group select{width:100%;padding:var(--space-sm) var(--space-md);font-size:var(--text-sm);font-family:var(--font-family);color:var(--color-text);background:var(--color-background);border:1px solid var(--color-border);border-radius:var(--radius-sm);transition:border-color var(--transition-fast), box-shadow var(--transition-fast)}.form-group input:focus,.form-group select:focus{border-color:var(--color-primary);outline:none;box-shadow:0 0 0 3px #e67e2226}.form-group input::placeholder{color:var(--color-text-secondary)}.form-row{gap:var(--space-md);display:flex}.form-row .form-group{flex:1}.form-actions{justify-content:flex-end;gap:var(--space-sm);margin-top:var(--space-lg);padding-top:var(--space-md);border-top:1px solid var(--color-border);display:flex}.myjobs-list{padding:var(--space-md);max-height:500px;overflow-y:auto}.myjob-item{padding:var(--space-md);background:var(--color-background);border-radius:var(--radius-md);margin-bottom:var(--space-sm)}.myjob-item:last-child{margin-bottom:0}.myjob-header{margin-bottom:var(--space-sm);justify-content:space-between;align-items:flex-start;display:flex}.myjob-title{color:var(--color-text);font-weight:600}.myjob-meta{gap:var(--space-md);font-size:var(--text-xs);color:var(--color-text-secondary);display:flex}.myjob-actions{gap:var(--space-xs);display:flex}.toast{bottom:var(--space-xl);background:var(--color-secondary);color:#fff;padding:var(--space-sm) var(--space-lg);border-radius:var(--radius-md);z-index:2000;animation:.3s toastIn;position:fixed;left:50%;transform:translate(-50%);box-shadow:0 4px 12px #0003}.toast.success{background:var(--color-accent)}.toast.error{background:var(--color-danger)}@keyframes toastIn{0%{opacity:0;transform:translate(-50%)translateY(20px)}to{opacity:1;transform:translate(-50%)translateY(0)}}.footer{background-color:var(--color-secondary);padding:var(--space-lg) 0;text-align:center;margin-top:auto}.footer-content{max-width:1200px;padding:0 var(--space-md);margin:0 auto}.footer p{color:#fffc;font-size:var(--text-sm)}@media (width<=768px){.header{padding:var(--space-lg) 0}.header-actions{margin-top:var(--space-md);position:static}.page-title{font-size:var(--text-2xl)}.filter-bar{flex-direction:column;align-items:stretch}.filter-group{width:100%}.filter-group select,.filter-input{flex:1;width:100%}.job-count{text-align:center;margin-left:0}.table-hint{font-size:.75rem}.form-row{flex-direction:column}}.filter-input{padding:var(--space-sm) var(--space-md);font-size:var(--text-sm);font-family:var(--font-family);color:var(--color-text);background-color:var(--color-background);border:1px solid var(--color-border);border-radius:var(--radius-sm);transition:border-color var(--transition-fast), box-shadow var(--transition-fast);min-width:140px}.filter-input:hover{border-color:var(--color-primary)}.filter-input:focus{border-color:var(--color-primary);outline:none;box-shadow:0 0 0 3px #e67e2226}.field-hint{font-size:var(--text-xs);color:var(--color-text-secondary);font-weight:400}.wechat-link{color:var(--color-primary);font-size:var(--text-sm);text-decoration:none}.wechat-link:hover{text-decoration:underline}.wechat-text{font-size:var(--text-sm);color:var(--color-text)}.auth-container{background:linear-gradient(135deg, var(--color-background) 0%, #f5e6d3 100%);min-height:100vh;padding:var(--space-md);justify-content:center;align-items:center;display:flex}.auth-card{border-radius:var(--radius-lg);width:100%;max-width:400px;padding:var(--space-xl);background:#fff;box-shadow:0 8px 32px #2c3e501f}.auth-header{text-align:center;margin-bottom:var(--space-lg)}.auth-logo{border-radius:var(--radius-md);width:64px;height:64px;margin-bottom:var(--space-sm);object-fit:cover}.auth-title{font-size:var(--text-xl);color:var(--color-text);font-weight:700}.auth-tabs{border-bottom:2px solid var(--color-border);margin-bottom:var(--space-lg);display:flex}.auth-tab{padding:var(--space-sm) var(--space-md);font-size:var(--text-base);font-family:var(--font-family);color:var(--color-text-secondary);cursor:pointer;transition:all var(--transition-fast);background:0 0;border:none;flex:1;position:relative}.auth-tab:hover{color:var(--color-text)}.auth-tab.active{color:var(--color-primary);font-weight:600}.auth-tab.active:after{content:"";background:var(--color-primary);height:2px;position:absolute;bottom:-2px;left:0;right:0}.auth-form{gap:var(--space-md);flex-direction:column;display:flex}.auth-form .form-group{margin-bottom:0}.auth-form .form-group label{font-size:var(--text-sm);color:var(--color-text);margin-bottom:var(--space-xs);font-weight:500;display:block}.auth-form .form-group input{width:100%;padding:var(--space-sm) var(--space-md);font-size:var(--text-base);font-family:var(--font-family);color:var(--color-text);background:var(--color-background);border:1px solid var(--color-border);border-radius:var(--radius-sm);transition:border-color var(--transition-fast), box-shadow var(--transition-fast)}.auth-form .form-group input:focus{border-color:var(--color-primary);outline:none;box-shadow:0 0 0 3px #e67e2226}.auth-form .form-group input::placeholder{color:var(--color-text-secondary)}.password-input{position:relative}.password-input input{padding-right:44px}.password-toggle{right:var(--space-sm);color:var(--color-text-secondary);cursor:pointer;padding:var(--space-xs);background:0 0;border:none;justify-content:center;align-items:center;display:flex;position:absolute;top:50%;transform:translateY(-50%)}.password-toggle:hover{color:var(--color-text)}.form-error{color:var(--color-danger);font-size:var(--text-sm);min-height:20px}.btn-full{width:100%}.auth-footer{text-align:center;margin-top:var(--space-lg);padding-top:var(--space-md);border-top:1px solid var(--color-border)}.back-link{color:var(--color-text-secondary);font-size:var(--text-sm)}.back-link:hover{color:var(--color-primary)}.sms-code-input{gap:var(--space-sm);display:flex}.sms-code-input input{flex:1}.btn-sms{padding:var(--space-sm) var(--space-md);background:var(--color-secondary);color:#fff;border-radius:var(--radius-sm);font-size:var(--text-sm);cursor:pointer;white-space:nowrap;border:none;min-width:100px}.btn-sms:hover:not(:disabled){background:#1a252f}.btn-sms:disabled{opacity:.6;cursor:not-allowed}.form-hint{font-size:var(--text-sm);padding:var(--space-xs) var(--space-sm);border-radius:var(--radius-sm);margin-top:calc(-1 * var(--space-sm))}.form-hint.success{color:var(--color-accent);background:#27ae601a}.form-hint.error{color:var(--color-danger);background:#e74c3c1a}.form-section-title{font-size:var(--text-lg);color:var(--color-text);margin-bottom:var(--space-md);text-align:center;font-weight:600}.form-success{color:var(--color-accent);font-size:var(--text-sm);min-height:20px}.user-panel{padding:var(--space-md) 0}.user-info{align-items:center;gap:var(--space-md);padding:var(--space-md);background:var(--color-background);border-radius:var(--radius-md);margin-bottom:var(--space-md);display:flex}.user-avatar{background:var(--color-primary);color:#fff;border-radius:50%;justify-content:center;align-items:center;width:64px;height:64px;display:flex}.user-details{flex:1}.user-email{font-size:var(--text-base);color:var(--color-text);word-break:break-all;font-weight:600}.user-role{font-size:var(--text-sm);color:var(--color-primary);margin-top:var(--space-xs)}.user-actions{gap:var(--space-sm);flex-direction:column;display:flex}.btn-secondary{background:var(--color-secondary);color:#fff}.btn-secondary:hover{background:#1a252f}.btn-outline{border:1px solid var(--color-border);color:var(--color-text-secondary);background:0 0}.btn-outline:hover{background:var(--color-background);border-color:var(--color-text-secondary)}.admin-container{max-width:1200px;padding:var(--space-lg);margin:0 auto}.admin-header{margin-bottom:var(--space-lg);padding-bottom:var(--space-md);border-bottom:2px solid var(--color-border);justify-content:space-between;align-items:center;display:flex}.admin-title{font-size:var(--text-xl);color:var(--color-text);align-items:center;gap:var(--space-sm);font-weight:700;display:flex}.admin-stats{gap:var(--space-md);margin-bottom:var(--space-lg);grid-template-columns:repeat(auto-fit,minmax(200px,1fr));display:grid}.stat-card{background:var(--color-card);border-radius:var(--radius-md);padding:var(--space-md);text-align:center;box-shadow:0 2px 8px #00000014}.stat-value{color:var(--color-primary);font-size:2rem;font-weight:700}.stat-label{font-size:var(--text-sm);color:var(--color-text-secondary);margin-top:var(--space-xs)}.admin-table-container{background:var(--color-card);border-radius:var(--radius-md);overflow:hidden;box-shadow:0 2px 8px #00000014}.admin-table{border-collapse:collapse;width:100%}.admin-table th,.admin-table td{padding:var(--space-sm) var(--space-md);text-align:left;border-bottom:1px solid var(--color-border)}.admin-table th{background:var(--color-background);color:var(--color-text);font-weight:600}.admin-table tr:hover{background:var(--color-row-hover)}.btn-delete{padding:var(--space-xs) var(--space-sm);background:var(--color-danger);color:#fff;border-radius:var(--radius-sm);font-size:var(--text-sm);cursor:pointer;border:none}.btn-delete:hover{background:#c0392b}.admin-actions{gap:var(--space-sm);align-items:center;display:flex}.admin-back{color:var(--color-link);font-size:var(--text-sm)}.admin-back:hover{text-decoration:underline}.admin-user-info{align-items:center;gap:var(--space-md);display:flex}.admin-user-email{font-weight:500}.admin-badge{font-size:var(--text-xs);border-radius:10px;padding:2px 8px;font-weight:600}.admin-badge.superadmin{color:var(--color-danger);background:#e74c3c1a}.admin-badge.user{color:#3498db;background:#3498db1a}
