/* GFE progressive enhancement layer: responsive media, documentation, onboarding and assistant UI. */
html{scroll-padding-top:88px}
img{max-width:100%;height:auto}
video,iframe{max-width:100%}
.gfe-shell{max-width:1180px;margin:0 auto;padding:0 clamp(20px,4vw,48px);box-sizing:border-box}
.gfe-kicker{font-family:'Engravers Gothic','Julius Sans One',sans-serif;font-size:11px;letter-spacing:.22em;color:#3d5c49;text-transform:uppercase}
.gfe-card{background:#fff;border:1px solid #e3ebe4;border-radius:18px;box-shadow:0 2px 14px rgba(38,51,44,.05)}
.gfe-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,260px),1fr));gap:18px}
.gfe-doc-card{padding:24px;display:flex;flex-direction:column;gap:10px;min-height:170px}
.gfe-doc-card h3{font-size:19px;line-height:1.35;margin:0;color:#26332c}
.gfe-doc-card p{font-size:14px;line-height:1.7;color:#5a6a60;margin:0;flex:1}
.gfe-pill{display:inline-flex;align-items:center;justify-content:center;border-radius:999px;padding:13px 21px;min-height:46px;box-sizing:border-box;font-family:'Engravers Gothic','Julius Sans One',sans-serif;font-size:10.5px;letter-spacing:.14em;text-align:center}
.gfe-pill-primary{background:#3d5c49;color:#fff}
.gfe-pill-secondary{border:1px solid #cfe2d5;color:#3d5c49;background:#fff}
.gfe-form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px 20px}
.gfe-form-grid .span-2{grid-column:1/-1}
.gfe-step{display:grid;grid-template-columns:48px 1fr;gap:16px;align-items:start;padding:20px 0;border-bottom:1px solid #e7eee8}
.gfe-step-num{width:42px;height:42px;border-radius:999px;background:#ebf4ec;color:#3d5c49;display:flex;align-items:center;justify-content:center;font-weight:600}
.gfe-hero-media{border-radius:22px;overflow:hidden;background:#eef3ef;box-shadow:0 18px 50px rgba(38,51,44,.12)}
.gfe-hero-media img{display:block;width:100%;aspect-ratio:16/9;object-fit:cover}

/* ============================================================================
   MOE 3D assistant (v7 renderer, v6 file names kept for cache/HTML stability)
   Floating actions: WhatsApp (independent, static in HTML) + MOE launcher.
   Positions use --gfe-float-bottom / --gfe-wa-w, measured by the Moe script.
   Without JS the WhatsApp rules below still place the button correctly.
   ========================================================================== */
:root{--gfe-float-bottom:18px;--gfe-wa-w:124px;--gfe-moo-w:84px;--gfe-moo-h:92px;--gfe-float-gap:18px}

/* WhatsApp: mandatory, independent of MOE JavaScript */
.gfe-whatsapp-fab{position:fixed!important;right:max(16px,env(safe-area-inset-right))!important;bottom:var(--gfe-float-bottom)!important;transform:translateY(var(--gfe-float-shift,0px));z-index:2147483000!important;display:inline-flex;align-items:center;gap:7px;height:44px;min-height:44px;padding:0 14px 0 8px;border-radius:999px;background:#1fa855;color:#fff;text-decoration:none;box-shadow:0 8px 20px rgba(22,126,67,.24);font-family:'Engravers Gothic','Julius Sans One',sans-serif;font-size:9px;letter-spacing:.09em;line-height:1;box-sizing:border-box;transition:transform .3s ease,box-shadow .2s ease,background .2s ease,opacity .2s ease}
.gfe-whatsapp-fab:hover,.gfe-whatsapp-fab:focus-visible{transform:translateY(calc(var(--gfe-float-shift,0px) - 1px));box-shadow:0 10px 24px rgba(22,126,67,.3);background:#168f47;color:#fff}
.gfe-whatsapp-icon{width:28px;height:28px;border-radius:50%;display:flex;align-items:center;justify-content:center;background:rgba(255,255,255,.14);flex:0 0 auto}
.gfe-whatsapp-icon svg{width:18px;height:18px;fill:#fff}
.gfe-whatsapp-fab[data-gfe-static-whatsapp="true"]{visibility:visible!important;opacity:1!important;pointer-events:auto!important}

/* MOE launcher dock: bounded box, MOE never leaves it */
.gfe-moo-dock{position:fixed;right:calc(max(16px,env(safe-area-inset-right)) + var(--gfe-wa-w) + var(--gfe-float-gap));bottom:calc(var(--gfe-float-bottom) - 4px);transform:translateY(var(--gfe-float-shift,0px));z-index:2147482999;width:var(--gfe-moo-w);height:var(--gfe-moo-h);pointer-events:none;contain:layout style;transition:transform .3s ease,opacity .25s ease,visibility .25s}
.gfe-moo-launch{position:absolute;inset:0;width:100%;height:100%;padding:0;margin:0;border:0;background:transparent;cursor:pointer;pointer-events:auto;border-radius:28px;-webkit-tap-highlight-color:transparent;min-height:0!important}
.gfe-moo-launch:focus-visible{outline:3px solid rgba(61,92,73,.6)!important;outline-offset:-2px!important}
.gfe-moo-stage{position:absolute;inset:0;display:block;pointer-events:none}
.gfe-moo-stage canvas{display:block;width:100%!important;height:100%!important;max-width:none}
.gfe-moo-ph{position:absolute;left:50%;bottom:8px;height:72%;width:auto;max-width:none;transform:translateX(-50%);transform-origin:50% 100%}
.gfe-moo-dock:not([data-live]) .gfe-moo-launch:hover .gfe-moo-ph{transform:translateX(-50%) scale(1.05)}
.gfe-moo-name{position:absolute;left:50%;bottom:0;transform:translateX(-50%);z-index:2;background:#26332c;color:#fff;border:1.5px solid #fff;border-radius:999px;padding:3px 8px;font-family:'Engravers Gothic','Julius Sans One',sans-serif;font-size:8px;letter-spacing:.14em;line-height:1.1;white-space:nowrap;box-shadow:0 4px 10px rgba(31,43,36,.18);pointer-events:none}
.gfe-moo-name{transition:opacity .3s ease}
.gfe-moo-dock[data-state="portal"] .gfe-moo-name{opacity:0}
.gfe-moo-mute{position:absolute;top:2px;right:0;z-index:3;width:28px;height:28px;min-height:0!important;padding:0;border:1px solid #dbe7de;border-radius:50%;background:rgba(255,255,255,.92);color:#3d5c49;display:flex;align-items:center;justify-content:center;cursor:pointer;pointer-events:auto;box-shadow:0 3px 10px rgba(31,43,36,.12);opacity:.9;transition:opacity .2s ease,transform .2s ease}
.gfe-moo-mute:hover,.gfe-moo-mute:focus-visible{opacity:1;transform:scale(1.06)}
.gfe-moo-dock:not(:hover):not(:focus-within):not([data-open="1"]) .gfe-moo-mute{opacity:0;pointer-events:none}
.gfe-moo-mute svg{width:15px;height:15px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.gfe-moo-mute .gfe-moo-snd-off{display:none}
.gfe-moo-mute[aria-pressed="false"] .gfe-moo-snd-on{display:none}
.gfe-moo-mute[aria-pressed="false"] .gfe-moo-snd-off{display:block}
.gfe-moo-bubble{position:absolute;right:calc(100% - 18px);bottom:calc(100% - 26px);width:max-content;max-width:190px;background:#fff;color:#33443a;border:1px solid #dbe7de;border-radius:14px 14px 4px 14px;padding:8px 11px;font-size:12px;line-height:1.4;box-shadow:0 10px 24px rgba(31,43,36,.14);opacity:0;transform:translateY(6px);transition:opacity .25s ease,transform .25s ease;pointer-events:none}
.gfe-moo-bubble.is-on{opacity:1;transform:none}

/* 2D fallback (no WebGL / Save-Data): the existing Moe art, kept small */
.gfe-moo-fallback{position:absolute;left:50%;bottom:10px;width:auto;height:82%;max-width:none;transform:translateX(-50%);object-fit:contain;transform-origin:50% 100%;filter:drop-shadow(0 6px 8px rgba(31,43,36,.2))}
.gfe-moo-dock[data-mode="2d"] .gfe-moo-fallback{animation:gfeMooBreathe 3.2s ease-in-out infinite}
.gfe-moo-dock[data-mode="2d"][data-state="happy"] .gfe-moo-fallback,.gfe-moo-dock[data-mode="2d"][data-state="success"] .gfe-moo-fallback{animation:gfeMooHop .7s ease-in-out 2}
.gfe-moo-dock[data-mode="2d"][data-arrive="1"] .gfe-moo-fallback{animation:gfeMooRise .9s cubic-bezier(.2,.9,.25,1.2) both}
.gfe-moo-ring{position:absolute;left:50%;bottom:4px;width:84%;height:22%;transform:translateX(-50%) scale(.2);border-radius:50%;background:radial-gradient(ellipse at center,rgba(255,250,232,.95) 0,rgba(142,183,158,.75) 45%,rgba(61,92,73,0) 72%);box-shadow:0 0 16px rgba(142,183,158,.6);opacity:0;pointer-events:none}
.gfe-moo-dock[data-mode="2d"][data-arrive="1"] .gfe-moo-ring{animation:gfeMooRing 1.2s ease-out both}
@keyframes gfeMooBreathe{0%,100%{transform:translateX(-50%) scale(1,1)}50%{transform:translateX(-50%) scale(1.025,.975) translateY(-2px)}}
@keyframes gfeMooHop{0%,100%{transform:translateX(-50%) translateY(0) scale(1)}40%{transform:translateX(-50%) translateY(-7px) scale(.97,1.04)}70%{transform:translateX(-50%) translateY(0) scale(1.04,.96)}}
@keyframes gfeMooRise{0%{transform:translateX(-50%) translateY(40%) scale(.3);opacity:0}60%{opacity:1}100%{transform:translateX(-50%) translateY(0) scale(1);opacity:1}}
@keyframes gfeMooRing{0%{opacity:0;transform:translateX(-50%) scale(.2)}25%{opacity:1;transform:translateX(-50%) scale(1)}75%{opacity:.9}100%{opacity:0;transform:translateX(-50%) scale(1.25)}}

/* Chat panel: sits above both floating actions and never covers them */
.gfe-assistant{position:fixed;right:max(16px,env(safe-area-inset-right));bottom:calc(var(--gfe-float-bottom) - var(--gfe-float-shift,0px) + var(--gfe-moo-h) + 2px);z-index:2147482998;width:min(360px,calc(100vw - 32px));height:min(540px,calc(100vh - var(--gfe-float-bottom) + var(--gfe-float-shift,0px) - var(--gfe-moo-h) - 18px));height:min(540px,calc(100dvh - var(--gfe-float-bottom) + var(--gfe-float-shift,0px) - var(--gfe-moo-h) - 18px));background:#fff;border:1px solid #dbe7de;border-radius:22px;box-shadow:0 28px 74px rgba(28,42,33,.26);display:none;overflow:hidden;box-sizing:border-box}
.gfe-assistant *{box-sizing:border-box}
.gfe-assistant.is-open{display:flex;flex-direction:column;animation:gfeMooPanelIn .26s cubic-bezier(.2,.75,.2,1) both}
.gfe-assistant.is-kb{top:calc(var(--gfe-vv-top,0px) + 8px);bottom:auto;height:calc(var(--gfe-vv-h,100vh) - 16px)}
.gfe-assistant-head{background:linear-gradient(135deg,#26332c,#3d5c49);color:#fff;padding:11px 12px;display:flex;justify-content:space-between;gap:10px;align-items:center;flex:0 0 auto}
.gfe-assistant-id{display:flex;align-items:center;gap:10px;min-width:0}
.gfe-assistant-id img{width:40px;height:40px;object-fit:contain;border-radius:50%;background:rgba(255,255,255,.1);flex:0 0 auto}
.gfe-assistant-head strong{font-size:15px;font-weight:600;letter-spacing:.04em}
.gfe-assistant-subtitle{font-size:10.5px;color:#d3dfd6;margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.gfe-assistant-actions{display:flex;gap:6px;align-items:center;flex-shrink:0}
.gfe-assistant-sound,.gfe-assistant-close{border:1px solid rgba(255,255,255,.3);background:rgba(255,255,255,.08);color:#fff;border-radius:999px;padding:8px 10px;min-height:34px!important;font-family:'Engravers Gothic','Julius Sans One',sans-serif;font-size:8.5px;letter-spacing:.08em;cursor:pointer;line-height:1;white-space:nowrap}
.gfe-assistant-sound:hover,.gfe-assistant-close:hover{background:rgba(255,255,255,.16)}

.gfe-moo-gate{padding:17px 16px 14px;overflow:auto;flex:1;min-height:0;background:linear-gradient(180deg,#fbfdfb,#f5faf6);overscroll-behavior:contain}
.gfe-moo-gate[hidden],.gfe-moo-chat-shell[hidden]{display:none!important}
.gfe-moo-gate-kicker{font-family:'Engravers Gothic','Julius Sans One',sans-serif;font-size:9px;letter-spacing:.16em;color:#5b8269;margin-bottom:7px}
.gfe-moo-gate h2{font-size:22px;line-height:1.18;color:#26332c;margin:0 0 7px;font-weight:500}
.gfe-moo-gate p{font-size:12.5px;line-height:1.55;color:#66756d;margin:0 0 13px}
.gfe-moo-lead-form{display:flex;flex-direction:column;gap:11px;margin:0}
.gfe-moo-lead-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.gfe-moo-lead-form label{display:block;font-size:10.5px;color:#415248;line-height:1.4;font-weight:500;min-width:0}
.gfe-moo-lead-form label>span.req{color:#5b8269;margin-left:3px}
.gfe-moo-lead-form label>span.opt{color:#8a978f;font-weight:400;margin-left:4px}
.gfe-moo-lead-form input:not([type="checkbox"]){display:block;width:100%;height:42px;margin-top:5px;border:1px solid #d2dfd5;border-radius:10px;padding:9px 10px;background:#fff;color:#26332c;font-family:'Fahkwang',sans-serif;font-size:16px;outline:none}
.gfe-moo-lead-form input:not([type="checkbox"]):focus{border-color:#8eb79e;box-shadow:0 0 0 3px rgba(142,183,158,.18)}
.gfe-moo-lead-form input[aria-invalid="true"]{border-color:#b85a50;box-shadow:0 0 0 3px rgba(184,90,80,.12)}
.gfe-moo-field-err{letter-spacing:normal;display:block;min-height:0;color:#9a4038;font-size:10.5px;line-height:1.35;margin-top:3px}
.gfe-moo-field-err:empty{display:none}
.gfe-moo-field-hint{letter-spacing:normal;display:block;color:#7a8880;font-size:10px;line-height:1.35;margin-top:3px;font-weight:400}
.gfe-hp{position:absolute!important;left:-9999px!important;width:1px!important;height:1px!important;opacity:0!important}
.gfe-moo-consent{display:flex!important;gap:8px;align-items:flex-start;font-weight:400!important;font-size:10.5px!important;line-height:1.5!important;color:#66756d!important}
.gfe-moo-consent input{margin:1px 0 0;flex:0 0 auto;width:18px;height:18px;min-width:18px!important;min-height:18px!important;accent-color:#3d5c49}
.gfe-moo-consent a{color:#3d5c49;text-decoration:underline;text-underline-offset:2px}
.gfe-moo-lead-error{min-height:0;color:#9a4038;font-size:11px;line-height:1.45}
.gfe-moo-lead-error:empty{display:none}
.gfe-moo-lead-submit{border:0;border-radius:999px;background:#3d5c49;color:#fff;min-height:46px;padding:12px 18px;font-family:'Engravers Gothic','Julius Sans One',sans-serif;font-size:9.5px;letter-spacing:.1em;cursor:pointer;box-shadow:0 8px 18px rgba(61,92,73,.18)}
.gfe-moo-lead-submit:hover{background:#26332c}
.gfe-moo-lead-submit:disabled{opacity:.65;cursor:wait}
.gfe-moo-lead-note{font-size:9.5px;line-height:1.45;color:#7a8880;text-align:center;padding:0 7px}

.gfe-moo-chat-shell{display:flex;flex-direction:column;min-height:0;flex:1}
.gfe-assistant-body{padding:14px;overflow:auto;flex:1;min-height:0;background:#fbfdfb;scrollbar-color:#b9cbbf transparent;overscroll-behavior:contain}
.gfe-msg{max-width:88%;padding:10px 12px;border-radius:14px;margin:0 0 10px;font-size:13.5px;line-height:1.55;white-space:pre-wrap;overflow-wrap:anywhere}
.gfe-msg.bot{background:#ebf4ec;color:#33443a;border-bottom-left-radius:4px}
.gfe-msg.user{background:#26332c;color:#fff;margin-left:auto;border-bottom-right-radius:4px}
.gfe-msg a{color:#26332c;text-decoration:underline;text-underline-offset:2px}
.gfe-msg.is-typing{display:inline-flex;gap:4px;align-items:center;padding:12px 14px}
.gfe-msg.is-typing i{width:6px;height:6px;border-radius:50%;background:#5b8269;opacity:.35;animation:gfeMooDot 1.1s ease-in-out infinite}
.gfe-msg.is-typing i:nth-child(2){animation-delay:.15s}.gfe-msg.is-typing i:nth-child(3){animation-delay:.3s}
.gfe-moo-chips{display:flex;flex-wrap:wrap;gap:6px;margin:2px 0 8px}
.gfe-moo-chips button{border:1px solid #cfe2d5;background:#fff;color:#3d5c49;border-radius:999px;padding:7px 11px;min-height:32px!important;font-size:11.5px;line-height:1.2;cursor:pointer;font-family:inherit}
.gfe-moo-chips button:hover{background:#ebf4ec}
.gfe-assistant-form{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px;padding:10px 12px;border-top:1px solid #e3ebe4;background:#fff;margin:0;flex:0 0 auto}
.gfe-assistant-form textarea{min-height:46px;max-height:100px;resize:none;border:1px solid #d4e0d7;border-radius:12px;padding:11px 12px;font-family:'Fahkwang',sans-serif;font-size:16px;line-height:1.35;color:#26332c;background:#fff;width:100%}
.gfe-assistant-send{border:0;border-radius:12px;background:#3d5c49;color:#fff;padding:0 13px;min-width:78px;font-family:'Engravers Gothic','Julius Sans One',sans-serif;font-size:9.5px;letter-spacing:.08em;cursor:pointer}
.gfe-assistant-send:hover{background:#26332c}
.gfe-assistant-send:disabled{opacity:.6;cursor:wait}
.gfe-assistant-note{font-size:10px;line-height:1.45;color:#718078;padding:0 12px 10px;background:#fff;flex:0 0 auto}
@keyframes gfeMooPanelIn{0%{opacity:0;transform:translateY(12px) scale(.98)}100%{opacity:1;transform:none}}
@keyframes gfeMooDot{0%,100%{opacity:.3;transform:translateY(0)}50%{opacity:1;transform:translateY(-3px)}}

/* Floating actions step aside for modal dialogs and the mobile menu */
html.gfe-float-hide .gfe-moo-dock,html.gfe-float-hide .gfe-whatsapp-fab,html.gfe-float-hide .gfe-assistant{visibility:hidden!important;opacity:0!important;pointer-events:none!important}
body.gfeh-locked .gfe-moo-dock,body.gfeh-locked .gfe-whatsapp-fab{visibility:hidden!important;pointer-events:none!important}
html.gfe-moo-away .gfe-moo-dock:not([data-open="1"]){visibility:hidden;opacity:0;pointer-events:none}

/* Tablet: panel hugs the right edge above both actions */
@media(min-width:761px) and (max-width:1100px){.gfe-shell{max-width:960px}}

/* Phones: MOE bottom-left, WhatsApp bottom-right, both above the sticky CTA bar */
@media(max-width:767px){
 :root{--gfe-float-bottom:calc(76px + env(safe-area-inset-bottom));--gfe-moo-w:60px;--gfe-moo-h:68px}
 .gfe-whatsapp-fab{right:max(10px,env(safe-area-inset-right))!important;min-width:48px;width:48px;height:48px;min-height:48px;padding:0;justify-content:center;border-radius:999px}
 .gfe-whatsapp-label{display:none}
 .gfe-whatsapp-icon{width:30px;height:30px}
 .gfe-moo-dock{left:max(8px,env(safe-area-inset-left));right:auto;bottom:calc(var(--gfe-float-bottom) - 4px)}
 .gfe-moo-mute{width:24px;height:24px;top:-1px;right:-5px}
 .gfe-moo-name{font-size:7px;padding:2px 6px}
 .gfe-moo-bubble{display:none}
 .gfe-assistant{left:10px;right:10px;width:auto;bottom:calc(var(--gfe-float-bottom) - var(--gfe-float-shift,0px) + var(--gfe-moo-h) + 8px);height:min(500px,68vh,calc(100vh - var(--gfe-float-bottom) + var(--gfe-float-shift,0px) - var(--gfe-moo-h) - 18px));height:min(500px,68dvh,calc(100dvh - var(--gfe-float-bottom) + var(--gfe-float-shift,0px) - var(--gfe-moo-h) - 18px));border-radius:18px}
 .gfe-assistant-head{padding:9px 10px}.gfe-assistant-id img{width:34px;height:34px}.gfe-assistant-subtitle{font-size:9.5px}
 .gfe-assistant-sound,.gfe-assistant-close{font-size:7.8px;padding:7px 8px;min-height:32px!important}
 .gfe-moo-gate{padding:12px 11px}.gfe-moo-gate h2{font-size:18px}.gfe-moo-gate p{font-size:11.5px;margin-bottom:8px}
 .gfe-moo-lead-grid{grid-template-columns:1fr 1fr;gap:8px}
 .gfe-moo-lead-form input:not([type="checkbox"]){height:42px}
 .gfe-moo-lead-submit{min-height:43px}
 .gfe-assistant-body{padding:12px}.gfe-msg{font-size:13px;max-width:92%}
 .gfe-assistant-note{display:none}
}
/* Shared page rules (unchanged from v6) */
@media(max-width:760px){
 .gfe-form-grid{grid-template-columns:1fr}.gfe-form-grid .span-2{grid-column:auto}.gfe-shell{padding-left:18px;padding-right:18px}
 body{overflow-x:hidden}[style*="grid-template-columns:minmax(0,1.4fr) minmax(240px,.6fr)"]{grid-template-columns:1fr!important}
}
html.gfe-no-bar body{padding-bottom:calc(var(--gfe-moo-h) + 12px + env(safe-area-inset-bottom))}
@media(max-width:359px){.gfe-moo-lead-grid{grid-template-columns:1fr}}
@media(max-width:374px){.gfe-assistant-subtitle{display:none}.gfe-assistant-form{grid-template-columns:1fr}.gfe-assistant-send{min-height:42px}}
@media(min-width:1600px){.gfe-shell{max-width:1260px}}
@media(prefers-reduced-motion:reduce){
 .gfe-moo-dock[data-mode="2d"] .gfe-moo-fallback,.gfe-moo-ring,.gfe-assistant.is-open,.gfe-msg.is-typing i{animation:none!important}
 .gfe-moo-dock,.gfe-moo-bubble,.gfe-whatsapp-fab{transition:none!important}
}
