@import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700&family=Manrope:wght@400;500;600;700;800&display=swap');
:root{--ink:#292044;--paper:#fffdf7;--green:#ffe54f;--line:#e3d9ee}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--paper);color:var(--ink);font-family:'DM Sans',sans-serif}button,a,select{touch-action:manipulation}button,select{font:inherit}button,a{cursor:pointer}a{color:inherit;text-decoration:none}button{color:inherit}button:focus-visible,a:focus-visible,select:focus-visible{outline:3px solid #497e54;outline-offset:4px}.announcement{background:var(--ink);color:white;text-align:center;font-size:10px;letter-spacing:1.8px;padding:12px}.announcement span{margin-left:30px;letter-spacing:.3px;color:#c4cbbd}header{height:104px;display:flex;align-items:center;justify-content:space-between;padding:0 5%;border-bottom:1px solid var(--line)}.brand{display:flex;align-items:center;font-weight:800;letter-spacing:-.5px;font-size:16px;line-height:1.1}.brand-icon{font-size:47px;margin-right:12px}.brand-dot{font-size:10px;vertical-align:top;margin-left:4px}nav{display:flex;gap:32px;font-size:13px}nav a:hover{text-decoration:underline}.bag{border:1px solid var(--line);border-radius:30px;padding:11px 17px;background:transparent;font-size:12px}.bag span{display:inline-grid;place-items:center;background:var(--ink);color:white;border-radius:50%;width:22px;height:22px;margin-left:12px}.hero{display:grid;grid-template-columns:1fr 1fr;min-height:610px}.hero-copy{padding:76px 8% 50px 10%}.eyebrow{font-size:10px;font-weight:700;letter-spacing:1.8px;display:flex;gap:9px;align-items:center}.eyebrow i{width:7px;height:7px;background:#759250;border-radius:50%}h1,h2,h3,p{margin:0}h1{font-family:Manrope,sans-serif;font-size:clamp(58px,6.3vw,100px);letter-spacing:-6px;line-height:1.02;margin:29px 0 24px;font-weight:600}h1 em{font-family:Georgia,serif;font-weight:400;letter-spacing:-5px}p{font-size:14px;line-height:1.8;color:#626b60}.hero-copy p{max-width:350px}.button{display:inline-flex;align-items:center;justify-content:space-between;gap:35px;padding:18px 24px;border-radius:5px;font-size:13px;border:0}.dark{background:var(--ink);color:white}.dark:hover{background:#3b5040}.hero-copy .button{margin-top:28px}.hero-note{margin-top:35px;font-size:11px;color:#68705f}.hero-note span{font-size:24px;margin-right:12px}.hero-art{background:#e5ebd9;position:relative;overflow:hidden;display:grid;place-items:center}.art-label{position:absolute;top:35px;left:35px;font-size:9px;line-height:1.6;letter-spacing:1.6px}.orbit{position:absolute;border:1px solid #cbd6bf;border-radius:50%;width:440px;height:440px}.orbit-two{width:580px;height:580px}.hero-art svg{width:94%;height:auto;position:relative;filter:drop-shadow(10px 25px 18px #687d4955);transform:rotate(-20deg)}#hero-object{width:100%}.float-label{position:absolute;right:28px;bottom:94px;transform:rotate(8deg);background:#f7f5e8;padding:15px 20px;font-size:12px;line-height:1.3;border-radius:3px;box-shadow:3px 5px 0 #c6cdbb}.float-label span{font-size:32px;float:left;margin-right:10px}.art-bottom{position:absolute;bottom:25px;left:35px;right:30px;display:flex;justify-content:space-between;font-size:9px;letter-spacing:1.5px}.ticker{display:flex;gap:45px;justify-content:space-around;overflow:hidden;white-space:nowrap;border-top:1px solid var(--ink);border-bottom:1px solid var(--ink);padding:21px 0;font-size:16px;background:var(--green)}.ticker span{font-size:10px;letter-spacing:2px;align-self:center}.section{padding:78px 5%}.section-head{display:flex;align-items:end;justify-content:space-between;gap:20px}h2{font-family:Manrope,sans-serif;font-size:36px;font-weight:500;letter-spacing:-1.5px;line-height:1.2;margin-top:15px}.section-head p{font-size:12px}.catalog-note{font-size:11px;color:#6b715f;padding:14px 0 0}.toolbar{display:flex;justify-content:space-between;align-items:center;margin:32px 0 26px;gap:16px}.filters{display:flex;gap:8px}.filters button{border:1px solid var(--line);background:transparent;border-radius:30px;padding:10px 18px;font-size:12px}.filters .active{background:var(--ink);color:white;border-color:var(--ink)}.filters span{margin-left:8px;font-size:10px}.sort{font-size:11px}.sort select{border:0;background:transparent;margin-left:7px;font-size:12px}.products{display:grid;grid-template-columns:repeat(3,1fr);gap:35px 22px}.product-art{height:300px;position:relative;border-radius:7px;overflow:hidden;display:grid;place-items:center}.product-art svg{width:95%;height:95%;transition:transform .5s;filter:drop-shadow(8px 18px 10px #393f3628)}.product:hover svg{transform:rotate(-7deg) scale(1.06)}.tag{position:absolute;top:16px;left:16px;font-size:9px;padding:6px 9px;background:#ffffffaa;border-radius:20px;z-index:1}.add{position:absolute;bottom:14px;right:14px;border:0;border-radius:50%;background:var(--paper);width:37px;height:37px;font-size:23px}.add:hover{background:var(--ink);color:white}.product-info{display:flex;justify-content:space-between;margin-top:16px;gap:10px}.product h3{font-size:15px;font-weight:500}.product-info strong{font-size:13px;font-weight:500}.product p{font-size:11px;margin:5px 0 10px}.swatches{display:flex;gap:7px;align-items:center}.swatch{border:2px solid var(--paper);outline:1px solid transparent;width:15px;height:15px;border-radius:50%;padding:0}.swatch.selected{outline-color:var(--ink)}.colour-name{font-size:9px;color:#6a7166;margin-left:6px}.process{background:#e8ecdf;display:grid;grid-template-columns:1fr 1fr;gap:80px}.process h2{font-size:47px}.process p{max-width:390px;margin-top:20px}.process a{display:inline-block;border-bottom:1px solid var(--ink);padding-bottom:7px;margin-top:25px;font-size:12px}.steps article{display:flex;gap:25px;padding:23px 0;border-bottom:1px solid #cad2be}.steps article>span{font-size:12px;padding-top:4px;color:#788467}.steps h3{font-size:18px;font-weight:500}.steps p{margin-top:7px;font-size:12px}.faq{max-width:900px;margin:auto}.faq h2{margin-bottom:32px}.faq details{border-bottom:1px solid var(--line);padding:21px 0}.faq summary{cursor:pointer;font-size:14px}.faq details p{font-size:13px;margin-top:14px}.closing{text-align:center;background:var(--green);padding:55px 20px 65px}.closing>span{font-size:45px}.closing h2{font-size:53px;margin:10px 0 25px}footer{padding:35px 5%;display:flex;justify-content:space-between;align-items:center;gap:20px}footer .brand{font-size:12px}footer>span{font-size:10px;color:#717769}dialog{border:0;border-radius:12px;padding:30px;width:min(470px,95vw);max-height:85vh;color:var(--ink);background:var(--paper)}dialog::backdrop{background:#18251c77;backdrop-filter:blur(4px)}.cart-head{display:flex;align-items:center;justify-content:space-between}.cart-head h2{margin:0}.cart-head button{background:none;border:0;font-size:20px}.cart-sub{font-size:12px;margin:12px 0 25px}.cart-row{padding:15px 0;border-bottom:1px solid var(--line);display:flex;justify-content:space-between;gap:15px;font-size:13px}.cart-row small{display:block;color:#6a7365;margin:6px 0}.qty button{background:none;border:1px solid var(--line);padding:3px 9px}.qty span{padding:0 10px}.remove{border:0;background:none;text-decoration:underline;font-size:10px;margin-top:10px}.total{display:flex;justify-content:space-between;margin:25px 0}.cart-disclaimer{font-size:11px;margin-bottom:16px}#checkout{width:100%}#checkout-message{font-size:12px;line-height:1.7;margin-top:15px}#toast{position:fixed;bottom:25px;left:50%;transform:translateX(-50%);background:var(--ink);color:white;border-radius:30px;padding:13px 25px;font-size:12px;opacity:0;pointer-events:none;transition:opacity .2s}#toast.show{opacity:1}@media(min-width:1500px){main,header,footer{max-width:1600px;margin:auto}}@media(max-width:800px){header{height:85px}nav{display:none}.hero{grid-template-columns:1fr}.hero-copy{padding:50px 6%}.hero-art{min-height:440px}h1{font-size:70px;letter-spacing:-4px}.section{padding:50px 6%}.section-head{display:block}.section-head p{margin-top:15px}.products{grid-template-columns:repeat(2,1fr);gap:25px 14px}.product-art{height:230px}.toolbar{align-items:start;flex-direction:column}.filters{flex-wrap:wrap}.filters button{padding:9px 13px}.process{grid-template-columns:1fr;gap:25px}.process h2{font-size:39px}footer{flex-direction:column;align-items:start}.announcement span{display:none}.closing h2{font-size:44px}}@media(max-width:420px){.product-art{height:180px}h2{font-size:30px}.brand{font-size:13px}.brand-icon{font-size:35px}.bag{padding:8px 12px}.product h3{font-size:13px}.product-info strong{font-size:12px}.colour-name{display:none}}

/* Bright factory palette */
.announcement{background:#6135cc}.announcement span{color:#f0e7ff}header{background:#fffdf7}.brand-icon{color:#f34b91}.hero-copy{background:#fff3a1}h1 em{color:#a52c6b}.hero-art{background:#69e1db}.orbit{border-color:#289b9a55}.hero-art svg{filter:drop-shadow(10px 25px 18px #1c898855)}.float-label{background:#ffb4d5;box-shadow:3px 5px 0 #b3468755}.eyebrow i{background:#ca3681}.dark,.filters .active{background:#6135cc}.dark:hover{background:#49259e}.bag{border-color:#ba9ae8;background:#f3eaff}.bag span{background:#6135cc}.hero-note,p,.catalog-note,.colour-name,footer>span{color:#61536d}.process{background:#ead9ff}.steps article{border-color:#c9a9ed}.steps article>span{color:#7241a5}.ticker{background:#ffe54f;border-color:#d6ae2f}.closing{background:#ff9bc5}.closing>span{color:#6135cc}.add{background:#fffdf7;color:#6135cc}.add:hover{background:#6135cc}.tag{background:#ffffffdc}button:focus-visible,a:focus-visible,select:focus-visible{outline-color:#a52c6b}footer{background:#fff3a1}


/* Expanded filament palette */
.swatches{flex-wrap:wrap;gap:9px;max-width:350px}.swatch{width:20px;height:20px;flex:0 0 20px;box-shadow:0 0 0 1px #29204422}.swatch:hover{transform:scale(1.18)}.swatch.selected{outline-width:2px}.colour-name{flex-basis:100%;margin:2px 0 0;font-size:11px;display:block}@media(max-width:420px){.swatches{gap:7px}.swatch{width:18px;height:18px;flex-basis:18px}}

.filament-section{background:#e0f9f2}.stock-intro{margin:20px 0}.stock-colours{display:flex;flex-wrap:wrap;gap:12px;margin:25px 0}.stock-chip{background:#fffdf7;border:1px solid #b2dcd0;border-radius:30px;padding:10px 16px;display:flex;align-items:center;gap:10px;font-size:13px}.stock-chip>span,.stock-dot{display:inline-block;width:24px;height:24px;border-radius:50%;border:1px solid #29204433;flex-shrink:0}.stock-manager{border:1px solid #a7cfc3;border-radius:10px;padding:20px;margin-top:30px}.stock-manager summary{cursor:pointer;font-weight:600}.stock-manager p{font-size:12px;margin-top:15px}.stock-warning{background:#fff3a1;padding:12px;border-radius:6px}.stock-controls{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:10px;margin-top:20px}.stock-control{display:flex;align-items:center;gap:10px;background:#fffdf7;border-radius:7px;padding:12px;font-size:12px;cursor:pointer}.stock-control input{margin-left:auto;accent-color:#6135cc;width:19px;height:19px}.out-of-stock{font-size:14px;padding:25px;text-align:center}.add:disabled{opacity:.35;cursor:not-allowed}

/* Christmas at The 3D Fidget Factory */
:root{--ink:#183c32;--paper:#fffcf5;--green:#f7dc93;--line:#dbdfd1}
.announcement{background:#aa2335;color:#fff9ee}.announcement span{color:#ffe9c1}
header{background:#fffcf5}.brand-icon{color:#b52b3b}.brand{color:#183c32}.bag{background:#eef5e9;border-color:#a7bca1}.bag span{background:#aa2335}
.hero-copy{background:#faf1d8;position:relative}.hero-copy::after{content:'✦  ❄  ✦';display:block;color:#ad7927;letter-spacing:18px;margin-top:25px;font-size:20px}
h1 em{color:#b52b3b}.hero-art{background-color:#185044;background-image:radial-gradient(circle at 15% 18%,#fff9e8 0 2px,transparent 3px),radial-gradient(circle at 76% 13%,#fff9e8 0 3px,transparent 4px),radial-gradient(circle at 90% 52%,#fff9e8 0 2px,transparent 3px),radial-gradient(circle at 28% 72%,#fff9e8 0 2px,transparent 3px),radial-gradient(circle at 60% 87%,#fff9e8 0 3px,transparent 4px)}
.art-label,.art-bottom{color:#fff2cf}.orbit{border-color:#d6bc6d44}.hero-art svg{filter:drop-shadow(10px 25px 18px #062f2a88)}.float-label{background:#f7dc93;color:#183c32;box-shadow:3px 5px 0 #0b302966}.float-label span{color:#b52b3b}
.eyebrow i{background:#b52b3b}.dark,.filters .active{background:#aa2335;border-color:#aa2335}.dark:hover{background:#821b2b}.ticker{background:#f7dc93;border-color:#b18b3a;color:#614519}.hero-note,p,.catalog-note,.colour-name,footer>span{color:#536354}
.process{background:#e6edde}.steps article{border-color:#b5c6a7}.steps article>span{color:#536e43}.filament-section{background:#e9f2e8}.stock-chip{border-color:#bdcdb6}.stock-manager{border-color:#a7bc9d}.stock-warning{background:#fae7b2}.stock-control input{accent-color:#aa2335}
.closing{background:#aa2335;color:#fff8e8;position:relative}.closing>span{color:#f7dc93}.closing .dark{background:#f7dc93;color:#183c32}.closing .dark:hover{background:#ffe8b2}.closing::before,.closing::after{content:'❄';position:absolute;top:35px;font-size:75px;color:#ffffff30}.closing::before{left:8%}.closing::after{right:8%}
.add{background:#fffcf5;color:#aa2335}.add:hover{background:#aa2335;color:white}footer{background:#faf1d8}button:focus-visible,a:focus-visible,select:focus-visible{outline-color:#b38328}.swatch.selected{outline-color:#aa2335}

.stock-page{max-width:1400px;margin:auto}.stock-page h1{font-size:70px;letter-spacing:-3px}.stock-page>.stock-warning{margin:24px 0}.stock-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;margin:30px 0}.stock-stats article{border:1px solid var(--line);border-radius:12px;padding:25px;background:#e9f2e8}.stock-stats strong{display:block;font-size:38px;color:#aa2335}.stock-stats span{font-size:12px}.stock-tools{display:flex;gap:20px;margin:30px 0}.stock-tools label{font-size:12px;display:flex;flex-direction:column;gap:8px}.stock-tools input,.stock-tools select{background:white;border:1px solid #a7bc9d;padding:12px;border-radius:6px;font:inherit}.stock-tools input{min-width:260px}.inventory{display:grid;grid-template-columns:repeat(3,1fr);gap:18px;margin-top:20px}.inventory-card{border:1px solid var(--line);border-radius:12px;overflow:hidden;background:white}.inventory-card.available{border-color:#759667}.filament-reel{height:120px;display:grid;place-items:center;margin:20px;border:7px double #ffffff99;border-radius:50%;width:120px;box-shadow:4px 6px 0 #183c3222}.filament-reel span{background:#fffcf5;width:34px;height:34px;border-radius:50%;box-shadow:inset 2px 3px 4px #183c3233}.inventory-copy{padding:0 22px 22px}.inventory-copy h2{font-size:23px;letter-spacing:-.5px}.inventory-copy p{font-size:11px;margin:8px 0 15px}.inventory-toggle{display:flex;align-items:center;gap:8px;font-size:13px;cursor:pointer}.inventory-toggle input{width:20px;height:20px;accent-color:#185044}#stock-feedback{min-height:24px;font-size:13px}@media(max-width:700px){.inventory{grid-template-columns:repeat(2,1fr)}.stock-stats{gap:8px}.stock-stats article{padding:15px}.stock-tools{flex-direction:column}.stock-page h1{font-size:52px}.stock-tools input{min-width:0}.stock-stats span{font-size:10px}}@media(max-width:380px){.inventory{grid-template-columns:1fr}}

.postage-hero{background:#faf1d8}.postage-hero h1{font-size:clamp(52px,7vw,88px);letter-spacing:-4px}.postage-hero>p{max-width:500px}.postage-hero .stock-warning{max-width:850px;margin-top:28px}.postage-content{max-width:1300px;margin:auto}.postage-cards{display:grid;grid-template-columns:repeat(3,1fr);gap:22px;margin-top:32px}.postage-cards article{border:1px solid #c7d4bd;border-radius:12px;padding:28px;background:#e9f2e8}.postage-icon{display:grid;place-items:center;width:44px;height:44px;border-radius:50%;background:#f7dc93;color:#8c2434;font-size:24px;margin-bottom:22px}.postage-cards h3{font-size:20px;margin-bottom:12px}.postage-cards p{font-size:13px}.postage-status{display:inline-block;font-size:10px;background:white;border-radius:20px;padding:8px 12px;margin-top:20px;color:#536354}.postage-note{background:#f8e6bb;border-radius:12px;padding:30px;margin:36px 0}.postage-note h2{font-size:27px;margin:0 0 14px}.postage-questions{max-width:850px;margin:45px 0}.postage-questions h2{margin-bottom:20px}.postage-questions details{border-bottom:1px solid var(--line);padding:20px 0}.postage-questions summary{cursor:pointer;font-size:14px}.postage-questions details p{font-size:13px;margin-top:14px}@media(max-width:700px){.postage-cards{grid-template-columns:1fr}.postage-hero h1{letter-spacing:-2px}}

.checkout-postage{background:#e9f2e8;border:1px solid #bdcdb6;border-radius:9px;padding:18px;margin:18px 0}.checkout-postage h3{font-size:16px;margin-bottom:14px}.postage-cost{display:flex;justify-content:space-between;gap:16px;font-size:12px}.checkout-postage p{font-size:11px;margin:12px 0}.checkout-postage a{font-size:12px;text-decoration:underline;text-underline-offset:3px}.checkout-total{border-top:1px solid var(--line);padding-top:18px;font-size:13px}.checkout-total strong{color:#aa2335}

.product-art .product-photo{width:100%;height:100%;object-fit:cover;object-position:center 53%;display:block;min-height:0;min-width:0}.product-art:has(.product-photo){display:block}

.product-art .product-photo{object-fit:contain;object-position:center;padding:12px}

/* Animated Spiral product photo */
.product-art .product-photo{animation:spiral-play 6s ease-in-out infinite;transform-origin:50% 58%;will-change:transform}@keyframes spiral-play{0%,100%{transform:translateY(3px) rotate(-9deg) scale(.94)}50%{transform:translateY(-6px) rotate(9deg) scale(.98)}}@media(prefers-reduced-motion:reduce){.product-art .product-photo{animation:none;will-change:auto}}


.product-art svg.spiral-colour-photo{width:100%;height:100%;filter:none;transition:none}.product:hover svg.spiral-colour-photo{transform:none}

.square-delivery{margin:20px 0;padding:18px;background:#fff1c7;border:1px solid #d5ba75;border-radius:9px}.square-delivery[hidden]{display:none}.square-delivery h3{font-size:17px}.square-delivery p{font-size:11px;margin:10px 0 18px}.square-delivery label{display:flex;flex-direction:column;gap:6px;font-size:12px;margin:12px 0}.square-delivery input,.square-delivery select{width:100%;padding:11px;border:1px solid #a9b7a0;border-radius:5px;background:#fff;font:inherit}.square-delivery .button{width:100%;margin-top:16px}

[hidden]{display:none!important}


.products-with-showcase{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:22px}.products-with-showcase>.products{display:block}.busy-bees-art{height:300px;background:#fae7b2;border-radius:7px;position:relative;display:grid;place-items:center;overflow:hidden}.busy-bees-art img{width:100%;height:100%;object-fit:contain;padding:15px;min-height:0}.busy-bees-card h3{font-size:15px;font-weight:500}.busy-bees-card p{font-size:11px;margin:6px 0}.coming-price{font-size:11px;color:#536354}@media(max-width:800px){.products-with-showcase{grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.busy-bees-art{height:230px}}@media(max-width:420px){.busy-bees-art{height:180px}}

.products-with-showcase.category-empty{grid-template-columns:1fr}.empty-category{padding:48px 24px;text-align:center;background:#e9f2e8;border:1px solid #c7d4bd;border-radius:12px}.empty-category>span{font-size:38px;color:#aa2335}.empty-category h3{font-size:27px;margin:12px 0}.empty-category p{margin-bottom:22px;font-size:13px}

.category-back{display:block;margin:0 auto 24px;background:transparent;border:0;text-decoration:underline;font-size:12px;color:#185044}

.empty-category .button+.button{margin-left:12px}@media(max-width:420px){.empty-category .button+.button{margin:12px 0 0}}

.can-holder-art{height:300px;background:#f7dedb;border-radius:7px;position:relative;overflow:hidden;display:grid;place-items:center}.can-holder-art img{width:100%;height:100%;object-fit:contain;padding:18px;min-height:0}.can-holder-card h3{font-size:15px;font-weight:500}.can-holder-card p{font-size:11px;margin:6px 0}@media(max-width:800px){.can-holder-art{height:230px}}@media(max-width:420px){.can-holder-art{height:180px}}

.products-with-showcase:not(.category-empty)>.products{display:contents}.grinch-photo{width:100%;height:100%;object-fit:contain;padding:18px}.product-art{overflow:hidden}
.product-art .grinch-photo{position:absolute;inset:0;width:100%;height:100%;min-height:0;min-width:0;object-fit:contain;padding:20px}
