/* ==============================================================
   Maria Montessori School — Forms Portal
   Public site design system
   ============================================================== */

:root{
  --brand:        #0f5c5c;
  --brand-dark:   #0a3d3d;
  --brand-light:  #e6f2f1;
  --gold:         #d99a2b;
  --gold-light:   #fbeed9;
  --ink:          #1c2b2b;
  --muted:        #6b8080;
  --bg:           #f6f9f8;
  --card-border:  #e7eeee;
  --radius:       18px;
  --shadow:       0 10px 30px rgba(15,45,45,.08);
  --shadow-lift:  0 22px 46px rgba(15,45,45,.18);
}

*{box-sizing:border-box;}
body{
  margin:0; background:var(--bg); color:var(--ink);
  font-family:'Inter',-apple-system,Segoe UI,sans-serif;
}
h1,h2,h3,h4,h5,.font-display{font-family:'Poppins',sans-serif;}
a{color:var(--brand);}

/* ---------- Top bar ---------- */
.site-topbar{
  position:sticky; top:0; z-index:50; background:rgba(255,255,255,.9); backdrop-filter:blur(10px);
  border-bottom:1px solid var(--card-border); padding:14px 0;
}
.site-topbar .brand{display:flex; align-items:center; gap:12px; text-decoration:none; color:var(--ink);}
.site-topbar .brand img{width:42px;height:42px;border-radius:11px;object-fit:cover; box-shadow:0 4px 12px rgba(15,92,92,.2);}
.site-topbar .brand .title{font-family:'Poppins',sans-serif; font-weight:600; font-size:1.02rem; line-height:1.2;}
.site-topbar .brand .subtitle{font-size:.72rem; color:var(--muted); letter-spacing:.04em;}

/* ---------- Hero ---------- */
.hero{
  position:relative; overflow:hidden; padding:76px 0 90px;
  background:radial-gradient(1100px 620px at 85% -10%, #17827d 0%, var(--brand-dark) 55%, #06282b 100%);
  color:#fff;
}
.hero .blob{position:absolute; border-radius:50%; filter:blur(70px); opacity:.35; animation:float 10s ease-in-out infinite;}
.hero .blob.b1{width:360px;height:360px; background:var(--gold); top:-100px; right:8%;}
.hero .blob.b2{width:280px;height:280px; background:#2bb3a3; bottom:-90px; left:4%; animation-delay:2.4s;}
@keyframes float{0%,100%{transform:translateY(0)}50%{transform:translateY(-26px)}}
.hero-eyebrow{
  display:inline-flex; align-items:center; gap:8px; background:rgba(255,255,255,.12); color:#dff3ef;
  padding:6px 16px; border-radius:30px; font-size:.78rem; font-weight:600; letter-spacing:.04em; margin-bottom:18px;
}
.hero h1{font-size:2.5rem; font-weight:700; margin-bottom:14px; line-height:1.15;}
.hero p.lead{color:#cfe9e4; font-size:1.05rem; max-width:560px;}
.hero-stats{display:flex; gap:28px; margin-top:32px; flex-wrap:wrap;}
.hero-stats .stat b{font-family:'Poppins',sans-serif; font-size:1.7rem; display:block;}
.hero-stats .stat span{font-size:.78rem; color:#a9d3cc;}

/* ---------- Category filter chips ---------- */
.filter-bar{
  display:flex; gap:10px; flex-wrap:wrap; padding:22px 0; position:sticky; top:73px; z-index:40;
  background:var(--bg);
}
.filter-chip{
  border:1.5px solid var(--card-border); background:#fff; padding:8px 18px; border-radius:30px;
  font-size:.85rem; font-weight:600; color:var(--muted); cursor:pointer; transition:all .15s ease; white-space:nowrap;
}
.filter-chip i{margin-right:6px;}
.filter-chip:hover{border-color:var(--gold); color:var(--ink);}
.filter-chip.active{background:var(--brand); border-color:var(--brand); color:#fff;}

/* ---------- Form cards ---------- */
.form-card{
  background:#fff; border:1px solid var(--card-border); border-radius:var(--radius); box-shadow:var(--shadow);
  padding:26px 24px; height:100%; display:flex; flex-direction:column; transition:transform .2s ease, box-shadow .2s ease;
  text-decoration:none; color:inherit; position:relative; overflow:hidden;
}
.form-card::before{
  content:''; position:absolute; top:0; left:0; right:0; height:5px; background:var(--card-accent, var(--brand));
}
.form-card:hover{transform:translateY(-6px); box-shadow:var(--shadow-lift); color:inherit;}
.form-card .card-icon{
  width:54px;height:54px;border-radius:15px; display:flex; align-items:center; justify-content:center;
  font-size:1.5rem; margin-bottom:16px; background:color-mix(in srgb, var(--card-accent, var(--brand)) 14%, white);
  color:var(--card-accent, var(--brand));
}
.form-card h3{font-size:1.08rem; margin-bottom:8px; font-weight:600;}
.form-card p{color:var(--muted); font-size:.86rem; flex:1; margin-bottom:16px; line-height:1.5;}
.form-card .card-foot{display:flex; align-items:center; justify-content:space-between; font-size:.78rem; color:var(--muted);}
.form-card .cta{
  display:inline-flex; align-items:center; gap:6px; font-weight:700; font-size:.82rem; color:var(--card-accent, var(--brand));
}
.form-card .cta i{transition:transform .15s ease;}
.form-card:hover .cta i{transform:translateX(4px);}
.category-pill{
  font-size:.68rem; font-weight:700; text-transform:uppercase; letter-spacing:.04em; padding:3px 10px; border-radius:20px;
  background:color-mix(in srgb, var(--card-accent, var(--brand)) 14%, white); color:var(--card-accent, var(--brand));
}
.badge-closed-ribbon{
  position:absolute; top:14px; right:-30px; transform:rotate(35deg); background:#c0392b; color:#fff;
  font-size:.65rem; font-weight:700; padding:3px 34px; letter-spacing:.05em;
}

/* ---------- Section titles ---------- */
.section-title{font-weight:700; font-size:1.3rem; margin-bottom:4px;}
.section-sub{color:var(--muted); font-size:.88rem; margin-bottom:22px;}

/* ---------- Buttons ---------- */
.btn{border-radius:9px; font-weight:600; font-size:.87rem;}
.btn-brand{background:var(--brand); border-color:var(--brand); color:#fff;}
.btn-brand:hover{background:var(--brand-dark); border-color:var(--brand-dark); color:#fff;}
.btn-gold{background:var(--gold); border-color:var(--gold); color:#3a2500;}
.btn-gold:hover{background:#c4831f; border-color:#c4831f; color:#3a2500;}
.btn-outline-brand{border:1.5px solid var(--brand); color:var(--brand); background:transparent;}
.btn-outline-brand:hover{background:var(--brand); color:#fff;}
.btn-outline-light-soft{border:1.5px solid rgba(255,255,255,.5); color:#fff; background:rgba(255,255,255,.08);}
.btn-outline-light-soft:hover{background:rgba(255,255,255,.18); color:#fff;}

/* ---------- Footer ---------- */
.site-footer{background:var(--brand-dark); color:#a9d3cc; padding:36px 0; margin-top:60px; font-size:.85rem;}
.site-footer a{color:#dff3ef;}

/* ---------- Empty state ---------- */
.empty-state-public{text-align:center; padding:70px 20px; color:var(--muted);}
.empty-state-public i{font-size:2.6rem; color:var(--card-border); display:block; margin-bottom:14px;}

/* ---------- AOS-esque simple fade-in fallback ---------- */
.fade-in-up{opacity:0; transform:translateY(18px); transition:opacity .6s ease, transform .6s ease;}
.fade-in-up.in-view{opacity:1; transform:none;}

@media (max-width: 767px){
  .hero h1{font-size:1.9rem;}
  .filter-bar{top:0;}
}

/* ---------- Public form page ---------- */
.form-page-hero{
  background:linear-gradient(135deg, var(--card-accent, var(--brand)), var(--brand-dark));
  color:#fff; padding:46px 0 62px; position:relative; overflow:hidden;
}
.form-page-hero .icon-badge{
  width:62px;height:62px;border-radius:16px; background:rgba(255,255,255,.16); display:flex; align-items:center;
  justify-content:center; font-size:1.7rem; margin-bottom:16px;
}
.form-page-hero h1{font-size:1.9rem; margin-bottom:8px;}
.form-page-hero p{color:rgba(255,255,255,.85); max-width:620px; margin-bottom:0;}
.form-page-hero .audience-tag{
  display:inline-flex; align-items:center; gap:6px; background:rgba(255,255,255,.14); padding:5px 14px;
  border-radius:20px; font-size:.78rem; margin-top:14px;
}

.form-wrap{max-width:760px; margin:-40px auto 60px; position:relative; z-index:5;}
.form-panel{background:#fff; border-radius:var(--radius); box-shadow:var(--shadow-lift); padding:36px; border:1px solid var(--card-border);}

.field-group{margin-bottom:22px;}
.field-group label.q-label{font-weight:600; font-size:.94rem; margin-bottom:6px; display:block;}
.field-group label.q-label .req-star{color:#c0392b; margin-left:3px;}
.field-group .q-help{font-size:.8rem; color:var(--muted); margin-bottom:8px;}
.field-group .form-control, .field-group .form-select{
  border-radius:10px; border:1.5px solid var(--card-border); padding:.65rem .9rem;
}
.field-group .form-control:focus, .field-group .form-select:focus{
  border-color:var(--brand); box-shadow:0 0 0 .2rem rgba(15,92,92,.12);
}
.field-group.invalid .form-control, .field-group.invalid .form-select{border-color:#c0392b;}
.field-group .field-error{color:#c0392b; font-size:.78rem; margin-top:5px; display:none;}
.field-group.invalid .field-error{display:block;}

.section-heading{font-family:'Poppins',sans-serif; font-weight:600; font-size:1.15rem; color:var(--brand-dark);
  margin:26px 0 4px; padding-top:14px; border-top:1px solid var(--card-border);}
.section-heading:first-child{border-top:none; padding-top:0; margin-top:0;}

.choice-option{
  display:flex; align-items:center; gap:10px; padding:10px 14px; border:1.5px solid var(--card-border); border-radius:10px;
  margin-bottom:8px; cursor:pointer; transition:all .15s ease;
}
.choice-option:hover{border-color:var(--gold); background:var(--gold-light);}
.choice-option input{margin:0;}

/* An option greyed out because its value is already chosen elsewhere
   (Field Settings → Logic → "Exclude an option already chosen") */
.choice-option.excluded-option{opacity:.45; cursor:not-allowed; background:#f5f6f6;}
.choice-option.excluded-option:hover{border-color:var(--card-border); background:#f5f6f6;}
.choice-option.excluded-option input{cursor:not-allowed;}

/* A "Locked Answer" field — a fixed value the admin set, shown for
   information, submitted automatically, never editable by the visitor. */
.fixed-answer-box{
  display:flex; align-items:center; gap:12px; background:var(--brand-light); border:1.5px solid var(--brand);
  border-radius:10px; padding:12px 16px;
}
.fixed-answer-icon{
  width:34px; height:34px; border-radius:50%; background:var(--gold-light); color:var(--gold);
  display:flex; align-items:center; justify-content:center; font-size:1rem; flex-shrink:0;
}
.fixed-answer-value{font-weight:700; color:var(--brand-dark); font-size:.98rem;}
.fixed-answer-note{font-size:.78rem; color:var(--muted); margin-top:2px;}

.dir-lookup-row{display:flex; gap:8px;}
.dir-lookup-row .form-control{flex:1;}
.dir-lookup-btn{white-space:nowrap; display:flex; align-items:center; gap:6px;}
.dir-lookup-status{font-size:.8rem; margin-top:6px; min-height:1.1em;}
.dir-lookup-status.error{color:#c0392b;}
.dir-lookup-status.success{color:var(--brand);}
.dir-lookup-status.searching{color:var(--muted);}
.dir-lookup-card{
  margin-top:10px; background:var(--brand-light); border:1px solid var(--card-border); border-radius:12px;
  padding:12px 14px; animation:fadeUp .25s ease;
}
.dir-lookup-card-row{display:flex; justify-content:space-between; gap:12px; font-size:.85rem; padding:4px 0;}
.dir-lookup-card-row span{color:var(--muted);}
.dir-lookup-card-row strong{color:var(--ink); text-align:right;}
.dir-lookup.dir-matched .dir-lookup-input{border-color:var(--brand); background:var(--brand-light);}

/* Computed (auto-filled) fields */
.computed-field-wrap{position:relative;}
.computed-field-wrap .computed-input{background:var(--brand-light); color:var(--ink); cursor:default; padding-right:34px;}
.computed-field-wrap .computed-icon{position:absolute; right:12px; top:50%; transform:translateY(-50%); color:var(--brand); font-size:.95rem; pointer-events:none;}

/* Signature capture */
.signature-pad-wrap{border:1.5px solid var(--card-border); border-radius:12px; padding:10px; background:#fff;}
.signature-pad-canvas{width:100%; height:140px; display:block; border-radius:8px; background:#fafcfc; border:1px dashed var(--card-border); touch-action:none; cursor:crosshair;}
.signature-pad-actions{display:flex; align-items:center; justify-content:space-between; gap:10px; margin-top:8px;}

/* Conditionally hidden fields */
.logic-hidden{display:none !important;}

.star-rating{display:flex; gap:6px; font-size:1.7rem;}
.star-rating input{display:none;}
.star-rating label{color:#dfe6e6; cursor:pointer; transition:color .15s ease;}
.star-rating:hover label{color:#dfe6e6;}
.star-rating input:checked ~ label,
.star-rating label:hover, .star-rating label:hover ~ label{color:var(--gold);}
.star-rating{flex-direction:row-reverse; justify-content:flex-end;}

.honeypot-field{position:absolute; left:-9999px; top:-9999px; opacity:0; height:0; width:0;}

.submit-bar{display:flex; align-items:center; justify-content:space-between; margin-top:30px;}

/* Multi-step public forms */
.form-step{display:none;}
.form-step.active{display:block; animation:fadeUp .25s ease;}
.step-progress{
  font-size:.75rem; font-weight:700; text-transform:uppercase; letter-spacing:.04em; color:var(--brand);
  margin-bottom:18px;
}
.step-nav{display:flex; align-items:center; justify-content:space-between; gap:12px; margin-top:30px;}
.step-nav > span:first-child:empty{flex:0 0 1px;}

.success-panel{text-align:center; padding:50px 20px;}
.success-check{
  width:88px;height:88px;border-radius:50%; background:var(--brand-light); color:var(--brand); font-size:2.6rem;
  display:flex; align-items:center; justify-content:center; margin:0 auto 20px; animation:popIn .5s cubic-bezier(.34,1.56,.64,1) both;
}
@keyframes popIn{0%{transform:scale(0); opacity:0;} 80%{transform:scale(1.08);} 100%{transform:scale(1); opacity:1;}}
/* No "forwards"/"both" fill-mode here — see admin.css for why a lingering
   transform on an ancestor traps Bootstrap's fixed-position modals. */
@keyframes fadeUp{from{opacity:0; transform:translateY(10px)} to{opacity:1; transform:translateY(0)}}

.status-panel{text-align:center; padding:80px 20px; max-width:520px; margin:0 auto;}
.status-panel i{font-size:3rem; color:var(--card-border); display:block; margin-bottom:16px;}

