:root{--background-color: #ffffff;--surface-color: #f8f8f8;--border-color: #e8e8e8;--text-color: #111111;--text-secondary: #6b7280;--text-muted: #9ca3af;--primary-color: #111111;--success-color: #16a34a;--success-bg: #f0fdf4;--success-border: #bbf7d0;--error-color: #dc2626;--error-bg: #fef2f2;--animation-duration: .28s;--animation-easing: ease;--spacing-xs: 4px;--spacing-sm: 8px;--spacing-md: 16px;--spacing-lg: 24px;--spacing-xl: 32px;--radius-sm: 8px;--radius-md: 10px;--radius-lg: 16px;--radius-full: 999px;--shadow-sm: 0 2px 6px rgba(17, 17, 17, .08);--shadow-md: 0 10px 24px rgba(17, 17, 17, .12);--shadow-xl: 0 24px 70px rgba(17, 17, 17, .2);--font-family: Inter, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;--controls-height: 92px;--camera-controls-height: 102px;--z-base: 1;--z-step: 10;--z-controls: 100;--z-overlay: 999;--z-modal: 9999}*{box-sizing:border-box;margin:0;padding:0;font-family:var(--font-family);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}html,body{width:100%;height:100%;overflow:hidden}body{background:var(--background-color);color:var(--text-color);line-height:1.5;letter-spacing:0}button,input{font:inherit}button{-webkit-tap-highlight-color:transparent}[hidden]{display:none!important}strong{color:var(--text-color);font-weight:700}.container{width:100%;max-width:100%;height:100vh;height:100dvh;margin:0 auto;position:relative;overflow:hidden;background:var(--background-color)}.main-content{position:relative;width:100%;height:calc(100vh - var(--controls-height));height:calc(100dvh - var(--controls-height));overflow:hidden;background:var(--background-color)}body.step-camera .main-content{height:calc(100vh - var(--camera-controls-height));height:calc(100dvh - var(--camera-controls-height))}body.step-processing .main-content,body.step-result .main-content{height:100vh;height:100dvh}.text-error{color:var(--error-color);font-weight:700}.text-success{color:var(--success-color);font-weight:700}.text-badge{color:var(--text-color);font-weight:700}.global-error{position:fixed;top:12px;left:50%;z-index:var(--z-overlay);width:calc(100% - 40px);max-width:340px;transform:translate(-50%)}.error-message{display:none;width:min(100%,340px);margin:12px auto;padding:10px 12px;border:1px solid #fecaca;border-radius:var(--radius-md);background:var(--error-bg);color:var(--error-color);font-size:13px;line-height:1.4;text-align:center}.reuse-measurement,.file-input{display:none}.btn,.link-button{border:0;cursor:pointer;letter-spacing:0}.btn{display:inline-flex;align-items:center;justify-content:center;min-height:44px;padding:12px 18px;border-radius:14px;background:var(--primary-color);color:#fff;font-size:15px;font-weight:750;line-height:1.2;text-align:center;transition:opacity .15s ease,transform .15s ease}.btn:hover{opacity:.86}.btn:active{transform:scale(.98)}.btn:disabled{cursor:not-allowed;opacity:.45}.btn-primary{width:100%;max-width:420px;min-height:52px}.btn-permission{gap:8px;min-height:46px;padding:12px 16px;border:1px solid rgba(220,38,38,.22);border-radius:var(--radius-full);background:var(--error-color);color:#fff;box-shadow:0 8px 20px #dc262633}.btn-permission svg{width:18px;height:18px;flex:0 0 18px}.btn-permission span{min-width:0;overflow-wrap:anywhere}.btn-permission:hover{opacity:1;transform:translateY(-1px)}.btn-permission:active{transform:scale(.98)}.btn-permission:focus-visible{outline:3px solid rgba(220,38,38,.22);outline-offset:3px}.link-button{display:inline-flex;align-items:center;justify-content:center;align-self:center;padding:8px 0;background:transparent;color:var(--text-secondary);font-size:13px;font-weight:550;line-height:1.3;text-decoration:underline;text-decoration-color:#d1d5db;text-underline-offset:3px}.reuse-link{margin-top:12px}.controls{position:fixed;right:0;bottom:0;left:0;z-index:var(--z-controls);display:flex;align-items:center;justify-content:center;width:100%;height:var(--controls-height);padding:16px 20px calc(20px + env(safe-area-inset-bottom,0px));background:var(--background-color)}body.step-processing .controls,body.step-result .controls{display:none}body.step-camera .controls{height:var(--camera-controls-height);padding:14px 20px calc(20px + env(safe-area-inset-bottom,0px));justify-content:flex-start;border-top:1px solid var(--border-color);background:var(--background-color);box-shadow:0 -2px 10px #1111110f}body.step-camera #btn-next{display:none!important}body.step-camera .btn-permission{margin-left:10px;max-width:calc(100vw - 82px);min-height:40px;padding:10px 14px;font-size:14px}.camera-back{width:40px;height:40px;min-height:40px;padding:0;border-radius:var(--radius-full);background:var(--surface-color);color:var(--text-color)}.capture-button{display:flex;align-items:center;justify-content:center;width:64px;height:64px;border:4px solid #d1d5db;border-radius:50%;background:transparent;cursor:pointer;transition:border-color .15s ease,transform .15s ease,opacity .15s ease}.capture-button.aligned{border-color:var(--primary-color)}.capture-button.disabled{opacity:.55}.capture-button:active{transform:scale(.96)}.inner-circle{display:flex;align-items:center;justify-content:center;width:50px;height:50px;border-radius:50%;background:var(--primary-color)}.camera-icon{display:block;width:24px;height:24px;object-fit:contain;filter:invert(1)}body.step-camera .controls .capture-button{position:absolute;left:50%;bottom:calc(14px + env(safe-area-inset-bottom,0px));transform:translate(-50%)}.btn-cart{width:100%;min-height:52px;margin-top:auto;padding:15px 20px;gap:8px;border-radius:14px;background:var(--primary-color);color:#fff}.btn-cart svg{flex-shrink:0}.result-action{width:100%;margin-top:12px}.result-restart{margin-top:10px}.step-container{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;width:100%;height:100%;overflow:hidden;background:var(--background-color);visibility:hidden;opacity:0;transform:translate(100%);transition:opacity var(--animation-duration) var(--animation-easing),transform var(--animation-duration) var(--animation-easing);z-index:var(--z-base);pointer-events:none;will-change:transform,opacity}.step-container.active{visibility:visible;opacity:1;transform:translate(0);z-index:var(--z-step);pointer-events:auto}.step-container.previous,.step-container.pre-enter-left{transform:translate(-100%)}.step-container.pre-enter-right{transform:translate(100%)}.intro-step{justify-content:flex-start}.intro-hero{position:relative;height:55%;min-height:300px;overflow:hidden;flex-shrink:0}.intro-hero img{display:block;width:100%;height:100%;object-fit:cover}.intro-fade{position:absolute;right:0;bottom:0;left:0;height:90px;background:linear-gradient(to bottom,#fff0,#fff)}.intro-close{position:absolute;top:16px;right:16px;background:#ffffffdb;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.intro-content{display:flex;flex:1;min-height:0;flex-direction:column;padding:4px 24px 24px}.intro-title{margin-bottom:10px;color:var(--text-color);font-size:26px;font-weight:900;line-height:1.1;letter-spacing:0}.intro-pills{display:flex;flex-wrap:wrap;gap:8px;justify-content:center;margin-bottom:auto}.intro-pill{display:inline-flex;align-items:center;gap:6px;min-height:30px;padding:6px 11px 6px 8px;border:1px solid rgba(17,17,17,.06);border-radius:var(--radius-full);background:#f4f5f6;color:#374151;font-size:12px;font-weight:700;line-height:1.2}.intro-pill-icon{width:16px;height:16px;flex:0 0 auto;color:var(--text-color)}.instruction-step{padding:0 20px 24px}.step-nav{display:flex;align-items:center;justify-content:space-between;height:48px;margin-bottom:4px;flex-shrink:0}.nav-back,.nav-close{display:inline-flex;align-items:center;justify-content:center;width:34px;height:34px;border:0;border-radius:var(--radius-full);background:transparent;color:var(--text-color);cursor:pointer}.nav-close{color:var(--text-secondary)}.step-counter{color:var(--text-secondary);font-size:12px;font-weight:650}.step-photo{display:block;width:100%;height:min(250px,34dvh);margin-bottom:20px;flex-shrink:0;border-radius:var(--radius-lg);background:#f3f4f6;object-fit:cover;overflow:hidden}.progress-dots{display:flex;justify-content:center;gap:6px;height:8px;margin-bottom:16px;flex-shrink:0}.progress-dots span{display:block;width:6px;height:4px;border-radius:var(--radius-full);background:#d1d5db;transition:width .25s ease,background .25s ease}.progress-dots span.active{width:20px;background:var(--primary-color)}.instruction-copy{flex:1;min-height:0;overflow-y:auto;padding-bottom:8px}.instruction-copy h2{margin-bottom:10px;color:var(--text-color);font-size:24px;font-weight:800;line-height:1.15;letter-spacing:0}.instruction-copy p{color:var(--text-secondary);font-size:14px;line-height:1.6}.paper-formats{margin-top:14px}.paper-formats-label{margin-bottom:8px;color:var(--text-muted);font-size:11px;font-weight:800;line-height:1;letter-spacing:.06em;text-transform:uppercase}.paper-format-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.paper-format-card{position:relative;min-width:0;padding:10px 12px;border:1.5px solid var(--border-color);border-radius:var(--radius-md);background:var(--surface-color);text-align:center;cursor:pointer;transition:border-color var(--animation-duration) var(--animation-easing),background-color var(--animation-duration) var(--animation-easing),box-shadow var(--animation-duration) var(--animation-easing)}.paper-format-card input[type=radio]{position:absolute;opacity:0;top:0;right:0;bottom:0;left:0;width:100%;height:100%;margin:0;cursor:pointer}.paper-format-card.is-selected{border-color:var(--primary-color);background:var(--background-color);box-shadow:var(--shadow-sm)}.paper-format-card.is-focused{outline:2px solid var(--primary-color);outline-offset:2px}.paper-format-card strong,.paper-format-card span{display:block}.paper-format-card strong{color:var(--text-color);font-size:13px;font-weight:800}.paper-format-card span{margin-top:2px;color:var(--text-secondary);font-size:10px}@keyframes fadeInUp{0%{opacity:0;transform:translate3d(0,18px,0)}to{opacity:1;transform:translateZ(0)}}.fade-in-up{animation:fadeInUp .45s ease}.delay-1{animation-delay:.08s}.delay-2{animation-delay:.16s}.delay-3{animation-delay:.24s}.delay-4{animation-delay:.32s}body.step-camera .main-content{height:calc(100vh - 70px);height:calc(100dvh - 70px)}.camera-step{align-items:center;justify-content:center;padding:1vh 2vw;background:var(--background-color)}.camera-step.camera-error-state{justify-content:flex-start;padding-top:clamp(24px,8vh,72px)}.camera-step .instructions-container{width:100%;max-width:100%;margin-bottom:1vh;text-align:center}.camera-step .instruction-title{margin-bottom:1vh;color:var(--text-color);font-size:18px;font-weight:750;line-height:1.2}.camera-step .instruction-description{margin-bottom:1vh;padding:0 2vw;color:var(--text-secondary);font-size:clamp(13px,3vw,15px);line-height:1.4}.camera-container{position:relative;width:90%;max-width:95vw;max-height:60vh;aspect-ratio:1 / 1.414;margin:0 auto;padding:15px;border-radius:var(--radius-lg);background:var(--surface-color);box-shadow:0 10px 30px #11111129;overflow:hidden}.camera-view-container{position:relative;width:100%;height:100%;overflow:hidden;border:2px solid var(--border-color);border-radius:10px;background:#111;transform:translateZ(0);will-change:transform}#camera-view,#captured-image{position:relative;z-index:var(--z-base);width:100%;height:100%;object-fit:cover}.camera-overlay{position:absolute;top:0;left:0;z-index:var(--z-overlay);display:flex;width:100%;height:100%;flex-direction:column;align-items:center;justify-content:center;background-color:#0003;pointer-events:none;transform:translateZ(0);will-change:transform}.capture-finalizing-overlay{position:absolute;top:0;right:0;bottom:0;left:0;z-index:calc(var(--z-overlay) + 1);display:none;flex-direction:column;align-items:center;justify-content:center;padding:24px;background:#11111180;color:#fff;text-align:center;pointer-events:none}.capture-finalizing-overlay .loading-spinner{width:54px;height:54px;margin-bottom:16px;border-color:#ffffff52;border-top-color:#fff}.capture-finalizing-overlay .loading-title{margin:0;color:#fff;text-shadow:0 1px 2px rgba(0,0,0,.35)}body.step-camera.camera-finalizing .camera-overlay{display:none}body.step-camera.camera-finalizing .capture-finalizing-overlay{display:flex}body.step-camera.camera-finalizing .controls{display:none}body.step-camera.camera-finalizing .main-content{height:100vh;height:100dvh}.camera-guide{position:relative;height:56%;aspect-ratio:1 / var(--paper-height-over-width, 1.414);border:0}.camera-guide-svg{position:absolute;top:0;right:0;bottom:0;left:0;display:block;width:100%;height:100%;overflow:visible}.camera-guide-outline{fill:none;stroke:#f59e0b;stroke-width:2;stroke-dasharray:5 4;stroke-linejoin:round;transition:stroke .2s ease,stroke-dasharray .2s ease,stroke-width .2s ease,filter .2s ease;vector-effect:non-scaling-stroke}.camera-guide-tolerance{fill:none;stroke:#f59e0b33;stroke-width:10;stroke-linejoin:round;transition:stroke .2s ease;vector-effect:non-scaling-stroke}.camera-guide.paper-misaligned .camera-guide-outline{stroke:#f59e0b;filter:drop-shadow(0 0 5px rgba(245,158,11,.38))}.camera-guide.paper-misaligned .camera-guide-tolerance{stroke:#f59e0b2e}.camera-guide.paper-aligned .camera-guide-outline{stroke:var(--success-color);stroke-width:3;stroke-dasharray:none;filter:drop-shadow(0 0 6px rgba(34,197,94,.45))}.camera-guide.paper-aligned .camera-guide-tolerance{stroke:#22c55e33}.camera-guide-status{position:absolute;top:calc(78% + 10px);left:50%;max-width:min(82%,320px);min-height:32px;padding:7px 11px;border-radius:var(--radius-full);background:#111111a8;color:#fff;font-size:12px;font-weight:600;line-height:1.25;text-align:center;text-wrap:balance;transform:translate(-50%);-webkit-backdrop-filter:saturate(140%) blur(8px);backdrop-filter:saturate(140%) blur(8px);box-shadow:0 6px 18px #00000038}.camera-guide-status:empty{display:none}.camera-guide-status.warn{color:#fde68a}.camera-guide-status.ok{color:#bbf7d0}.tilt-badge{position:absolute;bottom:10px;left:50%;display:none;align-items:center;gap:8px;padding:6px 10px;border:1px solid rgba(255,255,255,.08);border-radius:var(--radius-full);background:#1111119e;color:#fff;font-size:12px;line-height:1.2;box-shadow:0 6px 18px #00000040;transform:translate(-50%);-webkit-backdrop-filter:saturate(140%) blur(8px);backdrop-filter:saturate(140%) blur(8px)}.tilt-badge.ok{background:#16a34ae0}.tilt-badge.warn{background:#dc2626e0}.tilt-badge .separator{opacity:.7}.tilt-badge .tilt-info{display:inline-flex;align-items:center;gap:6px}.tilt-dial{--angle: 0deg;--progress: 0deg;--dial-size: 22px;--dial-color: var(--success-color);position:relative;display:grid;width:var(--dial-size);height:var(--dial-size);place-items:center}.tilt-dial-ring{position:relative;width:100%;height:100%;border-radius:50%;background:conic-gradient(from -90deg,var(--dial-color) 0deg,var(--dial-color) var(--progress),rgba(255,255,255,.15) var(--progress));transition:background .2s ease}.tilt-dial-center{position:absolute;width:calc(var(--dial-size) - 6px);height:calc(var(--dial-size) - 6px);border-radius:50%;background:#0000008c;box-shadow:inset 0 0 0 1px #ffffff0f}body.step-camera .controls{height:55px;padding:8px;justify-content:flex-start;background-color:var(--background-color);box-shadow:0 -2px 8px #1111111f;overflow:visible}body.step-camera.camera-capture-visible .controls:before{content:"";position:absolute;top:-28px;left:50%;z-index:-1;width:84px;height:42px;border-top-left-radius:42px;border-top-right-radius:42px;background-color:var(--background-color);box-shadow:0 -4px 6px #11111114;transform:translate(-50%)}body.step-camera .camera-back{width:40px;height:40px;min-height:40px;padding:0;border:1px solid var(--border-color);border-radius:var(--radius-full);background:var(--surface-color);color:var(--text-color)}body.step-camera .controls .capture-button{position:absolute;left:50%;bottom:10px;width:60px;height:60px;border:4px solid rgba(17,17,17,.25);border-radius:50%;background-color:transparent;box-shadow:0 4px 15px #1113;transform:translate(-50%)}body.step-camera .controls .capture-button.aligned{border-color:var(--primary-color);transform:translate(-50%) scale(1.05)}body.step-camera .controls .capture-button:active{transform:translate(-50%) scale(.96)}body.step-camera .inner-circle{position:relative;display:flex;align-items:center;justify-content:center;width:48px;height:48px;border:none;border-radius:50%;background:#11111129;transition:all .2s ease}body.step-camera .capture-button.aligned .inner-circle,body.step-camera .capture-button:not(.disabled) .inner-circle{background:var(--primary-color);opacity:1}body.step-camera .camera-icon{display:block;width:24px;height:24px;object-fit:contain;filter:invert(1);transition:filter .2s ease}body.step-camera .capture-button.disabled .inner-circle{background:#d1d5db;opacity:.5}body.step-camera .capture-button.disabled .camera-icon{opacity:.6;filter:invert(.45)}@media (min-width: 768px){.camera-container{max-width:500px;max-height:707px;height:60vh}}@media (min-width: 1024px){.camera-container{max-width:600px;max-height:848px;height:65vh}}@media (max-height: 500px){.camera-container{max-height:50vh}.camera-guide{height:56%}}#step6 #camera-error{position:absolute;top:0;left:50%;z-index:calc(var(--z-overlay) + 1);width:calc(100% - 40px);max-width:320px;margin-top:10px;transform:translate(-50%)}#step6.camera-error-state #camera-error{position:static;width:min(100%,340px);margin:16px auto 0;transform:none}.processing-step,.result-step{padding:24px 20px}.loading-container{display:flex;flex:1;flex-direction:column;align-items:center;justify-content:center;width:100%;height:100%;text-align:center}.loading-spinner{width:64px;height:64px;margin-bottom:24px;border:3px solid #e5e7eb;border-top-color:var(--primary-color);border-radius:50%;animation:spin .9s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.loading-title{margin-bottom:8px;color:var(--text-color);font-size:17px;font-weight:800}.loading-subtitle{color:var(--text-secondary);font-size:13px;line-height:1.6}.result-container{display:flex;flex:1;flex-direction:column;align-items:center;justify-content:center;width:100%;height:100%;max-width:420px;margin:0 auto;text-align:center}.result-container.success-view{justify-content:flex-start;padding-top:min(12vh,96px)}.result-animation{position:relative;width:72px;height:72px;margin:0 auto 18px;flex-shrink:0}.result-animation .checkmark,.result-animation .crossmark,.result-animation .infomark{display:none}.result-animation.success .checkmark,.result-animation.error .crossmark,.result-animation.neutral .infomark{display:block}.checkmark,.crossmark,.infomark{width:72px;height:72px;border-radius:50%;stroke-width:2;stroke-miterlimit:10}.checkmark{stroke:var(--success-color);background:var(--success-bg);box-shadow:inset 0 0 0 2px var(--success-border)}.crossmark{stroke:var(--error-color);background:var(--error-bg);box-shadow:inset 0 0 0 2px #fecaca}.infomark{stroke:var(--text-secondary);background:var(--surface-color);box-shadow:inset 0 0 0 2px var(--border-color)}.checkmark__circle,.crossmark__circle,.infomark__circle{display:none}.checkmark__check,.crossmark__cross,.infomark__i{stroke-linecap:round;stroke-linejoin:round}.result-title{margin-bottom:16px;color:var(--text-secondary);font-size:18px;font-weight:650;line-height:1.4}.size-display{width:100%;margin:0 0 22px;text-align:center}.size-badge{display:inline-flex;align-items:center;justify-content:center;width:178px;height:178px;margin:0 auto 14px;padding:0 8px;border:4px solid var(--primary-color);border-radius:50%;background:transparent;color:var(--text-color);font-size:80px;font-weight:850;line-height:1;letter-spacing:0;box-shadow:none;white-space:nowrap;box-sizing:border-box}.size-badge:after{content:"";position:absolute;display:none}.size-label{color:var(--text-secondary);font-size:14px;line-height:1.3}.size-variants{display:none;justify-content:center;gap:12px;width:100%;margin:0 auto 12px}.variant-chip{display:none;flex:0 1 108px;flex-direction:row;align-items:center;justify-content:center;gap:6px;min-width:0;padding:10px 14px;border:1px solid var(--border-color);border-radius:var(--radius-full);background:var(--surface-color)}.variant-tag{color:var(--text-muted);font-size:11px;font-weight:800;line-height:1;text-transform:uppercase}.variant-value{color:var(--text-color);font-size:16px;font-weight:800;line-height:1.1}.size-brand{display:none}.measurement-summary{display:none;width:100%;margin-bottom:24px;padding:14px 20px;border:1px solid var(--border-color);border-radius:12px;background:var(--surface-color)}.measurement-card{display:flex;flex:1;min-width:0;flex-direction:column;align-items:center;justify-content:center;gap:4px;text-align:center}.measurement-card+.measurement-card{border-left:1px solid var(--border-color)}.measurement-card span{color:var(--text-secondary);font-size:11px;line-height:1.2}.measurement-card strong{color:var(--text-color);font-size:15px;font-weight:800;line-height:1.2}#result-error{margin-top:12px}.success-view .result-animation{display:none}.success-view .result-title{margin-bottom:18px;font-size:16px;font-weight:500}#desktop-blocker{position:fixed;top:0;right:0;bottom:0;left:0;z-index:var(--z-modal);display:none;align-items:center;justify-content:center;padding:24px;background:#111111b8}html.desktop-device #desktop-blocker,body.desktop-blocked #desktop-blocker{display:flex}html.desktop-device .main-content,html.desktop-device .controls,body.desktop-blocked .main-content,body.desktop-blocked .controls{display:none}.desktop-blocker-card{width:min(520px,90vw);padding:26px;border-radius:var(--radius-lg);background:#fff;color:var(--text-color);text-align:center;box-shadow:var(--shadow-xl)}.desktop-blocker-card h2{margin-bottom:8px;color:var(--text-color);font-size:22px;font-weight:850;line-height:1.2}.desktop-blocker-card p{margin-bottom:16px;color:var(--text-secondary);font-size:14px;line-height:1.5}#desktop-qr{display:block;width:min(280px,70vw);height:auto;margin:0 auto 8px}@media (max-height: 700px){:root{--controls-height: 82px;--camera-controls-height: 92px}.intro-hero{min-height:230px}.intro-title{font-size:23px}.step-photo{height:min(218px,31dvh);margin-bottom:14px}.instruction-copy h2{font-size:22px}.instruction-copy p{font-size:13px;line-height:1.5}.paper-formats{margin-top:10px}.size-badge{font-size:68px}.result-container.success-view{padding-top:64px}}@media (max-height: 580px){.intro-hero{min-height:190px}.intro-pills{margin-bottom:8px}.step-nav{height:42px}.step-photo{height:min(170px,29dvh)}.progress-dots{margin-bottom:10px}.paper-format-card{padding:8px}.result-container.success-view{padding-top:32px}}@media (max-width: 340px){.instruction-step{padding-right:16px;padding-left:16px}.intro-content{padding-right:20px;padding-left:20px}.intro-pills span{font-size:10px}.paper-format-grid{gap:6px}.controls{padding-right:16px;padding-left:16px}}@media (min-width: 480px){.container,body.step-camera .container{max-width:430px}}
