/* ============================================================
   Abbassi Builder — front-end widget styles (assets/css/cms.css)
   Used by page.php (CMS pages) and by the admin live editor.
   ============================================================ */
.abx-page{width:100%}
.abx-bare-wrap{width:100%}
.abx-sec{position:relative;width:100%}
.abx-sec-in{width:100%}
.abx-cols{display:grid;align-items:inherit}
.abx-col{min-width:0;display:flex;flex-direction:column;gap:14px}
.abx-col>*{width:100%}
.abx-el{position:relative}
.abx-el-hidden{opacity:.5}
.abx-muted{color:var(--muted)}
.abx-align-left{text-align:left}
.abx-align-center{text-align:center}
.abx-align-right{text-align:right}
.abx-align-center.abx-btns,.abx-align-center.abx-btn-wrap,.abx-align-center.abx-social{justify-content:center}
.abx-align-right.abx-btns,.abx-align-right.abx-btn-wrap,.abx-align-right.abx-social{justify-content:flex-end}
.abx-btns{display:flex;gap:10px;flex-wrap:wrap}
.abx-btn-wrap{display:flex}
.abx-btn-wrap.abx-btn-full .abx-btn{width:100%}
/* buttons */
.abx-btn{display:inline-flex;align-items:center;gap:8px;justify-content:center;border:1.5px solid var(--ink);padding:11px 20px;border-radius:30px;font-weight:700;font-size:13px;text-transform:uppercase;letter-spacing:.06em;background:transparent;color:var(--ink);cursor:pointer;transition:all .25s ease;text-align:center}
.abx-btn-sm{padding:7px 14px;font-size:11px}
.abx-btn-lg{padding:15px 28px;font-size:15px}
.abx-btn-solid{background:var(--ink);color:var(--paper)}
.abx-btn-solid:hover{background:var(--accent);border-color:var(--accent);color:#fff}
.abx-btn-accent{background:var(--accent);border-color:var(--accent);color:#fff}
.abx-btn-accent:hover{background:var(--ink);border-color:var(--ink)}
.abx-btn-outline{border-color:var(--ink);color:var(--ink)}
.abx-btn-outline:hover{background:var(--ink);color:var(--paper)}
.abx-btn-ghost{border-color:rgba(255,255,255,.6);color:inherit}
.abx-btn-ghost:hover{background:rgba(255,255,255,.14)}
.abx-btn-plain{border:0;padding:4px 0;border-radius:0;text-transform:none;letter-spacing:0;text-decoration:underline}
/* typography blocks */
.abx-head{margin:0}
.abx-kicker{font-size:11px;letter-spacing:.18em;text-transform:uppercase;font-weight:700;color:var(--accent);display:block;margin-bottom:6px}
.abx-title{font:600 clamp(22px,3vw,34px)/1.15 var(--serif);margin:0 0 4px}
.abx-title a{text-decoration:none}
.abx-text{font-size:15px;line-height:1.7}
.abx-text p{margin:0 0 12px}
.abx-text a{text-decoration:underline}
.abx-text ul,.abx-text ol{padding-left:20px}
.abx-dropcap p:first-letter{float:left;font:700 54px/0.85 var(--serif);padding:4px 10px 0 0;color:var(--accent)}
.abx-caption{font-size:12px;color:var(--muted);padding-top:6px}
.abx-figure{margin:0}
.abx-figure img,.abx-gal-item img{width:100%;display:block;object-fit:cover}
.abx-figure.abx-ratio-auto img{height:auto}
.abx-ratio-1-1{aspect-ratio:1/1}
.abx-ratio-4-3{aspect-ratio:4/3}
.abx-ratio-3-2{aspect-ratio:3/2}
.abx-ratio-16-9{aspect-ratio:16/9}
.abx-ratio-21-9{aspect-ratio:21/9}
.abx-ratio-9-16{aspect-ratio:9/16}
.abx-figure.abx-ratio-1-1 img,.abx-figure.abx-ratio-4-3 img,.abx-figure.abx-ratio-3-2 img,
.abx-figure.abx-ratio-16-9 img,.abx-figure.abx-ratio-21-9 img,.abx-gal-item img{height:100%}
/* icon box / list / divider / spacer */
.abx-ib{display:flex;gap:14px}
.abx-ib-top{flex-direction:column}
.abx-ib-icon{font-size:30px;line-height:1;display:block}
.abx-ib-title{font:600 18px/1.3 var(--serif);margin:0 0 4px}
.abx-ib-text{margin:0;font-size:14px;color:var(--muted);line-height:1.65}
.abx-ib-link{display:block}
.abx-align-center .abx-ib-text{margin:0 auto}
.abx-list{list-style:none;margin:0;padding:0}
.abx-list li{display:flex;gap:10px;align-items:flex-start;padding:5px 0;font-size:15px}
.abx-li-ic{color:var(--accent);font-weight:700;line-height:1.5}
.abx-divider-line{position:relative;display:flex;align-items:center;justify-content:center}
.abx-divider-hr{display:block}
.abx-divider-text{position:absolute;background:inherit;padding:0 10px;font-size:12px;text-transform:uppercase;letter-spacing:.1em;color:var(--muted)}
.abx-spacer{width:100%}
.abx-raw{width:100%}
/* counter / progress */
.abx-counter{display:flex;flex-direction:column;gap:2px}
.abx-counter .abx-count{font:700 clamp(30px,5vw,52px)/1 var(--serif)}
.abx-count-suffix{font:700 20px var(--serif)}
.abx-counter-title{font-size:12px;text-transform:uppercase;letter-spacing:.1em;color:var(--muted)}
.abx-progress{display:grid;gap:14px}
.abx-prog-top{display:flex;justify-content:space-between;font-size:13px;font-weight:600;margin-bottom:6px}
.abx-prog-track{height:8px;border-radius:20px;background:rgba(23,21,18,.12);overflow:hidden}
.abx-prog-fill{display:block;height:100%;width:0;background:var(--accent);border-radius:20px;transition:width 1s ease}

/* hero / banner / cta */
.abx-hero{position:relative;display:flex;align-items:center;background-size:cover;background-position:center;border-radius:var(--radius);overflow:hidden;padding:42px}
.abx-hero-in{width:100%;max-width:760px;display:flex;flex-direction:column;gap:12px}
.abx-hero-center .abx-hero-in{margin:0 auto;text-align:center;align-items:center}
.abx-hero-right .abx-hero-in{margin-left:auto;text-align:right;align-items:flex-end}
.abx-hero-title{font:600 clamp(28px,5vw,54px)/1.05 var(--serif);margin:0}
.abx-hero-text{font-size:16px;line-height:1.65;margin:0;opacity:.92;max-width:640px}
.abx-banner{position:relative;display:flex;align-items:center;background-size:cover;background-position:center;border:1px solid var(--ink);border-radius:var(--radius);overflow:hidden;padding:30px}
.abx-banner-dark{color:#fffaf0}
.abx-banner-dark:before{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(0,0,0,.25),rgba(0,0,0,.68))}
.abx-banner-light{background-color:var(--white);color:var(--ink)}
.abx-banner-plain{background-color:var(--paper2);color:var(--ink);border-style:dashed}
.abx-banner-in{position:relative;z-index:1;display:flex;flex-direction:column;gap:8px;max-width:640px}
.abx-banner-title{font:600 clamp(22px,3vw,34px)/1.15 var(--serif);margin:0}
.abx-banner-text{margin:0;font-size:15px;opacity:.9}
.abx-banner-row{display:grid;gap:16px}
.abx-cta{border-radius:var(--radius);overflow:hidden;background-size:cover;background-position:center;padding:38px}
.abx-cta-in{display:flex;gap:20px;align-items:center;justify-content:space-between;flex-wrap:wrap}
.abx-cta-center .abx-cta-in{flex-direction:column;text-align:center;justify-content:center}
.abx-cta-title{font:600 clamp(24px,3.4vw,40px)/1.1 var(--serif);margin:0 0 6px}
.abx-cta-text{margin:0;font-size:15px;opacity:.92;max-width:620px}
/* slider */
.abx-slider{position:relative;border-radius:var(--radius);overflow:hidden;height:var(--abx-slider-h,460px);background:#171512}
.abx-slides{position:absolute;inset:0}
.abx-slide{position:absolute;inset:0;background-size:cover;background-position:center;opacity:0;transform:scale(1.03);transition:opacity .8s ease,transform 1.2s ease;pointer-events:none}
.abx-slide.on{opacity:1;transform:scale(1);pointer-events:auto}
.abx-slider[data-kenburns="1"] .abx-slide.on{animation:abxKen 9s ease-out both}
.abx-slide:before{content:"";position:absolute;inset:0;background:linear-gradient(90deg,rgba(0,0,0,.62),rgba(0,0,0,.18))}
.abx-slide-in{position:relative;z-index:1;height:100%;display:flex;align-items:center;padding:40px}
.abx-slide-copy{max-width:700px;color:#fffaf0;display:flex;flex-direction:column;gap:12px}
.abx-slide-center .abx-slide-copy{margin:0 auto;text-align:center;align-items:center}
.abx-slide-right .abx-slide-in{justify-content:flex-end}
.abx-slide-right .abx-slide-copy{text-align:right;align-items:flex-end}
.abx-slide-title{font:600 clamp(26px,4.4vw,52px)/1.05 var(--serif);margin:0}
.abx-slide-text{font-size:16px;margin:0;opacity:.92}
.abx-slide-kicker{font-size:11px;letter-spacing:.18em;text-transform:uppercase;font-weight:700;color:#ffd9a8}
.abx-slide-story{font-size:14px;line-height:1.7;margin:0;opacity:.85;max-width:560px}
/* hero slider + inspiration stories panel */
.abx-hs{display:grid;grid-template-columns:1.65fr 1fr;gap:16px;align-items:stretch;margin:18px 0}
.abx-hs-main{min-width:0}
.abx-hs-side{background:var(--white);border:1px solid var(--ink);border-radius:var(--radius);padding:18px;display:flex;flex-direction:column;gap:14px}
.abx-hs-head{position:relative;padding-right:64px}
.abx-hs-title{font:600 22px/1.15 var(--serif);margin:2px 0 0}
.abx-hs-count{position:absolute;top:0;right:0;font-size:12px;color:var(--muted);letter-spacing:.12em}
.abx-hs-count b{font:700 20px var(--serif);color:var(--accent)}
.abx-hs-body{display:flex;flex-direction:column;gap:8px;flex:1}
.abx-hs-kicker{font-size:11px;letter-spacing:.14em;text-transform:uppercase;font-weight:700;color:var(--muted)}
.abx-hs-story-title{font:600 19px/1.25 var(--serif);margin:0}
.abx-hs-story-text{font-size:13px;line-height:1.7;color:var(--muted);margin:0}
.abx-hs-body .abx-btn{align-self:flex-start;margin-top:6px}
.abx-hs-in{animation:abxFadeUp .55s ease both}
.abx-hs-thumbs{display:grid;grid-template-columns:repeat(auto-fit,minmax(64px,1fr));gap:6px}
.abx-hs-thumb{position:relative;height:56px;border:1px solid var(--line);border-radius:6px;background-size:cover;background-position:center;cursor:pointer;padding:0;overflow:hidden;display:flex;align-items:flex-end}
.abx-hs-thumb:before{content:"";position:absolute;inset:0;background:linear-gradient(180deg,transparent 30%,rgba(0,0,0,.72))}
.abx-hs-thumb small{position:absolute;top:4px;left:5px;font-size:9px;font-weight:700;color:#fffaf0;z-index:1;text-shadow:0 1px 3px rgba(0,0,0,.6)}
.abx-hs-thumb span{position:relative;z-index:1;font-size:9px;text-transform:uppercase;letter-spacing:.08em;color:#fffaf0;padding:0 5px 4px;line-height:1.2;text-align:left}
.abx-hs-thumb.on{border-color:var(--accent);box-shadow:0 0 0 2px rgba(141,63,46,.25)}
.abx-hs-thumb:hover span{text-decoration:underline}
.abx-hs-more{font-size:11px;text-transform:uppercase;letter-spacing:.1em;font-weight:700;color:var(--accent)}
@media(max-width:960px){.abx-hs{grid-template-columns:1fr}.abx-hs-thumbs{grid-template-columns:repeat(auto-fit,minmax(58px,1fr))}}
.abx-arrow{position:absolute;top:50%;transform:translateY(-50%);width:44px;height:44px;border-radius:50%;border:1px solid rgba(255,255,255,.6);background:rgba(0,0,0,.25);color:#fff;font-size:22px;cursor:pointer;z-index:3}
.abx-arrow.prev{left:14px}.abx-arrow.next{right:14px}
.abx-arrow:hover{background:var(--accent);border-color:var(--accent)}
.abx-dots{position:absolute;bottom:16px;left:0;right:0;display:flex;gap:8px;justify-content:center;z-index:3}
.abx-dots button{width:10px;height:10px;border-radius:50%;border:0;background:rgba(255,255,255,.5);cursor:pointer}
.abx-dots button.on{background:var(--accent);transform:scale(1.25)}

/* gallery / video / map */
.abx-gallery{display:grid}
.abx-gal-item{margin:0;position:relative;overflow:hidden;border-radius:var(--radius)}
.abx-gal-item img{transition:transform .6s ease}
.abx-gal-item:hover img{transform:scale(1.05)}
.abx-video{position:relative;overflow:hidden;border-radius:var(--radius);background:#000}
.abx-video iframe,.abx-video video{width:100%;height:100%;display:block}
.abx-map{border:1px solid var(--ink);border-radius:var(--radius);overflow:hidden}
/* testimonials / pricing / social */
.abx-tst-grid{display:grid;gap:18px}
.abx-tst{margin:0;padding:22px;display:flex;flex-direction:column;gap:10px}
.abx-tst-card{background:var(--white);border:1px solid var(--ink);border-radius:var(--radius)}
.abx-tst-plain{border:0;padding:0}
.abx-tst-quote{background:var(--paper2);border-radius:var(--radius);position:relative}
.abx-quote-mark{font:700 46px/0.6 var(--serif);color:var(--accent)}
.abx-stars{color:var(--accent);letter-spacing:3px}
.abx-tst-text{margin:0;font:500 17px/1.6 var(--serif)}
.abx-tst-meta{display:flex;align-items:center;gap:10px;font-size:13px}
.abx-tst-meta img{width:42px;height:42px;border-radius:50%;object-fit:cover}
.abx-tst-meta b{display:block}
.abx-tst-meta small{color:var(--muted)}
.abx-plan{position:relative;background:var(--white);border:1px solid var(--ink);border-radius:var(--radius);padding:24px;display:flex;flex-direction:column;gap:10px}
.abx-plan-featured{background:#171512;color:var(--paper);border-color:var(--accent)}
.abx-plan-badge{position:absolute;top:-11px;right:16px;background:var(--accent);color:#fff;font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.1em;padding:5px 12px;border-radius:20px}
.abx-plan-title{font:700 13px var(--sans);margin:0;text-transform:uppercase;letter-spacing:.12em;color:var(--accent)}
.abx-plan-price{display:flex;align-items:baseline;gap:8px}
.abx-plan-price b{font:700 40px var(--serif)}
.abx-plan-price span{font-size:13px;opacity:.7}
.abx-plan-text{margin:0;font-size:14px;opacity:.85}
.abx-plan-list{list-style:none;margin:6px 0;padding:0;display:grid;gap:7px}
.abx-plan-list li{display:flex;gap:8px;font-size:14px}
.abx-social{display:flex;gap:10px;flex-wrap:wrap}
.abx-social a{display:grid;place-items:center;text-decoration:none}
.abx-social-circle a{width:42px;height:42px;border-radius:50%;border:1.5px solid currentColor}
.abx-social-square a{width:42px;height:42px;border-radius:8px;border:1.5px solid currentColor}
.abx-social-plain a{border:0;font-size:20px}
.abx-social-sm a{width:34px;height:34px;font-size:14px}
.abx-social-lg a{width:52px;height:52px;font-size:22px;border-width:2px}
/* accordion / tabs / countdown / marquee */
.abx-acc{border-top:1px solid var(--line)}
.abx-acc-item{border-bottom:1px solid var(--line)}
.abx-acc-head{width:100%;display:flex;justify-content:space-between;align-items:center;gap:12px;background:none;border:0;padding:16px 2px;font:600 16px var(--sans);cursor:pointer;text-align:left;color:inherit}
.abx-acc-ic{font-style:normal;font-size:20px;color:var(--accent);transition:transform .3s}
.abx-acc-item.on .abx-acc-ic{transform:rotate(45deg)}
.abx-acc-body{max-height:0;overflow:hidden;transition:max-height .35s ease}
.abx-acc-item.on .abx-acc-body{max-height:600px}
.abx-acc-inner{padding:0 2px 18px;font-size:15px;line-height:1.7;color:var(--muted)}
.abx-tab-nav{display:flex;gap:6px;flex-wrap:wrap;border-bottom:1px solid var(--line);margin-bottom:16px}
.abx-tab{border:0;background:none;padding:12px 16px;font-weight:700;font-size:12px;text-transform:uppercase;letter-spacing:.08em;cursor:pointer;color:var(--muted);border-bottom:2px solid transparent}
.abx-tab.on{color:var(--ink);border-color:var(--accent)}
.abx-panel{display:none;font-size:15px;line-height:1.7}
.abx-panel.on{display:block}
.abx-countdown-wrap{display:flex;flex-direction:column;gap:12px}
.abx-countdown{display:flex;gap:14px;flex-wrap:wrap}
.abx-align-center.abx-countdown-wrap .abx-countdown{justify-content:center}
.abx-align-right.abx-countdown-wrap .abx-countdown{justify-content:flex-end}
.abx-cd-unit{min-width:76px;background:var(--white);border:1px solid var(--ink);border-radius:var(--radius);padding:12px 8px;text-align:center}
.abx-cd-unit b{display:block;font:700 30px var(--serif)}
.abx-cd-unit small{font-size:10px;text-transform:uppercase;letter-spacing:.12em;color:var(--muted)}
.abx-marquee{overflow:hidden;white-space:nowrap;border-top:1px solid var(--ink);border-bottom:1px solid var(--ink);padding:12px 0;font-size:12px;text-transform:uppercase;letter-spacing:.15em}
.abx-marquee-track{display:inline-flex;animation:abxMarquee var(--abx-marquee-speed,26s) linear infinite}
.abx-marquee-track span{padding-right:6px}
/* store widgets */
.abx-prod-grid{display:grid;gap:16px}
.abx-grid-more{margin-top:14px}
.abx-cat-grid{display:grid;gap:14px}
.abx-cat-card{position:relative;display:flex;align-items:flex-end;min-height:170px;border:1px solid var(--ink);border-radius:var(--radius);overflow:hidden;background-size:cover;background-position:center}
.abx-cat-card:before{content:"";position:absolute;inset:0;background:linear-gradient(180deg,transparent 35%,rgba(0,0,0,.72))}
.abx-cat-in{position:relative;z-index:1;padding:16px;color:#fffaf0}
.abx-cat-in b{display:block;font:600 20px var(--serif)}
.abx-cat-in small{opacity:.85;font-size:12px}
.abx-search-wrap{display:flex;flex-direction:column;gap:10px}
.abx-search{display:flex;gap:8px;max-width:520px;width:100%}
.abx-align-center.abx-search-wrap .abx-search{margin:0 auto}
.abx-align-right.abx-search-wrap .abx-search{margin-left:auto}
.abx-search input{border:1.5px solid var(--ink);border-radius:30px;padding:11px 16px}
.abx-search-cats{display:flex;gap:8px;flex-wrap:wrap}
.abx-align-center.abx-search-wrap .abx-search-cats{justify-content:center}
.abx-mag{display:grid;gap:18px}
.abx-mag-item{display:flex;flex-direction:column;gap:6px}
.abx-mag-img{display:block;aspect-ratio:4/3;overflow:hidden;border-radius:var(--radius);border:1px solid var(--ink)}
.abx-mag-img img{width:100%;height:100%;object-fit:cover;transition:transform .6s}
.abx-mag-item:hover img{transform:scale(1.05)}
.abx-mag-title{font:600 18px var(--serif);margin:0}
.abx-mag-text{font-size:13px;color:var(--muted);margin:0}
.abx-calc{background:var(--white);border:1px solid var(--ink);border-radius:var(--radius);padding:20px;display:grid;gap:12px}
.abx-calc-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.abx-calc-result{display:grid;gap:6px}
.abx-calc-row{display:flex;justify-content:space-between;border-bottom:1px dashed var(--line);padding:7px 0;font-size:14px}
.abx-calc-total{background:var(--paper2);border-radius:8px;padding:12px;text-align:center;font-size:14px}
.abx-calc-total b{font:700 26px var(--serif);display:block}
.abx-form-wrap{display:grid;gap:10px}
.abx-form{display:grid;gap:10px;max-width:560px}
.abx-fg{display:grid;gap:5px}
.abx-book-cover{background:#171512!important;color:#f2ecdf;display:flex!important;flex-direction:column;justify-content:center;align-items:center;text-align:center;padding:30px;gap:8px}
.abx-book-cover h3{font:700 32px/1.05 var(--serif);margin:0}
.abx-lb{cursor:zoom-in;display:block}
/* lightbox + animations */
.abx-lightbox{position:fixed;inset:0;background:rgba(10,9,8,.92);display:none;place-items:center;z-index:9000;padding:24px}
.abx-lightbox.on{display:grid}
.abx-lightbox img{max-width:min(1100px,94vw);max-height:88vh;border-radius:6px}
.abx-lightbox button{position:absolute;top:18px;right:22px;background:none;border:1px solid #fff;color:#fff;border-radius:50%;width:42px;height:42px;font-size:18px;cursor:pointer}
@keyframes abxMarquee{from{transform:translateX(0)}to{transform:translateX(-50%)}}
@keyframes abxKen{from{transform:scale(1)}to{transform:scale(1.08)}}
@keyframes abxFade{from{opacity:0}to{opacity:1}}
@keyframes abxFadeUp{from{opacity:0;transform:translateY(28px)}to{opacity:1;transform:none}}
@keyframes abxFadeDown{from{opacity:0;transform:translateY(-28px)}to{opacity:1;transform:none}}
@keyframes abxZoom{from{opacity:0;transform:scale(.88)}to{opacity:1;transform:none}}
@keyframes abxSlideLeft{from{opacity:0;transform:translateX(-40px)}to{opacity:1;transform:none}}
@keyframes abxSlideRight{from{opacity:0;transform:translateX(40px)}to{opacity:1;transform:none}}
@keyframes abxPulse{0%,100%{transform:scale(1)}50%{transform:scale(1.04)}}
.abx-anim{will-change:opacity,transform}
.abx-anim-fade{animation:abxFade .8s ease both}
.abx-anim-fade-up{animation:abxFadeUp .8s ease both}
.abx-anim-fade-down{animation:abxFadeDown .8s ease both}
.abx-anim-zoom{animation:abxZoom .7s ease both}
.abx-anim-slide-left{animation:abxSlideLeft .8s ease both}
.abx-anim-slide-right{animation:abxSlideRight .8s ease both}
.abx-anim-pulse{animation:abxPulse 2.4s ease-in-out infinite}
/* extra entrance + loop animations (builder: Effects & animation) */
@keyframes abxFadeL{from{opacity:0;transform:translateX(-46px)}to{opacity:1;transform:none}}
@keyframes abxFadeR{from{opacity:0;transform:translateX(46px)}to{opacity:1;transform:none}}
@keyframes abxBlur{from{opacity:0;filter:blur(14px)}to{opacity:1;filter:none}}
@keyframes abxBounce{0%,100%{transform:translateY(0)}40%{transform:translateY(-16px)}70%{transform:translateY(-6px)}}
@keyframes abxFlip{from{opacity:0;transform:perspective(900px) rotateX(-72deg)}to{opacity:1;transform:none}}
@keyframes abxSkew{from{opacity:0;transform:skewX(-14deg) translateY(20px)}to{opacity:1;transform:none}}
@keyframes abxElastic{from{opacity:0;transform:scale(.6)}60%{transform:scale(1.08)}100%{opacity:1;transform:scale(1)}}
@keyframes abxSwing{from{opacity:0;transform:perspective(700px) rotateX(38deg);transform-origin:top}to{opacity:1;transform:none}}
@keyframes abxFloat{0%,100%{transform:translateY(0)}50%{transform:translateY(-10px)}}
@keyframes abxGlow{0%,100%{filter:brightness(1)}50%{filter:brightness(1.25)}}
@keyframes abxSpin{from{transform:rotate(0)}to{transform:rotate(360deg)}}
@keyframes abxShimmer{0%{background-position:-200% center}100%{background-position:200% center}}
.abx-anim-fade-left{animation:abxFadeL .8s ease both}
.abx-anim-fade-right{animation:abxFadeR .8s ease both}
.abx-anim-blur{animation:abxBlur .9s ease both}
.abx-anim-bounce{animation:abxBounce .9s ease both}
.abx-anim-flip{animation:abxFlip .8s ease both}
.abx-anim-skew{animation:abxSkew .8s ease both}
.abx-anim-elastic{animation:abxElastic 1s cubic-bezier(.2,.8,.2,1) both}
.abx-anim-swing{animation:abxSwing .8s ease both}
.abx-anim-float{animation:abxFloat 3.4s ease-in-out infinite}
.abx-anim-glow{animation:abxGlow 2.2s ease-in-out infinite}
.abx-anim-spin{animation:abxSpin 6s linear infinite}

/* scroll-triggered reveals (builder: reveal-*) */
.abx-reveal{opacity:0;will-change:opacity,transform;transition:opacity .9s cubic-bezier(.16,.84,.44,1),transform .9s cubic-bezier(.16,.84,.44,1),filter .9s ease}
.abx-reveal.in{opacity:1;transform:none!important;filter:none!important}
.abx-reveal-up{transform:translateY(46px)}
.abx-reveal-down{transform:translateY(-46px)}
.abx-reveal-left{transform:translateX(-56px)}
.abx-reveal-right{transform:translateX(56px)}
.abx-reveal-zoom{transform:scale(.9)}
.abx-reveal-scale{transform:scale(.82)}
.abx-reveal-flip{transform:perspective(1000px) rotateX(-24deg)}
.abx-reveal-skew{transform:skewX(-10deg) translateY(24px)}
.abx-reveal-blur{filter:blur(12px)}
.abx-reveal-elastic{transition-duration:1.1s;transform:scale(.7)}
@media (prefers-reduced-motion:reduce){.abx-reveal{opacity:1!important;transform:none!important;filter:none!important}.abx-anim{animation:none!important}}
@media (prefers-reduced-motion:reduce){.abx-anim{animation:none!important}}
/* responsive fallbacks for widgets that cannot stack themselves */
@media(max-width:960px){
  .abx-tst-grid{grid-template-columns:repeat(auto-fit,minmax(240px,1fr))!important}
  .abx-gallery{grid-template-columns:repeat(auto-fit,minmax(180px,1fr))!important}
  .abx-prod-grid{grid-template-columns:repeat(auto-fit,minmax(220px,1fr))!important}
  .abx-mag{grid-template-columns:repeat(auto-fit,minmax(220px,1fr))!important}
  .abx-cat-grid{grid-template-columns:repeat(auto-fit,minmax(160px,1fr))!important}
}
@media(max-width:560px){
  .abx-hero,.abx-banner,.abx-cta,.abx-slide-in{padding:24px}
  .abx-calc-grid{grid-template-columns:1fr}
  .abx-banner-row{grid-template-columns:1fr!important}
  .abx-book-stage .book{height:520px}
}
/* editor-mode helpers (only inside the builder canvas) */
body.abx-editor .abx-sec{outline:1px dashed rgba(141,63,46,.35);outline-offset:-1px}
body.abx-editor .abx-el{outline:1px dashed rgba(23,21,18,.18);outline-offset:-1px}
body.abx-editor .abx-el.abx-sel,body.abx-editor .abx-sec.abx-sel{outline:2px solid var(--accent)!important;outline-offset:-2px}
body.abx-editor .abx-empty{display:none}
body.abx-editor a,body.abx-editor button{cursor:default}
body.abx-editor [data-abx-block],body.abx-editor [data-abx-section]{cursor:pointer}
body.abx-editor .abx-drop-hint{height:3px;background:var(--accent);border-radius:3px;margin:2px 0}
body.abx-editor .abx-empty{display:none}
body.abx-editor .abx-col.empty{min-height:70px}
body.abx-editor .abx-col.empty>.abx-empty{display:grid;place-items:center;height:100%;min-height:70px;border:1px dashed rgba(141,63,46,.5);border-radius:8px;color:var(--muted);font-size:12px}
