/* Django interaction contracts. Approved V13 owns all storefront geometry. */
:root{--accent:#057b59;--accent-strong:#05654b;--modern-radius:14px;--z-sticky:100;--z-dropdown:200;--z-popover:300;--z-header:400;--z-backdrop:500;--z-dialog:600;--z-sheet:700;--z-command:800;--z-toast:900}
body.tm-storefront{display:flex;flex-direction:column;min-height:100vh;min-height:100dvh}
body.tm-storefront>main{flex:1 0 auto;min-height:0}
body.tm-storefront>.topline,body.tm-storefront>.site-header,body.tm-storefront>.footer{flex:0 0 auto}
/* Integer battery frame/inset; percentage width is measured inside its track. */
.tm-storefront .battery-health>.battery-meter{box-sizing:border-box;height:14px;border-width:1px;padding:2px;border-radius:3px;line-height:0;flex-shrink:0}
.tm-storefront .purchase-panel>.battery-health .battery-meter{height:18px}
.tm-storefront .battery-health>.battery-meter::after{box-sizing:border-box;top:50%;right:-3px;width:2px;height:6px;margin:0;padding:0;border:0;border-radius:0 1px 1px 0;transform:translateY(-50%)}
.battery-meter>.battery-track{display:block;width:100%;height:100%;min-width:0;overflow:hidden;border-radius:1px;line-height:0}
.battery-meter>.battery-track>i{display:block;box-sizing:border-box;height:100%;min-width:0;max-width:100%;margin:0;line-height:0}
body.tm-storefront .container{max-width:none;min-width:0}
/* Restore the native heading weight that Tailwind's reset removes in V13. */
h1,h2,h3{font-weight:700}
.icon{fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}
.hidden,[hidden]{display:none!important}
.visually-hidden{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.ui-icon{display:block;width:23px;height:23px;flex-shrink:0;fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.8}
.ui-icon--nav{width:24px;height:24px}.ui-icon--mobile-nav{width:22px;height:22px}.ui-icon--lg{width:28px;height:28px}
.skip-link{position:fixed;left:16px;top:12px;z-index:1000;transform:translateY(-180%);padding:12px 18px;border-radius:10px;background:var(--navy);color:white}
.skip-link:focus{transform:translateY(0)}
.profile-dropdown{position:relative}
.profile-dropdown-menu{position:absolute;right:0;top:100%;min-width:185px;z-index:var(--z-dropdown);padding:8px;border:1px solid var(--line);border-radius:12px;background:white;box-shadow:0 8px 25px #112a3b20;opacity:0;visibility:hidden;transform:translateY(6px);transition:.15s}
.profile-dropdown:hover .profile-dropdown-menu,.profile-dropdown:focus-within .profile-dropdown-menu{opacity:1;visibility:visible;transform:none}
.profile-dropdown-menu a,.profile-dropdown-menu button{display:block;width:100%;padding:10px 12px;text-align:left;border-radius:7px;font-size:13px;color:var(--ink)}
.profile-dropdown-menu a:hover,.profile-dropdown-menu button:hover{background:var(--paper)}
.account-mobile{display:none}.account-desktop{display:block}
.hero-raster picture,.hero-raster picture img,.hero-raster>img{display:block;width:100%;height:100%;object-fit:cover}
.search>.ux-search-field{position:relative;display:flex;align-items:center;min-width:0;flex:1 1 auto;height:100%}
.ux-search-field>input{width:100%}.ux-search-field>input.has-ux-clear{padding-inline-end:32px}
.search .ux-search-clear,.ux-search-clear{position:absolute;right:3px;top:50%;transform:translateY(-50%);display:grid;place-items:center;width:28px;height:28px;min-width:0;min-height:0;padding:0;border:0;border-radius:7px;background:transparent;color:var(--muted);font-size:20px;line-height:1}
.search .ux-search-clear:hover,.ux-search-clear:hover{background:#e1efe7;color:var(--green)}
.ux-secret-field{position:relative;display:block}.ux-secret-field>input{width:100%;padding-inline-end:88px}
.ux-secret-toggle{position:absolute;right:8px;top:50%;transform:translateY(-50%);min-height:35px;padding:4px 8px;border-radius:7px;background:#e1efe7;color:var(--green);font-size:12px;font-weight:650}
.ux-field-error{margin:7px 0 0;color:#b91c1c;font-size:12px;font-weight:600;line-height:1.45}
[aria-invalid=true]{border-color:#b91c1c!important}
[data-toast-container]{z-index:var(--z-toast)!important;pointer-events:none}
.toast[data-toast]{position:relative;inset:auto;display:block;width:auto;max-width:none;padding:12px 16px;opacity:1;transform:none;pointer-events:auto;--toast-accent:var(--green);--toast-duration:4500ms;animation:toastIn .25s ease-out both}
.toast[data-toast-type*=success]{--toast-accent:#15803d}.toast[data-toast-type*=info]{--toast-accent:#0284c7}.toast[data-toast-type*=warning]{--toast-accent:#a16207}.toast[data-toast-type*=error]{--toast-accent:#dc2626}
.toast-dot,.toast-progress{background:var(--toast-accent)}.toast-progress{transform-origin:left;animation:toastProgress var(--toast-duration) linear forwards}
.toast[data-toast-state=leaving]{animation:toastOut .2s ease-in forwards}.toast[data-toast-state=leaving] .toast-progress{animation-play-state:paused}
.toast-dismiss{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;flex:0 0 auto;margin:-5px -5px -5px auto;border-radius:50%;background:transparent;color:var(--muted)}
.toast-dismiss:hover{background:var(--paper);color:var(--ink)}
@keyframes toastIn{from{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:none}}
@keyframes toastOut{to{opacity:0;transform:translateY(-6px)}}@keyframes toastProgress{to{transform:scaleX(0)}}
.ux-confirm-layer{position:fixed;inset:0;z-index:var(--z-dialog);display:grid;place-items:center;padding:20px}
.ux-confirm-backdrop{position:absolute;inset:0;z-index:var(--z-backdrop);background:#0b263799;backdrop-filter:blur(3px)}
.ux-confirm-dialog{position:relative;z-index:var(--z-dialog);width:min(100%,496px);max-height:calc(100dvh - 40px);overflow:auto;border:1px solid var(--line);border-radius:16px;background:white;padding:24px;box-shadow:0 28px 80px #112a3b40}
.ux-confirm-eyebrow{font-size:11px;font-weight:750;color:var(--green);text-transform:uppercase;letter-spacing:.08em}.ux-confirm-dialog h2{margin:7px 0 0;font-size:22px;line-height:1.3}.ux-confirm-dialog #ux-confirm-description{margin:13px 0 0;color:var(--muted);font-size:14px;line-height:1.6}
.ux-confirm-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:22px}.ux-confirm-actions button{min-height:44px;padding:9px 16px;border-radius:9px;font-weight:650;font-size:13px}
.ux-confirm-cancel{border:1px solid var(--line);background:white;color:var(--ink)}.ux-confirm-action{background:var(--green);color:white}.ux-confirm-action.is-danger{background:#b91c1c;color:white}
.is-busy{cursor:progress!important;opacity:.7}.ux-selection-count{font-variant-numeric:tabular-nums}
#account-overlay,#filter-overlay{z-index:var(--z-backdrop)!important}#account-sheet,#filter-panel{z-index:var(--z-sheet)!important}
.cart-selection-controls{display:flex;align-items:center;gap:12px;font-size:12px;color:var(--muted)}.cart-selection-controls label{display:flex;align-items:center;gap:7px}.cart-selection-controls button{display:grid;place-items:center;width:32px;height:32px;border:1px solid var(--line);border-radius:8px;background:white}
.cart-item{position:relative}.cart-item-select{position:absolute;top:8px;left:8px;z-index:1;width:18px;height:18px;accent-color:var(--green)}
.cart-stock-warning,.cart-stock-note{margin-top:6px;font-size:12px;line-height:1.4;color:#9f3412}.cart-stock-note{color:var(--muted)}
.cart-selection-empty{font-size:13px;color:var(--muted)}
.cart-remove-form{align-self:flex-start}.device-link{position:relative}
.route-state{width:min(688px,100%);margin:70px auto;padding:32px;border:1px solid var(--line);border-radius:18px;background:white;text-align:center}.route-state__eyebrow{font-size:12px;color:var(--green);font-weight:700}.route-state h1{margin:12px 0;font-size:32px;line-height:1.2}.route-state p{margin:10px auto;color:var(--muted);line-height:1.6;max-width:520px}.route-state__actions{display:flex;flex-wrap:wrap;justify-content:center;gap:10px;margin-top:22px}.route-state__actions a{display:inline-flex;justify-content:center;align-items:center;min-height:44px;padding:10px 17px;border-radius:10px;background:var(--green);color:white;font-size:14px;font-weight:650}
.purchase-form,.favorite-form{margin:0}.purchase-form{min-width:0}.purchase-form>.button{width:100%}
.image-disclosure{position:absolute;left:4px;right:4px;bottom:3px;z-index:1;display:block;width:max-content;max-width:calc(100% - 8px);margin:0 auto;padding:2px 4px;border-radius:3px;background:#ffffffed;color:var(--muted);font-size:10px;line-height:13px;text-align:center;pointer-events:none}
#week .image-disclosure{bottom:52px}
.model-art .image-disclosure,.gallery-main .image-disclosure{display:none}
.cart-selection-controls input{accent-color:var(--green)}
.no-photo{display:grid;place-items:center;background:#fff;color:var(--muted)}
.unit-gallery-track{display:flex;width:100%;height:100%;overflow-x:auto;overflow-y:hidden;scroll-snap-type:x mandatory;scrollbar-width:none}.unit-gallery-track::-webkit-scrollbar{display:none}
.unit-gallery-track>.unit-gallery-slide{display:flex;align-items:center;justify-content:center;flex:0 0 100%;width:100%;height:100%;scroll-snap-align:start}.unit-gallery-track>.unit-gallery-slide img{max-width:100%;max-height:100%;object-fit:contain}
.gallery[data-carousel]{position:relative}.unit-gallery-controls{position:absolute;top:210px;left:12px;right:12px;display:flex;justify-content:space-between;pointer-events:none;transform:translateY(-50%)}.unit-gallery-controls .gallery-nav{display:grid;place-items:center;width:36px;height:36px;border:1px solid var(--line);border-radius:50%;background:#ffffffee;pointer-events:auto}
@media(max-width:1150px){.unit-gallery-controls{top:195px}}@media(max-width:900px){.unit-gallery-controls{top:188px}}@media(max-width:680px){.unit-gallery-controls{top:172.5px}}@media(max-width:370px){.unit-gallery-controls{top:155px}}
@media(max-width:680px){.account-mobile{display:flex}.account-desktop{display:none}.cart-selection-controls{gap:8px;font-size:11px}.ux-confirm-actions{flex-wrap:wrap}.ux-confirm-actions button{flex:1 1 auto}}
@media(prefers-reduced-motion:reduce){.toast[data-toast],.toast[data-toast-state=leaving],.toast-progress{animation-duration:1ms}.profile-dropdown-menu{transition:none}}
