/* Shared styles for lasercutting.caribbeandb.com and 3dprinting.caribbeandb.com */
  :root{
    --bg:#111311;--bg2:#181b18;--bg3:#1f231f;
    --ink:#f0eee8;--ink-dim:#b9b8b0;--line:#2a2d2a;
    --green:#2e9e46;--green-dim:#1c5c2c;--amber:#d9a441;--red:#c9574a;
    --max:1280px;--pad:clamp(16px,4vw,64px);
  }
  *{margin:0;padding:0;box-sizing:border-box}
  html{scroll-behavior:smooth}
  body{background:var(--bg);color:var(--ink);font-family:'Inter',Helvetica,Arial,sans-serif;font-weight:400;line-height:1.6;-webkit-font-smoothing:antialiased;overflow-x:hidden}
  img{display:block;max-width:100%}
  a{color:inherit;text-decoration:none}
  .kicker{font-size:11px;letter-spacing:.28em;text-transform:uppercase;color:var(--ink-dim);font-weight:500}
  h2{font-size:clamp(26px,3.2vw,44px);font-weight:200;line-height:1.15;letter-spacing:-.01em}
  h3{font-weight:400;font-size:17px}
  .shell{max-width:var(--max);margin:0 auto}
  section{padding:clamp(56px,8vw,120px) var(--pad)}
  .sec-head{display:flex;align-items:baseline;justify-content:space-between;gap:24px;margin-bottom:clamp(28px,4vw,56px)}
  .muted{color:var(--ink-dim)}
  .btn{display:inline-block;background:var(--green);color:#fff;font-weight:500;font-size:13px;letter-spacing:.14em;text-transform:uppercase;padding:14px 26px;border-radius:6px;border:0;cursor:pointer;transition:background .25s}
  .btn:hover{background:#36b352}.btn:disabled{opacity:.5;cursor:default}
  .btn.ghost{background:transparent;border:1px solid var(--line);color:var(--ink)}
  .btn.ghost:hover{border-color:var(--green)}

  /* header */
  header{position:fixed;inset:0 0 auto 0;z-index:50;display:flex;align-items:center;justify-content:space-between;padding:18px var(--pad);background:rgba(17,19,17,.88);backdrop-filter:blur(12px);box-shadow:0 1px 0 var(--line)}
  .brand{display:flex;align-items:center;gap:12px}
  .brand svg{width:34px;height:26px;flex:none}
  .brand span{font-size:14px;font-weight:400;letter-spacing:.14em;text-transform:uppercase;white-space:nowrap}
  .brand span i{font-style:normal;color:var(--ink-dim);font-weight:300;margin-left:10px}
  nav{display:flex;gap:clamp(16px,2.6vw,40px)}
  nav a{font-size:12px;letter-spacing:.2em;text-transform:uppercase;color:var(--ink-dim);position:relative;padding:6px 0;transition:color .25s;white-space:nowrap}
  nav a:hover{color:var(--ink)}
  nav a::after{content:"";position:absolute;left:0;bottom:0;height:1px;width:0;background:var(--green);transition:width .3s}
  nav a:hover::after{width:100%}
  nav a.cta{color:var(--green)}
  @media(max-width:1100px){.brand span i{display:none}}
  @media(max-width:960px){nav a:not(.cta){display:none}}
  img,svg{max-width:100%}

  /* hero */
  .hero{position:relative;min-height:88svh;display:grid;align-items:end;overflow:hidden;padding-top:120px}
  .hero img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;filter:saturate(.85) brightness(.75);animation:drift 24s ease-out forwards}
  @keyframes drift{from{transform:scale(1.1)}to{transform:scale(1)}}
  .hero::after{content:"";position:absolute;inset:0;background:linear-gradient(to top,rgba(17,19,17,1) 0%,rgba(17,19,17,.55) 45%,rgba(17,19,17,.35) 100%)}
  .hero .shell{position:relative;z-index:2;width:100%;padding:0 var(--pad) clamp(40px,7vh,90px)}
  h1{font-size:clamp(40px,6.4vw,92px);font-weight:200;line-height:1.02;letter-spacing:-.015em;max-width:12em}
  h1 em{font-style:normal;color:var(--green)}
  .hero-sub{margin-top:22px;font-size:clamp(15px,1.4vw,19px);color:#cfcec6;max-width:38em}
  .hero-cta{display:flex;gap:14px;flex-wrap:wrap;margin-top:32px;align-items:center}
  .hero-cta .muted{font-size:13px}

  /* quote tool */
  .tool{background:var(--bg2);border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
  .steps{display:grid;grid-template-columns:1fr 1fr;gap:clamp(20px,3vw,48px)}
  @media(max-width:900px){.steps{grid-template-columns:1fr}}
  .step{opacity:.75;transition:opacity .4s}
  .step.on,.step.first{opacity:1}
  .step .kicker{margin-bottom:12px}
  .drop{border:1px dashed var(--line);border-radius:10px;padding:clamp(28px,5vw,56px) 24px;text-align:center;cursor:pointer;transition:border-color .25s,background .25s;background:var(--bg)}
  .drop:hover,.drop.over{border-color:var(--green);background:#141814}
  .drop b{display:block;font-weight:400;font-size:18px;margin-bottom:6px}
  .drop span{color:var(--ink-dim);font-size:14px}
  .status{margin-top:12px;font-size:13px;color:var(--ink-dim);min-height:1.4em}
  .status.ok{color:var(--green)}.status.warn{color:var(--amber)}
  .preview-wrap{background:var(--bg);border:1px solid var(--line);border-radius:10px;aspect-ratio:4/3;display:grid;place-items:center;overflow:hidden;margin-top:18px}
  .preview-wrap svg{width:100%;height:100%}
  .geom{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin-top:14px}
  .geom div b{display:block;font-weight:300;font-size:20px}
  .geom div span{font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:var(--ink-dim)}
  @media(max-width:600px){.geom{grid-template-columns:repeat(2,1fr)}}
  ul.warnings{list-style:none;margin-top:12px;font-size:13px;color:var(--amber)}
  ul.warnings li::before{content:"⚠ "}
  .field{display:grid;gap:6px;margin-bottom:14px}
  .field label{font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:var(--ink-dim)}
  select,input[type=number],input[type=text],input[type=email],input[type=tel],textarea{width:100%;background:var(--bg);color:var(--ink);border:1px solid var(--line);border-radius:6px;padding:11px 12px;font:inherit;font-size:15px}
  select:focus,input:focus,textarea:focus{outline:none;border-color:var(--green)}
  .row{display:grid;grid-template-columns:1fr 1fr;gap:12px}
  .chk{display:inline-flex;align-items:center;gap:8px;font-size:14px;margin:4px 14px 4px 0;cursor:pointer}
  .chk.off{display:none}
  .price{background:var(--bg);border:1px solid var(--line);border-radius:10px;padding:22px;margin-top:8px;transition:opacity .2s}
  .price.busy{opacity:.5}
  .price .total{font-size:clamp(32px,4vw,46px);font-weight:200;letter-spacing:-.02em;line-height:1}
  .price .vat{color:var(--ink-dim);font-size:14px;margin-top:10px;display:flex;flex-direction:column;gap:4px;max-width:360px}
  .price .vat>span{display:flex;justify-content:space-between;gap:12px}.price .vat b{font-weight:400;color:var(--ink);font-variant-numeric:tabular-nums}
  .price .vat .inc{border-top:1px solid var(--line);padding-top:6px;margin-top:2px;font-size:16px;color:var(--ink)}.price .vat .inc b{color:var(--green);font-weight:500}
  .price .each{color:var(--ink-dim);font-size:13px}
  .lines{list-style:none;margin-top:16px;border-top:1px solid var(--line);padding-top:12px;font-size:13px}
  .lines li{display:flex;justify-content:space-between;gap:12px;padding:4px 0;color:var(--ink-dim)}
  .lines li b{font-weight:400;color:var(--ink);font-variant-numeric:tabular-nums}
  .leadnote{margin-top:12px;font-size:13px;color:var(--green)}
  .review{margin-top:14px;padding:12px 14px;border:1px solid var(--amber);border-radius:8px;font-size:13px;color:var(--amber)}
  .review ul{margin:6px 0 0 18px}
  form.req{margin-top:22px}
  .done{border:1px solid var(--green);border-radius:10px;padding:20px;margin-top:16px}
  .done b{display:block;font-size:20px;font-weight:300;margin-bottom:8px}
  .warn{color:var(--amber)}
  .fine{font-size:12px;color:var(--ink-dim);margin-top:10px}

  /* how it works */
  .how{display:grid;grid-template-columns:repeat(5,1fr);gap:clamp(16px,2vw,32px)}
  @media(max-width:1000px){.how{grid-template-columns:repeat(2,1fr)}}
  @media(max-width:520px){.how{grid-template-columns:1fr}}
  .how div b{display:block;font-size:40px;font-weight:200;color:var(--green);line-height:1;margin-bottom:12px}
  .how div h3{margin-bottom:6px}
  .how div p{color:var(--ink-dim);font-size:15px}

  /* capabilities */
  .caps{background:var(--bg2);border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
  .numbers{display:grid;grid-template-columns:repeat(4,1fr);gap:clamp(20px,3vw,48px);margin-bottom:clamp(36px,5vw,64px)}
  @media(max-width:860px){.numbers{grid-template-columns:repeat(2,1fr)}}
  .num b{display:block;font-size:clamp(32px,4vw,56px);font-weight:200;letter-spacing:-.02em;line-height:1}
  .num b i{font-style:normal;color:var(--green);font-size:.55em;vertical-align:.3em;margin-left:3px}
  .num span{display:block;margin-top:8px;font-size:12px;letter-spacing:.18em;text-transform:uppercase;color:var(--ink-dim)}
  .mats{display:grid;grid-template-columns:repeat(3,1fr);gap:clamp(16px,2vw,32px)}
  @media(max-width:860px){.mats{grid-template-columns:1fr}}
  .mat{border:1px solid var(--line);border-radius:10px;padding:22px;background:var(--bg)}
  .mat h3{margin-bottom:4px}.mat .muted{font-size:13px;margin-bottom:12px}
  .mat ul{list-style:none;display:flex;flex-wrap:wrap;gap:6px}
  .mat li{font-size:12px;border:1px solid var(--line);border-radius:999px;padding:3px 10px;color:var(--ink-dim)}
  .mat li.s{color:var(--ink);border-color:var(--green-dim)}

  /* pricing examples */
  .ex{display:grid;grid-template-columns:repeat(4,1fr);gap:clamp(14px,2vw,28px)}
  @media(max-width:1000px){.ex{grid-template-columns:repeat(2,1fr)}}
  @media(max-width:520px){.ex{grid-template-columns:1fr}}
  .ex div{border:1px solid var(--line);border-radius:10px;padding:20px;background:var(--bg2)}
  .ex div h3{margin-bottom:4px}
  .ex div p{color:var(--ink-dim);font-size:13px;min-height:3.2em}
  .ex div b{display:block;font-size:30px;font-weight:200;margin-top:12px}
  .ex div b small{font-size:13px;color:var(--ink-dim);font-weight:300}

  /* work */
  .work{display:grid;grid-template-columns:repeat(12,1fr);gap:clamp(12px,2vw,24px)}
  .w{position:relative;overflow:hidden;background:var(--bg2);grid-column:span 6}
  .w.t{grid-column:span 3}
  .w .ph{overflow:hidden;aspect-ratio:4/3}
  .w.t .ph{aspect-ratio:3/4}
  .w img{width:100%;height:100%;object-fit:cover;transition:transform 1.1s cubic-bezier(.2,.6,.2,1);filter:saturate(.9)}
  .w:hover img{transform:scale(1.04)}
  .w figcaption{display:flex;justify-content:space-between;gap:12px;padding:12px 2px 0;font-size:13px}
  .w figcaption span{color:var(--ink-dim);font-size:11px;letter-spacing:.16em;text-transform:uppercase}
  @media(max-width:860px){.w,.w.t{grid-column:span 6}}
  @media(max-width:520px){.w,.w.t{grid-column:span 12}}
  .logos{display:flex;flex-wrap:wrap;gap:10px 28px;margin-top:40px;font-size:13px;letter-spacing:.08em;color:var(--ink-dim)}

  /* guidelines + faq */
  .two{display:grid;grid-template-columns:1fr 1fr;gap:clamp(28px,5vw,80px)}
  @media(max-width:860px){.two{grid-template-columns:1fr}}
  .guide li,.faq details{border-top:1px solid var(--line);padding:14px 0}
  .guide{list-style:none}.guide li b{font-weight:400;display:block}.guide li span{color:var(--ink-dim);font-size:14px}
  .faq summary{cursor:pointer;font-weight:400;list-style:none}
  .faq summary::after{content:"+";float:right;color:var(--green)}
  .faq details[open] summary::after{content:"–"}
  .faq p{color:var(--ink-dim);font-size:15px;margin-top:8px}

  /* footer */
  footer{border-top:1px solid var(--line);padding:clamp(40px,6vw,72px) var(--pad)}
  .foot{display:grid;grid-template-columns:2fr 1fr 1fr;gap:32px;font-size:14px;color:var(--ink-dim)}
  @media(max-width:860px){.foot{grid-template-columns:1fr}}
  .foot b{color:var(--ink);font-weight:400;display:block;margin-bottom:8px}
  .foot a:hover{color:var(--ink)}
  .verbs{margin-top:28px;font-size:11px;letter-spacing:.28em;text-transform:uppercase;color:var(--ink-dim)}
  .rv{opacity:0;transform:translateY(24px);transition:opacity .8s cubic-bezier(.2,.6,.2,1),transform .8s cubic-bezier(.2,.6,.2,1)}
  .rv.in{opacity:1;transform:none}
html{overflow-x:hidden;scrollbar-width:thin;scrollbar-color:#3a3f3a transparent}*{scrollbar-width:thin;scrollbar-color:#3a3f3a transparent}::-webkit-scrollbar{width:7px;height:0}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{border-radius:4px;background:repeating-linear-gradient(135deg,#2e9e46 0 2px,#1c5c2c 2px 4px)}::-webkit-scrollbar-thumb:hover{background:repeating-linear-gradient(135deg,#3cc45a 0 2px,#2e9e46 2px 4px)}table{table-layout:auto;max-width:100%}
