:root{--green:#166534;--green2:#23834b;--lime:#dff3cc;--cream:#f6f5ed;--paper:#fff;--ink:#183126;--muted:#66766d;--line:#d9e3db;--soft:#eef5ef;--warn:#fff2bf;--danger:#b42318;--shadow:0 14px 40px rgba(24,49,38,.09)}*{box-sizing:border-box}html,body{margin:0;min-height:100%;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;background:var(--cream);color:var(--ink)}button,input,select,textarea{font:inherit}button{cursor:pointer}.shell{display:grid;grid-template-columns:270px 1fr;min-height:100vh}.sidebar{background:linear-gradient(180deg,#164f31,#0f3d27);color:#fff;padding:18px 14px;position:sticky;top:0;height:100vh;overflow:auto}.brand{display:flex;gap:10px;align-items:center;padding:4px 8px 16px}.brand-mark,.login-logo{width:42px;height:42px;border-radius:14px;background:linear-gradient(135deg,#8bd65a,#f2cf51);display:grid;place-items:center;color:#173b25;font-weight:900;box-shadow:0 8px 22px rgba(0,0,0,.18)}.brand strong{display:block;font-size:18px}.brand span{font-size:12px;color:#cfe9d8}.association-badge{margin:0 6px 14px;padding:10px 12px;background:rgba(255,255,255,.09);border:1px solid rgba(255,255,255,.12);border-radius:12px;font-size:12px;color:#eaf6ee}nav .group{margin:14px 8px 5px;font-size:10px;text-transform:uppercase;letter-spacing:.12em;color:#a9cfb7}nav button{width:100%;border:0;background:transparent;color:#e6f4ea;text-align:left;padding:10px 11px;border-radius:10px;margin:2px 0;font-size:14px}nav button:hover,nav button.active{background:rgba(255,255,255,.13);color:#fff}.sidebar-foot{margin-top:20px;padding:12px 8px;display:grid;gap:8px}.sidebar-foot small{color:#9fc6ad}.ghost{border:1px solid rgba(255,255,255,.22);background:transparent;color:#fff;padding:9px 12px;border-radius:10px}.workspace{min-width:0}.topbar{height:84px;background:rgba(255,255,255,.9);backdrop-filter:blur(14px);border-bottom:1px solid var(--line);display:flex;align-items:center;gap:14px;padding:14px 24px;position:sticky;top:0;z-index:20}.topbar h1{margin:0;font-size:22px}.topbar p{margin:3px 0 0;color:var(--muted);font-size:13px}.top-actions{margin-left:auto}.status-dot{font-size:12px;background:#e6f7ea;color:#17643a;padding:7px 10px;border-radius:999px}.menu-btn{display:none;border:0;background:var(--soft);border-radius:10px;padding:8px 10px}main{padding:22px;max-width:1600px;width:100%;margin:0 auto}.hero{background:linear-gradient(135deg,#1b7043,#2f8f55 52%,#93c95a);color:#fff;border-radius:22px;padding:24px;box-shadow:var(--shadow);display:grid;grid-template-columns:1.4fr .6fr;gap:20px}.hero h2{font-size:28px;margin:0 0 8px}.hero p{margin:0;color:#e8f6ec;line-height:1.5}.hero-stat{align-self:center;background:rgba(255,255,255,.13);border:1px solid rgba(255,255,255,.2);border-radius:16px;padding:15px}.grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px}.grid.two{grid-template-columns:repeat(2,minmax(0,1fr))}.grid.three{grid-template-columns:repeat(3,minmax(0,1fr))}.card{background:var(--paper);border:1px solid var(--line);border-radius:17px;padding:16px;box-shadow:0 8px 24px rgba(24,49,38,.05)}.kpi{margin-top:14px}.kpi span{font-size:12px;color:var(--muted)}.kpi strong{display:block;margin-top:6px;font-size:25px}.section-title{display:flex;align-items:end;justify-content:space-between;gap:16px;margin:0 0 14px}.section-title h2{margin:0;font-size:21px}.section-title p{margin:4px 0 0;color:var(--muted);font-size:13px}.toolbar{display:flex;flex-wrap:wrap;gap:8px;align-items:center}.primary,.secondary,.danger-btn{border:0;border-radius:10px;padding:10px 13px;font-weight:700}.primary{background:var(--green);color:#fff}.primary:hover{background:#0f552f}.secondary{background:var(--soft);color:var(--ink);border:1px solid var(--line)}.danger-btn{background:#fff1ef;color:var(--danger);border:1px solid #ffd0ca}.form-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.form-grid .span-2{grid-column:span 2}.form-grid .span-3{grid-column:1/-1}label{display:grid;gap:6px;font-size:12px;color:#4e6357;font-weight:650}input,select,textarea{width:100%;background:#fff;border:1px solid #cfdad2;border-radius:10px;padding:10px 11px;color:var(--ink);outline:none}input:focus,select:focus,textarea:focus{border-color:#57a976;box-shadow:0 0 0 3px #dff2e5}textarea{min-height:84px;resize:vertical}.table-wrap{overflow:auto;border:1px solid var(--line);border-radius:14px;background:#fff}table{width:100%;border-collapse:collapse;font-size:13px}th,td{padding:11px 12px;border-bottom:1px solid #edf1ee;text-align:left;vertical-align:top;white-space:nowrap}th{font-size:11px;text-transform:uppercase;letter-spacing:.04em;color:#65766b;background:#f7faf7}tr:last-child td{border-bottom:0}.muted{color:var(--muted)}.notice{padding:12px 14px;border-radius:12px;background:var(--warn);border:1px solid #e8d98c;font-size:13px;line-height:1.5}.notice.ok{background:#e9f7ee;border-color:#b8e2c5}.pill{display:inline-flex;padding:5px 8px;border-radius:999px;background:#edf5ef;font-size:11px}.stack{display:grid;gap:14px}.split{display:grid;grid-template-columns:minmax(330px,.8fr) minmax(0,1.2fr);gap:14px}.empty{padding:28px;text-align:center;color:var(--muted)}.metric-list{display:grid;gap:8px}.metric-row{display:flex;justify-content:space-between;gap:12px;padding:9px 0;border-bottom:1px dashed var(--line)}.metric-row:last-child{border-bottom:0}.ai-box{background:linear-gradient(135deg,#f1f8ef,#fff8dc);border:1px solid #d9e7cd}.ai-answer{white-space:pre-wrap;line-height:1.6}.login-layer{position:fixed;inset:0;background:linear-gradient(135deg,#113d28dd,#255a3be8),radial-gradient(circle at 80% 20%,#a7d56b,#183d29);z-index:100;display:grid;place-items:center;padding:18px}.login-card{width:min(430px,95vw);background:#fff;border-radius:22px;padding:26px;box-shadow:0 30px 90px rgba(0,0,0,.28);display:grid;gap:14px}.login-card h2{margin:3px 0 0}.login-card p{margin:0;color:var(--muted);line-height:1.5}.form-error{color:var(--danger);font-size:12px}.toast{position:fixed;right:20px;bottom:20px;background:#173e29;color:#fff;padding:12px 15px;border-radius:12px;box-shadow:var(--shadow);z-index:120;opacity:0;transform:translateY(10px);pointer-events:none;transition:.2s}.toast.show{opacity:1;transform:none}.check-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.check{display:flex;align-items:center;gap:8px;background:#f7faf7;border:1px solid var(--line);border-radius:10px;padding:9px}.check input{width:auto}.source-list{display:grid;gap:8px}.source-item{padding:11px;border-radius:11px;background:#f7faf7;border:1px solid var(--line)}.source-item strong{display:block}.source-item small{color:var(--muted)}@media(max-width:1150px){.grid{grid-template-columns:repeat(2,minmax(0,1fr))}.form-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.form-grid .span-3{grid-column:1/-1}.split{grid-template-columns:1fr}.hero{grid-template-columns:1fr}}@media(max-width:760px){.shell{grid-template-columns:1fr}.sidebar{position:fixed;left:-290px;width:270px;z-index:60;transition:.22s}.sidebar.open{left:0}.menu-btn{display:block}.topbar{padding:12px 14px;height:76px}.topbar h1{font-size:18px}.topbar p{display:none}main{padding:12px}.grid,.grid.two,.grid.three,.form-grid{grid-template-columns:1fr}.form-grid .span-2,.form-grid .span-3{grid-column:auto}.hero{padding:18px;border-radius:17px}.hero h2{font-size:23px}.check-grid{grid-template-columns:1fr}th,td{padding:10px}}

/* ===== Premium Forms & Records — visual only ===== */
:root{
  --surface-premium:#fffef9;
  --surface-soft:#f6faf5;
  --surface-accent:#eef7ed;
  --accent-gold:#d7b95f;
  --green-deep:#0f4a2d;
  --green-mid:#1c7545;
  --premium-line:#dbe7dd;
  --premium-shadow:0 22px 55px rgba(24,49,38,.10);
  --field-shadow:0 8px 20px rgba(22,101,52,.04);
}

.workspace{
  background:
    radial-gradient(circle at 82% 4%,rgba(215,185,95,.10),transparent 26%),
    radial-gradient(circle at 18% 18%,rgba(96,170,108,.08),transparent 30%),
    var(--cream);
}

main{padding:28px 30px 40px}

.topbar{
  border-bottom:1px solid rgba(22,101,52,.10);
  box-shadow:0 8px 25px rgba(24,49,38,.04);
}
.topbar h1{font-size:24px;letter-spacing:-.025em}
.topbar p{font-size:13px;color:#718178}

.split{
  grid-template-columns:minmax(420px,.82fr) minmax(0,1.55fr);
  gap:22px;
  align-items:start;
}

.split>.card{
  position:relative;
  overflow:hidden;
  border:1px solid rgba(22,101,52,.10);
  box-shadow:var(--premium-shadow);
  background:
    linear-gradient(180deg,rgba(255,255,255,.98),rgba(252,253,248,.98));
  border-radius:28px;
  padding:24px;
}

.split>.card:first-child{
  background:
    radial-gradient(circle at 100% 0,rgba(141,203,111,.15),transparent 35%),
    linear-gradient(155deg,#fffefb 0%,#f8fbf5 100%);
}
.split>.card:first-child:before{
  content:"";
  position:absolute;
  left:0;top:0;bottom:0;
  width:5px;
  background:linear-gradient(180deg,var(--accent-gold),#6eb15c 54%,var(--green-deep));
}
.split>.card:nth-child(2):before{
  content:"";
  position:absolute;
  top:0;left:28px;right:28px;
  height:4px;
  border-radius:0 0 10px 10px;
  background:linear-gradient(90deg,var(--green-deep),#6aaa5d,var(--accent-gold));
}

.card h2,.card h3{
  color:#173b29;
  letter-spacing:-.025em;
}
.split>.card h2{
  margin:0 0 22px;
  font-size:24px;
  font-weight:800;
}
.split>.card:first-child h2:after{
  content:"";
  display:block;
  width:54px;
  height:4px;
  margin-top:10px;
  border-radius:999px;
  background:linear-gradient(90deg,var(--green-mid),var(--accent-gold));
}

.split>.card:first-child .form-grid{
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:16px 14px;
}
.split>.card:first-child .form-grid .span-2,
.split>.card:first-child .form-grid .span-3{grid-column:1/-1}

.split>.card:first-child label{
  gap:7px;
  font-size:11px;
  text-transform:uppercase;
  letter-spacing:.045em;
  color:#50645a;
  font-weight:800;
}

.split>.card:first-child input,
.split>.card:first-child select,
.split>.card:first-child textarea{
  min-height:48px;
  border:1px solid #d7e2da;
  border-radius:15px;
  padding:12px 14px;
  background:rgba(255,255,255,.88);
  box-shadow:var(--field-shadow);
  transition:border-color .18s ease,box-shadow .18s ease,transform .18s ease,background .18s ease;
}

.split>.card:first-child textarea{
  min-height:112px;
  line-height:1.45;
}

.split>.card:first-child input:hover,
.split>.card:first-child select:hover,
.split>.card:first-child textarea:hover{
  border-color:#b7cfbd;
  background:#fff;
}

.split>.card:first-child input:focus,
.split>.card:first-child select:focus,
.split>.card:first-child textarea:focus{
  border-color:#4a9a66;
  background:#fff;
  box-shadow:0 0 0 4px rgba(74,154,102,.12),0 12px 28px rgba(22,101,52,.08);
  transform:translateY(-1px);
}

.primary{
  min-height:46px;
  border-radius:14px;
  padding:11px 18px;
  background:linear-gradient(135deg,#0f5c35,#20824b 72%,#2f9256);
  box-shadow:0 10px 22px rgba(15,92,53,.18);
  transition:transform .18s ease,box-shadow .18s ease,filter .18s ease;
}
.primary:hover{
  background:linear-gradient(135deg,#0d512f,#1f7746 72%,#2a844f);
  transform:translateY(-2px);
  box-shadow:0 14px 28px rgba(15,92,53,.24);
}
.secondary,.danger-btn{
  min-height:40px;
  border-radius:12px;
  transition:transform .16s ease,box-shadow .16s ease,background .16s ease;
}
.secondary:hover,.danger-btn:hover{transform:translateY(-1px)}
.secondary{background:#f3f8f3;border-color:#d6e4d9}
.danger-btn{background:#fff8f6;border-color:#f2d4ce}

.split>.card:first-child .toolbar{
  margin-top:5px;
  padding-top:4px;
}

.split>.card:nth-child(2){
  padding:24px 22px 22px;
}

.table-wrap{
  border:1px solid #e0e8e2;
  border-radius:20px;
  background:rgba(255,255,255,.94);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.8);
  scrollbar-color:#a8c5ae #edf3ee;
  scrollbar-width:thin;
}
.table-wrap::-webkit-scrollbar{height:9px;width:9px}
.table-wrap::-webkit-scrollbar-track{background:#edf3ee;border-radius:999px}
.table-wrap::-webkit-scrollbar-thumb{background:#a8c5ae;border-radius:999px;border:2px solid #edf3ee}

table{border-collapse:separate;border-spacing:0;font-size:13px}
th{
  position:sticky;
  top:0;
  z-index:2;
  background:linear-gradient(180deg,#f2f8f2,#edf5ee);
  color:#3b5746;
  border-bottom:1px solid #d8e5da;
  font-size:10px;
  letter-spacing:.075em;
  padding:14px 14px;
}
td{
  padding:15px 14px;
  border-bottom:1px solid #edf2ee;
  color:#30483a;
  background:rgba(255,255,255,.82);
}
tbody tr:nth-child(even) td{background:#fbfdf9}
tbody tr:hover td{background:#f2f8f1}
tbody tr:last-child td{border-bottom:0}

.table-wrap .toolbar{flex-wrap:nowrap}
.table-wrap .secondary,
.table-wrap .danger-btn{
  min-height:34px;
  padding:7px 10px;
  font-size:12px;
}

.notice{
  border-radius:18px;
  padding:14px 16px;
  box-shadow:0 8px 22px rgba(24,49,38,.04);
}
.notice.ok{
  background:linear-gradient(135deg,#edf8ef,#f8fbf2);
  border-color:#cce3d0;
}

.pill{
  border:1px solid #d9e7dc;
  background:linear-gradient(180deg,#f7fbf7,#edf6ef);
  color:#2b6842;
  font-weight:750;
  padding:6px 10px;
}

.empty{
  min-height:170px;
  display:grid;
  place-items:center;
  border:1px dashed #cad9cd;
  border-radius:18px;
  background:linear-gradient(135deg,#fafcf9,#f5f9f4);
}

@media(max-width:1200px){
  .split{grid-template-columns:minmax(360px,.9fr) minmax(0,1.35fr);gap:16px}
  .split>.card{padding:20px}
}

@media(max-width:980px){
  .split{grid-template-columns:1fr}
  .split>.card:first-child .form-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
}

@media(max-width:760px){
  main{padding:14px 12px 28px}
  .split{gap:14px}
  .split>.card{
    border-radius:22px;
    padding:18px 15px;
    box-shadow:0 14px 32px rgba(24,49,38,.08);
  }
  .split>.card:first-child .form-grid{grid-template-columns:1fr;gap:13px}
  .split>.card:first-child .form-grid .span-2,
  .split>.card:first-child .form-grid .span-3{grid-column:auto}
  .split>.card h2{font-size:21px;margin-bottom:18px}
  .split>.card:first-child input,
  .split>.card:first-child select,
  .split>.card:first-child textarea{min-height:50px;border-radius:14px}
  .table-wrap{border-radius:16px}
  th,td{padding:12px 11px}
}

/* ===== Admin & Reports ===== */
.admin-header{display:flex;align-items:center;justify-content:space-between;gap:16px;background:linear-gradient(135deg,#f7fbf5,#fffdf5)}
.admin-header h2{margin:0 0 5px}.admin-header p{margin:0;color:var(--muted)}
.admin-tab.active{background:var(--green);color:#fff;border-color:var(--green)}
.permission-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.permission-group{border:1px solid var(--line);border-radius:16px;padding:13px;background:#fbfdf9;display:grid;gap:7px}
.permission-group>strong{font-size:12px;text-transform:uppercase;letter-spacing:.05em;color:#395a45}
.field-toggle-list,.custom-field-list{display:grid;gap:8px;margin:14px 0}
.institution-preview{min-height:330px;display:grid;align-content:center;justify-items:center;text-align:center;padding:28px;border:1px dashed #c9d9cc;border-radius:22px;background:linear-gradient(145deg,#f8fbf6,#fffdf5)}
.institution-preview img{max-width:190px;max-height:110px;object-fit:contain;margin-bottom:18px}
.logo-placeholder{width:150px;height:90px;display:grid;place-items:center;border:2px dashed #b8caba;border-radius:16px;color:#78907d;font-weight:800;margin-bottom:18px}
.report-sheet{background:#fff;border:1px solid var(--line);border-radius:20px;padding:28px;box-shadow:var(--premium-shadow)}
.report-head{display:flex;align-items:center;gap:20px;border-bottom:2px solid #e2ece4;padding-bottom:18px;margin-bottom:18px}
.report-head img{max-width:160px;max-height:90px;object-fit:contain}.report-head h1{margin:0 0 5px;color:#173b29}.report-head p{margin:2px 0;color:#64776b}
.report-meta{display:flex;flex-wrap:wrap;gap:16px;justify-content:space-between;padding:11px 0;color:#586d60}.report-footer{margin-top:18px;padding-top:12px;border-top:1px solid var(--line);font-size:11px;color:#6c7d72}
@media(max-width:760px){.admin-header{align-items:flex-start;flex-direction:column}.permission-grid{grid-template-columns:1fr}.report-sheet{padding:16px}.report-head{align-items:flex-start;flex-direction:column}}
@media print{
  body{background:#fff!important}.sidebar,.topbar,.no-print,.toast,.login-layer{display:none!important}.shell{display:block!important}.workspace{display:block!important}main{padding:0!important;max-width:none!important}.report-sheet{border:0!important;box-shadow:none!important;border-radius:0!important;padding:0!important}.report-table{overflow:visible!important}.report-sheet table{font-size:9pt}.report-sheet th,.report-sheet td{white-space:normal!important;padding:6px!important}.report-head{break-after:avoid}.report-footer{position:relative}
}

/* ===== PWA & Cross-platform responsive layer ===== */
html{-webkit-text-size-adjust:100%;text-size-adjust:100%;overscroll-behavior-y:none}
body{min-width:0;overflow-x:hidden;-webkit-tap-highlight-color:transparent}
button,a,input,select,textarea{touch-action:manipulation}
button,.primary,.secondary,.danger-btn,.ghost,.menu-btn{min-height:44px}
input,select,textarea{max-width:100%}
img,svg,video,canvas{max-width:100%;height:auto}
.sidebar{height:100dvh;padding-bottom:max(18px,env(safe-area-inset-bottom))}
.topbar{padding-top:max(14px,env(safe-area-inset-top));min-height:84px;height:auto}
.workspace{min-height:100dvh}
.login-layer{padding-top:max(18px,env(safe-area-inset-top));padding-bottom:max(18px,env(safe-area-inset-bottom))}
.login-card{max-height:calc(100dvh - 36px);overflow:auto}
.pwa-install{white-space:nowrap}
.status-dot.offline{background:#fff2bf;color:#725b00}
@media (display-mode:standalone){
  body{user-select:none}
  input,textarea{user-select:text}
  .topbar{padding-top:max(14px,calc(env(safe-area-inset-top) + 8px))}
}
@media(max-width:1024px){
  .shell{grid-template-columns:230px 1fr}
  .sidebar{padding-left:10px;padding-right:10px}
  main{padding:20px}
  .topbar{padding-left:18px;padding-right:18px}
  .split{grid-template-columns:1fr}
  .grid{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media(max-width:820px){
  .shell{grid-template-columns:1fr}
  .sidebar{position:fixed;left:-290px;top:0;width:min(86vw,280px);height:100dvh;z-index:80;box-shadow:20px 0 45px rgba(14,54,34,.28)}
  .sidebar.open{left:0}
  .menu-btn{display:inline-grid;place-items:center;flex:0 0 44px}
  .topbar{padding-left:max(12px,env(safe-area-inset-left));padding-right:max(12px,env(safe-area-inset-right));gap:10px}
  .top-actions{display:flex;gap:7px;align-items:center}
  .top-actions .secondary{padding:8px 10px;font-size:12px}
  .status-dot{display:none}
  main{padding-left:max(12px,env(safe-area-inset-left));padding-right:max(12px,env(safe-area-inset-right))}
  .hero{grid-template-columns:1fr}
  .form-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .split>.card:first-child .form-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .table-wrap{-webkit-overflow-scrolling:touch}
}
@media(max-width:640px){
  input,select,textarea{font-size:16px}
  .topbar h1{font-size:18px;line-height:1.15}
  .topbar p{display:none}
  .brand strong{font-size:17px}
  main{padding-top:12px;padding-bottom:max(24px,env(safe-area-inset-bottom))}
  .grid,.grid.two,.grid.three,.form-grid,.split>.card:first-child .form-grid{grid-template-columns:1fr}
  .form-grid .span-2,.form-grid .span-3,.split>.card:first-child .form-grid .span-2,.split>.card:first-child .form-grid .span-3{grid-column:auto}
  .hero{padding:18px;border-radius:18px}
  .hero h2{font-size:22px}
  .card,.split>.card{border-radius:20px;padding:16px 14px}
  .toolbar{gap:7px}
  .toolbar>*{max-width:100%}
  .table-wrap{margin-left:-2px;margin-right:-2px;border-radius:14px}
  th,td{padding:11px 10px}
  .login-card{width:100%;padding:22px 18px;border-radius:20px}
  .permission-grid{grid-template-columns:1fr}
  .report-sheet{padding:14px}
}
@media(max-width:390px){
  .top-actions .secondary{font-size:0;width:44px;padding:0}
  .top-actions .secondary:before{content:"⬇";font-size:18px}
  .topbar{min-height:72px}
  .card,.split>.card{padding:14px 12px}
}
@media(orientation:landscape) and (max-height:520px) and (max-width:950px){
  .sidebar{overflow-y:auto}
  .login-layer{align-items:start;overflow:auto}
  .login-card{margin:10px auto}
  .topbar{position:sticky}
}
