/* Fabrication services: CAD design, 3D printing, print-file creation.
   Extends the creative-system scene language (tilted paper, backing planes). */

/* ---- Page-level fixes for the fabrication pages ------------------------- */
/* The sitewide sheet forces a light FAQ background; after a decision band the
   FAQ text is white, so restore the dark card that rule intended. */
.qf-document .qf-aeo--decision + .qf-faq { background:var(--qf-ink); color:var(--qf-paper); }
.qf-document .qf-aeo--decision + .qf-faq h2, .qf-document .qf-aeo--decision + .qf-faq summary { color:#fff; }
.qf-document .qf-aeo--decision + .qf-faq details p { color:rgba(255,255,255,.72); }
/* Drop the decorative signal line on these pages. */
.qf-aeo__signal { display:none; }

/* ---- Shared scene stage ------------------------------------------------ */
.qfab-scene { --qfab-paper:#f5f7fc; --qfab-line:#d2dff2; --qfab-ink:#17375e; }
.qfab-stage { position:relative; min-height:470px; padding:26px 0 30px 0; perspective:1300px; }
.qfab-back { position:absolute; z-index:1; top:0; left:0; width:52%; padding:20px 22px 22px; border:1px solid #699cd5; border-right:4px solid #456d9e; border-radius:12px; background:linear-gradient(130deg,#235697,#0f2b4c); color:#deebff; transform:rotateY(9deg) rotateZ(-3deg); transform-origin:left center; box-shadow:0 22px 34px -24px #000; }
.qfab-back > span { display:block; margin-bottom:12px; font:650 11px/1 ui-monospace,SFMono-Regular,Consolas,monospace; letter-spacing:.08em; text-transform:uppercase; color:#9fc3ff; }
.qfab-back ul { list-style:none; margin:0; padding:0; display:grid; gap:8px; }
.qfab-back li { display:flex; align-items:center; gap:10px; min-height:34px; padding:7px 10px; border:1px solid #4b74b3; border-radius:6px; background:#1f4a82; font-size:13px; line-height:1.3; }
.qfab-back li svg { width:18px; height:18px; color:#b2d4fc; }
.qfab-back li strong { margin-left:auto; font-weight:650; color:#fff; text-align:right; }
.qfab-tray { position:absolute; z-index:3; right:0; bottom:0; display:flex; flex-wrap:wrap; align-items:center; gap:6px; max-width:62%; padding:12px 14px; border:1px solid #8badf0; border-radius:9px; background:#eaf2ff; color:#17375e; box-shadow:0 16px 30px -19px #000; transform:rotateZ(-2deg); }
.qfab-tray > span { width:100%; font:650 11px/1 ui-monospace,SFMono-Regular,Consolas,monospace; letter-spacing:.08em; text-transform:uppercase; color:#1c51b1; }
.qfab-tray i { font-style:normal; padding:5px 9px; border:1px solid #bcd0f2; border-radius:5px; background:#fff; font:600 12px/1.2 "QF Sans",Inter,sans-serif; }

/* ---- CAD: drawing sheet ------------------------------------------------- */
.qfab-sheet { position:relative; z-index:2; margin-left:auto; width:74%; border:1px solid #d4e2f8; border-right:4px solid #6497ff; border-radius:13px; background:var(--qfab-paper); box-shadow:0 25px 40px -23px #000b; transform:rotateY(-9deg) rotateZ(1deg); transform-origin:right center; overflow:hidden; }
.qfab-sheet__bar { display:flex; align-items:center; gap:12px; min-height:52px; padding:12px 18px; border-bottom:1px solid var(--qfab-line); color:#172d50; }
.qfab-sheet__bar svg { width:22px; height:22px; color:#245dff; }
.qfab-sheet__bar strong { font-size:14px; font-weight:650; }
.qfab-sheet__bar em { margin-left:auto; font:600 11px/1 ui-monospace,SFMono-Regular,Consolas,monospace; font-style:normal; color:#5b74a0; letter-spacing:.06em; }
.qfab-sheet__canvas { padding:6px 10px 0; background:#fff; }
.qfab-sheet__canvas img { display:block; width:100%; height:auto; }
.qfab-sheet__dims { display:grid; grid-template-columns:repeat(3,1fr); gap:0; margin:0; padding:0; list-style:none; border-top:1px solid var(--qfab-line); }
.qfab-sheet__dims li { padding:12px 14px; border-right:1px solid var(--qfab-line); }
.qfab-sheet__dims li:last-child { border-right:0; }
.qfab-sheet__dims strong { display:block; font:650 15px/1.2 ui-monospace,SFMono-Regular,Consolas,monospace; color:#17375e; }
.qfab-sheet__dims span { display:block; margin-top:3px; font-size:11px; color:#5b74a0; }
.qfab-drawing .qfab-back { width:40%; top:18px; }
.qfab-drawing .qfab-back li { min-height:40px; }

/* ---- 3D printing: build plate ------------------------------------------ */
.qfab-bed { position:relative; z-index:2; margin-left:auto; width:66%; padding:18px 20px 20px; border:1px solid #d4e2f8; border-right:4px solid #6497ff; border-radius:13px; background:var(--qfab-paper); box-shadow:0 25px 40px -23px #000b; transform:rotateY(-9deg) rotateZ(1deg); transform-origin:right center; }
.qfab-bed__head { display:flex; align-items:center; gap:10px; color:#172d50; }
.qfab-bed__head svg { width:22px; height:22px; color:#245dff; }
.qfab-bed__head strong { font-size:15px; font-weight:650; }
.qfab-bed__head em { margin-left:auto; font:600 11px/1 ui-monospace,SFMono-Regular,Consolas,monospace; font-style:normal; color:#5b74a0; }
.qfab-bed__plate { position:relative; height:230px; margin-top:16px; border:1px solid #c9d6ea; border-bottom:6px solid #8aa3cc; border-radius:8px; background:repeating-linear-gradient(90deg,#eef2f9 0 22px,#e6ecf6 22px 23px), #eef2f9; overflow:hidden; }
.qfab-layers { position:absolute; left:14%; right:14%; bottom:0; display:flex; flex-direction:column-reverse; gap:2px; }
.qfab-layers i { --w:100%; display:block; height:11px; width:var(--w); border-radius:2px; background:linear-gradient(180deg,#5d8dff,#245dff); box-shadow:inset 0 -1px 0 #163f9c; opacity:0; transform:translateY(6px); animation:qfab-layer .5s var(--qf-ease,ease) forwards; animation-delay:calc(var(--i) * .22s + .3s); }
.qfab-layers i:nth-child(n+4) { --w:62%; margin-left:auto; }
.qfab-layers i:nth-child(n+11) { --w:62%; background:linear-gradient(180deg,#8fb2ff,#5d8dff); }
.qfab-layers i:nth-child(n+13) { opacity:.35; background:#c2d3f5; box-shadow:none; animation:none; transform:none; }
.qfab-nozzle { position:absolute; top:0; left:50%; width:26px; height:34px; margin-left:-13px; background:linear-gradient(180deg,#26324a,#4f5f7c); clip-path:polygon(0 0,100% 0,100% 55%,62% 100%,38% 100%,0 55%); animation:qfab-nozzle 2.2s ease-in-out infinite alternate; }
.qfab-bed__progress { margin-top:14px; }
.qfab-bed__progress > span { display:block; height:8px; border-radius:4px; background:#dde5f3; overflow:hidden; }
.qfab-bed__progress > span i { display:block; width:var(--p,50%); height:100%; border-radius:4px; background:#245dff; }
.qfab-bed__progress small { display:block; margin-top:8px; font-size:12px; color:#506384; }
.qfab-batch { position:absolute; z-index:3; right:0; bottom:0; padding:14px 18px; border:1px solid #8badf0; border-radius:9px; background:#eaf2ff; color:#17375e; box-shadow:0 16px 30px -19px #000; transform:rotateZ(-3deg); }
.qfab-batch span { display:block; font:650 11px/1 ui-monospace,SFMono-Regular,Consolas,monospace; letter-spacing:.08em; text-transform:uppercase; color:#1c51b1; }
.qfab-batch strong { display:block; margin-top:4px; font-size:28px; font-weight:730; letter-spacing:-.03em; line-height:1; }
.qfab-batch small { display:block; margin-top:4px; font-size:11px; color:#506384; }
.qfab-print .qfab-back { width:44%; top:14px; }
@keyframes qfab-layer { to { opacity:1; transform:translateY(0); } }
@keyframes qfab-nozzle { from { left:34%; } to { left:66%; } }

/* ---- Print files: pre-flight check ------------------------------------- */
.qfab-check { position:relative; z-index:2; margin-left:auto; width:64%; padding:20px 20px 18px; border:1px solid #d4e2f8; border-right:4px solid #6497ff; border-radius:13px; background:var(--qfab-paper); box-shadow:0 25px 40px -23px #000b; transform:rotateY(-9deg) rotateZ(1deg); transform-origin:right center; }
.qfab-check__file { display:flex; align-items:center; gap:12px; padding-bottom:14px; border-bottom:1px solid var(--qfab-line); color:#172d50; }
.qfab-check__file > svg { width:30px; height:30px; color:#245dff; }
.qfab-check__file strong { display:block; font-size:15px; font-weight:650; }
.qfab-check__file small { display:block; margin-top:2px; font-size:11px; color:#506384; }
.qfab-check__list { list-style:none; margin:12px 0 0; padding:0; display:grid; gap:8px; }
.qfab-check__list li { display:flex; align-items:center; gap:10px; min-height:40px; padding:8px 12px; border:1px solid #d9e2f1; border-radius:6px; background:#ffffffa6; font-size:13px; color:#17375e; }
.qfab-check__list svg { width:20px; height:20px; color:#1a8f5a; }
.qfab-check__result { display:flex; align-items:center; gap:10px; margin-top:14px; padding:12px 14px; border:1px solid #c0d4f4; border-radius:7px; background:#e3edff; }
.qfab-check__result svg { width:24px; height:24px; color:#245dff; }
.qfab-check__result strong { font-size:15px; font-weight:650; color:#17375e; }
.qfab-check__result span { margin-left:auto; font-size:12px; color:#506384; }
.qfab-file .qfab-back { width:42%; top:24px; }

/* ---- Body modules ------------------------------------------------------- */
.qfab-band { overflow:clip; background:#f5f8fc; color:var(--qf-text); }
.qfab-band + .qfab-band { padding-top:0; }
.qfab-band .qf-label { color:var(--qf-blue); }
.qfab-band--tight { padding-block:clamp(56px,7vw,88px); }
.qfab-band__head { max-width:820px; margin-bottom:clamp(30px,4vw,46px); }
.qf-document .qfab-band__head h2 { margin:0; font-size:clamp(32px,3.6vw,50px); line-height:1.05; letter-spacing:-.035em; }
.qf-document .qfab-band__head p { max-width:640px; margin:18px 0 0; font-size:17px; line-height:1.6; color:var(--qf-muted); }
.qfab-band__head--ink .qf-label { color:var(--qf-blue); }
.qf-document .qfab-band__head--ink p { color:var(--qf-muted); }
.qfab-cards { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:16px; }
.qfab-cards article { position:relative; min-height:250px; padding:clamp(22px,2.4vw,30px); border:1px solid var(--qf-line); border-radius:var(--qf-radius-lg,24px); background:#fff; transition:transform .35s var(--qf-ease,ease),border-color .25s ease,background .25s ease; }
.qfab-cards article:hover { transform:translateY(-6px); border-color:var(--qf-blue); background:#f3f7ff; }
.qfab-cards article > span { color:var(--qf-blue); font:650 12px/1 ui-monospace,SFMono-Regular,Consolas,monospace; }
.qfab-cards article > svg { display:block; width:30px; height:30px; margin-top:34px; color:var(--qf-blue); fill:none; stroke:currentColor; stroke-width:1.6; stroke-linecap:round; stroke-linejoin:round; }
.qf-document .qfab-cards h3 { margin:16px 0 0; color:var(--qf-text); font-size:clamp(19px,1.5vw,22px); line-height:1.15; letter-spacing:-.02em; }
.qf-document .qfab-cards p { margin:12px 0 0; color:var(--qf-muted); font-size:14px; line-height:1.55; }
.qf-document .qf-document .qfab-formats { display:flex; flex-wrap:wrap; align-items:center; gap:8px; margin-top:clamp(28px,3.5vw,44px); padding-top:24px; border-top:1px solid var(--qf-line); }
.qfab-formats > span { margin-right:6px; font:650 12px/1 ui-monospace,SFMono-Regular,Consolas,monospace; letter-spacing:.08em; text-transform:uppercase; color:var(--qf-blue); }
.qfab-formats i { font-style:normal; padding:8px 13px; border:1px solid var(--qf-line); border-radius:999px; background:#fff; font-size:13px; color:var(--qf-text); }

/* Materials table */
.qfab-materials { border-top:1px solid var(--qf-line); }
.qfab-materials__row { display:grid; grid-template-columns:.9fr 1.2fr 1.4fr; gap:24px; padding:22px 0; border-bottom:1px solid var(--qf-line); align-items:start; }
.qfab-materials__row--head { padding:12px 0; color:var(--qf-muted); font:650 12px/1 ui-monospace,SFMono-Regular,Consolas,monospace; letter-spacing:.08em; text-transform:uppercase; }
.qfab-materials__row strong { font-size:19px; font-weight:650; letter-spacing:-.02em; color:var(--qf-text); }
.qfab-materials__row > span { font-size:15px; line-height:1.55; color:var(--qf-muted); }
.qfab-materials__row > span:nth-child(2) { color:var(--qf-text); font-weight:500; }
.qfab-stats { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:0; border-top:1px solid var(--qf-line); }
.qfab-stats article { padding:26px 28px 26px 0; border-right:1px solid var(--qf-line); }
.qfab-stats article + article { padding-left:28px; }
.qfab-stats article:last-child { border-right:0; padding-right:0; }
.qfab-stats strong { display:block; color:var(--qf-text); font-size:clamp(30px,3vw,42px); font-weight:730; letter-spacing:-.035em; line-height:1; }
.qf-document .qfab-stats h3 { margin:14px 0 0; color:var(--qf-blue); font-size:15px; font-weight:650; }
.qf-document .qfab-stats p { margin:10px 0 0; color:var(--qf-muted); font-size:14px; line-height:1.55; }

/* Send-us list */
.qfab-send { display:grid; grid-template-columns:.9fr 1.1fr; gap:clamp(36px,6vw,90px); align-items:start; }
.qfab-send .qfab-band__head { margin-bottom:0; }
.qfab-send__list { list-style:none; margin:0; padding:0; display:grid; gap:12px; }
.qfab-send__list li { display:grid; grid-template-columns:auto auto 1fr; align-items:start; gap:16px; padding:18px 20px; border:1px solid var(--qf-line); border-radius:var(--qf-radius-md,16px); background:#fff; }
.qfab-send__list li > span { color:var(--qf-blue); font:650 12px/1.6 ui-monospace,SFMono-Regular,Consolas,monospace; }
.qfab-send__list li > svg { width:22px; height:22px; margin-top:1px; color:var(--qf-blue); fill:none; stroke:currentColor; stroke-width:1.6; stroke-linecap:round; stroke-linejoin:round; }
.qfab-send__list strong { display:block; color:var(--qf-text); font-size:16px; font-weight:650; }
.qf-document .qfab-send__list p { margin:5px 0 0; color:var(--qf-muted); font-size:14px; line-height:1.5; }

/* ---- Responsive --------------------------------------------------------- */
@media (max-width:1100px) {
	.qfab-cards { grid-template-columns:repeat(2,minmax(0,1fr)); }
	.qfab-materials__row { grid-template-columns:1fr 1fr; }
	.qfab-materials__row > span:last-child { grid-column:1 / -1; }
	.qfab-materials__row--head span:last-child { display:none; }
}
@media (max-width:820px) {
	.qfab-stage { min-height:0; padding-top:64px; }
	.qfab-back { width:70%; top:0; transform:none; }
	.qfab-drawing .qfab-back, .qfab-print .qfab-back, .qfab-file .qfab-back { width:72%; top:0; }
	.qfab-back li strong { display:block; margin-left:0; text-align:left; }
	.qfab-sheet, .qfab-bed, .qfab-check { width:88%; margin-top:70px; transform:none; }
	.qfab-tray, .qfab-batch { position:relative; margin:14px 0 0 auto; max-width:100%; transform:none; }
	.qfab-send { grid-template-columns:1fr; }
	.qfab-stats { grid-template-columns:1fr; }
	.qfab-stats article { padding:20px 0; border-right:0; border-bottom:1px solid var(--qf-line); }
	.qfab-stats article + article { padding-left:0; }
	.qfab-stats article:last-child { border-bottom:0; }
}
@media (max-width:560px) {
	.qfab-cards { grid-template-columns:1fr; }
	.qfab-cards article { min-height:0; }
	.qfab-sheet__dims { grid-template-columns:1fr; }
	.qfab-sheet__dims li { border-right:0; border-bottom:1px solid var(--qfab-line); }
	.qfab-materials__row { grid-template-columns:1fr; gap:8px; }
	.qfab-materials__row--head { display:none; }
	.qfab-bed__plate { height:180px; }
}
@media (prefers-reduced-motion:reduce) {
	.qfab-layers i { opacity:1; transform:none; animation:none; }
	.qfab-layers i:nth-child(n+13) { opacity:.35; }
	.qfab-nozzle { animation:none; left:50%; }
	.qfab-cards article, .qfab-cards article:hover { transform:none; }
}
