:root{--page:#edf6ff;--card:#fff;--ink:var(--ip-ink);--muted:var(--ip-muted);--line:var(--ip-line);--blue:var(--ip-blue);--blue-text:var(--ip-blue-text);--blue-bright:var(--ip-blue-bright);--blue-hover:var(--ip-blue-hover);--soft:#e5f3ff;--green:#12a879}*{box-sizing:border-box}body{margin:0;background:var(--page);color:var(--ink);font-family:Inter,"Noto Sans Thai",sans-serif}button,input,textarea{font:inherit}button{cursor:pointer}.order-nav{height:72px;padding:0 max(18px,calc((100% - 760px)/2));display:grid;grid-template-columns:44px 1fr 44px;align-items:center;gap:12px;position:sticky;top:0;z-index:10;background:rgba(237,246,255,.96);border-bottom:1px solid var(--line);backdrop-filter:blur(14px)}.order-nav a{width:38px;height:38px;display:grid;place-items:center;border-radius:50%;background:#fff;color:var(--ink);font-size:27px;text-decoration:none}.order-nav b{text-align:center}.order-nav span{color:var(--blue-text);font-size:12px;font-weight:800;text-align:right}.order-shell{width:min(760px,100%);margin:auto;padding:22px 16px 120px}.progress{display:grid;grid-template-columns:repeat(5,1fr);gap:7px;margin-bottom:18px}.progress span{height:5px;border-radius:99px;background:#cfdfec}.progress span.active{background:var(--blue)}.status{min-height:0;margin:0;color:#d64545}.sheet{margin-bottom:14px;padding:20px;border:1px solid var(--line);border-radius:18px;background:#fff;box-shadow:0 8px 28px rgba(25,89,145,.06)}h1{margin:0 0 16px;font:800 26px Sora,"Noto Sans Thai",sans-serif}h1 small{font-size:14px}h2{margin:24px 0 12px;font:700 16px Sora,"Noto Sans Thai",sans-serif}.eyebrow{color:var(--blue-text);font:800 10px Sora,sans-serif;letter-spacing:1px}.product-hero{min-height:310px;margin-bottom:14px;padding:28px;display:grid;place-items:center;position:relative;border-radius:20px;background:#cfe6f8;overflow:hidden}.product-hero img{width:min(420px,86%);max-height:250px;object-fit:cover;border-radius:6px;box-shadow:0 22px 40px rgba(30,75,113,.25)}.upload-look{position:absolute;bottom:18px;border:1px dashed var(--blue);border-radius:999px;padding:8px 15px;background:rgba(255,255,255,.75);color:var(--blue-text);font-size:12px;font-weight:700}.start-price{display:inline-block;margin-top:10px;padding:7px 10px;background:var(--blue);color:#fff;font-size:20px}.spec-list{margin:0;padding:14px 32px;border-radius:12px;background:var(--soft);line-height:1.7}label{display:block;margin-top:15px;font-weight:700}label small{display:block;margin-top:6px;color:var(--muted);font-weight:400}input,textarea{width:100%;margin-top:8px;padding:13px;border:1px solid #b9d7f0;border-radius:10px;background:#fff;outline:none}input:focus,textarea:focus{border-color:var(--blue);box-shadow:0 0 0 3px rgba(10,140,255,.12)}.choice-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:9px}.choice{min-height:64px;padding:10px;border:1px solid #bad8ef;border-radius:10px;background:#fff;text-align:left}.choice b,.choice small{display:block}.choice small{margin-top:3px;color:var(--muted);font-size:10px}.choice.selected{border-color:var(--blue);background:var(--soft);box-shadow:inset 0 0 0 1px var(--blue)}.price-box{margin-top:22px;padding:16px;border:1px solid var(--line);border-radius:12px}.price-line{display:flex;justify-content:space-between;gap:18px;padding:6px 0}.price-line.total{margin-top:7px;padding-top:13px;border-top:1px solid var(--line);color:var(--blue-text);font-size:20px;font-weight:800}.cart-item{padding:16px;display:flex;justify-content:space-between;gap:18px;border-radius:13px;background:var(--soft)}.cart-item p{color:var(--muted);font-size:12px}.cart-item strong{color:var(--blue-text);font-size:20px}.counter{display:flex;align-items:center;gap:10px}.counter button{width:30px;height:30px;border:0;border-radius:50%;background:#fff}.calendar-head{display:flex;justify-content:space-between;align-items:center;padding:10px}.calendar-head button{border:0;background:transparent}.week,.calendar{display:grid;grid-template-columns:repeat(7,1fr);gap:6px;text-align:center}.week{margin:10px 0;color:var(--muted);font-size:11px}.calendar button{min-height:52px;border:1px solid transparent;border-radius:10px;background:transparent}.calendar button.available{background:#fff;border-color:var(--line)}.calendar button.selected{background:var(--blue);color:#fff}.calendar button:disabled{opacity:.3;cursor:not-allowed}.selection-summary small{color:var(--muted)}.two{display:grid;grid-template-columns:1fr 1fr;gap:12px}.select-row{padding:13px;display:flex;align-items:center;gap:10px;border:1px solid var(--line);border-radius:11px}.select-row:has(input:checked){border-color:var(--blue);background:var(--soft)}.select-row input{width:auto;margin:0}.select-row span{flex:1}.select-row b,.select-row small{display:block}.select-row strong{color:var(--blue-text)}.bank-head{display:flex;justify-content:space-between;gap:20px}.bank-head b,.bank-head small,.bank-head strong{display:block;margin-top:6px}.bank-head strong{color:var(--blue-text)}.bank-head>span{color:var(--muted);font-size:11px}.pay-total{margin-top:18px;padding-top:16px;display:flex;justify-content:space-between;border-top:1px solid var(--line)}.pay-total strong{color:var(--blue-text);font-size:22px}.upload-slip button{width:100%;min-height:150px;display:grid;place-items:center;border:2px dashed #79bdff;border-radius:14px;background:#fff;color:var(--ink)}.upload-slip button span{color:var(--blue-text);font-size:30px}.upload-slip button small{color:var(--muted)}#slipPreview{padding:12px;border-radius:12px;background:#f4f9fd}#slipPreview img{width:70px;height:70px;object-fit:cover;border-radius:8px;vertical-align:middle;margin-right:12px}.final-note{text-align:center;color:var(--muted);font-size:12px}.checkout-bar{height:86px;padding:12px max(18px,calc((100% - 760px)/2));display:flex;align-items:center;gap:10px;position:fixed;bottom:0;left:0;right:0;z-index:12;background:#fff;border-top:1px solid var(--line)}.checkout-bar>div{margin-right:auto}.checkout-bar small,.checkout-bar strong{display:block}.checkout-bar strong{color:var(--blue-text);font-size:22px}.checkout-bar button{min-height:48px;padding:0 22px;border:0;border-radius:10px;background:var(--blue);color:#fff;font-weight:800}.checkout-bar .ghost{background:#fff;color:var(--blue-text);border:1px solid var(--blue)}@media(max-width:600px){.order-shell{padding-inline:0}.sheet{border-radius:0;border-inline:0}.product-hero{border-radius:0}.choice-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.two{grid-template-columns:1fr}.checkout-bar{height:auto;flex-wrap:wrap}.checkout-bar>div{flex-basis:100%;display:flex;justify-content:space-between}.checkout-bar button{flex:1}.order-shell{padding-bottom:142px}}

.add-more{margin-top:16px;min-height:48px;display:flex;align-items:center;justify-content:center;gap:7px;border:1px solid var(--blue);border-radius:10px;background:#fff;color:var(--blue-text);font-weight:800;text-decoration:none}.add-more:hover{background:var(--soft)}.add-more:focus-visible{outline:3px solid rgba(10,140,255,.18);outline-offset:2px}
.confirm-dialog{width:min(420px,calc(100% - 32px));padding:0;border:0;border-radius:18px;background:#fff;box-shadow:0 24px 80px rgba(4,35,64,.28)}
.confirm-dialog::backdrop{background:rgba(4,25,44,.52);backdrop-filter:blur(3px)}
.confirm-dialog form{padding:26px;text-align:center}.dialog-icon{width:52px;height:52px;margin:0 auto 12px;display:grid;place-items:center;border-radius:50%;background:#fff0f0;font-size:23px}
.confirm-dialog h2{margin:0 0 8px}.confirm-dialog p{margin:0;color:var(--muted);line-height:1.6}.confirm-dialog form>div{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:22px}
.confirm-dialog button{min-height:46px;border-radius:10px;font-weight:800}.dialog-cancel{border:1px solid var(--line);background:#fff;color:var(--ink)}.dialog-delete{border:1px solid #df4545;background:#df4545;color:#fff}

/* Per-item totals on the option buttons and in the price summary */
.choice small{font-size:12px;line-height:1.35}
.choice .opt-total{display:block;color:var(--blue-text);font-size:15px;font-weight:800}
.choice .opt-included{color:var(--muted);font-weight:600}
.price-line>span small{display:block;color:var(--muted);font-size:12px;font-weight:400}
.price-line b{color:var(--blue-text)}
.price-line.included b{color:var(--muted);font-weight:600}

/* Order page: cart shortcut in the header and the promo code under the price summary */
.order-nav .nav-cart{position:relative;width:38px;height:38px;border:2px solid var(--blue);background:#fff}
.order-nav .nav-cart img{width:20px;height:20px}
.order-nav .nav-cart b{position:absolute;top:-8px;right:-8px;min-width:20px;height:20px;padding:0 5px;display:grid;place-items:center;border-radius:99px;background:var(--blue);color:#fff;font-size:11px;font-style:normal}
.price-box .promo-row{margin-top:14px;padding-top:12px;border-top:1px dashed var(--line)}
.price-box .promo-row label{margin-top:0}
.price-box .promo-row small{min-height:16px;color:var(--muted)}

/* File link: the one thing the customer must provide, so it is a call to action */
.file-cta{margin:18px 0 6px;padding:18px;border:2px solid var(--blue);border-radius:16px;background:#fff}
.file-cta-head{display:flex;gap:12px;align-items:center}
.file-cta-icon{flex:none;width:46px;height:46px;display:grid;place-items:center;border-radius:13px;background:var(--blue);color:#fff}
.file-cta-head label{display:block;margin:0;font-size:17px;font-weight:800}
.required-tag{display:inline-block;margin-top:5px;padding:2px 10px;border-radius:99px;background:var(--ink);color:#fff;font-size:12px;font-weight:700}
.file-cta>p{margin:12px 0 0;color:var(--muted);font-size:13px;line-height:1.5}
.file-cta input{min-height:54px;margin-top:12px;font-size:16px}
.file-cta small{display:block;margin-top:8px;color:var(--muted)}
.file-cta.is-invalid{border-color:#e5484d}
.file-cta.is-invalid input{border-color:#e5484d}

/* Option groups of a set: name + the rule (one or several, required) and radio / checkbox looking cards */
.option-group{margin-top:4px}
.option-group>h2{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 10px}
.group-rule{color:var(--muted);font-size:12px;font-weight:500}
.group-rule.required{color:var(--ink);font-weight:600}
.option-group.is-missing .choice-grid{padding:8px;border-radius:12px;outline:2px solid #e5484d;background:#fff5f5}
.choice{position:relative}
.choice.mode-single,.choice.mode-multiple{padding-right:34px}
.choice.mode-single::after,.choice.mode-multiple::after{content:"";position:absolute;top:10px;right:10px;width:16px;height:16px;border:2px solid #9fbfd8;background:#fff;box-sizing:border-box}
.choice.mode-single::after{border-radius:50%}
.choice.mode-multiple::after{border-radius:4px}
.choice.selected.mode-single::after{border-color:var(--blue);background:radial-gradient(circle,var(--blue) 0 38%,#fff 42%)}
.choice.selected.mode-multiple::after{border-color:var(--blue);background:var(--blue) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M3.5 8.5l3 3 6-6.5' fill='none' stroke='white' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center/100% no-repeat}

.spec-list{background:#f3f6f9}

/* Gallery of sample work under the set picture */
.gallery{margin-bottom:14px}
.gallery h2{margin:0 0 12px}
.gallery-strip{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:8px}
.gallery-thumb{padding:0;overflow:hidden;aspect-ratio:1;border:1px solid var(--line);border-radius:10px;background:#f3f6f9;cursor:zoom-in}
.gallery-thumb img{display:block;width:100%;height:100%;object-fit:cover;transition:transform .2s}
.gallery-thumb:hover img{transform:scale(1.05)}
.gallery-thumb:focus-visible{outline:3px solid rgba(10,140,255,.4);outline-offset:2px}
.gallery-dialog{width:min(96vw,900px);max-width:none;padding:0;border:0;background:transparent;overflow:visible}
.gallery-dialog::backdrop{background:rgba(10,20,30,.8)}
.gallery-dialog figure{margin:0;text-align:center}
.gallery-dialog img{display:block;max-width:100%;max-height:78vh;margin:auto;border-radius:12px;background:#fff;object-fit:contain}
.gallery-dialog figcaption{margin-top:10px;color:#fff;font-size:14px}
.gallery-nav,.gallery-close{position:absolute;display:grid;place-items:center;width:44px;height:44px;padding:0;border:0;border-radius:50%;background:#fff;color:var(--ink);font-size:24px;cursor:pointer;box-shadow:0 4px 14px rgba(0,0,0,.3)}
.gallery-nav[hidden]{display:none}
.gallery-nav{top:calc(50% - 22px)}
.gallery-prev{left:8px}
.gallery-next{right:8px}
.gallery-close{top:-14px;right:-4px;font-size:18px}

/* Image-only carousel; native scrolling supports touch and trackpads. */
.product-hero{display:block;min-height:0;padding:0;background:var(--page)}
.hero-track{display:flex;width:100%;overflow-x:auto;scroll-snap-type:x mandatory;scrollbar-width:none;border-radius:20px}
.hero-track::-webkit-scrollbar{display:none}
.hero-slide{flex:0 0 100%;width:100%;padding:0;border:0;background:transparent;scroll-snap-align:start;scroll-snap-stop:always;display:grid;place-items:center;aspect-ratio:16/9}
.product-hero .hero-slide img{display:block;width:100%;height:100%;max-height:none;object-fit:contain;border-radius:0;box-shadow:none}
.hero-arrow{position:absolute;top:50%;transform:translateY(-50%);width:40px;height:40px;border:1px solid var(--line);border-radius:50%;background:rgba(255,255,255,.92);color:var(--ink);font-size:28px;line-height:1}
.hero-prev{left:12px}.hero-next{right:12px}.hero-dots{position:absolute;bottom:12px;left:50%;transform:translateX(-50%);display:flex;gap:6px;padding:4px 8px;border-radius:99px;background:rgba(255,255,255,.9)}
.hero-dots button{width:24px;height:24px;border:0;background:transparent;padding:7px}
.hero-dots button::after{content:"";display:block;width:10px;height:10px;background:#a2bbd0;border-radius:50%}
.hero-dots button[aria-current="true"]::after{background:var(--blue)}
.hero-dots[hidden],.hero-arrow[hidden]{display:none}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}
.hero-slide:focus-visible,.hero-arrow:focus-visible,.hero-dots button:focus-visible{outline:3px solid var(--blue);outline-offset:-3px}

.inquiry-only #startPrice,.inquiry-only #fileCta,.inquiry-only #quantityHeading,.inquiry-only #quantityChoices,.inquiry-only #optionGroups,.inquiry-only .price-box,.inquiry-only .checkout-bar{display:none!important}.inquiry-link{display:block;background:#06a849;color:#fff;text-align:center;text-decoration:none;padding:14px;border-radius:12px;font-weight:700;margin-top:20px}#inquiryContact p{font-size:13px;color:var(--muted)}
/* Loading and load-failure states */
.skeleton-line{display:inline-block;width:min(260px,70%);height:1em;border-radius:8px;background:linear-gradient(90deg,#e3edf7 0%,#f3f8fd 50%,#e3edf7 100%);background-size:200% 100%;animation:skeleton 1.2s ease-in-out infinite;vertical-align:middle}
@keyframes skeleton{from{background-position:200% 0}to{background-position:-200% 0}}
@media (prefers-reduced-motion:reduce){.skeleton-line{animation:none}}
body.is-loading .file-cta,body.is-loading #quantityHeading,body.is-loading .price-box{opacity:.45;pointer-events:none}
.checkout-bar button:disabled{opacity:.5;cursor:not-allowed}
.load-error{margin:0 0 14px;padding:14px 16px;border:1px solid #f3c4c4;border-radius:12px;background:#fff4f4;color:#9b2c2c;display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}
.load-error[hidden]{display:none}
.load-error p{margin:0;font-weight:700}
.load-error button{min-height:44px;padding:0 18px;border:0;border-radius:10px;background:#0072d6;color:#fff;font-weight:800;cursor:pointer}
.start-price:empty{display:none}
