/*
Theme Name: 3D Printing Shop by Fabwork
Theme URI: https://www.3dprintingshop.com.au/
Author: Fabwork Studios
Description: Service-led WordPress theme for 3D Printing Shop, operated by Fabwork Studios.
Version: 0.2.0
Text Domain: printing-shop
*/

:root {
  --ink: #0b1b22;
  --navy: #0c222b;
  --panel: #14313c;
  --paper: #f2f5f2;
  --mist: #e5ece8;
  --line: rgba(11, 27, 34, .15);
  --cyan: #36b5d8;
  --cyan-soft: #7edcf0;
  --muted: #647780;
  --radius: 24px;
  --wrap: min(1500px, calc(100% - 64px));
}

* { box-sizing: border-box; }
html { scroll-behavior: smooth; }
body { margin: 0; color: var(--ink); background: var(--paper); font-family: Arial, Helvetica, sans-serif; }
a { color: inherit; text-decoration: none; }
img { max-width: 100%; height: auto; }
.site-wrap { width: var(--wrap); margin-inline: auto; }
.eyebrow { color: #66828e; font: 700 12px/1.2 ui-monospace, monospace; letter-spacing: .16em; text-transform: uppercase; }

.site-header { position: relative; z-index: 20; border-bottom: 1px solid var(--line); background: rgba(242,245,242,.94); }
.site-header__inner { min-height: 92px; display: flex; align-items: center; gap: 36px; }
.site-logo img { width: 172px; display: block; }
.site-nav { margin-left: auto; }
.site-nav ul { margin: 0; padding: 0; display: flex; align-items: center; gap: 28px; list-style: none; }
.site-nav a { font-size: 14px; font-weight: 700; }
.button { display: inline-flex; align-items: center; justify-content: center; gap: 24px; min-height: 54px; padding: 0 24px; border: 1px solid transparent; border-radius: 3px; font-size: 14px; font-weight: 750; }
.button--primary { background: var(--cyan); }
.button--dark { color: white; background: var(--ink); }
.button--outline { border-color: currentColor; }

.page-hero { padding: 110px 0 72px; }
.page-hero h1 { max-width: 1050px; margin: 20px 0 28px; font-size: clamp(56px, 7vw, 108px); line-height: .92; letter-spacing: -.065em; font-weight: 560; }
.page-hero__summary { max-width: 780px; color: var(--muted); font-size: 22px; line-height: 1.5; }

.content-layout { padding: 30px 0 120px; display: grid; grid-template-columns: minmax(0, 1fr) 310px; gap: clamp(48px, 7vw, 110px); align-items: start; }
.entry-content { font-size: 19px; line-height: 1.75; }
.entry-content > * { max-width: 820px; }
.entry-content > .alignwide { max-width: 1180px; }
.entry-content > .alignfull { max-width: none; }
.entry-content h2 { margin: 80px 0 24px; font-size: clamp(38px, 4.5vw, 68px); line-height: 1; letter-spacing: -.05em; }
.entry-content h3 { margin: 52px 0 18px; font-size: 32px; line-height: 1.08; letter-spacing: -.035em; }
.entry-content a { color: #087f9d; text-decoration: underline; text-underline-offset: 3px; }
.entry-content figure { margin: 48px 0; }
.entry-content figure img { border-radius: var(--radius); }
.entry-content blockquote { margin: 52px 0; padding: 30px 34px; border-left: 4px solid var(--cyan); background: var(--mist); font-size: 24px; line-height: 1.45; }

.page-aside { position: sticky; top: 28px; padding: 28px; border-radius: 18px; color: white; background: var(--navy); }
.page-aside h2 { margin: 12px 0 16px; font-size: 30px; line-height: 1.05; letter-spacing: -.04em; }
.page-aside p { color: #adbdc3; line-height: 1.55; }

.insights-hero { padding: 110px 0 66px; display: grid; grid-template-columns: 1fr .45fr; gap: 60px; align-items: end; }
.insights-hero h1 { margin: 18px 0 0; font-size: clamp(64px, 8vw, 120px); line-height: .9; letter-spacing: -.07em; }
.insights-hero p { color: var(--muted); font-size: 19px; line-height: 1.55; }
.post-grid { padding-bottom: 120px; display: grid; grid-template-columns: repeat(3, 1fr); gap: 18px; }
.post-card { min-height: 440px; padding: 28px; display: flex; flex-direction: column; border: 1px solid var(--line); border-radius: var(--radius); background: #f7f9f7; }
.post-card__meta { color: #6c8791; font: 700 11px ui-monospace, monospace; letter-spacing: .1em; text-transform: uppercase; }
.post-card h2 { margin: 80px 0 20px; font-size: 34px; line-height: 1.02; letter-spacing: -.045em; }
.post-card p { color: var(--muted); line-height: 1.55; }
.post-card__link { margin-top: auto; padding-top: 20px; border-top: 1px solid var(--line); font-weight: 750; }

.conversion-panel { margin: 0 auto 28px; width: var(--wrap); padding: clamp(40px, 6vw, 84px); display: grid; grid-template-columns: 1fr auto; gap: 48px; align-items: end; border-radius: 30px; color: white; background: var(--navy); }
.conversion-panel h2 { max-width: 850px; margin: 12px 0 0; font-size: clamp(46px, 6vw, 88px); line-height: .94; letter-spacing: -.06em; }
.conversion-panel__actions { display: grid; gap: 12px; }

.site-footer { padding: 44px 0; border-top: 1px solid var(--line); }
.site-footer__inner { display: grid; grid-template-columns: auto 1fr auto; gap: 42px; align-items: center; }
.site-footer p { margin: 0; color: var(--muted); font-size: 14px; line-height: 1.5; }
.site-footer__links { display: flex; gap: 24px; font-size: 14px; }

@media (max-width: 900px) {
  :root { --wrap: min(100% - 36px, 760px); }
  .site-header__inner { flex-wrap: wrap; padding: 18px 0; }
  .site-nav { width: 100%; order: 3; overflow-x: auto; }
  .site-nav ul { min-width: max-content; }
  .content-layout, .insights-hero, .conversion-panel { grid-template-columns: 1fr; }
  .page-aside { position: static; }
  .post-grid { grid-template-columns: 1fr 1fr; }
  .site-footer__inner { grid-template-columns: 1fr; }
}

@media (max-width: 580px) {
  .site-header .button { padding-inline: 15px; }
  .page-hero { padding-top: 76px; }
  .page-hero h1 { font-size: 54px; }
  .post-grid { grid-template-columns: 1fr; }
  .post-card { min-height: 380px; }
}

/* Full service homepage */
.fw-home { background:#f2f5f2; }
.fw-home main { overflow:hidden; }
.fw-header { height:92px; padding:0 clamp(24px,5vw,80px); display:grid; grid-template-columns:210px 1fr auto; align-items:center; gap:36px; border-bottom:1px solid var(--line); background:#f2f5f2; }
.fw-brand img { width:170px; display:block; }
.fw-header nav { display:flex; justify-content:center; gap:clamp(18px,3vw,44px); font-size:13px; font-weight:700; }
.fw-btn { min-height:54px; padding:0 24px; display:inline-flex; align-items:center; justify-content:center; gap:20px; font-size:14px; font-weight:800; }
.fw-btn-blue { background:#35b4d8; color:#071b23; }
.fw-btn-outline { border:1px solid currentColor; }
.fw-label { color:#66838e; font:700 11px/1.3 ui-monospace,monospace; letter-spacing:.15em; text-transform:uppercase; }
.fw-section { padding-left:clamp(24px,6vw,96px); padding-right:clamp(24px,6vw,96px); }
.fw-hero { min-height:750px; display:grid; grid-template-columns:1.05fr .95fr; background:#0d232c; color:white; }
.fw-hero-copy { padding:clamp(90px,10vw,150px) clamp(30px,6vw,96px) 90px; display:flex; flex-direction:column; justify-content:center; }
.fw-hero h1 { margin:24px 0 30px; font-size:clamp(58px,7vw,112px); line-height:.88; letter-spacing:-.07em; font-weight:600; }
.fw-hero h1 em,.fw-tech em,.fw-process em,.fw-trust em,.fw-contact em,.fw-local em,.fw-why em { color:#5dcce9; font-style:normal; }
.fw-hero-copy>p:not(.fw-label) { max-width:680px; color:#b0bec3; font-size:20px; line-height:1.55; }
.fw-actions { display:flex; flex-wrap:wrap; gap:12px; margin-top:24px; }
.fw-hero-visual { position:relative; min-height:650px; display:grid; place-items:center; overflow:hidden; background-color:#102c37; background-image:linear-gradient(rgba(93,204,233,.06) 1px,transparent 1px),linear-gradient(90deg,rgba(93,204,233,.06) 1px,transparent 1px); background-size:32px 32px; }
.fw-hero-visual img { width:72%; max-height:62%; object-fit:contain; filter:drop-shadow(0 35px 35px rgba(0,0,0,.45)); animation:fwFloat 6s ease-in-out infinite; }
.fw-hero-visual:after { content:""; position:absolute; width:70%; aspect-ratio:1; border:1px solid rgba(93,204,233,.28); border-radius:50%; box-shadow:0 0 0 80px rgba(93,204,233,.035),0 0 0 160px rgba(93,204,233,.02); }
.fw-scan { position:absolute; z-index:2; left:15%; right:15%; height:2px; background:#92e9fa; box-shadow:0 0 20px #52cdeb; animation:fwScan 4.5s ease-in-out infinite; }
.fw-hero-visual>span { position:absolute; z-index:3; top:35px; left:35px; color:#72d8ef; font:700 10px ui-monospace,monospace; letter-spacing:.14em; }
.fw-hero-visual>strong { position:absolute; z-index:3; right:35px; bottom:35px; font-size:18px; line-height:1.2; text-align:right; text-transform:uppercase; }
@keyframes fwFloat { 50% { transform:translateY(-13px) rotate(2deg); } }
@keyframes fwScan { 0%,100% { top:27%; opacity:.3; } 50% { top:72%; opacity:1; } }
.fw-strip { display:grid; grid-template-columns:repeat(4,1fr); border-bottom:1px solid var(--line); }
.fw-strip span { min-height:82px; padding:0 24px; display:flex; align-items:center; justify-content:center; border-right:1px solid var(--line); font:700 10px ui-monospace,monospace; letter-spacing:.1em; text-align:center; text-transform:uppercase; }
.fw-partner { padding-top:120px; padding-bottom:120px; display:grid; grid-template-columns:1fr 1fr; gap:0; }
.fw-partner figure { position:relative; min-height:650px; margin:0; overflow:hidden; border-radius:28px 0 0 28px; background:#10232b; }
.fw-partner figure:after,.fw-mosaic a:after,.fw-local-image:after { content:""; position:absolute; inset:0; background:linear-gradient(0deg,rgba(4,15,20,.85),transparent 62%); }
.fw-partner figure img,.fw-mosaic img,.fw-local-image img,.fw-trust figure img { width:100%; height:100%; object-fit:cover; display:block; }
.fw-partner figcaption { position:absolute; z-index:2; left:30px; right:30px; bottom:30px; color:#76d9ee; font:700 10px ui-monospace,monospace; letter-spacing:.12em; }
.fw-partner figcaption strong { display:block; margin-top:10px; color:white; font:600 38px/1 Arial,sans-serif; letter-spacing:-.04em; }
.fw-partner>div { padding:clamp(40px,6vw,85px); border-radius:0 28px 28px 0; background:#e4eae7; display:flex; flex-direction:column; justify-content:center; }
.fw-partner h2,.fw-heading h2,.fw-local h2,.fw-trust h2 { margin:20px 0 28px; font-size:clamp(46px,5.5vw,82px); line-height:.95; letter-spacing:-.06em; }
.fw-partner>div>p:not(.fw-label),.fw-local>div>p:not(.fw-label),.fw-trust>div>p:not(.fw-label) { color:#61747d; font-size:18px; line-height:1.6; }
.fw-mini-grid { margin:28px 0 34px; display:grid; grid-template-columns:repeat(3,1fr); border-top:1px solid var(--line); border-bottom:1px solid var(--line); }
.fw-mini-grid span { min-height:92px; padding:18px 12px; border-right:1px solid var(--line); color:#71858d; font:11px ui-monospace,monospace; }
.fw-mini-grid b { display:block; margin-top:12px; color:var(--ink); font:700 13px Arial,sans-serif; }
.fw-partner .fw-btn,.fw-local .fw-btn { align-self:flex-start; }
.fw-heading { padding-top:20px; margin-bottom:46px; display:grid; grid-template-columns:1fr minmax(280px,.4fr); gap:60px; align-items:end; }
.fw-heading h2 { margin-bottom:0; }
.fw-heading>p { color:#62747c; font-size:17px; line-height:1.55; }
.fw-outcomes { padding-bottom:130px; display:grid; grid-template-columns:repeat(3,1fr); gap:18px; }
.fw-outcomes article { min-height:530px; padding:24px; display:flex; flex-direction:column; border:1px solid var(--line); border-radius:22px; background:#f8faf8; transition:transform .25s,border-color .25s; }
.fw-outcomes article:hover { transform:translateY(-5px); border-color:#48bad8; }
.fw-card-image { height:205px; margin:-8px -8px 25px; display:grid; place-items:center; border-radius:15px; overflow:hidden; background:#0e2731; background-image:linear-gradient(rgba(96,205,233,.06) 1px,transparent 1px),linear-gradient(90deg,rgba(96,205,233,.06) 1px,transparent 1px); background-size:24px 24px; }
.fw-card-image img { width:86%; height:86%; object-fit:contain; }
.fw-outcomes article>span,.fw-tech article>span { color:#67828d; font:700 10px ui-monospace,monospace; letter-spacing:.11em; }
.fw-outcomes h3 { margin:22px 0 15px; font-size:32px; line-height:1; letter-spacing:-.045em; }
.fw-outcomes p { color:#65777f; line-height:1.55; }
.fw-outcomes a,.fw-tech article a { margin-top:auto; padding-top:18px; border-top:1px solid var(--line); font-size:13px; font-weight:800; }
.fw-dark,.fw-tech { background:#0c2029; color:white; }
.fw-why { padding-top:110px; padding-bottom:120px; display:grid; grid-template-columns:.75fr 1.25fr; gap:70px; }
.fw-why h2 { margin:22px 0; font-size:clamp(48px,5.5vw,82px); line-height:.94; letter-spacing:-.06em; }
.fw-why>div:first-child>p:last-child { color:#a8b7bd; font-size:18px; line-height:1.6; }
.fw-why-grid { display:grid; grid-template-columns:1fr 1fr; border-top:1px solid rgba(255,255,255,.17); border-left:1px solid rgba(255,255,255,.17); }
.fw-why-grid article { min-height:250px; padding:26px; border-right:1px solid rgba(255,255,255,.17); border-bottom:1px solid rgba(255,255,255,.17); }
.fw-why-grid b { color:#5ccce9; font:11px ui-monospace,monospace; }
.fw-why-grid h3 { margin:65px 0 14px; font-size:28px; letter-spacing:-.04em; }
.fw-why-grid p { color:#9dabb1; line-height:1.55; }
.fw-work { padding-top:120px; padding-bottom:130px; }
.fw-mosaic { display:grid; grid-template-columns:1.2fr .8fr .8fr; gap:16px; }
.fw-mosaic a { position:relative; min-height:520px; overflow:hidden; border-radius:22px; color:white; }
.fw-mosaic b { position:absolute; z-index:2; left:25px; right:25px; bottom:25px; font-size:28px; line-height:1.05; }
.fw-tech>.fw-section { padding-top:110px; padding-bottom:120px; }
.fw-heading.light>p { color:#a5b5bb; }
.fw-heading.light .fw-label { color:#65d0ea; }
.fw-tech-grid { display:grid; grid-template-columns:repeat(3,1fr); gap:14px; }
.fw-tech article { min-height:395px; padding:27px; display:flex; flex-direction:column; border:1px solid rgba(255,255,255,.17); border-radius:20px; background:#112a34; }
.fw-tech h3 { margin:60px 0 8px; font-size:34px; line-height:1; letter-spacing:-.045em; }
.fw-tech article>b { color:#70d4eb; font-size:12px; text-transform:uppercase; letter-spacing:.08em; }
.fw-tech article>p { color:#a7b5ba; line-height:1.55; }
.fw-tech article a { border-color:rgba(255,255,255,.15); color:#70d4eb; }
.fw-tech .fw-cad { grid-column:span 2; min-height:280px; background:#173641; }
.fw-tech .fw-cad h3 { margin-top:38px; }
.fw-local { padding-top:120px; padding-bottom:120px; display:grid; grid-template-columns:.9fr 1.1fr; gap:8vw; align-items:center; }
.fw-local-image { position:relative; min-height:620px; overflow:hidden; border-radius:28px; }
.fw-local-image b { position:absolute; z-index:2; left:30px; right:30px; bottom:30px; color:white; font-size:44px; line-height:1; letter-spacing:-.05em; }
.fw-local h2 em { color:#25a9d6; }
.fw-process { margin:0 -24px; padding:clamp(36px,5vw,74px); border-radius:28px; background:#0c2029; color:white; }
.fw-process .fw-heading { padding-top:0; }
.fw-steps { display:grid; grid-template-columns:repeat(4,1fr); gap:12px; }
.fw-steps article { min-height:300px; padding:24px; display:flex; flex-direction:column; border:1px solid rgba(255,255,255,.16); border-radius:18px; background:#112a34; }
.fw-steps span { color:#68d1e9; font:11px ui-monospace,monospace; }
.fw-steps h3 { margin:auto 0 18px; font-size:28px; line-height:1; letter-spacing:-.04em; }
.fw-steps p { padding-top:16px; border-top:1px solid rgba(255,255,255,.13); color:#a5b4b9; line-height:1.5; }
.fw-process-cta { margin-top:12px; padding:25px; display:flex; align-items:center; justify-content:space-between; gap:25px; border:1px solid rgba(255,255,255,.16); border-radius:18px; }
.fw-trust { margin-top:120px; padding-left:clamp(24px,6vw,96px); padding-right:clamp(24px,6vw,96px); display:grid; grid-template-columns:.9fr 1.1fr; }
.fw-trust figure { min-height:620px; margin:0; overflow:hidden; border-radius:28px 0 0 28px; }
.fw-trust>div { padding:clamp(40px,6vw,85px); border-radius:0 28px 28px 0; background:#10242d; color:white; }
.fw-trust>div>p:not(.fw-label) { color:#a9b8bd; }
.fw-largest { display:block; margin:25px 0; padding:23px 0; border-top:1px solid #437484; border-bottom:1px solid #437484; color:#e9f8fa; font-size:clamp(23px,2.6vw,38px); line-height:1.05; text-transform:uppercase; }
.fw-trust a { color:#6ed4ec; font-weight:800; }
.fw-contact { margin:0 clamp(24px,6vw,96px) 30px; padding:clamp(42px,6vw,85px); display:grid; grid-template-columns:1.15fr .85fr; gap:8vw; background:#42b4d7; }
.fw-contact h2 { margin:20px 0 25px; font-size:clamp(52px,6.5vw,96px); line-height:.93; letter-spacing:-.065em; }
.fw-contact h2 em { color:#eafcff; }
.fw-contact>div:last-child { display:grid; gap:10px; }
.fw-contact>div:last-child a { min-height:78px; padding:0 22px; display:grid; grid-template-columns:36px 1fr auto; align-items:center; border:1px solid rgba(7,24,31,.25); }
.fw-contact>div:last-child a:first-child { background:#f4f8f7; }
.fw-contact b { font-size:22px; }
.fw-footer { padding:45px clamp(24px,6vw,96px); display:grid; grid-template-columns:180px 1fr auto; gap:40px; align-items:center; }
.fw-footer img { width:165px; }
.fw-footer p { margin:0; color:#60737b; font-size:13px; line-height:1.55; }
@media(max-width:900px){.fw-header{grid-template-columns:1fr auto}.fw-header nav{display:none}.fw-hero,.fw-partner,.fw-why,.fw-local,.fw-trust,.fw-contact{grid-template-columns:1fr}.fw-hero-visual{min-height:580px}.fw-partner figure,.fw-trust figure{border-radius:24px 24px 0 0}.fw-partner>div,.fw-trust>div{border-radius:0 0 24px 24px}.fw-outcomes,.fw-tech-grid{grid-template-columns:1fr 1fr}.fw-mosaic{grid-template-columns:1fr 1fr}.fw-mosaic .wide{grid-column:1/-1}.fw-steps{grid-template-columns:1fr 1fr}.fw-local-image{min-height:500px}.fw-tech .fw-cad{grid-column:span 2}.fw-footer{grid-template-columns:1fr}.fw-heading{grid-template-columns:1fr;gap:5px}}
@media(max-width:600px){.fw-header{height:78px;padding:0 18px}.fw-brand img{width:145px}.fw-header .fw-btn{min-height:45px;padding:0 14px;font-size:12px}.fw-hero{min-height:0}.fw-hero-copy{padding:80px 24px 60px}.fw-hero h1{font-size:55px}.fw-hero-visual{min-height:430px}.fw-strip{grid-template-columns:1fr 1fr}.fw-strip span:nth-child(2){border-right:0}.fw-partner{padding-top:80px;padding-bottom:80px}.fw-partner figure{min-height:430px}.fw-outcomes,.fw-tech-grid,.fw-mosaic,.fw-why-grid,.fw-steps{grid-template-columns:1fr}.fw-outcomes{padding-bottom:90px}.fw-tech .fw-cad{grid-column:auto}.fw-mosaic a{min-height:400px}.fw-mini-grid{grid-template-columns:1fr}.fw-mini-grid span{min-height:70px;border-right:0;border-bottom:1px solid var(--line)}.fw-local-image{min-height:420px}.fw-process{border-radius:0}.fw-process-cta{align-items:flex-start;flex-direction:column}.fw-trust{margin-top:80px;padding:0}.fw-trust figure,.fw-trust>div{border-radius:0}.fw-contact{margin:0;padding:55px 24px}.fw-contact h2{font-size:54px}.fw-footer{padding:40px 24px}}
