:root{--ink:#22201e;--paper:#f8f5ef;--coral:#f46f55;--line:#d9d2c7}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--paper);color:var(--ink);font:15px/1.6 'DM Sans',sans-serif}.grain{position:fixed;inset:0;pointer-events:none;opacity:.025;z-index:100;background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence baseFrequency='.8'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E")}.nav{height:82px;display:flex;align-items:center;justify-content:space-between;padding:0 6vw;border-bottom:1px solid #2222;position:absolute;width:100%;z-index:10}.brand{font:800 30px Manrope;color:inherit;text-decoration:none;letter-spacing:-2px}.brand span{display:inline-block;transform:rotate(-10deg)}.brand i,.kicker{color:var(--coral)}.nav nav,.nav-actions{display:flex;align-items:center;gap:28px}.nav a{text-decoration:none;color:inherit;font-weight:600;font-size:13px}.nav form{margin:0}.cart-btn{border:1px solid;padding:9px 16px;border-radius:30px}.icon-btn{border:0;background:none;font-size:20px}.hero{min-height:750px;height:100vh;display:grid;grid-template-columns:1fr 1fr;align-items:center;padding:110px 8vw 40px;overflow:hidden;background:linear-gradient(90deg,var(--paper) 55%,#ded4e9 55%)}.hero h1{font:800 clamp(50px,6vw,86px)/.98 Manrope;letter-spacing:-5px;margin:25px 0}.hero h1 em{font:400 italic 1em Georgia;color:var(--coral)}.hero-copy>p{max-width:520px;font-size:17px;color:#68615b}.eyebrow,.kicker{font-size:11px;letter-spacing:2.5px;font-weight:700}.primary{display:inline-flex;justify-content:center;background:var(--ink);color:white!important;text-decoration:none;border:0;border-radius:4px;padding:15px 22px;font-weight:700;cursor:pointer}.proof{margin-top:40px}.proof small{color:#777}.hero-art{height:570px;position:relative}.postcard{position:absolute;background:#fff;box-shadow:0 30px 60px #44374e33;text-align:center}.card-one{width:280px;height:380px;left:5%;top:90px;rotate:-9deg;background:#f5c9bf;display:flex;flex-direction:column;justify-content:center;opacity:0;animation:heroPop .8s .25s cubic-bezier(.16,1,.3,1) forwards,cardFloat 7s ease-in-out 1.2s infinite}.card-one div{font-size:100px;color:var(--coral);line-height:1}.card-two{width:300px;height:390px;right:0;top:35px;rotate:8deg;padding:15px;opacity:0;animation:heroPop .8s .4s cubic-bezier(.16,1,.3,1) forwards,cardFloat 8s ease-in-out 1.35s infinite}.photo{height:290px;background:#edb39e;display:grid;place-items:center;font-size:90px}.ticker{background:var(--ink);color:#fff;padding:13px;overflow:hidden;white-space:nowrap;font-size:10px;letter-spacing:3px}.section{padding:100px 7vw}h2{font:800 clamp(36px,4vw,58px)/1.05 Manrope;letter-spacing:-3px;margin:10px 0}.products{display:grid;grid-template-columns:repeat(3,1fr);gap:40px 22px;margin-top:45px}.product{cursor:pointer}.product-visual{height:390px;display:grid;place-items:center;position:relative;overflow:hidden}.mock{font-size:110px;transition:.4s}.product:hover .mock{transform:scale(1.1) rotate(-4deg)}.badge{position:absolute;top:15px;left:15px;background:#fff;padding:5px 8px;font-size:9px}.quick{position:absolute;bottom:-60px;left:15px;right:15px;padding:14px;border:0;background:var(--ink);color:white;transition:.3s}.product:hover .quick{bottom:15px}.product-info{display:flex;justify-content:space-between;margin-top:12px}.product-info h3{margin:0;font:700 18px Manrope}.price{text-align:right}.price b,.price del{display:block}.price del{color:#999;font-size:11px}.how{background:#e9e2d7;display:grid;grid-template-columns:.8fr 1.2fr;gap:6vw}.steps{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}.step{background:var(--paper);padding:25px;min-height:280px;display:flex;flex-direction:column}.step>span{font-size:45px;margin:auto 0}.step h3{margin:0}.step p{color:#777}.drawer{position:fixed;z-index:50;inset:0;background:var(--paper);display:grid;grid-template-columns:1fr 1fr;transform:translateY(105%);transition:.5s;overflow:auto}.drawer.open{transform:none}.close{position:absolute;z-index:3;right:22px;top:20px;border:1px solid var(--line);background:var(--paper);border-radius:50%;width:42px;height:42px;font-size:24px}.custom-preview{min-height:100vh;background:#ddd2e8;display:grid;place-items:center}.preview-object{width:58%;aspect-ratio:4/5;border:18px solid white;box-shadow:0 30px 60px #4443;display:flex;flex-direction:column;justify-content:center;align-items:center;overflow:hidden}.preview-object>span{font-size:90px}.preview-object img{width:100%;height:72%;object-fit:cover;display:none}.preview-object strong{font:italic 22px Georgia;margin:14px}.custom-form{padding:8vh 10%}.custom-form form,.auth-card form{display:grid;gap:17px;margin-top:25px}label{font-size:12px;font-weight:700}input,textarea,select{width:100%;padding:13px;border:1px solid var(--line);background:transparent;margin-top:6px;font:14px DM Sans}textarea{min-height:70px}.wide{width:100%}.two{display:grid;grid-template-columns:1fr 1fr;gap:14px}.backdrop{position:fixed;z-index:40;inset:0;background:#111a;opacity:0;pointer-events:none;transition:.3s}.backdrop.open{opacity:1;pointer-events:auto}.login-callout{background:#eee7da;padding:30px;margin-top:30px}.auth-page{min-height:100vh;display:grid;grid-template-columns:1fr 1fr;padding-top:82px}.auth-art{background:#ded4e9;display:flex;flex-direction:column;align-items:center;justify-content:center;font:italic 35px Georgia}.auth-art b{font:800 75px Manrope;color:var(--coral);letter-spacing:-5px}.auth-art i{font-size:100px;color:var(--coral)}.auth-card{padding:8vh 12%;align-self:center}.auth-card>p{color:#777}.check{display:flex;align-items:center;gap:8px}.check input{width:auto;margin:0}.switch{text-align:center}.switch a{color:var(--coral)}.admin-hint{border-top:1px solid var(--line);margin-top:30px;padding-top:20px;color:#888;font-size:12px}.error,.flash{background:#fbd8d1;padding:12px;border-left:3px solid var(--coral)}.flash{position:fixed;z-index:90;top:90px;right:20px;background:#d9eadf}.dash{min-height:100vh;padding:140px 7vw 80px}.dash-title p{color:#777}.empty{background:white;padding:70px;text-align:center;margin-top:40px}.empty>span{font-size:55px}.order-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:20px;margin-top:40px}.order-card{background:#fff;padding:25px}.order-card header,.order-foot{display:flex;justify-content:space-between;align-items:center}.order-card header h3{margin:2px 0}.pill{padding:6px 12px;border-radius:20px;background:#eee;font-size:11px}.pill.delivered{background:#d7ebdf;color:#17623d}.pill.cancelled{background:#f7d7d1}.order-product{display:grid;grid-template-columns:80px 1fr auto;gap:15px;padding:20px 0;border-top:1px solid var(--line);margin-top:15px}.order-product img{width:80px;height:80px;object-fit:cover}.order-product p{margin:3px 0}.order-foot{border-top:1px solid var(--line);padding-top:15px}.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:15px;margin:35px 0}.stats>div,.table-card{background:white;padding:24px}.stats span,.stats small,.table-card small{display:block;color:#888}.stats b{font:800 34px Manrope}.table-head{display:flex;justify-content:space-between}.table-head input{width:260px}.table-scroll{overflow:auto}table{width:100%;border-collapse:collapse;margin-top:20px;font-size:13px}th,td{text-align:left;padding:14px;border-top:1px solid var(--line);vertical-align:top}th{font-size:10px;text-transform:uppercase;color:#888}.admin-item{display:flex;gap:10px;min-width:260px}.admin-item img{width:50px;height:50px;object-fit:cover}footer{padding:45px 7vw;background:var(--ink);color:#fff;display:flex;justify-content:space-between;align-items:center}footer p,footer div{color:#aaa}.reveal{opacity:0;transform:translateY(20px);transition:.7s}.reveal.visible{opacity:1;transform:none}@media(max-width:850px){.nav nav{display:none}.hero{height:auto;grid-template-columns:1fr;background:var(--paper);padding-top:140px}.hero-art{height:450px}.products{grid-template-columns:1fr 1fr}.how{grid-template-columns:1fr}.drawer{grid-template-columns:1fr}.custom-preview{min-height:50vh}.auth-page{grid-template-columns:1fr}.auth-art{display:none}.stats{grid-template-columns:1fr 1fr}.order-grid{grid-template-columns:1fr}}@media(max-width:560px){.nav{padding:0 4vw}.text-link{display:none}.section{padding:70px 5vw}.hero{padding-left:5vw;padding-right:5vw}.hero h1{font-size:48px;letter-spacing:-3px}.hero-art{height:350px}.card-one{left:-25%;scale:.75;rotate:-9deg}.card-two{right:-20%;scale:.75;rotate:8deg}.products,.steps{grid-template-columns:1fr}.product-visual{height:430px}.auth-card{padding:50px 6vw}.two{grid-template-columns:1fr}.stats{grid-template-columns:1fr}.order-product{grid-template-columns:65px 1fr}.order-product>strong{grid-column:2}.dash{padding-left:4vw;padding-right:4vw}.table-card{padding:15px}.table-head{display:block}.table-head input{width:100%}footer{flex-direction:column}}
.coupon-tag{background:#d7ebdf;color:#17623d;padding:4px 8px;border-radius:4px;font-size:11px;font-weight:700;margin:0 10px}
.category-showcase{margin-bottom:60px}
.category-showcase:last-child{margin-bottom:0}
.section-head{display:flex;justify-content:space-between;align-items:end;gap:20px;flex-wrap:wrap;margin-bottom:10px}
.section-head .secondary{white-space:nowrap}
.shop-more{text-align:center;margin-top:10px}
.secondary{display:inline-flex;border:1px solid var(--ink);color:var(--ink);text-decoration:none;padding:10px 18px;border-radius:4px;font-weight:700;font-size:13px;background:none;cursor:pointer}
.shop-page{min-height:100vh;padding:140px 6vw 80px}
.shop-page-head{margin-bottom:25px}
.shop-page-head p{color:#777}
.shop-filters{display:flex;flex-wrap:wrap;gap:10px;margin-bottom:35px;align-items:center}
.shop-filters input,.shop-filters select{width:auto;flex:1;min-width:140px;margin:0}
.shop-filters button,.shop-filters a{flex:0 0 auto}
.shop-pagination{margin-top:40px;display:flex;justify-content:center}
.home-carousel{position:relative;overflow:hidden;margin:0 7vw 60px;border-radius:6px}
.carousel-track{display:flex;transition:transform .6s ease}
.carousel-slide{position:relative;min-width:100%;aspect-ratio:8/3}
.carousel-slide img{width:100%;height:100%;object-fit:cover;display:block}
.carousel-caption{position:absolute;left:6%;bottom:8%;max-width:480px;color:#fff;text-shadow:0 2px 10px #0006}
.carousel-caption h3{font:800 clamp(24px,3vw,40px)/1.1 Manrope;margin:0 0 8px}
.carousel-caption p{margin:0 0 14px;font-size:15px}
.carousel-arrow{position:absolute;top:50%;transform:translateY(-50%);border:0;background:#fff;width:42px;height:42px;border-radius:50%;font-size:22px;cursor:pointer;box-shadow:0 4px 15px #2223}
.carousel-prev{left:16px}.carousel-next{right:16px}
.carousel-dots{position:absolute;bottom:14px;left:50%;transform:translateX(-50%);display:flex;gap:8px}
.carousel-dot{width:8px;height:8px;border-radius:50%;border:0;background:#fff9;cursor:pointer;padding:0}
.carousel-dot.active{background:#fff}
@media(max-width:850px){.home-carousel{margin:0 0 40px}.carousel-slide{aspect-ratio:4/3}.carousel-caption{left:5%;right:5%;max-width:none}}
@media(max-width:560px){.shop-page{padding-left:4vw;padding-right:4vw}}

/* Top announcement marquee — admin-managed, scrolls two duplicate sets edge to edge for a seamless loop */
.announce-bar{background:var(--ink);color:#fff;overflow:hidden;position:relative;z-index:11}
.announce-track{display:flex;width:max-content;animation:announceScroll 24s linear infinite}
.announce-bar:hover .announce-track{animation-play-state:paused}
.announce-set{display:flex}
.announce-item{display:inline-flex;align-items:center;white-space:nowrap;padding:9px 32px;font-size:11px;font-weight:700;letter-spacing:1.5px;text-decoration:none;color:inherit;border-right:1px solid #ffffff22}
a.announce-item:hover{color:var(--coral)}
@keyframes announceScroll{from{transform:translateX(0)}to{transform:translateX(-50%)}}

/* Hero entrance + idle motion — admin-managed copy fades/slides in on load, postcards keep a gentle float */
.hero-copy .eyebrow{animation:heroFade .7s .05s both}
.hero-copy h1{animation:heroUp .8s .15s cubic-bezier(.16,1,.3,1) both}
.hero-copy>p{animation:heroUp .8s .3s cubic-bezier(.16,1,.3,1) both}
.hero-copy .primary{animation:heroUp .8s .45s cubic-bezier(.16,1,.3,1) both}
.hero-copy .primary{transition:transform .25s cubic-bezier(.16,1,.3,1)}
.hero-copy .primary:hover{transform:translateY(-3px)}
.hero-copy .proof{animation:heroFade .8s .6s both}
.hero-photo{width:100%;height:100%;object-fit:cover;border-radius:10px;box-shadow:0 30px 60px #44374e33;opacity:0;animation:heroPop .9s .25s cubic-bezier(.16,1,.3,1) forwards}
@keyframes heroUp{from{opacity:0;transform:translateY(26px)}to{opacity:1;transform:translateY(0)}}
@keyframes heroFade{from{opacity:0}to{opacity:1}}
@keyframes heroPop{to{opacity:1}}
@keyframes cardFloat{0%,100%{translate:0 0}50%{translate:0 -14px}}
@media(prefers-reduced-motion:reduce){.announce-track{animation:none}.hero-copy .eyebrow,.hero-copy h1,.hero-copy>p,.hero-copy .primary,.hero-copy .proof,.card-one,.card-two,.hero-photo{animation:none;opacity:1}}
