:root {
  --green-950:#0c2619; --green-900:#123522; --green-700:#28633d;
  --green-600:#39784b; --cream:#f4f0e7; --paper:#fbfaf6;
  --ink:#142019; --muted:#68736b; --line:rgba(20,32,25,.13);
  --display:"Manrope",sans-serif; --body:"DM Sans",sans-serif;
}
* { box-sizing:border-box; }
body { margin:0; color:var(--ink); background:var(--cream); font-family:var(--body); background-image:radial-gradient(circle at 10% 15%,rgba(94,141,75,.1),transparent 26rem),radial-gradient(circle at 90% 35%,rgba(169,109,53,.08),transparent 24rem); }
.portal-header { display:flex; align-items:center; justify-content:space-between; width:min(1120px,calc(100% - 2rem)); margin:auto; padding:1.25rem 0; }
.portal-brand { display:flex; align-items:center; gap:.7rem; color:var(--ink); text-decoration:none; }
.portal-brand>span { display:grid; place-items:center; width:3.25rem; height:3.25rem; background:white; border-radius:50%; box-shadow:0 9px 25px rgba(12,38,25,.1); }
.portal-brand img { width:88%; height:88%; object-fit:contain; }
.portal-brand p { display:flex; flex-direction:column; margin:0; line-height:1.15; }
.portal-brand strong { font-family:var(--display); font-size:.88rem; }
.portal-brand small { margin-top:.25rem; color:var(--muted); font-size:.58rem; letter-spacing:.08em; text-transform:uppercase; }
.portal-back { display:flex; align-items:center; gap:.45rem; color:var(--green-700); font-size:.73rem; font-weight:700; text-decoration:none; }
.portal-main { width:min(980px,calc(100% - 2rem)); margin:2rem auto 5rem; }
.portal-intro { position:relative; display:grid; grid-template-columns:1fr auto; align-items:center; gap:2rem; overflow:hidden; margin-bottom:1rem; padding:clamp(1.7rem,5vw,3.5rem); color:white; background:linear-gradient(125deg,var(--green-950),var(--green-700)); border-radius:1.5rem; box-shadow:0 30px 80px rgba(12,38,25,.2); }
.portal-intro:after { content:""; position:absolute; right:-8rem; top:-10rem; width:28rem; height:28rem; border:1px solid rgba(255,255,255,.1); border-radius:50%; box-shadow:0 0 0 4rem rgba(255,255,255,.025),0 0 0 8rem rgba(255,255,255,.02); }
.portal-intro>div,.portal-intro>i { position:relative; z-index:1; }
.portal-intro>i { font-size:5.5rem; opacity:.2; }
.portal-intro.kids { background:linear-gradient(125deg,#21372c,#746044); }
.portal-eyebrow { color:#bad1aa; font-size:.65rem; font-weight:800; letter-spacing:.13em; text-transform:uppercase; }
.portal-intro h1 { margin:.65rem 0; font-family:var(--display); font-size:clamp(2.1rem,6vw,4.2rem); line-height:.98; letter-spacing:-.06em; }
.portal-intro h1 em { color:#bad1aa; font-style:normal; }
.portal-intro p { max-width:39rem; margin:1rem 0 0; color:rgba(255,255,255,.7); font-size:.88rem; line-height:1.7; }
.portal-form-card { padding:clamp(1.25rem,4vw,2.5rem); background:rgba(255,255,255,.87); border:1px solid var(--line); border-radius:1.5rem; box-shadow:0 25px 70px rgba(12,38,25,.09); }
.portal-form { display:grid; gap:1.1rem; }
.portal-step { display:flex; align-items:center; gap:.85rem; margin-top:1rem; padding-bottom:.8rem; border-bottom:1px solid var(--line); }
.portal-step:first-child { margin-top:0; }
.portal-step>span { display:grid; place-items:center; width:2.2rem; height:2.2rem; color:white; background:var(--green-700); border-radius:.65rem; font-size:.65rem; font-weight:800; }
.portal-step p { display:flex; flex-direction:column; margin:0; }
.portal-step strong { font-family:var(--display); font-size:.9rem; }
.portal-step small { margin-top:.15rem; color:var(--muted); font-size:.66rem; }
.portal-grid { display:grid; gap:1rem; }
.portal-grid.two { grid-template-columns:repeat(2,minmax(0,1fr)); }
.portal-form label { display:flex; flex-direction:column; gap:.4rem; }
.portal-form label>span { font-size:.7rem; font-weight:750; }
.portal-form input,.portal-form select,.portal-form textarea { width:100%; padding:.8rem .9rem; color:var(--ink); background:var(--paper); border:1px solid var(--line); border-radius:.75rem; font:inherit; font-size:.8rem; outline:none; }
.portal-form input,.portal-form select { min-height:3rem; }
.portal-form textarea { resize:vertical; }
.portal-form input:focus,.portal-form select:focus,.portal-form textarea:focus { border-color:var(--green-600); box-shadow:0 0 0 4px rgba(57,120,75,.1); }
.portal-form label small { color:var(--muted); font-size:.62rem; }
.upload-field { padding:.9rem; background:#f1eee6; border:1px dashed rgba(20,32,25,.2); border-radius:.8rem; }
.portal-consent { display:flex; align-items:flex-start; gap:.65rem; padding:.8rem; color:var(--green-900); background:#e6eee1; border-radius:.75rem; font-size:.66rem; line-height:1.5; }
.portal-consent i { font-size:1rem; }
.portal-button { display:inline-flex; align-items:center; justify-content:center; gap:.6rem; min-height:3.2rem; padding:.8rem 1.2rem; color:white; background:var(--green-700); border:0; border-radius:.8rem; font:700 .78rem var(--body); text-decoration:none; cursor:pointer; }
.portal-button:hover { background:var(--green-900); }
.portal-flashes { position:relative; z-index:2; width:min(980px,calc(100% - 2rem)); margin:1rem auto; }
.portal-flash { padding:.9rem 1rem; background:white; border-left:4px solid var(--green-600); border-radius:.5rem; box-shadow:0 12px 32px rgba(12,38,25,.1); font-size:.75rem; }
.portal-flash.danger { border-color:#a64a42; }
.portal-footer { display:flex; align-items:center; justify-content:center; gap:.65rem; padding:2rem; color:white; background:var(--green-950); }
.portal-footer img { width:2.8rem; height:2.8rem; background:white; border-radius:50%; }
.portal-footer p { display:flex; flex-direction:column; margin:0; }
.portal-footer strong { font-family:var(--display); font-size:.75rem; }
.portal-footer span { color:rgba(255,255,255,.5); font-size:.58rem; }
.card-success { padding:1rem 0 2rem; text-align:center; }
.card-success>i { color:var(--green-600); font-size:2.4rem; }
.card-success>span { display:block; margin:.5rem 0; color:var(--green-600); font-size:.65rem; font-weight:800; letter-spacing:.12em; text-transform:uppercase; }
.card-success h1 { margin:.25rem 0; font:800 clamp(1.8rem,4vw,2.8rem) var(--display); letter-spacing:-.05em; }
.card-success p { max-width:36rem; margin:.8rem auto; color:var(--muted); font-size:.78rem; }
.kid-card { overflow:hidden; max-width:900px; margin:auto; background:white; border:1px solid var(--line); border-radius:1.4rem; box-shadow:0 28px 75px rgba(12,38,25,.14); }
.kid-card-top { display:flex; align-items:center; justify-content:space-between; padding:1rem 1.4rem; color:white; background:var(--green-950); }
.kid-card-top span { font-size:.65rem; font-weight:800; letter-spacing:.12em; text-transform:uppercase; }
.kid-card-top img { width:2.7rem; height:2.7rem; background:white; border-radius:50%; }
.kid-card-body { display:grid; grid-template-columns:auto 1fr auto; align-items:center; gap:1.4rem; padding:1.5rem; }
.kid-photo { display:grid; place-items:center; width:8rem; aspect-ratio:1; overflow:hidden; color:var(--green-600); background:#e5ede0; border-radius:1rem; font-size:3rem; }
.kid-photo img { width:100%; height:100%; object-fit:cover; }
.kid-data small { color:var(--green-600); font-size:.6rem; font-weight:800; letter-spacing:.1em; text-transform:uppercase; }
.kid-data h2 { margin:.35rem 0 1rem; font:800 1.65rem var(--display); letter-spacing:-.04em; }
.kid-data p { margin:.25rem 0; color:var(--muted); font-size:.72rem; }
.kid-qr { display:flex; flex-direction:column; align-items:center; }
.kid-qr img { width:9rem; }
.kid-qr small { font-size:.58rem; }
.kid-card-foot { padding:.7rem 1.4rem; color:rgba(255,255,255,.65); background:var(--green-700); font-size:.6rem; text-align:center; }
.card-actions { display:flex; align-items:center; justify-content:center; gap:1rem; margin-top:1.5rem; }
.card-actions>a { color:var(--green-700); font-size:.72rem; font-weight:700; }
.identity-shell { overflow:hidden; max-width:760px; margin:auto; background:white; border:1px solid var(--line); border-radius:1.5rem; box-shadow:0 28px 75px rgba(12,38,25,.12); }
.identity-shell>header { padding:2rem; color:white; background:linear-gradient(125deg,var(--green-950),var(--green-700)); }
.identity-shell>header span { color:#bad1aa; font-size:.62rem; font-weight:800; letter-spacing:.12em; text-transform:uppercase; }
.identity-shell>header h1 { margin:.4rem 0; font:800 2rem var(--display); letter-spacing:-.045em; }
.identity-shell>header p { margin:0; color:rgba(255,255,255,.65); font-size:.72rem; }
.identity-child { display:flex; align-items:center; gap:1.1rem; padding:1.5rem 2rem; border-bottom:1px solid var(--line); }
.identity-child>img,.identity-child>span { display:grid; place-items:center; width:6rem; height:6rem; object-fit:cover; color:var(--green-700); background:#e5ede0; border-radius:1rem; font-size:2rem; }
.identity-child small,.identity-grid small { color:var(--green-600); font-size:.58rem; font-weight:800; text-transform:uppercase; }
.identity-child h2 { margin:.25rem 0; font:800 1.5rem var(--display); }
.identity-child p { margin:0; color:var(--muted); font-size:.7rem; }
.identity-grid { display:grid; grid-template-columns:repeat(3,1fr); gap:1px; background:var(--line); border-bottom:1px solid var(--line); }
.identity-grid article { display:flex; flex-direction:column; gap:.25rem; padding:1.2rem; background:white; }
.identity-grid i { margin-bottom:.4rem; color:var(--green-600); font-size:1.2rem; }
.guardian-photo { width:3.7rem; height:3.7rem; margin-bottom:.45rem; object-fit:cover; border-radius:.8rem; }
.identity-grid strong { font-size:.72rem; }
.identity-grid span { color:var(--muted); font-size:.65rem; }
.identity-note,.identity-alert { margin:1rem 2rem; padding:1rem; background:#f1eee6; border-radius:.8rem; }
.identity-note strong,.identity-alert strong { font-size:.7rem; }
.identity-note p,.identity-alert p { margin:.35rem 0 0; color:var(--muted); font-size:.7rem; white-space:pre-line; }
.identity-alert { display:flex; gap:.8rem; color:#795121; background:#f5e8cf; }
.identity-alert>i { font-size:1.2rem; }
.portal-mobile-nav { display:none; }
@media(max-width:700px) {
  html { background:var(--cream); }
  body { padding-bottom:calc(4.7rem + env(safe-area-inset-bottom)); overflow-x:hidden; }
  .portal-header { position:sticky; z-index:40; top:0; width:100%; min-height:4.35rem; padding:.55rem .85rem; background:rgba(251,250,246,.95); border-bottom:1px solid var(--line); backdrop-filter:blur(18px); }
  .portal-brand>span { width:2.9rem; height:2.9rem; }
  .portal-brand p { display:flex; }
  .portal-brand strong { font-size:.74rem; }
  .portal-brand small { font-size:.48rem; }
  .portal-back { width:2.8rem; height:2.8rem; justify-content:center; overflow:hidden; border:1px solid var(--line); border-radius:50%; font-size:0; }
  .portal-back i { font-size:1rem; }
  .portal-main { width:100%; margin:0; }
  .portal-intro { grid-template-columns:1fr; min-height:42svh; margin:0; padding:2rem 1rem 2.5rem; border-radius:0; box-shadow:none; }
  .portal-intro h1 { font-size:clamp(2.5rem,13vw,3.8rem); }
  .portal-intro>i { display:none; }
  .portal-form-card { padding:1rem; border-right:0; border-left:0; border-radius:1.25rem 1.25rem 0 0; box-shadow:0 -1rem 3rem rgba(12,38,25,.08); }
  .portal-grid.two,.kid-card-body,.identity-grid { grid-template-columns:1fr; }
  .portal-form { gap:1rem; }
  .portal-form input,.portal-form select { min-height:3.3rem; font-size:16px; }
  .portal-form textarea { min-height:8rem; font-size:16px; }
  .portal-button { width:100%; min-height:3.35rem; }
  .portal-flashes { width:calc(100% - 1.5rem); margin:.75rem auto; }
  .portal-footer { padding:1.5rem 1rem 2rem; }
  .portal-mobile-nav { position:fixed; z-index:60; right:0; bottom:0; left:0; display:grid; grid-template-columns:repeat(3,1fr); min-height:4.7rem; padding:.35rem .5rem calc(.35rem + env(safe-area-inset-bottom)); background:rgba(251,250,246,.97); border-top:1px solid var(--line); box-shadow:0 -12px 34px rgba(12,38,25,.1); backdrop-filter:blur(20px); }
  .portal-mobile-nav a { display:flex; min-height:3.65rem; align-items:center; justify-content:center; flex-direction:column; gap:.22rem; color:var(--muted); border-radius:.8rem; font-size:.53rem; font-weight:700; text-decoration:none; }
  .portal-mobile-nav i { font-size:1.15rem; }
  .portal-mobile-nav a.is-active { color:var(--green-700); background:#e5ede0; }
  .kid-card,.identity-shell { width:100%; border-right:0; border-left:0; border-radius:0; box-shadow:none; }
  .kid-card-body { text-align:center; }
  .kid-photo,.kid-qr { margin:auto; }
  .kid-photo { width:min(10rem,55vw); }
  .kid-qr img { width:min(13rem,65vw); }
  .identity-shell>header { padding:1.5rem 1rem; }
  .identity-child { align-items:center; flex-direction:column; padding:1.25rem 1rem; text-align:center; }
  .identity-grid article { padding:1rem; text-align:center; }
  .identity-note,.identity-alert { margin:1rem; }
  .card-success { padding:1.5rem 1rem; }
  .card-actions { align-items:stretch; flex-direction:column; padding:0 1rem; }
  .card-actions .portal-button { width:100%; }
}
@media print {
  .portal-header,.portal-footer,.card-success,.card-actions,.portal-flashes { display:none!important; }
  .portal-body { background:white; }.portal-main { width:100%; margin:0; }.kid-card { box-shadow:none; break-inside:avoid; }
}
