500;600;700;800&family=Playfair+Display:ital,wght@1,500;1,600&display=swap');
:root{--blue:#2d46ee;--navy:#18244b;--ink:#24263c;--muted:#737586;--line:#e5e6ed;--paper:#fafafa}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:30px}body{margin:0;font-family:'Be Vietnam Pro',Arial,sans-serif;color:var(--ink);font-size:16px;background:var(--paper)}button,input,textarea{font:inherit}button,a,input,textarea{touch-action:manipulation}button,a{-webkit-tap-highlight-color:transparent}button{cursor:pointer}a{color:inherit;text-decoration:none}button:focus-visible,a:focus-visible{outline:3px solid #df6da6;outline-offset:4px}button{border:0}img{max-width:100%;display:block}.notice{background:var(--blue);color:white;text-align:center;padding:10px 20px;font-size:12px;letter-spacing:.25px}header{max-width:1400px;margin:auto;padding:25px 5%;display:flex;justify-content:space-between;align-items:center;gap:25px;border-bottom:1px solid var(--line)}.brand{font-size:28px;font-weight:800;letter-spacing:-1.6px;display:flex;align-items:center;gap:9px;color:var(--navy)}.brand-icon{color:var(--blue);font-size:38px;font-weight:500;line-height:1}.brand-dot{font-size:13px;align-self:flex-start;margin-top:7px;letter-spacing:0}nav{display:flex;gap:32px;font-size:14px}nav a:hover{color:var(--blue)}.cart-button{display:flex;gap:10px;align-items:center;background:none;color:var(--ink);font-size:14px}.cart-button span{border:1px solid var(--line);border-radius:50%;width:23px;height:23px;display:grid;place-items:center;font-size:12px}.hero{max-width:1400px;margin:auto;padding:48px 5% 54px;display:grid;grid-template-columns:1fr 1fr;gap:48px;align-items:center}.eyebrow{font-size:12px;letter-spacing:1.8px;font-weight:600;color:var(--blue);display:block}.hero .eyebrow{display:flex;align-items:center;gap:9px}.eyebrow>span{width:6px;height:6px;border-radius:50%;background:var(--blue)}h1{font-size:clamp(45px,5.6vw,78px);line-height:1.12;letter-spacing:-4px;color:var(--navy);margin:28px 0 23px;font-weight:600}em{font-family:'Playfair Display',Georgia,serif;font-weight:500;color:var(--blue)}.hero-copy>p{font-size:15px;line-height:1.9;color:#626779;margin:0 0 28px}.button{display:inline-flex;justify-content:center;align-items:center;gap:32px;padding:17px 24px;border-radius:6px;font-size:14px;font-weight:500}.primary{background:var(--blue);color:white}.primary:hover{background:#2036c6}.button span{font-size:22px}.hero-bottom{display:flex;justify-content:space-between;align-items:center;margin-top:38px;padding-top:24px;border-top:1px solid var(--line);font-size:11px;line-height:1.7;letter-spacing:1px;color:#858999}.handwritten{font-family:'Playfair Display',Georgia,serif;font-style:italic;font-size:20px;letter-spacing:0;color:var(--blue)}.hero-visual{position:relative;border-radius:12px;overflow:hidden;background:#dbe8f7;aspect-ratio:1/1}.hero-visual>img{height:100%;width:100%;object-fit:cover}.image-label{position:absolute;left:22px;bottom:37px;background:white;padding:13px 20px;border-radius:5px;font-size:14px;transform:rotate(-5deg);box-shadow:0 5px 20px #0001}.image-label span{color:var(--blue);margin-left:14px;font-size:24px}.image-caption{position:absolute;bottom:9px;right:12px;font-size:11px;color:#334766;background:#ffffffb5;padding:4px 8px;border-radius:3px}.ribbon{display:flex;align-items:center;justify-content:space-around;gap:35px;background:#edf0ff;border-top:1px solid #dce1fc;border-bottom:1px solid #dce1fc;padding:18px 4%;font-size:12px;letter-spacing:1.5px;color:var(--blue);overflow:hidden;white-space:nowrap}.ribbon b{font-size:27px;font-weight:400}.shop{max-width:1400px;margin:auto;padding:72px 5%}.section-top{display:flex;justify-content:space-between;align-items:end;gap:30px}h2{font-size:clamp(28px,3vw,40px);letter-spacing:-1.5px;font-weight:600;line-height:1.3;margin:14px 0;color:var(--navy)}.section-top>p{font-size:14px;color:var(--muted);margin:0 0 21px}.shop-controls{display:flex;justify-content:space-between;gap:20px;margin:23px 0 28px}.filters{display:flex;flex-wrap:wrap;gap:9px}.filters button{background:none;padding:10px 17px;border:1px solid var(--line);border-radius:25px;font-size:13px;color:#646779;white-space:nowrap}.filters button.active{background:var(--navy);color:white;border-color:var(--navy)}.search{display:flex;align-items:center;gap:9px;border-bottom:1px solid #bdc1cf;color:#777;min-width:180px}.search input{border:0;padding:10px 0;background:none;width:155px;font-size:13px;outline-offset:2px}.products{display:grid;grid-template-columns:repeat(3,1fr);gap:32px 23px}.product-card{min-width:0}.product-photo{position:relative;aspect-ratio:1;overflow:hidden;border-radius:8px;background:#edf0fa}.product-image{width:100%;height:100%;background-image:url('assets/catalog.png');background-size:300% 200%;background-position:var(--pos);transition:transform .3s}.product-card:hover .product-image{transform:scale(1.045)}.product-tag{position:absolute;left:14px;top:14px;border-radius:4px;background:#ffffffdf;font-size:11px;padding:7px 10px}.product-add{position:absolute;bottom:14px;right:14px;background:white;width:40px;height:40px;border-radius:50%;font-size:25px;box-shadow:0 2px 10px #0001;color:var(--navy);transition:background .2s}.product-add:hover{background:var(--blue);color:white}.product-meta{display:flex;justify-content:space-between;gap:10px;margin-top:17px}.product-meta h3{font-size:16px;margin:0 0 7px;font-weight:500}.product-meta p{font-size:12px;color:var(--muted);margin:0;line-height:1.7}.price{font-size:15px;font-weight:600;white-space:nowrap;color:var(--navy)}.price small{display:block;text-align:right;font-size:10px;font-weight:400;color:var(--muted);margin-top:7px}.catalog-note{font-size:12px;color:var(--muted);line-height:1.8;margin:28px 0 0}.how{padding:60px max(5%,calc((100vw - 1260px)/2));background:#eff2fe;display:grid;grid-template-columns:1fr 1fr;gap:65px}.how h2{margin:18px 0}.how p{font-size:14px;line-height:1.9;color:var(--muted)}.how ol{padding:0;list-style:none;margin:0}.how li{display:flex;gap:23px;padding:20px 0;border-bottom:1px solid #d8ddef}.how li:first-child{padding-top:0}.how li>span{font-size:25px;font-family:Georgia,serif;color:var(--blue)}.how h3{margin:0 0 6px;font-weight:500;font-size:17px}.how li p{margin:0;font-size:13px}.about{text-align:center;padding:68px 20px}.about>span{color:var(--blue);font-size:45px}.about h2{font-size:30px;line-height:1.6}.about p{font-size:12px;color:var(--muted)}.about>a{display:inline-block;margin-top:20px;border-bottom:1px solid var(--blue);padding-bottom:7px;font-size:14px;color:var(--blue)}footer{display:flex;gap:20px;align-items:center;padding:30px 5%;border-top:1px solid var(--line);max-width:1400px;margin:auto}footer .brand{font-size:24px}footer p{font-size:12px;color:var(--muted)}footer small{margin-left:auto;font-size:11px;color:var(--muted)}dialog{border:0;border-radius:16px;box-shadow:0 20px 100px #1113;padding:36px;max-width:calc(100vw - 30px);color:var(--ink)}dialog::backdrop{background:#0e153e99;backdrop-filter:blur(4px)}body:has(dialog[open]){overflow:hidden}.close{position:absolute;right:14px;top:10px;background:none;font-size:30px;color:var(--muted);z-index:2}.custom-dialog{width:950px}.custom-layout{display:grid;grid-template-columns:1fr 1fr;gap:36px}.preview-side{background:#f0f2fd;padding:22px;border-radius:9px}.preview{aspect-ratio:1;position:relative;margin-top:20px;overflow:hidden;border-radius:6px}.preview>.product-image{height:100%}.personal-layer{position:absolute;top:36%;left:22%;width:55%;padding:8px;background:#ffffffd9;border:1px dashed #ccd1e0;display:flex;flex-direction:column;align-items:center;text-align:center;color:var(--blue);max-height:60%;overflow:hidden}.personal-layer img{max-width:85px;max-height:70px;object-fit:contain;margin-bottom:5px}.personal-layer strong{font-size:21px;overflow-wrap:anywhere}.personal-layer span{font-size:11px;line-height:1.5;overflow-wrap:anywhere;margin-top:4px}.preview-side>p{font-size:12px;line-height:1.8;color:var(--muted)}form>p{font-size:13px;line-height:1.7;color:var(--muted)}form label{display:block;margin:16px 0;font-size:13px;font-weight:500}form label>span{font-weight:400;color:var(--muted);font-size:11px}form input:not([type=radio]),form textarea{display:block;width:100%;border:1px solid #d9dce6;border-radius:5px;padding:10px 12px;margin-top:8px;background:white;font-size:14px;color:var(--ink)}fieldset{border:0;padding:0;margin:18px 0}legend{font-size:13px}.swatches{display:flex;gap:12px}.swatches label{margin:8px 0 0;position:relative}.swatches input{position:absolute;opacity:0}.swatches span{display:block;width:29px;height:29px;border-radius:50%;background:var(--swatch);border:4px solid white;box-shadow:0 0 0 1px #ddd}.swatches input:checked+span{box-shadow:0 0 0 2px var(--blue)}.swatches input:focus-visible+span{outline:3px solid #df6da6}.upload small,form>small{font-size:11px;line-height:1.7;color:var(--muted);display:block;margin-top:7px}.purchase-row{display:flex;align-items:center;justify-content:space-between;gap:20px}.purchase-row label{max-width:88px}.purchase-row strong{display:block;font-size:24px;color:var(--blue);margin-top:8px}.purchase-row small{font-size:11px;color:var(--muted)}.wide{width:100%}.error{color:#b52043!important}.cart-dialog{width:650px}.cart-dialog h2{font-size:30px}.cart-dialog h2 span{color:var(--blue)}.cart-item{display:grid;grid-template-columns:70px 1fr auto;gap:16px;padding:20px 0;border-bottom:1px solid var(--line)}.cart-thumb{height:70px;border-radius:7px;overflow:hidden}.cart-item h3{font-size:15px;margin:0 0 7px;font-weight:500}.cart-item p{font-size:12px;color:var(--muted);margin:3px 0;overflow-wrap:anywhere}.cart-qty{display:flex;align-items:center;gap:10px;margin-top:9px;font-size:12px}.cart-qty button{width:27px;height:27px;border-radius:4px;background:#edf0ff;color:var(--blue)}.remove{background:none;font-size:11px;color:#a9475f;padding:7px 0}.item-right{text-align:right;font-size:13px}.total{display:flex;justify-content:space-between;padding:24px 0;font-size:18px}.total strong{color:var(--blue)}.empty{text-align:center;grid-column:1/-1;padding:45px 15px;color:var(--muted);line-height:1.8}.empty span{font-size:45px;color:var(--blue);display:block;margin-bottom:15px}.empty a{display:inline-block;margin-top:20px}.cart-dialog form{border-top:1px solid var(--line);padding-top:18px}.cart-dialog form h3{font-size:18px;margin:0}.success{background:#ecf5ef;color:#204d3d;padding:14px;border-radius:6px;font-size:13px;line-height:1.7;margin-top:15px}.toast{position:fixed;left:50%;bottom:30px;transform:translate(-50%,20px);background:var(--navy);color:white;padding:14px 22px;border-radius:7px;font-size:14px;opacity:0;pointer-events:none;transition:.25s;z-index:10;max-width:90vw;text-align:center}.toast.visible{opacity:1;transform:translate(-50%,0)}
@media(min-width:1450px){.hero{gap:70px}.hero-visual{max-height:550px}}@media(max-width:900px){header nav{gap:16px}h1{letter-spacing:-2.5px}.hero{gap:25px}.section-top>p{display:none}.filters button{padding:9px 12px}.products{gap:26px 16px}.product-meta{flex-direction:column;gap:6px}.price small{display:inline;margin-left:6px}.how{gap:30px}.custom-layout{gap:20px}.personal-layer strong{font-size:17px}}@media(max-width:650px){header{padding:20px 5%}.brand{font-size:24px}.brand-icon{font-size:32px}header nav{display:none}.cart-button{font-size:12px}.notice{font-size:10px;line-height:1.5}.hero{grid-template-columns:1fr;padding-top:32px;gap:30px}.hero-copy>p{font-size:14px}h1{font-size:57px;letter-spacing:-3px;margin:22px 0 20px}.hero-bottom{display:none}.hero-visual{aspect-ratio:1.1}.hero .eyebrow{font-size:10px;letter-spacing:1px}.hero .button{width:100%;justify-content:space-between}.ribbon{justify-content:start;gap:25px;padding:14px 5%;font-size:10px}.ribbon span:nth-of-type(n+3),.ribbon b:nth-of-type(n+3){display:none}.shop{padding:42px 5%}.section-top h2{font-size:28px}.shop-controls{flex-direction:column;gap:17px}.filters{gap:6px}.filters button{font-size:11px;padding:9px 11px}.search{align-self:stretch}.search input{width:100%;font-size:14px}.products{grid-template-columns:repeat(2,minmax(0,1fr));gap:25px 13px}.product-tag{font-size:9px;top:9px;left:9px;padding:5px 7px}.product-add{width:32px;height:32px;bottom:10px;right:10px;font-size:23px}.product-meta h3{font-size:14px}.product-meta p{font-size:11px}.price{font-size:14px}.how{grid-template-columns:1fr;gap:20px;padding:40px 5%}.how h2{font-size:32px}.how ol{margin-top:10px}.about{padding:45px 5%}.about h2{font-size:23px;letter-spacing:-.5px}.about p{line-height:1.8}footer{flex-wrap:wrap;gap:9px 20px;padding:25px 5%}footer small{width:100%;margin-left:0;line-height:1.8}.custom-dialog{padding:27px 18px}.custom-layout{grid-template-columns:1fr}.preview-side{padding:15px}.preview{max-width:280px;margin:12px auto}.preview-side>p{margin-bottom:0}.custom-layout form h2{font-size:28px}.cart-dialog{padding:35px 20px}.cart-dialog h2{font-size:25px}.cart-item{grid-template-columns:50px 1fr auto;gap:10px}.cart-thumb{height:50px}.cart-item h3{font-size:13px}.item-right{font-size:12px}.cart-dialog>.eyebrow{font-size:10px}.eyebrow{font-size:11px}.total{font-size:15px}.button{font-size:14px}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*{transition:none!important}}

.preview canvas{position:absolute;inset:0;width:100%;height:100%}.preview canvas[hidden]{display:none}.preview-options{display:flex;flex-wrap:wrap;gap:8px;margin-top:15px}.preview-options span{background:white;border:1px solid #d8ddf1;border-radius:5px;padding:7px 10px;font-size:12px;color:var(--navy)}.variant-controls{padding:0 0 15px;border-bottom:1px solid var(--line);margin-bottom:16px}.variant-controls label>span{font-size:13px;color:var(--ink)}form select{display:block;width:100%;padding:11px 12px;margin-top:8px;border:1px solid #d9dce6;border-radius:5px;font:inherit;font-size:14px;background:white;color:var(--ink)}.product-colors{display:flex;flex-wrap:wrap;gap:9px}.product-color-option{position:relative;display:flex!important;align-items:center;gap:6px;margin:8px 0 0!important;padding:7px;border:1px solid var(--line);border-radius:5px;background:white}.product-color-option input{position:absolute;opacity:0}.product-color-option span{width:20px;height:20px;border-radius:50%;background:var(--swatch);border:1px solid #0002;flex-shrink:0}.product-color-option small{font-size:11px;font-weight:400}.product-color-option:has(input:checked){outline:2px solid var(--blue);border-color:transparent}.product-color-option:has(input:focus-visible){outline:3px solid #df6da6}.variant-note{display:block;font-size:11px;line-height:1.7;color:var(--muted)}.preview-side{align-self:start}.custom-dialog{max-height:calc(100dvh - 32px);overflow:auto}@media(min-width:651px){.preview-side{position:sticky;top:0}}

[hidden]{display:none!important}.variant-controls>label{display:inline-block;width:calc(50% - 8px);margin-right:8px;vertical-align:top}.unit-price strong{font-size:18px;color:var(--navy)}@media(max-width:650px){.preview-side{position:sticky;top:0;z-index:4;display:grid;grid-template-columns:110px 1fr;gap:10px;padding:12px;background:#f0f2fd;box-shadow:0 4px 14px #17234b0c}.preview-side>.eyebrow{grid-column:1/-1;font-size:9px;letter-spacing:1px}.preview-side .preview{width:110px;margin:0;max-width:none}.preview-side .personal-layer{padding:3px}.preview-side .personal-layer strong{font-size:9px}.preview-side .personal-layer span{font-size:6px}.preview-side .personal-layer img{max-height:20px;max-width:30px}.preview-options{flex-direction:column;align-items:start;gap:5px;align-self:center;margin:0}.preview-options span{font-size:11px;padding:4px 8px}.preview-side>p{grid-column:1/-1;font-size:10px;line-height:1.5;margin:0}.purchase-row strong{font-size:20px}.custom-layout{gap:20px}}

.mockup-controls{border-top:1px solid #d8ddef;padding-top:5px;margin-top:16px}.mockup-controls label{font-size:13px}.mockup-controls .upload{margin-bottom:0}.custom-layout .custom-details>p{font-size:13px;line-height:1.7;color:var(--muted)}.custom-layout .preview-side>p{font-size:12px;line-height:1.8;color:var(--muted)}@media(max-width:650px){.custom-layout .preview-side{position:static;display:block;padding:15px}.custom-layout .preview-side .preview{width:100%;max-width:280px;margin:12px auto}.custom-layout .preview-side>.eyebrow{font-size:10px}.custom-layout .preview-side .personal-layer strong{font-size:17px}.custom-layout .preview-side .personal-layer span{font-size:11px}.custom-layout .preview-side .personal-layer img{max-height:70px;max-width:85px}.custom-layout .preview-options{flex-direction:row;margin-top:12px}.custom-layout .preview-side>p{font-size:11px;margin:12px 0}.mockup-controls{margin-top:12px}.custom-layout .preview-side .mockup-controls label{font-size:13px}}

#previewBase{background-image:url('assets/mockup-blank.webp')}.mockup-download{width:100%;padding:11px 14px;border:1px solid #cdd4fa;border-radius:6px;background:white;color:var(--blue);margin-top:14px;font-size:13px}.mockup-download:disabled{opacity:.45;cursor:wait}.mockup-remove{background:none;color:#a9475f;padding:8px 0;font-size:12px}#mockupStatus{font-size:11px;margin:8px 0;line-height:1.6}

.cart-thumb img{width:100%;height:100%;object-fit:cover}

.custom-dialog{width:1120px}.custom-layout{grid-template-columns:1.15fr 1fr}.view-tabs{display:flex;gap:5px;margin-top:18px}.view-tabs button{flex:1;padding:10px 7px;border-radius:7px;background:white;color:#626779;font-size:12px;border:1px solid #dce1f3}.view-tabs button[aria-pressed=true]{background:var(--blue);color:white;border-color:var(--blue)}.preview{margin-top:12px}#editCanvas{touch-action:none;cursor:move}#threeView{position:absolute;inset:0;background:radial-gradient(circle,#fff,#e3e8f8)}#threeView canvas{position:static;touch-action:none;cursor:grab}.edit-tools{font-size:12px}.edit-tools p{font-size:11px;line-height:1.6;color:#69718a}.edit-tools label{margin:10px 0;font-size:12px}.edit-tools output{float:right;color:var(--blue)}.edit-tools input[type=range]{padding:0;border:0;accent-color:var(--blue)}.edit-actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.edit-actions button{padding:7px 10px;border:1px solid #ccd4ec;border-radius:5px;background:white;color:var(--blue);font-size:11px}.edit-actions label{display:flex;gap:5px;align-items:center;font-size:11px}.edit-actions input[type=checkbox]{width:auto;margin:0}.preview-side{position:static!important}#threeView:focus-visible{outline:3px solid #df6da6;outline-offset:-3px}@media(max-width:650px){.custom-layout{grid-template-columns:1fr}.custom-layout .preview-side .preview{max-width:360px}.view-tabs button{font-size:11px}}

.custom-dialog>.close{z-index:20;background:white;border-radius:50%;width:34px;height:34px;line-height:28px}.custom-layout .preview-side{z-index:auto}

#printModeControl{font-size:12px;margin:14px 0 0}#wrapTools{margin-top:16px;padding:14px;background:white;border:1px solid #d8ddef;border-radius:8px}.wrap-heading{display:flex;justify-content:space-between;align-items:center;font-size:12px;margin-bottom:10px}.wrap-heading button{font-size:11px;padding:7px 10px;border-radius:5px;background:#edf0ff;color:var(--blue)}#wrapStrip{display:block;width:100%;height:auto;background:repeating-conic-gradient(#f1f2f5 0% 25%,white 0% 50%) 50% / 16px 16px;border:1px solid #d8ddef}.wrap-labels{display:flex;justify-content:space-between;font-size:9px;color:var(--blue);margin-top:5px}#wrapTools p,#wrapTools small{font-size:11px;color:var(--muted);line-height:1.7}#wrapTools label{font-size:11px;margin:10px 0}#wrapTools input[type=range]{padding:0;border:0;accent-color:var(--blue)}#wrapOffsetValue{float:right;color:var(--blue)}.upload #uploadTitle{font-size:13px;color:var(--ink);font-weight:500}

#tumblerSpecs{padding:15px;background:#f6f4ef;border:1px solid #e2ddd1;border-radius:8px;font-size:12px;margin:16px 0}#tumblerSpecs strong{color:var(--navy)}#tumblerSpecs dl{margin:12px 0}#tumblerSpecs dt{font-weight:600;margin-top:9px}#tumblerSpecs dd{margin:3px 0;line-height:1.7;color:#646779}#tumblerSpecs small{font-size:10px;line-height:1.6;display:block;color:#737586}

.product-image.reference-tumbler{background-image:url(assets/tumbler-reference.png);background-size:cover;background-position:center}.print-size-download{width:100%;padding:8px 12px;margin-bottom:12px;border:1px solid #d8ddef;border-radius:5px;background:white;color:var(--blue);font-size:11px}

@font-face{font-family:'Be Vietnam Pro';src:url('fonts/BeVietnamPro-Regular.woff2') format('woff2');font-weight:400 500;font-display:swap}@font-face{font-family:'Be Vietnam Pro';src:url('fonts/BeVietnamPro-Bold.woff2') format('woff2');font-weight:600 900;font-display:swap}@font-face{font-family:Lora;src:url('fonts/Lora[wght].woff2') format('woff2');font-weight:400 700;font-display:swap}@font-face{font-family:'Dancing Script';src:url('fonts/DancingScript[wght].woff2') format('woff2');font-weight:400 700;font-display:swap}.text-palette .swatches{display:flex;flex-wrap:wrap;gap:10px}.text-palette .swatches span{border:1px solid #b9bbce}.font-sample{font-size:24px;line-height:1.6;margin:0 0 16px;overflow-wrap:anywhere}#customFont{width:100%;min-height:44px}

.product-image.reference-shirt,#previewBase.reference-shirt{background-image:url('assets/shirt-full-front-back.png');background-size:200% 100%;background-position:0 0}
