:root {
  --water: #2f7d73;
  --water-dark: #194f4a;
  --sand: #e9ddc7;
  --cream: #f8f4ec;
  --earth: #9a6248;
  --ink: #173a36;
}
html { scroll-behavior: smooth; }
body { color: var(--ink); background: var(--cream); overflow-x: hidden; }
.font-display { font-family: Georgia, 'Times New Roman', serif; }
.noise { background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 140 140' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.8' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.035'/%3E%3C/svg%3E"); }
.hero-grid { background-image: linear-gradient(rgba(255,255,255,.045) 1px, transparent 1px), linear-gradient(90deg,rgba(255,255,255,.045) 1px, transparent 1px); background-size: 54px 54px; }
.soft-shadow { box-shadow: 0 22px 55px rgba(36, 67, 57, .10); }
.card-hover { transition: transform .25s ease, box-shadow .25s ease, border-color .25s ease; }
.card-hover:hover { transform: translateY(-4px); box-shadow: 0 22px 55px rgba(36, 67, 57, .12); border-color: rgba(47,125,115,.35); }
.prose-cejaf p { margin: 0 0 1.25rem; line-height: 1.9; color: #536863; }
.admin-table th { padding: .75rem 1rem; color: #677c77; font-size: .72rem; letter-spacing: .08em; text-transform: uppercase; text-align: left; font-weight: 700; background: #f5f7f5; }
.admin-table td { padding: .9rem 1rem; border-top: 1px solid #e7ecea; vertical-align: middle; }
.field { width: 100%; border: 1px solid #d8e0dd; background: white; border-radius: .8rem; padding: .72rem .85rem; color: #173a36; outline: none; transition: .2s; }
.field:focus { border-color: #2f7d73; box-shadow: 0 0 0 3px rgba(47,125,115,.12); }
.label { display:block; font-size:.78rem; font-weight:700; color:#526b65; margin:0 0 .4rem; }
.btn-primary { display:inline-flex; align-items:center; justify-content:center; gap:.5rem; border-radius:.75rem; background:#2f7d73; color:white; padding:.72rem 1rem; font-size:.875rem; font-weight:700; transition:.2s; }
.btn-primary:hover { background:#24675f; }
.btn-secondary { display:inline-flex; align-items:center; justify-content:center; gap:.5rem; border-radius:.75rem; background:white; border:1px solid #dce5e1; color:#315c55; padding:.68rem .95rem; font-size:.875rem; font-weight:700; transition:.2s; }
.btn-secondary:hover { background:#f0f6f4; }
[data-lucide] { width: 1.15rem; height: 1.15rem; }
.modal-shell { position:fixed; inset:0; z-index:70; display:flex; align-items:flex-end; justify-content:center; background:rgba(9,35,32,.62); backdrop-filter:blur(4px); }
.modal-shell.hidden { display:none; }
.modal-panel { width:100%; max-height:100dvh; overflow-y:auto; border-radius:1.5rem 1.5rem 0 0; background:#f8faf8; box-shadow:0 -20px 70px rgba(0,0,0,.22); }
.modal-head { position:sticky; top:0; z-index:4; display:flex; align-items:center; justify-content:space-between; gap:1rem; border-bottom:1px solid #e3e9e6; background:rgba(255,255,255,.96); padding:1rem 1.25rem; backdrop-filter:blur(12px); }
.modal-body { padding:1.25rem; }
.modal-foot { position:sticky; bottom:0; z-index:4; display:flex; flex-direction:column-reverse; gap:.6rem; border-top:1px solid #e3e9e6; background:rgba(255,255,255,.96); padding:1rem 1.25rem; backdrop-filter:blur(12px); }
body.modal-open { overflow:hidden; }
.ts-wrapper .ts-control { min-height:46px; border:1px solid #d8e0dd; border-radius:.8rem; padding:.64rem .85rem; box-shadow:none; color:#173a36; background:white; }
.ts-wrapper.focus .ts-control { border-color:#2f7d73; box-shadow:0 0 0 3px rgba(47,125,115,.12); }
.ts-dropdown { z-index:100; border:1px solid #d8e0dd; border-radius:.75rem; overflow:hidden; box-shadow:0 16px 40px rgba(23,58,54,.16); }
.ts-dropdown .active { background:#e9f3f0; color:#194f4a; }
.signature-canvas { display:block; width:100%; height:260px; touch-action:none; cursor:crosshair; background:#fff; border:2px dashed #bdd1cb; border-radius:1rem; }
.upload-choice { position:relative; display:flex; min-height:92px; cursor:pointer; flex-direction:column; align-items:center; justify-content:center; gap:.45rem; border:1px dashed #b9cbc5; border-radius:1rem; background:#f7faf8; padding:1rem; text-align:center; color:#315c55; transition:.2s; }
.upload-choice:hover { border-color:#2f7d73; background:#edf6f3; }
.upload-choice input { position:absolute; inset:0; cursor:pointer; opacity:0; }
@media (min-width:640px) {
  .modal-shell { align-items:center; padding:1.5rem; }
  .modal-panel { max-height:calc(100dvh - 3rem); max-width:720px; border-radius:1.5rem; }
  .modal-panel.modal-wide { max-width:960px; }
  .modal-body { padding:1.5rem; }
  .modal-foot { flex-direction:row; justify-content:flex-end; }
}
