:root{--theme:#292d31;--accent:#aeb6bc;--ink:#f5faff;--muted:#a9bfd8}
*{box-sizing:border-box}
html,body{margin:0;height:100%;overflow:hidden}
body{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;color:var(--ink)}
button,input{font:inherit}
.glass{background:rgba(87,153,219,.13);border:1px solid rgba(203,231,255,.22);box-shadow:inset 0 1px rgba(255,255,255,.13),0 18px 50px rgba(0,0,0,.28);backdrop-filter:blur(28px) saturate(175%);-webkit-backdrop-filter:blur(28px) saturate(175%)}
#app{height:100svh;min-height:430px;width:100vw;margin:auto;position:relative;overflow:hidden;background:radial-gradient(circle at 50% 42%,color-mix(in srgb,var(--accent) 22%,transparent),transparent 34%),linear-gradient(160deg,color-mix(in srgb,var(--theme) 76%,#17345b) 0%,var(--theme) 48%,color-mix(in srgb,var(--theme) 84%,#17345b) 100%)}
.theme-bar{position:absolute;z-index:30;top:max(10px,env(safe-area-inset-top));left:3%;width:94%;height:59px;border-radius:21px;padding:9px 12px;display:flex;align-items:center;justify-content:space-between}
.brand{display:flex;flex-direction:column}
.brand strong{font:700 13px Georgia,serif}
.brand small{font-size:7px;font-weight:800;color:var(--muted);letter-spacing:.12em;margin-top:2px}
.header-actions{display:flex;align-items:center;gap:7px}
.music-toggle{height:39px;border:1px solid rgba(203,231,255,.24);border-radius:14px;padding:0 12px;background:rgba(105,172,237,.13);color:var(--ink);display:flex;align-items:center;gap:7px;font-size:9px;font-weight:800;box-shadow:inset 0 1px rgba(255,255,255,.14),0 8px 22px #0003}
.music-toggle span{width:12px;font-size:11px;line-height:1}
.music-toggle b{font-size:9px}
.theme-picker{position:relative}
.theme-toggle{height:39px;border:1px solid rgba(203,231,255,.24);border-radius:14px;padding:0 12px;background:rgba(105,172,237,.13);color:var(--ink);display:flex;align-items:center;gap:7px;font-size:9px;font-weight:800;box-shadow:inset 0 1px rgba(255,255,255,.14),0 8px 22px #0003}
.theme-toggle svg{width:17px;height:17px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}
.theme-options{position:absolute;right:0;top:48px;width:47px;padding:7px;display:flex;flex-direction:column;gap:8px;align-items:center;border-radius:18px;opacity:0;visibility:hidden;transform:translateY(-8px) scale(.94);transform-origin:top;transition:.22s}
.theme-options.open{opacity:1;visibility:visible;transform:translateY(0) scale(1)}
.theme-dot,.custom-theme{width:31px;height:31px;border-radius:50%;border:2px solid white;box-shadow:0 2px 7px #0003}
.theme-dot{padding:0;background:var(--dot)}
.theme-dot.active{outline:2px solid var(--accent);outline-offset:2px}
.theme-dot i{display:block;width:100%;height:100%;border-radius:inherit;background:linear-gradient(145deg,rgba(255,255,255,.55),transparent 55%)}
.custom-theme{display:grid;place-items:center;background:linear-gradient(135deg,#777,#bbb,#eee);color:white;position:relative;overflow:hidden}
.custom-theme input{position:absolute;inset:0;opacity:0}
.stage{position:absolute;inset:0;display:grid;place-items:center}
.stage model-viewer{width:100%;height:76%;margin-bottom:100px;--poster-color:transparent;opacity:1;z-index:2;transition:opacity .55s ease,filter .55s ease}
.loading-model .stage model-viewer{opacity:1;filter:none}
.stage-title{position:absolute;z-index:3;top:83px;left:5%}
.stage-title small{font-size:8px;font-weight:800;letter-spacing:.17em;color:var(--accent)}
.stage-title h1{font:500 19px Georgia,serif;margin:5px 0}
.model-actions{position:absolute;z-index:5;right:4%;top:79px;border-radius:17px;padding:4px}
.model-actions button{height:39px;border:0;background:transparent;color:var(--ink);border-radius:13px;font-size:10px;font-weight:700}
.model-help{position:absolute;bottom:210px;padding:8px 12px;border-radius:99px;color:var(--muted);font-size:9px}
.model-loader{--load-progress:0%;position:absolute;z-index:16;inset:70px 0 150px;display:grid;place-items:center;padding:20px;pointer-events:none;opacity:1;transition:opacity .55s ease,transform .55s ease}.model-loader.ready{opacity:0;transform:scale(1.025)}.model-loader-card{width:min(82vw,310px);padding:22px 20px 18px;border-radius:24px;background:rgba(8,18,34,.76);display:flex;flex-direction:column;align-items:center;text-align:center;box-shadow:inset 0 1px rgba(255,255,255,.16),0 26px 70px #0008}.model-loader-brand{font:700 14px Georgia,serif;letter-spacing:.12em}.model-loader-wallet{width:76px;height:58px;margin:15px 0 11px;fill:none;stroke:var(--accent);stroke-width:2.4;stroke-linecap:round;stroke-linejoin:round;filter:drop-shadow(0 0 9px color-mix(in srgb,var(--accent) 60%,transparent));animation:loader-float 1.8s ease-in-out infinite}.model-loader-wallet path{stroke-dasharray:190;animation:loader-draw 2.2s linear infinite}.model-loader-copy{display:grid;gap:5px}.model-loader-copy strong{font-size:12px}.model-loader-copy span{color:var(--muted);font-size:9px;line-height:1.45}.model-loader-progress{width:100%;height:5px;margin:16px 0 8px;border-radius:99px;background:#ffffff16;overflow:hidden}.model-loader-progress i{display:block;width:var(--load-progress);height:100%;border-radius:inherit;background:linear-gradient(90deg,var(--accent),#fff);box-shadow:0 0 14px color-mix(in srgb,var(--accent) 70%,transparent);transition:width .22s ease}.model-loader-card>b{color:var(--accent);font-size:10px}.model-loader.error .model-loader-wallet{stroke:#ffabab;animation:none}.model-loader.error .model-loader-card>b{color:#ffabab}@keyframes loader-float{50%{transform:translateY(-5px)}}@keyframes loader-draw{0%{stroke-dashoffset:190}55%,100%{stroke-dashoffset:0}}
.config-sheet{position:absolute;z-index:20;left:0;bottom:76px;width:100%;height:auto;max-height:360px;padding:0 18px;border-radius:30px 30px 0 0;color:var(--ink);background:linear-gradient(145deg,rgba(83,157,224,.25),rgba(19,53,94,.52));border-color:rgba(203,232,255,.26);box-shadow:inset 0 1px rgba(255,255,255,.17),0 28px 80px rgba(0,0,0,.4);transition:transform .35s ease;touch-action:none}
.config-sheet.peek{transform:translateY(calc(100% - 125px))}
.config-sheet.open{transform:translateY(0)}
.config-sheet.closed{transform:translateY(calc(100% + 76px))}
.sheet-handle{width:100%;height:30px;border:0;background:transparent}
.sheet-handle i{display:block;width:42px;height:5px;border-radius:99px;background:#3334;margin:auto}
.sheet-heading{display:flex;align-items:end;justify-content:space-between;border-bottom:1px solid #6672;padding:3px 0 14px}
.sheet-heading small{font-size:8px;letter-spacing:.15em;color:var(--muted)}
.sheet-heading h2{font:500 21px Georgia,serif;margin:4px 0 0}
.sheet-heading>span{font-size:10px;color:var(--muted)}
.sheet-description{margin:12px 0 1px;color:var(--muted);font-size:9px;line-height:1.5}
.controls{max-height:245px;overflow:auto}
.control-row{min-height:78px;display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid rgba(203,231,255,.14);gap:12px}
.control-row>div:first-child{display:flex;flex-direction:column;gap:4px}
.control-row strong{font-size:11px}
.control-row small{font-size:9px;color:var(--muted)}
.swatches{display:flex;gap:9px}
.swatch{width:32px;height:32px;border-radius:50%;border:2px solid white;box-shadow:0 2px 7px #0003}
.swatch.active{outline:2px solid var(--ink);outline-offset:2px}
.text-control{padding-top:14px}
.text-control label{display:flex;justify-content:space-between;font-size:12px;font-weight:700}
.text-control label small,.text-control p{font-size:9px;color:var(--muted)}
.text-control>div{display:flex;gap:8px;margin-top:9px}
.text-control input{min-width:0;flex:1;height:48px;border:1px solid rgba(203,231,255,.22);border-radius:15px;color:var(--ink);background:rgba(210,235,255,.09);padding:0 14px;text-transform:uppercase}
.text-control button{border:1px solid rgba(184,226,255,.35);border-radius:15px;background:linear-gradient(145deg,var(--accent),color-mix(in srgb,var(--accent) 58%,#164a9d));color:#fff;padding:0 16px;font-size:10px;font-weight:700}
.bottom-nav{position:absolute;z-index:35;bottom:max(9px,env(safe-area-inset-bottom));left:3%;width:94%;height:64px;border-radius:24px;padding:6px;display:grid;grid-template-columns:repeat(5,1fr);background:color-mix(in srgb,var(--theme) 76%,transparent);border-color:color-mix(in srgb,var(--accent) 32%,transparent);box-shadow:inset 0 1px rgba(255,255,255,.16),0 20px 60px rgba(0,0,0,.3)}
.bottom-nav button{border:1px solid transparent;border-radius:18px;background:transparent;color:color-mix(in srgb,var(--accent) 76%,#fff);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px}
.bottom-nav button.active{color:#fff;border-color:color-mix(in srgb,var(--accent) 38%,transparent);background:linear-gradient(145deg,color-mix(in srgb,var(--accent) 34%,transparent),color-mix(in srgb,var(--theme) 64%,transparent));box-shadow:inset 0 1px rgba(255,255,255,.15),0 8px 20px #0003}
.bottom-nav b{width:21px;height:21px;display:grid;place-items:center}
.bottom-nav svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}
.bottom-nav span{font-size:9px;font-weight:700}
.toast{position:absolute;z-index:50;left:50%;bottom:92px;transform:translate(-50%,18px);padding:10px 16px;border-radius:99px;font-size:10px;font-weight:700;opacity:0;pointer-events:none;transition:.25s}
.toast.show{opacity:1;transform:translate(-50%,0)}
@media(orientation:landscape){body{background:var(--theme)}
.theme-bar{left:2%;width:96%}
.stage model-viewer{width:76%;height:100%;margin:0 0 0 24%}
.config-sheet{left:46%;width:54%;transform:translateY(calc(100% - 125px));border-radius:30px 0 0 0}
.config-sheet.open{transform:translateY(0)}
.config-sheet.closed{transform:translateY(calc(100% + 76px))}
.bottom-nav{left:46%;width:52%}
.stage-title{top:95px}
.model-actions{top:92px}
}

[hidden]{display:none!important}
.cart-button{position:relative;width:39px;height:39px;flex:0 0 39px;border:1px solid rgba(203,231,255,.24);border-radius:14px;padding:0;background:rgba(105,172,237,.13);color:var(--ink);display:grid;place-items:center;box-shadow:inset 0 1px rgba(255,255,255,.14),0 8px 22px #0003}
.cart-button svg,.add-to-cart svg,.cart-empty svg,.receipt-upload svg{width:19px;height:19px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.cart-badge{position:absolute;right:-5px;top:-6px;min-width:18px;height:18px;padding:0 4px;border:2px solid var(--theme);border-radius:99px;background:#ff7a45;color:#fff;display:grid;place-items:center;font-size:9px;font-weight:900}
.cart-badge.bump{animation:badge-bump .3s ease}
@keyframes badge-bump{50%{transform:scale(1.3)}}
.add-to-cart{position:absolute;z-index:14;left:50%;bottom:143px;transform:translateX(-50%);height:48px;min-width:190px;border:1px solid rgba(210,237,255,.38);border-radius:17px;padding:0 14px;background:linear-gradient(145deg,var(--accent),color-mix(in srgb,var(--accent) 58%,#164a9d));color:#fff;display:grid;grid-template-columns:22px 1fr auto;align-items:center;gap:8px;box-shadow:inset 0 1px rgba(255,255,255,.22),0 14px 35px rgba(0,0,0,.32);font-size:11px;font-weight:800}
.add-to-cart b{padding-left:9px;border-left:1px solid #fff4;font-size:11px;white-space:nowrap}
.add-to-cart:active{transform:translateX(-50%) scale(.97)}
button:disabled{opacity:.5;cursor:not-allowed!important}.add-to-cart:disabled:active{transform:translateX(-50%)}

.shop-dialog{width:min(92vw,520px);max-height:min(89svh,760px);margin:auto;border:1px solid rgba(207,232,255,.27);border-radius:27px;padding:22px;background:linear-gradient(155deg,rgba(18,52,91,.98),rgba(5,17,38,.99));color:var(--ink);box-shadow:inset 0 1px rgba(255,255,255,.14),0 32px 100px #000b;overflow:auto}
.shop-dialog::backdrop{background:rgba(0,7,18,.68);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px)}
.shop-dialog button{cursor:pointer}
.dialog-close{position:absolute;right:16px;top:14px;width:36px;height:36px;border:1px solid rgba(203,231,255,.2);border-radius:13px;background:rgba(255,255,255,.07);color:var(--ink);font-size:23px;line-height:1}
.dialog-header{display:flex;align-items:flex-start;justify-content:space-between;padding-bottom:16px;border-bottom:1px solid rgba(203,231,255,.14)}
.dialog-header small,.choice-dialog>small,.order-success>small{display:block;color:var(--accent);font-size:8px;font-weight:900;letter-spacing:.16em}
.dialog-header h2,.choice-dialog h2{margin:5px 0 0;font:500 25px Georgia,serif}
.inline-close{position:static;flex:0 0 36px}
.primary-action,.secondary-action,.text-action{width:100%;min-height:49px;border-radius:15px;padding:10px 14px;font-size:11px;font-weight:800}
.primary-action{border:1px solid rgba(210,237,255,.35);background:linear-gradient(145deg,var(--accent),color-mix(in srgb,var(--accent) 58%,#164a9d));color:#fff;box-shadow:inset 0 1px rgba(255,255,255,.18),0 10px 24px #0003}
.primary-action:disabled{opacity:.55;cursor:wait}
.secondary-action{border:1px solid rgba(203,231,255,.19);background:rgba(255,255,255,.07);color:var(--ink)}
.text-action{min-height:38px;border:0;background:transparent;color:var(--accent)}

.choice-dialog{text-align:center;padding:34px 24px 23px}
.choice-dialog .dialog-close{text-align:center}
.success-icon{width:55px;height:55px;margin:0 auto 15px;border-radius:50%;display:grid;place-items:center;background:linear-gradient(145deg,#4ed5a1,#178d72);box-shadow:0 12px 30px #008c6740;color:#fff;font-size:27px;font-weight:900}
.choice-dialog p{margin:10px auto 20px;max-width:350px;color:var(--muted);font-size:11px;line-height:1.65}
.choice-actions{display:grid;gap:9px}

.cart-dialog{padding-bottom:18px}
.cart-items{display:grid;gap:10px;padding:14px 0;max-height:44svh;overflow:auto}
.cart-item{position:relative;border:1px solid rgba(203,231,255,.15);border-radius:18px;padding:14px 42px 14px 14px;background:rgba(255,255,255,.055)}
.cart-item-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}
.cart-item-heading strong{font:500 16px Georgia,serif}
.cart-item-heading span{color:var(--accent);font-size:12px;font-weight:900;white-space:nowrap}
.cart-item-options{display:flex;flex-wrap:wrap;gap:6px;margin-top:10px}
.cart-item-options span{padding:6px 8px;border-radius:9px;background:rgba(255,255,255,.07);color:var(--muted);font-size:8px}
.remove-item{position:absolute;right:10px;top:10px;width:27px;height:27px;border:1px solid rgba(255,151,151,.22);border-radius:10px;background:rgba(255,88,88,.09);color:#ffb6b6;font-size:17px;line-height:1}
.cart-empty{min-height:220px;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;gap:8px;color:var(--muted)}
.cart-empty svg{width:44px;height:44px;margin-bottom:7px;opacity:.7}
.cart-empty strong{color:var(--ink);font:500 18px Georgia,serif}
.cart-empty span{font-size:10px}
.cart-footer{display:grid;gap:9px;padding-top:14px;border-top:1px solid rgba(203,231,255,.14)}
.cart-footer>div{display:flex;justify-content:space-between;align-items:center;margin-bottom:4px}
.cart-footer>div span{color:var(--muted);font-size:10px}
.cart-footer>div strong{font:600 19px Georgia,serif}

.checkout-dialog{padding-bottom:20px}
.checkout-progress{display:grid;grid-template-columns:1fr 1fr;gap:6px;margin:14px 0 4px}
.checkout-progress i{height:3px;border-radius:99px;background:rgba(255,255,255,.12)}
.checkout-progress i.active{background:var(--accent);box-shadow:0 0 13px color-mix(in srgb,var(--accent) 70%,transparent)}
.checkout-step{padding-top:12px}
.checkout-summary{display:grid;gap:7px;margin-bottom:13px;padding:12px;border:1px solid rgba(203,231,255,.13);border-radius:15px;background:rgba(255,255,255,.045)}
.checkout-summary>div{display:flex;justify-content:space-between;gap:12px;font-size:10px}
.checkout-summary>div span{color:var(--muted)}
.checkout-summary>div:last-child{padding-top:8px;border-top:1px solid rgba(203,231,255,.12);font-weight:900}
.customer-form{display:grid;gap:11px}
.customer-form label{display:grid;gap:6px;color:var(--ink);font-size:9px;font-weight:800}
.customer-form label small{margin-left:4px;color:var(--muted);font-weight:500}
.customer-form input,.customer-form textarea{width:100%;border:1px solid rgba(203,231,255,.18);border-radius:13px;outline:0;background:rgba(255,255,255,.065);color:var(--ink);padding:12px;font-size:11px;resize:none}
.customer-form input{height:45px}
.customer-form textarea{min-height:70px}
.customer-form input:focus,.customer-form textarea:focus{border-color:var(--accent);box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 15%,transparent)}
.customer-form ::placeholder{color:#8ca3bc}
.payment-details{display:grid;gap:12px}
.payment-total{display:flex;align-items:end;justify-content:space-between;padding:13px 0;border-bottom:1px solid rgba(203,231,255,.14)}
.payment-total span{color:var(--muted);font-size:10px}
.payment-total strong{font:600 24px Georgia,serif}
.card-number-block{padding:17px;border:1px solid rgba(203,231,255,.18);border-radius:18px;background:linear-gradient(145deg,rgba(121,197,255,.17),rgba(255,255,255,.04))}
.card-number-block>small{display:block;color:var(--muted);font-size:8px;letter-spacing:.15em}
.card-number-block>div{display:flex;align-items:center;justify-content:space-between;gap:8px;margin:8px 0 4px}
.card-number-block strong{font:600 clamp(16px,5vw,21px) Georgia,serif;letter-spacing:.07em;white-space:nowrap}
.card-number-block button{border:1px solid rgba(203,231,255,.19);border-radius:10px;background:rgba(255,255,255,.08);color:var(--ink);padding:8px;font-size:8px;font-weight:800}
.card-number-block>span{color:var(--muted);font-size:9px}
.payment-note{margin:0;color:var(--muted);font-size:10px;line-height:1.55}
.payment-form{display:grid;gap:11px;margin-top:13px}
.receipt-upload{min-height:116px;border:1px dashed rgba(203,231,255,.32);border-radius:17px;padding:16px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:5px;background:rgba(255,255,255,.04);text-align:center;cursor:pointer}
.receipt-upload input{position:absolute;width:1px;height:1px;opacity:0}
.receipt-upload svg{width:27px;height:27px;color:var(--accent);margin-bottom:3px}
.receipt-upload strong{font-size:10px}
.receipt-upload span{color:var(--muted);font-size:8px}
.receipt-preview{width:100%;max-height:190px;object-fit:contain;border-radius:15px;border:1px solid rgba(203,231,255,.14);background:#0004}
.checkout-error{margin:0;padding:10px 12px;border:1px solid rgba(255,129,129,.25);border-radius:12px;background:rgba(255,68,68,.09);color:#ffc0c0;font-size:9px;line-height:1.45}
.payment-actions{display:grid;grid-template-columns:105px 1fr;gap:9px}
.order-success{text-align:center;padding:22px 4px 4px}
.order-success h3{margin:6px 0;font:500 26px Georgia,serif}
.order-success p{max-width:360px;margin:0 auto 17px;color:var(--muted);font-size:10px;line-height:1.65}
.order-number{display:grid;gap:5px;margin:0 auto 17px;padding:13px;border:1px solid rgba(203,231,255,.17);border-radius:14px;background:rgba(255,255,255,.055)}
.order-number span{color:var(--muted);font-size:8px}
.order-number strong{font-size:14px;letter-spacing:.07em}

@media(max-width:380px){
  .theme-bar{left:2%;width:96%;padding-left:10px;padding-right:8px}
  .header-actions{gap:5px}
  .music-toggle,.theme-toggle{padding:0 9px}
  .shop-dialog{width:95vw;padding:18px;border-radius:23px}
  .card-number-block strong{font-size:15px;letter-spacing:.04em}
}
@media(orientation:landscape){
  .add-to-cart{left:23%;bottom:85px}
  .shop-dialog{max-height:92svh}
}
@media(prefers-reduced-motion:reduce){
  *,*::before,*::after{scroll-behavior:auto!important;animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}
}

html.neutral-theme #app{background:radial-gradient(circle at 48% 38%,rgba(132,140,146,.48),transparent 42%),linear-gradient(160deg,#575c61 0%,#34393e 48%,#202529 100%)}
html.neutral-theme .glass{background:rgba(116,123,129,.18);border-color:rgba(224,229,233,.25)}
html.neutral-theme .music-toggle,html.neutral-theme .theme-toggle,html.neutral-theme .cart-button{border-color:rgba(224,229,233,.28);background:rgba(122,129,135,.2)}
html.neutral-theme .config-sheet{background:linear-gradient(145deg,rgba(121,128,134,.58),rgba(48,53,58,.9));border-color:rgba(226,231,234,.28)}
html.neutral-theme .bottom-nav{background:rgba(129,136,142,.22);border-color:rgba(225,230,234,.28)}
html.neutral-theme .bottom-nav button.active{background:linear-gradient(145deg,rgba(190,197,202,.25),rgba(94,101,107,.36));border-color:rgba(231,235,238,.3)}
html.neutral-theme .add-to-cart,html.neutral-theme .primary-action,html.neutral-theme .text-control button{background:linear-gradient(145deg,#aeb6bc,#5f686e);border-color:rgba(240,243,245,.36)}
html.neutral-theme .shop-dialog{background:linear-gradient(155deg,rgba(61,67,72,.98),rgba(25,29,32,.99));border-color:rgba(225,230,234,.27)}
html.neutral-theme .card-number-block{background:linear-gradient(145deg,rgba(185,193,199,.17),rgba(255,255,255,.04));border-color:rgba(224,229,233,.2)}
html.neutral-theme .model-loader-card{background:rgba(39,44,48,.86);border-color:rgba(228,232,235,.27)}
