/* AALY Packaging: generated shell styles. Edit here, re-run build.py.
   Layout, type scale and section rhythm are measured from the client's own site
   (aalypackaging.com @1440). Their ground is white with cream bands and one
   full-width yellow band; headings are brand blue at 45px on a tight line.
   See theme.json _designSource. */

/* Avenir Light, self-hosted from the client's own brand set. It carries one weight,
   so the stack falls through to Nunito Sans for anything bolder rather than letting
   the browser synthesise a fake bold.
   Typo Round is deliberately absent: the circulating file is the demo, which renders
   "Personal Use Only / studiotypo.com" in place of every full stop. */
@font-face{font-family:'Avenir Light';src:url('/assets/fonts/Avenir-Light.woff2') format('woff2');
  font-weight:300;font-style:normal;font-display:swap}

:root{
  --blue:#265189; --blue-deep:#1b3b66; --yellow:#ffb301;
  --cream:#f9f2de; --paper:#fff; --ink:#1d2430; --muted:#5b6472; --line:#e8dfc8;
  --display:'Outfit','Avenir Next',system-ui,sans-serif;
  --body:'Avenir Light','Nunito Sans','Avenir',system-ui,sans-serif;
  --wrap:1268px; --pad:clamp(20px,4vw,40px);
  --t-body:17px; --t-lead:20px;
  --t-h2:clamp(30px,3.6vw,48px); --t-h1:clamp(36px,5vw,62px);
}
*{box-sizing:border-box}
html{scrollbar-gutter:stable}
body{margin:0;background:var(--paper);color:var(--ink);
  font:300 var(--t-body)/1.68 var(--body);-webkit-font-smoothing:antialiased}
.wrap{max-width:var(--wrap);margin:0 auto;padding:0 var(--pad)}
a{color:var(--blue)}
/* Tracking and line height measured off Ooi Dental (-0.035em @62px, lh 1.00) and
   Fitcom (-0.02em @86px, lh 1.02). Loose tracking on large display type is the
   single most reliable tell of a generic template. */
h1,h2,h3{font-family:var(--display);font-weight:600;margin:0;color:var(--blue)}
h1{font-size:var(--t-h1);line-height:1.02;letter-spacing:-.032em}
h2{font-size:var(--t-h2);line-height:1.05;letter-spacing:-.024em}
h3{font-size:19px;font-weight:600;line-height:1.25;letter-spacing:-.012em;color:var(--blue)}
p{margin:0 0 1.1em;color:var(--ink)}
p:last-child{margin-bottom:0}

/* ── header ───────────────────────────────────────────────────── */
.top{background:var(--blue);color:#fff;position:sticky;top:0;z-index:20}
.top .wrap{display:flex;align-items:center;gap:22px;min-height:72px}
.brand{display:flex;align-items:center;margin-right:auto;min-height:48px;text-decoration:none}
.brand img{display:block;height:52px;width:auto}
.nav{display:flex;gap:2px;align-items:center}
.nav a{color:#fff;text-decoration:none;padding:9px 16px;border-radius:999px;
  font-family:var(--display);font-weight:500;font-size:16px;transition:background .14s ease}
.nav a:hover,.nav a:focus-visible,.nav a[aria-current]{background:var(--blue-deep)}
.nav a.lang{margin-left:8px;border:1px solid rgba(255,255,255,.4)}
.nav a.lang:hover{background:var(--blue-deep);border-color:var(--blue-deep)}
.navtoggle{display:none;background:var(--blue-deep);border:0;color:#fff;border-radius:24px;
  padding:10px 16px;font:600 15px var(--display);cursor:pointer}

/* ── hero: image led, the way the client's own site opens ─────── */
.hero{background:var(--cream)}
.hero .wrap{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.05fr);
  gap:clamp(24px,4vw,56px);align-items:center;
  padding-top:clamp(44px,6.5vw,96px);padding-bottom:clamp(44px,6.5vw,96px)}
.hero.plain .wrap{display:block;max-width:900px}
.hero-copy{min-width:0}
.hero-art{min-width:0}
.hero-art img{display:block;width:100%;height:auto;border-radius:18px}
.kicker{font-family:var(--display);font-weight:600;font-size:16px;color:var(--blue);
  margin:0 0 14px;display:flex;align-items:center;gap:10px}
.kicker::before{content:"";width:26px;height:4px;background:var(--yellow);border-radius:2px}
.lead{font-size:var(--t-lead);line-height:1.55;color:var(--muted);max-width:56ch;margin:18px 0 0}

section{padding:clamp(56px,7.5vw,112px) 0;background:var(--paper)}
section.band{background:var(--cream)}
section.solid{background:var(--yellow)}         /* one full-width yellow band */
section.solid h2,section.solid p,section.solid h3{color:#1d2430}
section.navy{background:var(--blue)}
section.navy h2,section.navy h3,section.navy p,section.navy li{color:#fff}
section.navy .lead{color:#cfdcec}
section.navy .figurebig{color:var(--yellow)}
.statrow{display:grid;gap:clamp(24px,4vw,56px);margin-top:clamp(30px,4vw,48px);
  grid-template-columns:repeat(auto-fit,minmax(200px,1fr));text-align:center}
.statrow .n{font-family:var(--display);font-weight:700;color:var(--yellow);
  font-size:clamp(40px,5.5vw,68px);line-height:.95;letter-spacing:-.03em;display:block}
.statrow .t{display:block;margin-top:10px;color:#cfdcec;font-size:17px}

/* Major section headings sit centred, as they do on the client's site. */
.sechead{text-align:center;max-width:22ch;margin:0 auto clamp(26px,3vw,38px)}
.sechead.wide{max-width:34ch}
.sechead + .lead{text-align:center;margin:-18px auto clamp(26px,3vw,38px)}

/* Wide container, narrow measure. Ooi runs 1265 outer with a 777 text column,
   Fitcom 1200 with 616 to 760. A full-width paragraph is the other template tell. */
.block{max-width:720px;margin:0 auto;text-align:center}
.block.left{text-align:left;margin:0}
.block h2{margin-bottom:16px}

.proof{display:flex;flex-wrap:wrap;gap:10px;margin:26px 0 0;padding:0;list-style:none}
.proof li{background:#fff;border:1px solid var(--line);border-radius:999px;
  padding:9px 18px;font-size:16px;font-family:var(--display);font-weight:500;color:var(--blue)}

/* ── product tiles: image on top, as on the client's site ─────── */
/* Three across on desktop: five products then read as 3 + 2 rather than 4 + 1,
   which leaves a single orphan tile. */
.grid{display:grid;gap:22px;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));margin-top:4px}
@media(min-width:900px){.grid{grid-template-columns:repeat(3,1fr)}}
.card{background:#fff;border:1px solid var(--line);border-radius:16px;overflow:hidden;
  text-decoration:none;color:inherit;display:flex;flex-direction:column;
  transition:border-color .14s ease,transform .14s ease,box-shadow .14s ease}
.card:hover{border-color:var(--blue);transform:translateY(-3px);
  box-shadow:0 10px 28px rgba(38,81,137,.13)}
.card .thumb{aspect-ratio:16/9;background:var(--cream);overflow:hidden}
.card .thumb img{display:block;width:100%;height:100%;object-fit:cover}
.card .thumb.empty{display:flex;align-items:center;justify-content:center;
  background:repeating-linear-gradient(135deg,var(--cream) 0 14px,#f3ead2 14px 28px);
  color:var(--blue);font-family:var(--display);font-weight:600;font-size:15px}
.card .body{padding:18px 20px 20px}
.card h3{margin-bottom:6px;font-size:18px}
.card p{color:var(--muted);margin:0;font-size:16px}
.card .moq{display:block;margin-top:12px;font-size:16px;color:var(--blue);
  font-family:var(--display);font-weight:600}

/* ── the display figure the client's site leans on ────────────── */
.figurebig{font-family:var(--display);font-weight:700;color:var(--blue);
  font-size:clamp(56px,9vw,100px);line-height:.95;margin:0}
section.solid .figurebig{color:#1d2430}

table.specs{width:100%;border-collapse:collapse;margin-top:8px;font-size:var(--t-body)}
table.specs th,table.specs td{text-align:left;padding:14px 0;border-bottom:1px solid var(--line);vertical-align:top}
table.specs th{font-weight:600;width:38%;padding-right:22px;font-family:var(--display);color:var(--blue)}
.tablewrap{overflow-x:auto;max-width:860px;margin:0 auto}

.shot{background:var(--cream)}
.shot img{display:block;width:100%;height:auto}  /* never crop a product photo */

.price{background:var(--blue);color:#fff;border-radius:20px;padding:clamp(26px,3.4vw,40px);
  max-width:860px;margin:0 auto;text-align:center}
.price .amount{font-family:var(--display);font-weight:700;font-size:clamp(34px,5vw,54px);
  line-height:1;margin:0 0 14px;color:var(--yellow)}
.price p{color:#e8eef7;max-width:56ch;margin-left:auto;margin-right:auto}

.faq{margin:0 auto;max-width:860px}
.faq details{border-bottom:1px solid var(--line);padding:4px 0}
.faq summary{font-family:var(--display);font-weight:600;font-size:18px;color:var(--blue);
  padding:16px 34px 16px 0;cursor:pointer;position:relative;list-style:none}
.faq summary::-webkit-details-marker{display:none}
.faq summary::after{content:"";position:absolute;right:6px;top:50%;width:10px;height:10px;
  border-right:2px solid var(--blue);border-bottom:2px solid var(--blue);
  transform:translateY(-70%) rotate(45deg);transition:transform .16s ease}
.faq details[open] summary::after{transform:translateY(-30%) rotate(-135deg)}
.faq .ans{padding:0 0 20px;color:var(--muted);max-width:66ch}
.faq .bm{margin-top:14px;padding-top:14px;border-top:1px dashed var(--line)}
.faq .bm .tag{font-family:var(--display);font-weight:600;font-size:16px;color:var(--blue);
  display:block;margin-bottom:6px}

.btn{display:inline-flex;align-items:center;justify-content:center;min-height:52px;
  padding:0 30px;border-radius:999px;text-decoration:none;font-family:var(--display);
  font-weight:600;font-size:17px;transition:background .14s ease}
.btn-p{background:var(--yellow);color:#1d2430}
.btn-p:hover{background:#e6a200}
.btn-s{background:var(--blue);color:#fff}
.btn-s:hover{background:var(--blue-deep)}
section.solid .btn-s{background:var(--blue)}
.row{display:flex;flex-wrap:wrap;gap:14px;justify-content:center;margin-top:24px}
.block.left .row{justify-content:flex-start}

.asks{margin:18px auto 0;padding-left:1.3em;max-width:66ch;text-align:left}
.asks li{margin-bottom:12px;padding-left:4px}
.asks li:last-child{margin-bottom:0}

.contactlist{list-style:none;padding:0;margin:0 auto;max-width:620px}
.contactlist li{display:flex;gap:16px;padding:16px 0;border-bottom:1px solid var(--line);text-align:left}
.contactlist .k{font-family:var(--display);font-weight:600;color:var(--blue);min-width:130px}
.contactlist a{min-height:44px;display:inline-flex;align-items:center}

footer.site{background:var(--blue-deep);color:#cfdcec;padding:48px 0 36px}
footer.site a{color:#fff}
footer.site .cols{display:grid;gap:28px;grid-template-columns:repeat(auto-fit,minmax(210px,1fr))}
footer.site h3{color:#fff;margin-bottom:12px;font-family:var(--display);font-size:17px}
footer.site ul{list-style:none;padding:0;margin:0}
footer.site li{margin-bottom:6px}
footer.site li a{min-height:44px;display:inline-flex;align-items:center}
footer.site p{color:#cfdcec}
.legal{border-top:1px solid #2c4f7d;margin-top:32px;padding-top:20px;font-size:15px;color:#a8bdd6}

@media(max-width:860px){
  .hero .wrap{grid-template-columns:1fr;gap:26px}
  .hero-art{order:-1}
}
@media(max-width:760px){
  .navtoggle{display:block}
  .nav{display:none;position:absolute;left:0;right:0;top:72px;background:var(--blue);
    flex-direction:column;align-items:stretch;gap:0;padding:8px var(--pad) 18px;
    border-top:1px solid var(--blue-deep)}
  .nav[data-open]{display:flex}
  .nav a{padding:13px 16px;min-height:48px;display:flex;align-items:center;border-radius:12px}
  .nav a.lang{margin:8px 0 0;justify-content:center}
  .contactlist li{flex-direction:column;gap:4px}
}
@media(prefers-reduced-motion:reduce){*{transition:none!important}}
