/* ═══════════════════════════════════════════════
   Circuit Assembly Hub — Main Stylesheet
   ═══════════════════════════════════════════════ */

:root {
  --font: 'DM Sans', system-ui, sans-serif;
  --mono: 'DM Mono', monospace;

  /* Brand blues */
  --blue-50:  #EBF3FF; --blue-100: #C3D9FF; --blue-200: #85B4FF;
  --blue-400: #3B7EDD; --blue-600: #1A56B0; --blue-800: #0D3270; --blue-900: #071D45;

  /* Surfaces */
  --bg:       #F6F7FA;
  --surface:  #FFFFFF;
  --surface2: #F0F2F6;
  --surface3: #E8EBF2;

  /* Text */
  --t1: #131820; --t2: #4A5568; --t3: #8B95A8; --t4: #B8C0CC;

  /* Borders */
  --b1: rgba(0,0,0,.07);
  --b2: rgba(0,0,0,.11);
  --b3: rgba(0,0,0,.17);

  /* Status */
  --green-50:#EDFBF4; --green-400:#22C37A; --green-600:#0E8F57; --green-700:#0E7248; --green-900:#074030;
  --amber-50:#FFF8EB; --amber-400:#F59E0B; --amber-600:#C07A08; --amber-700:#92580A; --amber-900:#4D2E04;
  --red-50:  #FFF0F0; --red-400:  #EF4444; --red-600:  #C42B2B; --red-700:  #A01E1E; --red-900:  #5A0C0C;
  --purple-50:#F5F0FF; --purple-400:#7C3AED; --purple-600:#5B21B6; --purple-700:#4C1D95;

  /* Dept colors */
  --c-admin:    #185FA5; --c-safety:   #0F6E56; --c-accounts: #534AB7;
  --c-attend:   #993C1D; --c-av:       #3B6D11; --c-baptism:  #854F0B;
  --c-cleaning: #A32D2D; --c-firstaid: #993556; --c-install:  #185FA5;
  --c-lost:     #5F5E5A; --c-parking:  #639922; --c-rooming:  #BA7517;

  /* Radius */
  --r1: 4px; --r2: 6px; --r3: 8px; --r4: 12px; --r5: 16px; --rf: 9999px;

  /* Shadow */
  --s1: 0 1px 3px rgba(0,0,0,.06), 0 1px 2px rgba(0,0,0,.04);
  --s2: 0 4px 12px rgba(0,0,0,.08), 0 2px 4px rgba(0,0,0,.04);
  --s3: 0 12px 32px rgba(0,0,0,.10), 0 4px 8px rgba(0,0,0,.05);

  --ease: cubic-bezier(.4,0,.2,1);
  --dur: 140ms;
}

/* ─── RESET ──────────────────────────────────── */
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0;}
html{font-size:14px;scroll-behavior:smooth;}
body{font-family:var(--font);background:var(--bg);color:var(--t1);line-height:1.6;-webkit-font-smoothing:antialiased;}
a{color:inherit;text-decoration:none;}
button{font-family:inherit;cursor:pointer;border:none;background:none;}
input,textarea,select{font-family:inherit;}
img{max-width:100%;display:block;}

/* ─── LOADING ────────────────────────────────── */
.loading-screen{
  position:fixed;inset:0;z-index:9999;
  background:var(--blue-800);
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:16px;
  transition:opacity .3s var(--ease);
}
.loading-screen.out{opacity:0;pointer-events:none;}
.loading-logo{width:52px;height:52px;border-radius:14px;background:rgba(255,255,255,.15);display:flex;align-items:center;justify-content:center;}
.loading-name{font-size:17px;font-weight:600;color:white;letter-spacing:.01em;}
.loading-spin{width:24px;height:24px;border:2px solid rgba(255,255,255,.2);border-top-color:white;border-radius:50%;animation:spin .65s linear infinite;}
@keyframes spin{to{transform:rotate(360deg);}}

/* ─── TOAST ──────────────────────────────────── */
.toast-wrap{position:fixed;bottom:20px;right:20px;z-index:9000;display:flex;flex-direction:column;gap:8px;pointer-events:none;}
.toast{
  background:var(--t1);color:white;font-size:12px;font-weight:500;
  padding:10px 16px;border-radius:var(--r3);
  box-shadow:var(--s3);
  transform:translateY(10px);opacity:0;
  transition:all .25s var(--ease);pointer-events:none;
  max-width:320px;
}
.toast.show{transform:translateY(0);opacity:1;}
.toast.success{background:var(--green-600);}
.toast.error{background:var(--red-600);}
.toast.info{background:var(--blue-600);}

/* ─── MODAL ──────────────────────────────────── */
.modal-overlay{
  position:fixed;inset:0;z-index:500;
  background:rgba(0,0,0,.35);
  display:flex;align-items:center;justify-content:center;
  padding:16px;
  opacity:0;transition:opacity .2s var(--ease);
}
.modal-overlay.open{opacity:1;}
.modal-box{
  background:var(--surface);border-radius:var(--r4);
  box-shadow:var(--s3);width:100%;max-width:480px;
  max-height:90vh;overflow-y:auto;
  transform:translateY(12px);transition:transform .2s var(--ease);
}
.modal-overlay.open .modal-box{transform:translateY(0);}
.modal-head{display:flex;align-items:center;justify-content:space-between;padding:14px 18px;border-bottom:1px solid var(--b1);}
.modal-title{font-size:15px;font-weight:600;}
.modal-x{width:28px;height:28px;border-radius:var(--r2);border:1px solid var(--b1);display:flex;align-items:center;justify-content:center;cursor:pointer;color:var(--t3);font-size:16px;transition:all var(--dur) var(--ease);}
.modal-x:hover{background:var(--surface2);color:var(--t1);}
.modal-body{padding:18px;display:flex;flex-direction:column;gap:14px;}
.modal-foot{padding:14px 18px;border-top:1px solid var(--b1);display:flex;justify-content:flex-end;gap:8px;}

/* ─── FORM ELEMENTS ──────────────────────────── */
.field{display:flex;flex-direction:column;gap:4px;}
.field-label{font-size:11px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--t3);}
.field-row{display:grid;gap:12px;}
.field-row.cols-2{grid-template-columns:1fr 1fr;}
.field-row.cols-3{grid-template-columns:1fr 1fr 1fr;}
input[type="text"],input[type="email"],input[type="tel"],input[type="password"],input[type="number"],input[type="date"],textarea,select{
  width:100%;height:36px;padding:0 11px;
  border:1px solid var(--b2);border-radius:var(--r2);
  background:var(--surface);color:var(--t1);font-size:13px;font-family:var(--font);
  transition:border-color var(--dur) var(--ease),box-shadow var(--dur) var(--ease);
  outline:none;
}
textarea{height:auto;min-height:80px;padding:9px 11px;resize:vertical;line-height:1.5;}
input:focus,textarea:focus,select:focus{border-color:var(--blue-400);box-shadow:0 0 0 3px rgba(59,126,221,.12);}
input::placeholder,textarea::placeholder{color:var(--t4);}
select{appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath d='M2 4l4 4 4-4' stroke='%238B95A8' stroke-width='1.5' fill='none' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 10px center;padding-right:28px;}

/* ─── BUTTONS ────────────────────────────────── */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;height:34px;padding:0 14px;border-radius:var(--r2);font-size:12px;font-weight:500;font-family:var(--font);cursor:pointer;transition:all var(--dur) var(--ease);white-space:nowrap;border:1px solid transparent;}
.btn:active{transform:scale(.98);}
.btn-primary{background:var(--blue-600);color:white;border-color:var(--blue-600);}
.btn-primary:hover{background:var(--blue-800);}
.btn-secondary{background:var(--surface);color:var(--t2);border-color:var(--b2);}
.btn-secondary:hover{background:var(--surface2);}
.btn-danger{background:var(--red-50);color:var(--red-700);border-color:var(--red-400);}
.btn-danger:hover{background:var(--red-400);color:white;}
.btn-ghost{background:transparent;color:var(--t2);border-color:transparent;}
.btn-ghost:hover{background:var(--surface2);}
.btn-sm{height:28px;padding:0 10px;font-size:11px;}
.btn-icon{width:32px;height:32px;padding:0;border-radius:var(--r2);border:1px solid var(--b1);background:var(--surface);color:var(--t3);display:inline-flex;align-items:center;justify-content:center;cursor:pointer;transition:all var(--dur) var(--ease);}
.btn-icon:hover{background:var(--surface2);color:var(--t1);}
.btn-icon.danger:hover{background:var(--red-50);color:var(--red-700);border-color:var(--red-400);}
.btn-add{display:flex;align-items:center;gap:8px;padding:10px 14px;cursor:pointer;border-top:1px solid var(--b1);color:var(--t3);font-size:12px;transition:all var(--dur) var(--ease);}
.btn-add:hover{background:var(--surface2);color:var(--blue-600);}
.btn-add-circle{width:24px;height:24px;border-radius:50%;background:var(--blue-600);display:flex;align-items:center;justify-content:center;flex-shrink:0;transition:background var(--dur) var(--ease);}
.btn-add:hover .btn-add-circle{background:var(--blue-800);}

/* ─── BADGES / PILLS ─────────────────────────── */
.badge{display:inline-flex;align-items:center;font-size:10px;font-weight:600;padding:2px 7px;border-radius:var(--rf);letter-spacing:.02em;}
.badge-blue{background:var(--blue-50);color:var(--blue-600);}
.badge-green{background:var(--green-50);color:var(--green-700);}
.badge-amber{background:var(--amber-50);color:var(--amber-700);}
.badge-red{background:var(--red-50);color:var(--red-700);}
.badge-purple{background:var(--purple-50);color:var(--purple-600);}
.badge-gray{background:var(--surface2);color:var(--t3);border:1px solid var(--b1);}

/* Serving as badges */
.sv-elder{background:var(--blue-50);color:var(--blue-600);}
.sv-ms{background:var(--amber-50);color:var(--amber-700);}
.sv-pioneer{background:var(--green-50);color:var(--green-700);}
.sv-publisher{background:var(--surface2);color:var(--t3);border:1px solid var(--b1);}
.sv-special-pioneer{background:var(--purple-50);color:var(--purple-600);}
.sv-bethelite{background:var(--red-50);color:var(--red-700);}
.sv-circuit-overseer{background:var(--blue-800);color:white;}

/* Role type tags */
.rtt{display:inline-block;font-size:10px;font-weight:600;letter-spacing:.05em;text-transform:uppercase;padding:2px 6px;border-radius:3px;}
.rtt-overseer{background:var(--blue-50);color:var(--blue-600);}
.rtt-assistant{background:var(--green-50);color:var(--green-700);}
.rtt-keyman{background:var(--amber-50);color:var(--amber-700);}
.rtt-av_assistant{background:var(--purple-50);color:var(--purple-600);}

/* Status badges */
.st-ok{background:var(--green-50);color:var(--green-700);}
.st-aging{background:var(--amber-50);color:var(--amber-700);}
.st-replace{background:var(--red-50);color:var(--red-700);}
.cond-good{background:var(--green-50);color:var(--green-700);}
.cond-fair{background:var(--amber-50);color:var(--amber-700);}
.cond-repair{background:var(--red-50);color:var(--red-700);}

/* ─── LAYOUT ─────────────────────────────────── */
#app{min-height:100vh;display:flex;flex-direction:column;}
.app-wrap{display:flex;flex:1;min-height:0;}

/* ─── LOGIN PAGE ─────────────────────────────── */
.login-page{
  min-height:100vh;
  background:var(--blue-800);
  display:flex;align-items:center;justify-content:center;
  padding:20px;
}
.login-card{
  background:var(--surface);border-radius:var(--r4);
  box-shadow:var(--s3);
  width:100%;max-width:380px;
  overflow:hidden;
}
.login-header{
  background:var(--blue-600);padding:28px 28px 24px;
  display:flex;flex-direction:column;align-items:center;gap:12px;
}
.login-logo{width:48px;height:48px;border-radius:12px;background:rgba(255,255,255,.15);display:flex;align-items:center;justify-content:center;}
.login-title{font-size:17px;font-weight:600;color:white;}
.login-sub{font-size:12px;color:rgba(255,255,255,.7);}
.login-body{padding:24px 28px;display:flex;flex-direction:column;gap:14px;}
.login-divider{display:flex;align-items:center;gap:10px;color:var(--t4);font-size:11px;}
.login-divider::before,.login-divider::after{content:'';flex:1;height:1px;background:var(--b1);}
.google-btn{
  display:flex;align-items:center;justify-content:center;gap:10px;
  height:40px;border-radius:var(--r2);border:1px solid var(--b2);
  background:var(--surface);color:var(--t1);font-size:13px;font-weight:500;
  cursor:pointer;transition:all var(--dur) var(--ease);width:100%;
}
.google-btn:hover{background:var(--surface2);}
.remember-row{display:flex;align-items:center;gap:8px;font-size:12px;color:var(--t2);}
.remember-row input[type="checkbox"]{width:14px;height:14px;cursor:pointer;}

/* 2FA */
.code-boxes{display:flex;gap:8px;justify-content:center;}
.code-box{
  width:44px;height:52px;border-radius:var(--r2);border:1px solid var(--b2);
  background:var(--surface2);font-size:20px;font-weight:600;text-align:center;
  transition:all var(--dur) var(--ease);outline:none;
}
.code-box:focus{border-color:var(--blue-400);background:var(--surface);box-shadow:0 0 0 3px rgba(59,126,221,.12);}

/* ─── TOP NAV ────────────────────────────────── */
.topnav{
  height:50px;flex-shrink:0;
  background:var(--surface);border-bottom:1px solid var(--b1);
  display:flex;align-items:center;padding:0 18px;gap:0;
  position:sticky;top:0;z-index:200;box-shadow:var(--s1);
}
.nav-logo{display:flex;align-items:center;gap:9px;font-size:14px;font-weight:600;cursor:pointer;margin-right:24px;flex-shrink:0;color:var(--t1);}
.nav-logo-mark{width:26px;height:26px;border-radius:7px;background:var(--blue-600);display:flex;align-items:center;justify-content:center;}
.nav-links{display:flex;gap:2px;flex:1;}
.nav-link{font-size:12px;padding:6px 11px;border-radius:var(--r2);color:var(--t2);cursor:pointer;transition:all var(--dur) var(--ease);}
.nav-link:hover{background:var(--surface2);color:var(--t1);}
.nav-link.active{background:var(--blue-50);color:var(--blue-600);font-weight:500;}
.nav-right{display:flex;align-items:center;gap:10px;flex-shrink:0;}
.nav-avatar{width:28px;height:28px;border-radius:50%;background:var(--blue-50);color:var(--blue-600);font-size:11px;font-weight:600;display:flex;align-items:center;justify-content:center;cursor:pointer;}
.nav-username{font-size:12px;color:var(--t2);}

/* ─── SIDEBAR ────────────────────────────────── */
.sidebar{
  width:196px;flex-shrink:0;
  background:var(--surface);border-right:1px solid var(--b1);
  overflow-y:auto;padding:10px 7px;
}
.sb-section{font-size:10px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--t4);padding:10px 8px 4px;}
.sb-item{display:flex;align-items:center;gap:8px;padding:7px 9px;border-radius:var(--r2);font-size:12px;color:var(--t2);cursor:pointer;transition:all var(--dur) var(--ease);}
.sb-item:hover{background:var(--surface2);color:var(--t1);}
.sb-item.active{background:var(--blue-50);color:var(--blue-600);font-weight:500;}
.sb-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0;}

/* ─── MAIN ───────────────────────────────────── */
.main{flex:1;overflow-y:auto;padding:22px 24px;min-width:0;}
.page{display:none;}
.page.active{display:block;}

/* ─── PAGE HEADER ────────────────────────────── */
.page-header{display:flex;align-items:flex-start;justify-content:space-between;margin-bottom:20px;gap:12px;}
.page-title{font-size:20px;font-weight:600;}
.page-sub{font-size:12px;color:var(--t3);margin-top:3px;}
.page-actions{display:flex;gap:8px;flex-shrink:0;align-items:center;}

/* ─── STATS ──────────────────────────────────── */
.stats-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:10px;margin-bottom:20px;}
.stat-card{background:var(--surface);border:1px solid var(--b1);border-radius:var(--r3);padding:14px 16px;box-shadow:var(--s1);}
.stat-val{font-size:26px;font-weight:600;line-height:1.1;}
.stat-lbl{font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--t3);margin-top:4px;}

/* ─── CARD ───────────────────────────────────── */
.card{background:var(--surface);border:1px solid var(--b1);border-radius:var(--r4);overflow:hidden;box-shadow:var(--s1);margin-bottom:16px;}
.card-head{display:flex;align-items:center;justify-content:space-between;padding:13px 18px;border-bottom:1px solid var(--b1);}
.card-title{font-size:15px;font-weight:600;}
.card-sub{font-size:12px;color:var(--t3);margin-top:2px;}
.card-body{padding:16px 18px;}

/* ─── TABS ───────────────────────────────────── */
.tabs-bar{display:flex;border-bottom:1px solid var(--b1);padding:0 18px;overflow-x:auto;background:var(--surface);}
.tab-btn{font-size:12px;padding:10px 13px;color:var(--t3);border-bottom:2px solid transparent;cursor:pointer;white-space:nowrap;transition:all var(--dur) var(--ease);}
.tab-btn:hover{color:var(--t1);}
.tab-btn.active{color:var(--blue-600);border-bottom-color:var(--blue-400);font-weight:500;}
.tab-panel{display:none;padding:16px 18px;}
.tab-panel.active{display:block;}

/* ─── SECTION HEADER ─────────────────────────── */
.section-head{display:flex;align-items:center;justify-content:space-between;padding:9px 18px;background:var(--surface2);border-bottom:1px solid var(--b1);}
.section-title{font-size:11px;font-weight:600;color:var(--t2);display:flex;align-items:center;gap:7px;}

/* ─── ROLES GRID ─────────────────────────────── */
.roles-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:10px;}
.role-card{border:1px solid var(--b1);border-radius:var(--r3);padding:12px 14px;background:var(--surface2);transition:box-shadow var(--dur);}
.role-card:hover{box-shadow:var(--s1);}
.role-card.empty{border-style:dashed;background:transparent;opacity:.7;}
.role-card.pending{border-color:var(--amber-400);background:var(--amber-50);}
.role-card.add-role{border-style:dashed;background:transparent;display:flex;align-items:center;justify-content:center;gap:7px;cursor:pointer;min-height:72px;}
.role-card.add-role:hover{background:var(--blue-50);border-color:var(--blue-400);}
.role-top{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px;}
.role-slot{font-size:13px;font-weight:500;}
.role-slot.empty{color:var(--t3);font-style:italic;font-weight:400;}
.role-actions-row{display:flex;gap:4px;margin-top:8px;}

/* ─── PERSON LIST ────────────────────────────── */
.person-list{display:flex;flex-direction:column;gap:6px;}
.person-row{display:flex;align-items:center;gap:10px;padding:8px 11px;border-radius:var(--r2);background:var(--surface2);border:1px solid var(--b1);}
.person-row.setup{border-color:var(--purple-400);background:rgba(124,58,237,.04);}
.pav{width:28px;height:28px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:10px;font-weight:600;flex-shrink:0;}
.pav-h{background:var(--blue-50);color:var(--blue-600);}
.pav-s{background:var(--purple-50);color:var(--purple-600);}
.pinfo{flex:1;min-width:0;}
.pname{font-size:13px;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.prole{font-size:11px;color:var(--t3);}
.pbtns{display:flex;gap:4px;flex-shrink:0;}

/* ─── VOLUNTEER TABLE ────────────────────────── */
.vol-table-wrap{overflow-x:auto;}
.vol-table{width:100%;border-collapse:collapse;min-width:600px;}
.vol-table th{padding:8px 14px;font-size:10px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:var(--t3);background:var(--surface2);border-bottom:1px solid var(--b1);text-align:left;white-space:nowrap;}
.vol-table th:not(:last-child){border-right:1px solid var(--b1);}
.vol-table td{padding:9px 14px;font-size:12px;border-bottom:1px solid var(--b1);vertical-align:middle;}
.vol-table td:not(:last-child){border-right:1px solid var(--b1);}
.vol-table tr:last-child td{border-bottom:none;}
.vol-table tr:hover td{background:var(--surface2);}
.vol-name{font-weight:500;font-size:13px;}
.vol-email{font-size:10px;color:var(--t3);margin-top:1px;}

/* ─── TASKS ──────────────────────────────────── */
.progress-row{display:flex;align-items:center;gap:12px;margin-bottom:14px;}
.progress-bg{flex:1;height:6px;border-radius:var(--rf);background:var(--surface2);overflow:hidden;}
.progress-fill{height:100%;border-radius:var(--rf);background:var(--green-400);transition:width .3s var(--ease);}
.task-section-head{display:flex;align-items:center;justify-content:space-between;padding:8px 0 8px;border-bottom:1px solid var(--b1);margin-bottom:10px;}
.task-list{display:flex;flex-direction:column;}
.task-row{display:flex;align-items:flex-start;gap:10px;padding:9px 2px;border-bottom:1px solid var(--b1);cursor:pointer;}
.task-row:last-child{border-bottom:none;}
.task-cb{width:17px;height:17px;border-radius:4px;border:1.5px solid var(--b2);flex-shrink:0;display:flex;align-items:center;justify-content:center;margin-top:1px;transition:all var(--dur) var(--ease);}
.task-cb.checked{background:var(--green-50);border-color:var(--green-400);}
.task-name{font-size:13px;font-weight:500;transition:all var(--dur);}
.task-name.done{text-decoration:line-through;color:var(--t3);font-weight:400;}
.task-meta{display:flex;align-items:center;gap:6px;margin-top:4px;flex-wrap:wrap;}
.day-chip{font-size:10px;padding:1px 7px;border-radius:var(--rf);background:var(--blue-50);color:var(--blue-600);}
.day-chip.ongoing{background:var(--green-50);color:var(--green-700);}
.time-chip{font-size:10px;padding:1px 7px;border-radius:var(--rf);background:var(--amber-50);color:var(--amber-700);}
.assigned-chip{font-size:10px;padding:1px 7px;border-radius:var(--rf);background:var(--surface2);border:1px solid var(--b1);color:var(--t2);display:flex;align-items:center;gap:4px;}
.assigned-chip-dot{width:5px;height:5px;border-radius:50%;flex-shrink:0;}

/* ─── INVENTORY ──────────────────────────────── */
.inv-table-wrap{overflow-x:auto;}
.inv-table{width:100%;border-collapse:collapse;min-width:680px;}
.inv-table th{padding:7px 12px;font-size:10px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:var(--t3);background:var(--surface2);border-bottom:1px solid var(--b1);text-align:left;}
.inv-table th:not(:last-child){border-right:1px solid var(--b1);}
.inv-table td{padding:9px 12px;font-size:12px;border-bottom:1px solid var(--b1);vertical-align:middle;}
.inv-table td:not(:last-child){border-right:1px solid var(--b1);}
.inv-table tr:last-child td{border-bottom:none;}
.inv-table tr:hover td{background:var(--surface2);}
.inv-item-name{font-weight:500;}
.inv-item-desc{font-size:10px;color:var(--t3);margin-top:1px;}
.loc-chip{font-size:10px;padding:2px 7px;border-radius:var(--r1);background:var(--surface2);border:1px solid var(--b1);color:var(--t2);}
.loc-chip.tijeras{background:var(--purple-50);border-color:var(--purple-400);color:var(--purple-700);}

/* Photo grid */
.photo-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:8px;margin-bottom:10px;}
.photo-slot{aspect-ratio:4/3;border-radius:var(--r2);border:1px solid var(--b1);overflow:hidden;position:relative;background:var(--surface2);}
.photo-slot.empty{border-style:dashed;display:flex;align-items:center;justify-content:center;flex-direction:column;gap:4px;cursor:pointer;}
.photo-slot.empty:hover{background:var(--blue-50);border-color:var(--blue-400);}
.photo-img{width:100%;height:100%;object-fit:cover;}
.photo-remove{position:absolute;top:4px;left:4px;width:18px;height:18px;border-radius:50%;background:rgba(163,45,45,.85);display:flex;align-items:center;justify-content:center;cursor:pointer;opacity:0;transition:opacity var(--dur);}
.photo-slot:hover .photo-remove{opacity:1;}
.photo-note{font-size:10px;color:var(--t3);display:flex;align-items:center;gap:6px;flex-wrap:wrap;}

/* ─── AUDIT TABLE ────────────────────────────── */
.audit-table{width:100%;border-collapse:collapse;}
.audit-table th{padding:7px 14px;font-size:10px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:var(--t3);background:var(--surface2);border-bottom:1px solid var(--b1);text-align:left;}
.audit-table td{padding:9px 14px;font-size:12px;border-bottom:1px solid var(--b1);vertical-align:middle;}
.audit-table tr:last-child td{border-bottom:none;}
.audit-table tr:hover td{background:var(--surface2);}
.action-pill{font-size:10px;padding:2px 7px;border-radius:var(--rf);font-weight:500;}
.ap-login{background:var(--green-50);color:var(--green-700);}
.ap-edit{background:var(--blue-50);color:var(--blue-600);}
.ap-add{background:var(--purple-50);color:var(--purple-600);}
.ap-delete{background:var(--red-50);color:var(--red-700);}
.ap-invite{background:var(--amber-50);color:var(--amber-700);}

/* ─── CALENDAR ───────────────────────────────── */
.cal-block{border:1px solid var(--b1);border-radius:var(--r4);overflow:hidden;margin-bottom:14px;}
.cal-banner{padding:12px 16px;background:var(--blue-50);border-bottom:1px solid var(--b1);display:flex;align-items:center;justify-content:space-between;}
.cal-asm-name{font-size:14px;font-weight:600;color:var(--blue-800);}
.cal-asm-meta{font-size:11px;color:var(--blue-600);margin-top:2px;}
.cal-grid{display:grid;grid-template-columns:110px 1fr 1fr;}
.cal-col-head{padding:6px 12px;font-size:10px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:var(--t3);background:var(--surface2);border-bottom:1px solid var(--b1);}
.cal-col-head:not(:last-child){border-right:1px solid var(--b1);}
.cal-day-cell{padding:10px 12px;border-right:1px solid var(--b1);}
.cal-tasks-cell{padding:10px 12px;display:flex;flex-wrap:wrap;gap:5px;align-content:flex-start;}
.cal-tasks-cell:not(:last-child){border-right:1px solid var(--b1);}
.cal-row{border-bottom:1px solid var(--b1);}
.cal-row:last-child{border-bottom:none;}
.cal-dayname{font-size:13px;font-weight:600;}
.cal-daytype{font-size:9px;font-weight:600;padding:2px 6px;border-radius:3px;margin-top:4px;display:inline-block;}
.dt-setup{background:var(--amber-50);color:var(--amber-700);}
.dt-assembly{background:var(--blue-50);color:var(--blue-600);}
.cal-chip{font-size:10px;padding:2px 8px;border-radius:var(--r1);}

/* ─── DIRECTORY ──────────────────────────────── */
.dir-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:10px;}
.dir-card{background:var(--surface);border:1px solid var(--b1);border-radius:var(--r3);padding:12px 14px;display:flex;align-items:center;gap:11px;box-shadow:var(--s1);}
.dir-av{width:36px;height:36px;border-radius:50%;background:var(--blue-50);color:var(--blue-600);font-size:12px;font-weight:600;display:flex;align-items:center;justify-content:center;flex-shrink:0;}
.dir-name{font-size:13px;font-weight:500;}
.dir-role{font-size:11px;color:var(--t3);margin-top:1px;}
.dir-dept{font-size:10px;padding:1px 6px;border-radius:var(--rf);background:var(--surface2);border:1px solid var(--b1);color:var(--t2);margin-top:4px;display:inline-block;}

/* ─── CUSTOM FIELDS ──────────────────────────── */
.cf-row{display:grid;grid-template-columns:1fr 1fr auto;gap:8px;align-items:center;margin-bottom:8px;}
.cf-key{height:30px;border-radius:var(--r2);border:1px dashed var(--b2);background:var(--surface2);padding:0 10px;font-size:12px;color:var(--t2);width:100%;}
.cf-val{height:30px;border-radius:var(--r2);border:1px solid var(--b2);background:var(--surface);padding:0 10px;font-size:12px;width:100%;}

/* ─── MOBILE NAV ─────────────────────────────── */
.mobile-nav{display:none;position:fixed;bottom:0;left:0;right:0;height:56px;background:var(--surface);border-top:1px solid var(--b1);z-index:200;box-shadow:0 -4px 12px rgba(0,0,0,.06);}
.mobile-nav-items{display:grid;grid-template-columns:repeat(4,1fr);height:100%;}
.mobile-nav-item{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;cursor:pointer;color:var(--t3);transition:color var(--dur);}
.mobile-nav-item.active{color:var(--blue-600);}
.mobile-nav-label{font-size:9px;font-weight:500;}

/* ─── RESPONSIVE ─────────────────────────────── */
@media (max-width: 768px) {
  .sidebar{display:none;}
  .mobile-nav{display:block;}
  .main{padding:14px 14px 70px;}
  .topnav{padding:0 14px;}
  .nav-links{display:none;}
  .stats-row{grid-template-columns:repeat(2,1fr);}
  .roles-grid{grid-template-columns:1fr 1fr;}
  .photo-grid{grid-template-columns:repeat(3,1fr);}
  .field-row.cols-3{grid-template-columns:1fr 1fr;}
  .cal-grid{grid-template-columns:90px 1fr;}
  .dir-grid{grid-template-columns:1fr;}
}

@media (max-width: 480px) {
  .roles-grid{grid-template-columns:1fr;}
  .field-row.cols-2,.field-row.cols-3{grid-template-columns:1fr;}
  .code-boxes{gap:6px;}
  .code-box{width:38px;height:46px;font-size:18px;}
}
