/* Custom Gift Builder — scoped under .nf-cgb / body.nf-cgb-page */

:root{
  --bg:#FFF7F8; --surface:#FFFFFF; --ink:#2B1631; --ink-2:#6B5870;
  --line:#F0DEE5; --line-2:#E4C9D3;
  --rose:#B0285F; --rose-deep:#8C1C4A; --rose-tint:#FCE9F0;
  --leaf:#2F6B4F; --stage:#FBEBF0; --warn:#B42318;
  --wa:#25D366; --wa-ink:#05371E; --wa-deep:#0E7A45;
  --display:"Young Serif", Georgia, "Times New Roman", serif;
  --ui:"Figtree", system-ui, -apple-system, "Segoe UI", Roboto, Arial, sans-serif;
  --bar-h:68px;
}
.nf-cgb *,
.nf-cgb *::before,
.nf-cgb *::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body.nf-cgb-page{background:var(--bg);padding-bottom:calc(var(--bar-h) + env(safe-area-inset-bottom,0px) + 24px)}
.nf-cgb{color:var(--ink);font:400 16px/1.5 var(--ui);-webkit-font-smoothing:antialiased}
.nf-cgb button,
.nf-cgb input,
.nf-cgb textarea{font:inherit;color:inherit}
.nf-cgb [hidden]{display:none!important}
.nf-cgb :focus-visible{outline:3px solid var(--rose);outline-offset:2px}
.nf-cgb .sr{position:absolute!important;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}

/* Top bar */
.nf-cgb .topbar{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 16px;
  padding-top:calc(12px + env(safe-area-inset-top,0px));background:var(--surface);border-bottom:1px solid var(--line)}
.nf-cgb .brand{font-family:var(--display);font-size:21px;color:var(--rose);text-decoration:none;letter-spacing:-.01em}
.nf-cgb .topbar-note{font-size:13px;color:var(--ink-2)}

/* Layout: intro, city, preview, options */
.nf-cgb .layout{max-width:1180px;margin:0 auto;padding:0 16px;display:grid;grid-template-columns:minmax(0,1fr);
  grid-template-areas:"intro" "city" "stage" "build"}
.nf-cgb .layout-main,
.nf-cgb .layout-build{display:contents}
.nf-cgb .intro{grid-area:intro;padding:22px 0 0}
.nf-cgb .city-card{grid-area:city}
.nf-cgb .stage-col{grid-area:stage}
.nf-cgb .build-col{grid-area:build}
.nf-cgb h1{font-family:var(--display);font-weight:400;font-size:clamp(32px,8vw,48px);line-height:1.08;letter-spacing:-.015em;margin:0 0 10px;max-width:16ch}
.nf-cgb .lede{margin:0;color:var(--ink-2);max-width:46ch}
.nf-cgb .cgb-crumbs{max-width:1180px;margin:0 auto;padding:16px 16px 0;font-size:13px;color:var(--ink-2)}
.nf-cgb .cgb-crumbs ol{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:6px 8px;align-items:center}
.nf-cgb .cgb-crumbs li{display:inline-flex;align-items:center;gap:8px}
.nf-cgb .cgb-crumbs li+li:before{content:"/";color:#C9B4BE}
.nf-cgb .cgb-crumbs a{color:var(--ink-2);text-decoration:none;font-weight:600}
.nf-cgb .cgb-crumbs a:hover{color:var(--rose)}
.nf-cgb .cgb-crumbs [aria-current="page"]{color:var(--ink);font-weight:600}
.nf-cgb .cgb-seo{max-width:1180px;margin:40px auto 0;padding:0 16px 28px}
.nf-cgb .cgb-seo h2{font-family:var(--display);font-weight:400;font-size:clamp(22px,4vw,28px);line-height:1.2;margin:28px 0 10px}
.nf-cgb .cgb-seo h2:first-child{margin-top:0}
.nf-cgb .cgb-seo h3{font-size:16px;margin:0 0 4px}
.nf-cgb .cgb-seo p{margin:0 0 12px;color:var(--ink-2);max-width:72ch}
.nf-cgb .cgb-seo a{color:var(--rose);font-weight:700;text-decoration:none}
.nf-cgb .cgb-seo a:hover{text-decoration:underline}
.nf-cgb .cgb-seo-steps{margin:0 0 16px;padding:0;list-style:none;display:grid;gap:12px}
.nf-cgb .cgb-seo-steps li{padding:14px 16px;background:var(--surface);border:1px solid var(--line);border-radius:16px}
.nf-cgb .cgb-seo-steps p{margin:0}
.nf-cgb .cgb-faq{margin:0}
.nf-cgb .cgb-faq dt{margin:16px 0 4px;font-weight:700}
.nf-cgb .cgb-faq dd{margin:0;color:var(--ink-2);max-width:72ch}

/* Delivery city */
.nf-cgb .city-card{margin-top:18px;background:var(--surface);border:1.5px solid var(--rose);border-radius:20px;padding:18px 16px;box-shadow:0 8px 24px rgba(176,40,95,.08)}
.nf-cgb .city-card.is-set{border:1px solid var(--line);box-shadow:none;padding:12px 16px}
.nf-cgb .city-card h2{font-family:var(--display);font-weight:400;font-size:23px;line-height:1.15;margin:0 0 4px}
.nf-cgb .city-card .sub{margin:0 0 14px;color:var(--ink-2);font-size:15px}
.nf-cgb .city-field{position:relative}
.nf-cgb .city-field svg{position:absolute;left:14px;top:50%;width:18px;height:18px;transform:translateY(-50%);color:var(--ink-2);pointer-events:none}
.nf-cgb .city-field .input{padding-left:40px}
.nf-cgb .city-results{display:grid;gap:6px;margin-top:8px}
.nf-cgb .city-results:empty{display:none}
.nf-cgb .city-opt{display:block;width:100%;text-align:left;padding:12px 14px;border:1px solid var(--line);border-radius:12px;background:#fff;font-weight:600;cursor:pointer}
@media (hover:hover){.nf-cgb .city-opt:hover{border-color:var(--rose);background:var(--rose-tint)}}
.nf-cgb .city-label{font-size:13px;color:var(--ink-2);margin:14px 0 8px}
.nf-cgb .city-chips{display:flex;flex-wrap:wrap;gap:8px}
.nf-cgb .city-chip{min-height:44px;padding:8px 14px;border-radius:999px;border:1.5px solid var(--line-2);background:#fff;font-weight:600;font-size:14px;cursor:pointer}
@media (hover:hover){.nf-cgb .city-chip:hover{border-color:var(--rose)}}
.nf-cgb .city-done{display:flex;align-items:center;gap:10px}
.nf-cgb .city-done svg{width:20px;height:20px;flex:none;color:var(--rose)}
.nf-cgb .city-done:focus{outline:none}
.nf-cgb .link-btn{margin-left:auto;background:none;border:0;color:var(--rose);font-weight:700;cursor:pointer;padding:8px 4px}
.nf-cgb .city-ask .link-btn{margin:10px 0 0;padding:4px 0}
.nf-cgb .city-miss a{color:var(--wa-deep);font-weight:700}

/* Live preview */
.nf-cgb .stage{margin:18px 0 0;background:var(--stage);border-radius:24px;overflow:hidden}
.nf-cgb .stage svg{display:block;width:100%;height:auto}
.nf-cgb .caption{margin:0;padding:2px 18px 18px;font-family:var(--display);font-size:17px;line-height:1.45;min-height:3.2em}

/* Steps */
.nf-cgb .step{background:var(--surface);border:1px solid var(--line);border-radius:20px;margin-top:16px;transition:opacity .25s}
.nf-cgb .build-col>.step:first-child{margin-top:20px}
.nf-cgb .step.is-locked{opacity:.45}
.nf-cgb .step-head{display:flex;align-items:center;gap:12px;padding:16px}
.nf-cgb .step-no{flex:none;width:30px;height:30px;border-radius:50%;display:grid;place-items:center;background:var(--rose);color:#fff;font-weight:700;font-size:14px;transition:background-color .2s}
.nf-cgb .step-title{flex:1;min-width:0}
.nf-cgb .step h2{font-family:var(--display);font-weight:400;font-size:23px;line-height:1.15;margin:0}
.nf-cgb .step-sub{display:block;font-size:13px;color:var(--ink-2);margin-top:2px}
.nf-cgb .step-body{padding:2px 16px 20px}
.nf-cgb .off-note,
.nf-cgb .lock-note{margin:0;padding:0 16px 18px;color:var(--ink-2);font-size:14px}
.nf-cgb .off-note{display:none}
.nf-cgb .is-off .step-body{display:none}
.nf-cgb .is-off .off-note{display:block}
.nf-cgb .is-off .step-no,
.nf-cgb .is-locked .step-no{background:#D9CCD2}
.nf-cgb .is-gated #extrasBody{opacity:.4}
.nf-cgb .is-gated .step-no{background:#D9CCD2}

.nf-cgb fieldset{border:0;margin:0;padding:0;min-width:0}
.nf-cgb fieldset+fieldset,
.nf-cgb fieldset+div,
.nf-cgb div+fieldset{margin-top:20px}
.nf-cgb legend{font-weight:600;font-size:15px;margin:0 0 10px;padding:0}
.nf-cgb .lv{font-weight:400;color:var(--ink-2);margin-left:8px}
.nf-cgb .hint{font-size:13px;color:var(--ink-2);margin:8px 0 0}
.nf-cgb .warn{font-size:13.5px;font-weight:600;color:var(--warn);margin:8px 0 0}
.nf-cgb .hint:empty,
.nf-cgb .warn:empty{display:none}

/* Option faces */
.nf-cgb .opt{position:relative;display:block;cursor:pointer;-webkit-tap-highlight-color:transparent}
.nf-cgb .opt.is-disabled{cursor:not-allowed}
.nf-cgb .opt.is-disabled .face{opacity:.4}
.nf-cgb .card-face{display:flex;border:1.5px solid var(--line);background:var(--surface);border-radius:14px;height:100%;transition:border-color .15s,background-color .15s}
@media (hover:hover){.nf-cgb .opt:not(.is-disabled) .card-face:hover{border-color:var(--line-2)}}
.nf-cgb .opt input:checked + .card-face{border-color:var(--rose);background:var(--rose-tint)}
.nf-cgb .opt input:focus-visible + .face{outline:3px solid var(--rose);outline-offset:3px;border-radius:14px}

.nf-cgb .scroller{display:flex;gap:10px;overflow-x:auto;scroll-snap-type:x proximity;margin:0 -16px;padding:2px 16px 6px;scrollbar-width:none}
.nf-cgb .scroller::-webkit-scrollbar{display:none}
.nf-cgb .scroller .opt{flex:none;scroll-snap-align:start}
.nf-cgb .type-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}
.nf-cgb .type-face{flex-direction:column;align-items:center;gap:4px;padding:10px 6px 10px;text-align:center}
.nf-cgb .type-face svg{width:52px;height:52px}
.nf-cgb .type-name{font-weight:600;font-size:14px;line-height:1.25}
.nf-cgb .type-price{font-size:12px;color:var(--ink-2)}

.nf-cgb .swatches{display:flex;flex-wrap:wrap;gap:12px 8px}
.nf-cgb .sw-face{display:flex;flex-direction:column;align-items:center;gap:6px;width:66px;font-size:12px;line-height:1.25;color:var(--ink-2);text-align:center}
.nf-cgb .sw-dot{width:40px;height:40px;border-radius:50%;box-shadow:inset 0 0 0 1px rgba(43,22,49,.16);transition:box-shadow .15s}
.nf-cgb .opt input:checked + .sw-face{color:var(--ink);font-weight:600}
.nf-cgb .opt input:checked + .sw-face .sw-dot{box-shadow:inset 0 0 0 1px rgba(43,22,49,.16),0 0 0 3px var(--surface),0 0 0 5px var(--rose)}
.nf-cgb .sw-face.sw-sm{width:auto}
.nf-cgb .sw-price{font-size:11px;font-weight:500;color:var(--ink-2);margin-top:-4px}
.nf-cgb .wraps{display:grid;grid-template-columns:repeat(auto-fill,minmax(84px,1fr));gap:8px}
.nf-cgb .wrap-face{flex-direction:column;align-items:center;gap:2px;padding:8px 4px;text-align:center}
.nf-cgb .wrap-face svg{width:46px;height:54px}
.nf-cgb .wrap-name{font-weight:600;font-size:12.5px;line-height:1.2}
.nf-cgb .wrap-price{font-size:11.5px;color:var(--ink-2)}
.nf-cgb .bb-row{display:grid;grid-template-columns:44px minmax(0,1fr) auto;gap:12px;align-items:center;margin-top:20px;padding:10px 12px;border:1.5px dashed var(--line-2);border-radius:14px}
.nf-cgb .bb-row svg{width:44px;height:44px;display:block}
.nf-cgb .sw-sm .sw-dot{width:26px;height:26px}
.nf-cgb .opt input:checked + .sw-sm .sw-dot{box-shadow:inset 0 0 0 1px rgba(43,22,49,.16),0 0 0 2px var(--surface),0 0 0 4px var(--rose)}

.nf-cgb .chips{display:grid;grid-template-columns:repeat(auto-fill,minmax(72px,1fr));gap:8px}
.nf-cgb .chips-3{grid-template-columns:repeat(3,1fr)}
.nf-cgb .chip-face{flex-direction:column;align-items:center;justify-content:center;min-height:56px;padding:6px 4px;border-radius:12px;text-align:center}
.nf-cgb .chip-main{font-weight:700;font-size:16px;line-height:1.2}
.nf-cgb .chip-sub{font-size:12px;color:var(--ink-2)}
.nf-cgb .opt input:checked + .chip-face .chip-sub{color:var(--rose-deep)}

/* Quantity stepper with typing */
.nf-cgb .qty{display:inline-flex;align-items:center;flex:none;height:44px;border:1.5px solid var(--line-2);border-radius:12px;overflow:hidden;background:#fff}
.nf-cgb .qty button{width:44px;height:100%;border:0;background:var(--rose-tint);color:var(--rose-deep);font-size:20px;line-height:1;cursor:pointer}
.nf-cgb .qty input{width:52px;height:100%;border:0;text-align:center;font-weight:700;font-size:16px;-moz-appearance:textfield;appearance:textfield;background:#fff}
.nf-cgb .qty input::-webkit-outer-spin-button,
.nf-cgb .qty input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}
.nf-cgb .qty input:focus{outline:none;background:var(--rose-tint)}
.nf-cgb .custom-qty{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:10px;padding:10px 12px;border-radius:14px;background:var(--rose-tint)}
.nf-cgb .custom-qty span{font-weight:600;font-size:14px}

/* Mix your own */
.nf-cgb .mix-row{display:grid;grid-template-columns:44px minmax(0,1fr) auto;gap:8px 12px;align-items:center;padding:12px 0;border-top:1px solid var(--line)}
.nf-cgb .mix-row:first-child{border-top:0;padding-top:2px}
.nf-cgb .mix-row.has-qty .mix-name{color:var(--rose-deep)}
.nf-cgb .mix-ic svg{width:44px;height:44px;display:block}
.nf-cgb .mix-name{display:block;font-weight:600;font-size:15px;line-height:1.25}
.nf-cgb .mix-price{display:block;font-size:12.5px;color:var(--ink-2)}
.nf-cgb .mix-colours{grid-column:2 / -1;display:flex;flex-wrap:wrap;gap:10px}
.nf-cgb .mix-total{display:flex;justify-content:space-between;align-items:baseline;margin-top:6px;padding-top:12px;border-top:1.5px solid var(--line-2);font-weight:700}
.nf-cgb .layout-opts{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.nf-cgb .lay-face{flex-direction:column;align-items:center;gap:4px;padding:10px 8px;text-align:center}
.nf-cgb .lay-face svg{width:72px;height:56px}
.nf-cgb .lay-name{font-weight:600;font-size:14px;line-height:1.25}
.nf-cgb .lay-sub{font-size:12px;color:var(--ink-2)}

.nf-cgb .arr{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.nf-cgb .arr-face{align-items:center;gap:10px;padding:8px 10px;min-height:66px}
.nf-cgb .arr-face svg{width:40px;height:50px;flex:none}
.nf-cgb .arr-name,
.nf-cgb .flv-name{display:block;font-weight:600;font-size:14px;line-height:1.25}
.nf-cgb .arr-price,
.nf-cgb .flv-price{display:block;font-size:12px;color:var(--ink-2)}

.nf-cgb .flavours{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.nf-cgb .flv-face{align-items:center;gap:8px;padding:8px 10px;min-height:60px}
.nf-cgb .flv-face svg{width:48px;height:34px;flex:none}

/* Fondant and photo cakes: WhatsApp only */
.nf-cgb .designer{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.nf-cgb .designer-card{display:flex;align-items:center;gap:8px;padding:10px;border:1.5px dashed #9FD7B5;border-radius:14px;background:#F4FBF6;color:inherit;text-decoration:none}
.nf-cgb .designer-card svg.ic{width:48px;height:34px;flex:none}
.nf-cgb .wa-tag{display:inline-flex;align-items:center;gap:5px;margin-top:2px;font-size:12.5px;font-weight:700;color:var(--wa-deep)}
.nf-cgb .wa-tag svg{width:14px;height:14px}

/* Switches */
.nf-cgb .sw{appearance:none;-webkit-appearance:none;flex:none;width:44px;height:26px;border-radius:13px;background:#D9CCD2;position:relative;margin:0;cursor:pointer;transition:background-color .2s}
.nf-cgb .sw::after{content:"";position:absolute;top:3px;left:3px;width:20px;height:20px;border-radius:50%;background:#fff;box-shadow:0 1px 2px rgba(0,0,0,.2);transition:transform .2s}
.nf-cgb .sw:checked{background:var(--leaf)}
.nf-cgb .sw:checked::after{transform:translateX(18px)}
.nf-cgb .switch{display:inline-flex;align-items:center;min-height:44px;gap:8px;font-size:13px;font-weight:600;color:var(--ink-2);cursor:pointer}
.nf-cgb .row-switch{display:flex;align-items:center;gap:12px;margin-top:20px;padding:12px 14px;border:1.5px solid var(--line);border-radius:14px;cursor:pointer}
.nf-cgb .rs-txt{flex:1}
.nf-cgb .rs-title{display:block;font-weight:600;font-size:15px}
.nf-cgb .rs-sub{display:block;font-size:13px;color:var(--ink-2)}
.nf-cgb .veg{flex:none;width:16px;height:16px;border:1.6px solid #1E8E3E;border-radius:3px;position:relative}
.nf-cgb .veg::after{content:"";position:absolute;inset:3px;border-radius:50%;background:#1E8E3E}

/* Text fields */
.nf-cgb .field{display:block;margin-top:20px}
.nf-cgb .step-body>.field:first-child{margin-top:0}
.nf-cgb .field-label{display:block;font-weight:600;font-size:15px;margin-bottom:8px}
.nf-cgb .input{display:block;width:100%;font-size:16px;padding:12px 14px;border:1.5px solid var(--line-2);border-radius:12px;background:#fff;resize:vertical}
.nf-cgb .input:focus{outline:none;border-color:var(--rose);box-shadow:0 0 0 3px var(--rose-tint)}
.nf-cgb .counter{display:block;font-size:12px;color:var(--ink-2);text-align:right;margin-top:4px}

/* Extras */
.nf-cgb .addon{display:flex;align-items:center;gap:12px;padding:12px 0;border-top:1px solid var(--line)}
.nf-cgb .addon:first-child{border-top:0;padding-top:0}
.nf-cgb .addon-ic{flex:none;width:56px;height:56px;border-radius:14px;background:var(--stage);display:grid;place-items:center}
.nf-cgb .addon-ic svg{width:48px;height:48px}
.nf-cgb .addon-txt{flex:1;min-width:0}
.nf-cgb .addon-name{display:block;font-weight:600;font-size:15px;line-height:1.3}
.nf-cgb .addon-meta{display:block;font-size:13px;color:var(--ink-2)}
.nf-cgb .addon-ctl{flex:none}
.nf-cgb .btn-add{min-width:88px;height:44px;border-radius:10px;border:1.5px solid var(--rose);color:var(--rose);background:#fff;font-weight:700;font-size:14px;cursor:pointer}
.nf-cgb .stepper{display:inline-flex;align-items:center;justify-content:space-between;min-width:112px;height:44px;border-radius:10px;background:var(--rose);color:#fff}
.nf-cgb .stepper button{width:40px;height:44px;border:0;background:transparent;color:#fff;font-size:20px;line-height:1;cursor:pointer}
.nf-cgb .stepper button:disabled{opacity:.4;cursor:not-allowed}
.nf-cgb .stepper output{font-weight:700;min-width:18px;text-align:center}
.nf-cgb .num-input{width:96px;height:44px;padding:0 10px;border:1.5px solid var(--line-2);border-radius:10px;text-align:center;font-weight:700;font-size:16px;letter-spacing:.08em;background:#fff}
.nf-cgb .num-input:focus{outline:none;border-color:var(--rose);box-shadow:0 0 0 3px var(--rose-tint)}
.nf-cgb .num-input::placeholder{font-weight:500;letter-spacing:0;color:#A493A8}

/* WhatsApp */
.nf-cgb .wa-card{margin-top:16px;background:#ECF8F0;border:1px solid #CDEBD8;border-radius:20px;padding:20px 18px}
.nf-cgb .wa-card h2{font-family:var(--display);font-weight:400;font-size:23px;line-height:1.15;margin:0 0 6px}
.nf-cgb .wa-card p{margin:0 0 14px;color:#33503F}
.nf-cgb .wa-card .fine{margin:10px 0 0;color:#4A6656}
.nf-cgb .btn-wa{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:48px;padding:0 18px;border-radius:12px;background:var(--wa);color:var(--wa-ink);font-weight:700;font-size:15px;text-decoration:none;text-align:center}
.nf-cgb .btn-wa svg{width:20px;height:20px;flex:none}
.nf-cgb .btn-wa.ghost{background:transparent;border:1.5px solid #3BB273;color:var(--wa-deep)}

/* Summary */
.nf-cgb .lines{list-style:none;margin:0;padding:0}
.nf-cgb .lines li{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;padding:10px 0;border-bottom:1px dashed var(--line-2)}
.nf-cgb .l-title{display:block;font-weight:600;font-size:15px;line-height:1.3}
.nf-cgb .l-sub{display:block;font-size:13px;color:var(--ink-2)}
.nf-cgb .l-price{font-weight:600;white-space:nowrap}
.nf-cgb .total-row{display:flex;justify-content:space-between;align-items:baseline;padding:12px 0 2px;font-family:var(--display);font-size:22px}
.nf-cgb .fine{font-size:12.5px;line-height:1.45;color:var(--ink-2);margin:6px 0 0}
.nf-cgb .empty{color:var(--ink-2);font-size:14px;margin:8px 0}
.nf-cgb .sum-city{font-size:14px;color:var(--ink-2);margin:0 0 6px}
.nf-cgb .btn-primary{height:48px;padding:0 20px;border:0;border-radius:12px;background:var(--rose);color:#fff;font-weight:700;font-size:15px;cursor:pointer;flex:none}
@media (hover:hover){.nf-cgb .btn-primary:hover{background:var(--rose-deep)}}
.nf-cgb .summary-desk{display:none;margin-top:16px;background:var(--surface);border:1px solid var(--line);border-radius:20px;padding:18px 18px 20px}
.nf-cgb .summary-desk h2,
.nf-cgb .sheet h2{font-family:var(--display);font-weight:400;font-size:22px;margin:0 0 4px}
.nf-cgb .desk-actions,
.nf-cgb .sheet-actions{display:grid;gap:10px;margin-top:16px}
.nf-cgb .desk-actions .btn-primary,
.nf-cgb .sheet-actions .btn-primary{width:100%}

/* Motion: only in answer to a choice */
@media (prefers-reduced-motion:no-preference){
  .nf-cgb .bloom{transform-box:fill-box;transform-origin:center;animation:bloom .5s cubic-bezier(.2,.9,.3,1.2) both}
  .nf-cgb .pop{transform-box:fill-box;transform-origin:50% 100%;animation:pop .4s cubic-bezier(.2,.9,.3,1.2) both}
  .nf-cgb .sheet[open]{animation:sheetIn .28s cubic-bezier(.2,.8,.2,1)}
}
@keyframes bloom{from{opacity:0;transform:scale(.2) rotate(-25deg)}to{opacity:1;transform:none}}
@keyframes pop{from{opacity:0;transform:translateY(8px) scale(.9)}to{opacity:1;transform:none}}
@keyframes sheetIn{from{transform:translateY(40px);opacity:.6}to{transform:none;opacity:1}}

@media (min-width:520px){
  .nf-cgb .arr{grid-template-columns:repeat(4,1fr)}
  .nf-cgb .arr-face{flex-direction:column;text-align:center;gap:4px;padding:10px 6px}
}
@media (min-width:960px){
  body.nf-cgb-page{padding-bottom:calc(var(--bar-h) + 32px)}
  .nf-cgb .layout{grid-template-columns:minmax(0,5fr) minmax(0,6fr);grid-template-areas:"main buildwrap";column-gap:48px;padding:0 32px;align-items:start}
  .nf-cgb .layout-main,
  .nf-cgb .layout-build{display:flex;flex-direction:column;min-width:0}
  .nf-cgb .layout-main{grid-area:main;position:sticky;top:20px;max-height:var(--cgb-side-h, calc(100dvh - var(--bar-h) - 160px));overflow:auto;scrollbar-width:thin}
  .nf-cgb .layout-build{grid-area:buildwrap;padding-bottom:24px}
  .nf-cgb .intro{padding-top:24px}
  .nf-cgb .cgb-crumbs,
  .nf-cgb .cgb-seo{padding-left:32px;padding-right:32px}
  .nf-cgb .city-card{margin-top:36px}
  .nf-cgb .stage-col{position:static;max-height:none;overflow:visible}
  .nf-cgb .summary-desk{display:block}
  .nf-cgb .type-grid{grid-template-columns:repeat(3,minmax(0,1fr))}
  .nf-cgb .stage svg{max-height:min(40vh,380px)}
}

/* ---------- v2 additions ---------- */
.nf-cgb .restore-note{display:flex;flex-wrap:wrap;align-items:center;gap:8px 12px;margin:12px 0 0;padding:10px 12px;border-radius:12px;background:#E9F6EE;border:1px solid #BFE3CC;font-size:14px}
.nf-cgb .restore-note p{margin:0;flex:1 1 200px}
.nf-cgb .min-pill{display:inline-block;margin:12px 0 0;padding:5px 12px;border-radius:999px;background:var(--rose-tint);color:var(--rose-deep);font-size:13px;font-weight:700}
.nf-cgb .lede{margin-bottom:0}
.nf-cgb .stage svg{max-height:40vh}
.nf-cgb .preview-note{margin:-12px 18px 0;padding-bottom:14px;font-size:12.5px;color:var(--ink-2)}
.nf-cgb .build-note{margin:20px 0 0;font-size:14px;color:var(--ink-2)}
.nf-cgb .lock-note.city-lock{margin:12px 0 0;padding:12px 14px;border-radius:14px;background:var(--rose-tint);color:var(--rose-deep);font-weight:600}
.nf-cgb .city-results{list-style:none;margin:8px 0 0;padding:0}
.nf-cgb .city-opt.is-active{border-color:var(--rose);background:var(--rose-tint)}
.nf-cgb .notice{margin:0 0 18px;padding:12px 14px;border-radius:14px;background:#FFF4E5;border:1px solid #F2CC99;color:#5E3300;font-size:14px}
.nf-cgb .notice p{margin:0}
.nf-cgb .acts{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px}
.nf-cgb .btn-sm{display:inline-flex;align-items:center;justify-content:center;min-height:44px;padding:0 14px;border-radius:10px;border:1.5px solid var(--rose);background:#fff;color:var(--rose-deep);font-weight:700;font-size:14px;cursor:pointer;text-decoration:none}
.nf-cgb .btn-sm:disabled{opacity:.5;cursor:not-allowed}
.nf-cgb .mix-restore{display:flex;flex-wrap:wrap;align-items:center;gap:8px 12px;margin:0 0 14px;padding:10px 12px;border-radius:12px;background:var(--rose-tint);font-size:14px}
.nf-cgb .mix-restore p{margin:0;flex:1 1 180px}
.nf-cgb .mix-row .field-msg,
.nf-cgb .mix-row details,
.nf-cgb .bb-row .field-msg{grid-column:2 / -1}
.nf-cgb .mix-col summary{cursor:pointer;font-size:13px;font-weight:600;color:var(--ink-2);min-height:32px;display:flex;align-items:center}
.nf-cgb .mix-col .mix-colours{margin-top:8px}
.nf-cgb .sw-sm{font-size:11.5px;width:56px}
.nf-cgb .sw-sm .sw-dot{width:28px;height:28px}
.nf-cgb .field-msg{font-size:12.5px;line-height:1.4;margin:4px 0 0;color:var(--ink-2)}
.nf-cgb .field-msg:empty{display:none}
.nf-cgb .field-msg.err{color:var(--warn);font-weight:600}
.nf-cgb input[aria-invalid="true"]{background:#FDECEC!important;color:var(--warn)}
.nf-cgb .custom-qty{flex-wrap:wrap}
.nf-cgb details.finish{margin-top:20px;border:1.5px solid var(--line);border-radius:14px}
.nf-cgb details.finish>summary{list-style:none;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 14px;min-height:56px;cursor:pointer}
.nf-cgb details.finish>summary::-webkit-details-marker{display:none}
.nf-cgb .finish-k{display:block;font-weight:600;font-size:15px}
.nf-cgb .finish-v{display:block;font-size:13px;color:var(--ink-2)}
.nf-cgb .chev{flex:none;width:28px;height:28px;border-radius:50%;background:var(--rose-tint);display:grid;place-items:center;color:var(--rose-deep);transition:transform .2s}
.nf-cgb details[open]>summary .chev{transform:rotate(180deg)}
.nf-cgb .finish-body{padding:0 14px 16px}
.nf-cgb .finish-body fieldset:first-child{margin-top:4px}
.nf-cgb details.designer-d{margin-top:20px}
.nf-cgb details.designer-d>summary{cursor:pointer;font-weight:600;font-size:14.5px;color:var(--wa-deep);min-height:44px;display:flex;align-items:center}
.nf-cgb .cake-total{margin:16px 0 0;padding:10px 12px;border-radius:12px;background:var(--rose-tint);font-size:14px}
.nf-cgb .cake-total:empty{display:none}
.nf-cgb .hint-inline{color:var(--ink-2);font-size:13px}
.nf-cgb .optional{font-weight:400;font-size:13px;color:var(--ink-2);margin-left:6px}
/* review */
.nf-cgb .rv-city{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:6px 0 10px;border-bottom:1px solid var(--line)}
.nf-cgb .rv-k{display:block;font-size:12.5px;color:var(--ink-2)}
.nf-cgb .rv-v{display:block;font-weight:700}
.nf-cgb .rv-sec{padding:10px 0 4px;border-bottom:1px solid var(--line)}
.nf-cgb .rv-head{display:flex;align-items:center;justify-content:space-between;gap:12px}
.nf-cgb .rv-head h3{margin:0;font-size:15px;font-weight:700}
.nf-cgb .rv-sec .lines li:last-child{border-bottom:0}
.nf-cgb .rv-none{margin:2px 0 8px;font-size:14px;color:var(--ink-2)}
.nf-cgb .rv-msg{margin:0 0 8px;font-size:13.5px}
.nf-cgb .rv-msg q{font-weight:600}
.nf-cgb .rv-note{margin:2px 0 10px;padding:10px 12px;border-radius:10px;background:var(--bg);white-space:pre-wrap;overflow-wrap:anywhere;font-size:14px}
.nf-cgb .rv-sec .warn{margin:2px 0 10px}
.nf-cgb .edit-link{background:none;border:0;color:var(--rose);font-weight:700;font-size:14px;cursor:pointer;padding:0 6px;min-height:44px;min-width:44px}
.nf-cgb .min-meter{margin:10px 0 0}
.nf-cgb .mm-label{display:flex;justify-content:space-between;font-size:12.5px;font-weight:600;color:var(--ink-2);margin-bottom:6px}
.nf-cgb .mm-track{height:6px;border-radius:999px;background:var(--line);overflow:hidden}
.nf-cgb .mm-track span{display:block;height:100%;background:var(--leaf);border-radius:999px}
.nf-cgb .js-issues{margin:14px 0 0;padding:12px 14px;border-radius:14px;background:#FDF1F1;border:1px solid #F1C6C6;font-size:14px}
.nf-cgb .js-issues:focus{outline:3px solid var(--rose);outline-offset:2px}
.nf-cgb .issues-h{margin:0 0 6px;font-weight:700;color:var(--warn)}
.nf-cgb .js-issues ul{list-style:none;margin:0;padding:0;display:grid;gap:8px}
.nf-cgb .js-issues li{display:flex;align-items:center;justify-content:space-between;gap:10px}
.nf-cgb .next-note{margin:8px 0 0;font-size:13px;color:var(--ink-2);text-align:center}
.nf-cgb .help-link{display:block;margin-top:10px;text-align:center;font-weight:700;font-size:14px;color:var(--wa-deep);min-height:44px;line-height:44px}
.nf-cgb .tx-status{margin:12px 0 0;padding:12px 14px;border-radius:14px;font-size:14px;border:1px solid var(--line)}
.nf-cgb .tx-status p{margin:0}
.nf-cgb .tx-status[data-tone="ok"]{background:#E9F6EE;border-color:#BFE3CC}
.nf-cgb .tx-status[data-tone="err"]{background:#FDF1F1;border-color:#F1C6C6}
.nf-cgb .tx-status[data-tone="warn"]{background:#FFF4E5;border-color:#F2CC99}
.nf-cgb .tx-status[data-tone="info"]{background:var(--rose-tint);border-color:var(--line-2)}
.nf-cgb .spin{display:inline-block;width:14px;height:14px;margin-right:8px;vertical-align:-2px;border:2px solid var(--rose);border-right-color:transparent;border-radius:50%}
@media (prefers-reduced-motion:no-preference){.nf-cgb .spin{animation:spin .8s linear infinite}}
@keyframes spin{to{transform:rotate(360deg)}}
.nf-cgb .btn-primary:disabled{background:#B9A5B3;cursor:not-allowed}
.nf-cgb .boot-error{max-width:560px;margin:40px auto;padding:20px;border-radius:18px;background:var(--surface);border:1px solid var(--line)}
.nf-cgb .boot-error h1{font-size:28px;max-width:none}
/* footer: subtotal with review access, and the next action */
.nf-cgb .bar{position:fixed;left:0;right:0;bottom:0;z-index:20;display:flex;align-items:center;gap:10px;padding:10px 12px;
  padding-bottom:calc(10px + env(safe-area-inset-bottom,0px));background:rgba(255,255,255,.98);border-top:1px solid var(--line);box-shadow:0 -6px 20px rgba(43,22,49,.06)}
.nf-cgb .bar-sum{display:flex;align-items:center;gap:10px;flex:1;min-width:0;min-height:48px;background:none;border:0;padding:0;text-align:left;cursor:pointer}
.nf-cgb .bar-sum svg{width:52px;height:40px;border-radius:8px;flex:none;background:var(--stage)}
.nf-cgb .bar-txt{min-width:0}
.nf-cgb .bar-k{display:block;font-size:11.5px;font-weight:600;color:var(--ink-2)}
.nf-cgb .bar-amt{display:block;font-weight:700;font-size:18px;line-height:1.15}
.nf-cgb .bar-note{display:block;font-size:12px;font-weight:600;color:var(--ink-2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.nf-cgb .bar-note.is-warn{color:var(--warn)}
.nf-cgb .bar .btn-primary{padding:0 18px;flex:0 0 auto;white-space:nowrap}
body.nf-cgb-page{padding-bottom:calc(var(--bar-h) + 24px)}
/* review sheet: header, scrolling body, action area always visible */
.nf-cgb .sheet{border:0;padding:0;margin:auto auto 0;width:100%;max-width:560px;max-height:92vh;border-radius:22px 22px 0 0;background:var(--surface);color:var(--ink)}
.nf-cgb .sheet[open]{display:flex;flex-direction:column}
.nf-cgb .sheet::backdrop{background:rgba(43,22,49,.45)}
.nf-cgb .sheet-head{flex:none;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px 16px 6px}
.nf-cgb .sheet-head h2:focus{outline:none}
.nf-cgb .sheet-body{flex:1 1 auto;overflow:auto;padding:0 16px 8px;overscroll-behavior:contain}
.nf-cgb .sheet-foot{flex:none;padding:10px 16px calc(12px + env(safe-area-inset-bottom,0px));border-top:1px solid var(--line);background:var(--surface)}
.nf-cgb .sheet-foot .btn-primary{width:100%}
.nf-cgb .icon-btn{width:44px;height:44px;border-radius:50%;border:0;background:var(--rose-tint);color:var(--rose-deep);font-size:22px;line-height:1;cursor:pointer}
.nf-cgb .sheet-stage{display:block;width:100%;height:auto;max-height:28vh;border-radius:16px;background:var(--stage);margin:4px 0 6px}
@media (min-width:960px){
  body.nf-cgb-page{padding-bottom:calc(var(--bar-h) + 32px)}
  .nf-cgb .bar{display:flex;padding-left:max(24px, calc((100vw - 1116px) / 2));padding-right:max(24px, calc((100vw - 1116px) / 2))}
  .nf-cgb .bar-sum svg{display:none}
  .nf-cgb .bar .btn-primary{min-width:200px}
  .nf-cgb .layout-main{top:20px;max-height:var(--cgb-side-h, calc(100dvh - var(--bar-h) - 160px))}
  .nf-cgb .stage-col .summary-desk .js-add{width:100%}
  .nf-cgb .sheet{margin:auto;max-width:640px;max-height:88vh;border-radius:22px}
  .nf-cgb .sheet-stage{max-height:220px}
}
@media (max-width:400px){
  .nf-cgb .bar-sum svg{display:none}
  .nf-cgb .bar{gap:8px;padding:8px 10px;padding-bottom:calc(8px + env(safe-area-inset-bottom,0px))}
  .nf-cgb .bar-amt{font-size:16px}
  .nf-cgb .bar .btn-primary{padding:0 12px;font-size:14px}
}
@media (max-width:359px){
  .nf-cgb .type-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .nf-cgb .bar-note{display:none}
  .nf-cgb .bar .btn-primary{padding:0 10px;font-size:13px;height:44px}
}
@media (max-height:480px){
  .nf-cgb .bar{padding-top:6px;padding-bottom:calc(6px + env(safe-area-inset-bottom,0px))}
  .nf-cgb .bar-sum{min-height:40px}
  .nf-cgb .bar-note{display:none}
  .nf-cgb .bar .btn-primary{height:44px}
}


/* Site chrome only. Builder HTML/CSS stay as in the source file. */
body.nf-cgb-page{background:var(--bg);color:var(--ink)}
body.nf-cgb-page header,
body.nf-cgb-page header.new_header,
body.nf-cgb-page header.mbhd{
  position:relative!important;
  top:auto!important;
  left:auto!important;
  width:100%;
  overflow:visible!important;
  z-index:60
}
body.nf-cgb-page .nav_block.affix{
  position:relative!important;
  top:auto!important
}
body.nf-cgb-page .addon_section,
body.nf-cgb-page footer,
body.nf-cgb-page .scroll_top,
body.nf-cgb-page .scroll_top1{
  display:none!important
}
body.nf-cgb-page,
html:has(body.nf-cgb-page){height:auto!important;min-height:100%}
body.nf-cgb-page .nf-cgb .bar{
  position:fixed!important;
  left:0!important;
  right:0!important;
  bottom:var(--cgb-bar-bottom,0px)!important;
  width:100%!important;
  max-width:100%;
  z-index:80!important;
  display:flex!important;
  visibility:visible!important;
  opacity:1!important;
  transform:none!important;
  flex-wrap:nowrap;
  box-sizing:border-box
}
body.nf-cgb-page .nf-cgb .sheet{z-index:90}
/* Drawer is inside header.mbhd; overlay is a sibling. Keep the same stack as mobile-nav.css. */
body.nf-cgb-page.nf-menu-open,
html:has(body.nf-cgb-page.nf-menu-open){
  height:100%!important;
  overflow:hidden
}
body.nf-cgb-page.nf-menu-open header.mbhd{
  z-index:2000!important
}
body.nf-cgb-page.nf-menu-open .hoverlay.show{
  z-index:1900!important
}
body.nf-cgb-page.nf-menu-open .nf-cgb .bar,
body.nf-cgb-page.nf-menu-open .nf-cgb .sheet{
  z-index:1!important;
  pointer-events:none
}
body.nf-cgb-page .nf-cgb .btn-primary{
  height:48px;padding:0 20px;border:0!important;border-radius:12px;
  background:var(--rose)!important;color:#fff!important;font-weight:700;font-size:15px;
  cursor:pointer;box-shadow:none!important;text-shadow:none!important
}
body.nf-cgb-page .nf-cgb .btn-primary:hover,
body.nf-cgb-page .nf-cgb .btn-primary:focus{
  background:var(--rose-deep)!important;color:#fff!important
}
body.nf-cgb-page .nf-cgb .btn-primary:disabled{background:#B9A5B3!important;cursor:not-allowed}
body.nf-cgb-page .nf-cgb section.step{
  background:var(--surface);border:1px solid var(--line);border-radius:20px;
  margin-top:16px;padding:0;width:auto;counter-increment:none
}
