*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
:root{--primary:#667eea;--primary-dark:#5a67d8;--secondary:#764ba2;--header-grad:linear-gradient(135deg,#667eea 0%,#764ba2 100%);--danger:#dc2626;--success:#16a34a;--info:#0ea5e9;--bg:#eef2ff;--surface:#ffffff;--surface-soft:#f8f9ff;--border:#dbe4ff;--text:#2d3748;--muted:#667085;--footer:#2d3748;--radius:.625rem;--radius-lg:1rem;--shadow:0 4px 15px rgba(0,0,0,.1);--shadow-lg:0 12px 32px rgba(102,126,234,.18)}
html{scroll-behavior:smooth}
body{font-family:'Segoe UI',Tahoma,Geneva,Verdana,sans-serif;background:linear-gradient(180deg,#f6f8ff 0%,#eef2ff 100%);color:var(--text);line-height:1.6;min-height:100vh;display:flex;flex-direction:column}
a{color:var(--primary);text-decoration:none;transition:all .25s ease}a:hover{text-decoration:none;opacity:.92}
img{max-width:100%;display:block}
.site-header{background:var(--header-grad);color:#fff;box-shadow:0 2px 10px rgba(0,0,0,.1);position:sticky;top:0;z-index:20}
.navbar{max-width:1200px;margin:0 auto;padding:1rem 2rem;display:flex;justify-content:space-between;align-items:center;gap:1rem}
.nav-brand a{display:flex;align-items:center;gap:.8rem;color:#fff;font-size:1.35rem;font-weight:700}
.brand-logo{width:50px;height:50px;border-radius:50%;object-fit:cover;box-shadow:0 4px 12px rgba(0,0,0,.18)}
.brand-copy{display:flex;flex-direction:column;line-height:1.1}.brand-title{font-size:1.05rem}.brand-subtitle{font-size:.78rem;font-weight:500;opacity:.9}
.nav-site-links{display:flex;align-items:center;gap:1.15rem;list-style:none;flex-wrap:wrap;justify-content:center;margin:0 auto}.nav-site-links a{color:#fff;font-size:.95rem;font-weight:600;opacity:.95}.nav-site-links a:hover{opacity:.8}
.nav-actions{display:flex;align-items:center;gap:1rem;flex-wrap:wrap;justify-content:flex-end}
.nav-links{display:flex;align-items:center;gap:.75rem;flex-wrap:wrap}
.nav-sep{color:rgba(255,255,255,.35);font-size:1rem;user-select:none;padding:0 .1rem}
.nav-user{color:rgba(255,255,255,.9);font-size:.95rem;font-weight:500}
.container{flex:1;max-width:1200px;margin:0 auto;padding:2.5rem 2rem 4rem;width:100%}
.page-shell{display:flex;flex-direction:column;gap:1.75rem}
.hero-banner{background-image:linear-gradient(135deg,rgba(102,126,234,.88) 0%,rgba(118,75,162,.88) 100%),url('/static/images/action_shot.jpg');background-size:cover;background-position:center;color:#fff;border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);padding:3rem 2rem}
.hero-banner h1{font-size:clamp(2rem,4vw,3rem);margin-bottom:.65rem}.hero-banner p{font-size:1.08rem;max-width:740px;opacity:.96}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:.5rem;padding:.9rem 1.4rem;border-radius:5px;font-size:.96rem;font-weight:700;cursor:pointer;border:2px solid transparent;transition:all .3s ease;text-decoration:none;line-height:1.2}
.btn-primary{background:#fff;color:var(--primary);border-color:#fff}.btn-primary:hover{background:#f0f0f0;color:var(--primary-dark);transform:translateY(-1px)}
.btn-outline{background:transparent;color:#fff;border-color:#fff}.btn-outline:hover{background:rgba(255,255,255,.1);color:#fff}
.btn-surface{background:var(--surface);color:var(--primary);border-color:var(--border);box-shadow:var(--shadow)}.btn-surface:hover{background:var(--surface-soft);color:var(--primary-dark)}
.btn-danger{background:#fff1f2;color:var(--danger);border-color:#fecdd3}.btn-danger:hover{background:#ffe4e6;color:#b91c1c}
.btn-sm{padding:.55rem .85rem;font-size:.84rem}.btn-block{width:100%}
.lang-toggle{display:flex;align-items:center;gap:.35rem;background:rgba(255,255,255,.12);padding:.3rem;border-radius:999px;border:1px solid rgba(255,255,255,.28)}
.lang-pill{display:inline-flex;align-items:center;justify-content:center;min-width:44px;padding:.45rem .8rem;border-radius:999px;color:#fff;font-size:.88rem;font-weight:700}.lang-pill.active{background:#fff;color:var(--primary)}
.alert{padding:1rem 1.1rem;border-radius:10px;margin-bottom:1rem;font-size:.95rem;border:1px solid transparent}.alert-error{background:#fef2f2;border-color:#fecaca;color:var(--danger)}.alert-success{background:#f0fdf4;border-color:#bbf7d0;color:var(--success)}.alert-info{background:#eff6ff;border-color:#bfdbfe;color:#1d4ed8}
.auth-layout{display:grid;grid-template-columns:1.1fr minmax(320px,460px);gap:2rem;align-items:stretch}.auth-side{background:var(--header-grad);color:#fff;border-radius:var(--radius-lg);padding:2.5rem;box-shadow:var(--shadow-lg);display:flex;flex-direction:column;justify-content:space-between;min-height:100%}
.auth-layout--single{grid-template-columns:minmax(320px,560px);justify-content:center}.auth-layout--single .auth-card{width:100%;max-width:560px;margin:0 auto}
.auth-side h1{font-size:2.2rem;line-height:1.15;margin-bottom:1rem}.auth-side p{font-size:1.02rem;opacity:.95;max-width:34rem}.auth-side ul{list-style:none;display:grid;gap:.8rem;margin-top:1.5rem}.auth-side li{background:rgba(255,255,255,.12);padding:.85rem 1rem;border-radius:10px;border:1px solid rgba(255,255,255,.18)}
.auth-card,.panel,.card,.table-card{background:var(--surface);border-radius:var(--radius-lg);box-shadow:var(--shadow);border:1px solid rgba(255,255,255,.8)}
.auth-card{padding:2rem}.auth-header{margin-bottom:1.5rem}.auth-header h2{font-size:1.85rem;color:var(--primary);margin-bottom:.35rem}.auth-header p{color:var(--muted)}.auth-footer{text-align:center;margin-top:1.5rem;color:var(--muted);font-size:.92rem}
.auth-form,.stack{display:flex;flex-direction:column;gap:1rem}.form-row{display:grid;grid-template-columns:1fr 1fr;gap:1rem}
.form-group{display:flex;flex-direction:column;gap:.375rem}.form-group label{font-weight:700;font-size:.9rem;color:var(--text)}.form-group input,.form-group select,.form-group textarea,.form-control,.form-control-sm{width:100%;padding:.85rem .95rem;border:1px solid var(--border);border-radius:10px;font-size:1rem;background:var(--surface-soft);color:var(--text);transition:border-color .2s,box-shadow .2s,background .2s}.form-control-sm{padding:.65rem .8rem;font-size:.95rem}.form-group input:focus,.form-group select:focus,.form-group textarea:focus,.form-control:focus,.form-control-sm:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px rgba(102,126,234,.16);background:#fff}
.field-error,.invalid-feedback{color:var(--danger);font-size:.82rem;margin-top:.1rem}.is-invalid{border-color:#fca5a5!important;background:#fff7f7!important}
.input-wrapper{position:relative;display:flex;align-items:center}.input-wrapper input{padding-right:3rem}.toggle-password{position:absolute;right:.65rem;background:none;border:none;cursor:pointer;font-size:1rem;padding:.25rem;color:var(--muted)}.toggle-password:hover{color:var(--primary)}
.page-header{display:flex;justify-content:space-between;align-items:flex-end;gap:1rem;flex-wrap:wrap;margin-bottom:.5rem}.page-header h1{font-size:2.2rem;color:var(--primary);margin-bottom:.25rem}.page-header p{color:var(--muted);max-width:720px}
.dashboard-grid,.info-grid,.admin-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:1.5rem}.card-header{padding:1.15rem 1.4rem;border-bottom:1px solid #edf2ff;background:var(--surface-soft)}.card-header h2{font-size:1.1rem;font-weight:700;color:var(--primary)}.card-body{padding:1.4rem}
.profile-table,.data-table{width:100%;border-collapse:collapse}.profile-table th,.profile-table td,.data-table th,.data-table td{padding:.8rem .6rem;text-align:left;border-bottom:1px solid #e9edfb;font-size:.95rem;vertical-align:top}.profile-table th,.data-table th{color:var(--muted);font-weight:700}.profile-table th{width:38%}.data-table thead th{background:var(--surface-soft);color:var(--primary)}
.table-card{overflow:hidden}.table-scroll{overflow:auto}.filter-card{padding:1rem 1.1rem}.filter-bar{display:flex;gap:1rem;align-items:end;flex-wrap:wrap}.filter-group{display:flex;flex-direction:column;gap:.3rem;min-width:180px}.filter-group label{font-size:.85rem;font-weight:700;color:var(--text)}
.badge{display:inline-flex;align-items:center;padding:.28rem .75rem;border-radius:999px;font-size:.8rem;font-weight:700}.badge-success{background:#dcfce7;color:#166534}.badge-danger{background:#fee2e2;color:#b91c1c}.badge-admin{background:#ede9fe;color:#5b21b6}.badge-volunteer{background:#dbeafe;color:#1d4ed8}.badge-public{background:#f3f4f6;color:#374151}.badge-action-create{background:#d1fae5;color:#065f46}.badge-action-update{background:#dbeafe;color:#1e40af}.badge-action-delete{background:#fee2e2;color:#991b1b}.badge-action-role_change{background:#fef3c7;color:#92400e}
.quick-links{list-style:none;display:flex;flex-direction:column;gap:.8rem}.quick-links a{display:flex;align-items:center;justify-content:space-between;padding:.85rem 1rem;background:var(--surface-soft);border-radius:10px;border:1px solid var(--border);font-weight:600;color:var(--text)}.quick-links a:hover{transform:translateY(-1px);box-shadow:var(--shadow)}
.text-muted{color:var(--muted)}.text-danger{color:var(--danger)}.text-center{text-align:center}.text-white-soft{color:rgba(255,255,255,.92)}.link-light{color:#fff;text-decoration:underline}.empty-state{color:var(--muted);padding:2rem;text-align:center;background:var(--surface-soft);border-radius:12px;border:1px dashed var(--border)}.record-count{color:var(--muted);font-size:.88rem;margin-top:1rem}.row-deleted{color:#8a94a6;background:#fafbff}.changes-pre{background:var(--surface-soft);padding:.75rem;border-radius:10px;font-size:.84rem;white-space:pre-wrap;word-break:break-word;max-width:420px;margin-top:.4rem;border:1px solid var(--border)}.action-cell{white-space:nowrap}.inline-form{display:inline}.link-inline-strong{margin-left:8px;font-weight:700}.panel-soft{padding:1rem 1.1rem;margin-bottom:1rem;background:#f8f9ff}.checkbox-inline{flex-direction:row;align-items:center;gap:.65rem}
.cta-panel{background:var(--header-grad);color:#fff;padding:2rem;border-radius:var(--radius-lg);box-shadow:var(--shadow-lg)}.cta-panel h2{margin-bottom:.75rem}.cta-actions{display:flex;gap:.75rem;flex-wrap:wrap;margin-top:1.25rem}
.footer{background:var(--footer);color:#fff;margin-top:auto}.footer-inner{max-width:1200px;margin:0 auto;padding:2.5rem 2rem;text-align:center}.footer-inner h3{margin-bottom:.75rem}.footer-inner p{opacity:.9}.footer-meta{margin-top:1.25rem;line-height:1.9}.footer-link{display:inline-flex;align-items:center;padding:.55rem 1rem;border:2px solid rgba(255,255,255,.65);border-radius:5px;color:#fff;margin-top:1rem}.footer-link:hover{background:#fff;color:var(--footer)}
@media (max-width:960px){.navbar{padding:1rem 1.2rem}.container{padding:2rem 1rem 3rem}.auth-layout{grid-template-columns:1fr}.auth-side{order:-1}.page-header{align-items:flex-start}.form-row{grid-template-columns:1fr}.nav-site-links{width:100%;justify-content:flex-start;order:3}}
.date-input-wrapper{position:relative;display:flex;align-items:center}.date-input-wrapper input{padding-left:2.6rem;width:100%;cursor:pointer!important}.date-input-wrapper input::-webkit-datetime-edit,.date-input-wrapper input::-webkit-datetime-edit-fields-wrapper,.date-input-wrapper input::-webkit-datetime-edit-text,.date-input-wrapper input::-webkit-datetime-edit-day-field,.date-input-wrapper input::-webkit-datetime-edit-month-field,.date-input-wrapper input::-webkit-datetime-edit-year-field{cursor:pointer}.date-icon{position:absolute;left:.75rem;font-size:1rem;cursor:pointer;color:var(--muted);z-index:1}.date-input-wrapper input::-webkit-calendar-picker-indicator{display:none}
@media (max-width:768px){.nav-brand a{font-size:1.05rem}.brand-logo{width:42px;height:42px}.hero-banner{padding:2.2rem 1.25rem}.hero-banner h1{font-size:2rem}.nav-user{width:100%}.nav-actions{justify-content:flex-start}.nav-links{width:100%}.nav-site-links{gap:.85rem}.filter-group{min-width:100%}.btn{width:100%}.btn-sm{width:auto}.cta-actions .btn{width:auto}}
