/*
 * Application stylesheet entrypoint.
 *
 * Tailwind was removed with the 1+1 Deals redesign; design.css is now the whole
 * design system. Order matters: design.css first (it carries the reset and the
 * design tokens), then the shim, then project-specific additions.
 *//*
 * 1+1 Deals design system.
 *
 * Extracted verbatim from the design reference app
 * https://oneplusone-deals-shop.patrick474561.chatgpt.site/assets/index-DIGi4Jdq.css
 * (hand-written layer only; the Tailwind v4 layers of that bundle are NOT used).
 *
 * Only reformatting was applied -- declarations are unchanged. Companion files:
 *   design-shim.css  box-model basics for the [data-slot] components
 *   app-extra.css    components that have no counterpart in the reference
 *
 * Breakpoints used throughout: 1450 / 1120 / 880 / 700 (media queries level 4 range syntax).
 */
:root {
    color-scheme:light;
    --navy:#07066f;
    --navy-deep:#04044f;
    --sky:#42b8e8;
    --sky-light:#e9f8fe;
    --background:#fff;
    --foreground:#171839;
    --card:#fff;
    --card-foreground:#171839;
    --popover:#fff;
    --popover-foreground:#171839;
    --primary:#07066f;
    --primary-foreground:#fff;
    --secondary:#e9f8fe;
    --secondary-foreground:#07066f;
    --muted:#f3f7fa;
    --muted-foreground:#5c6176;
    --accent:#e9f8fe;
    --accent-foreground:#07066f;
    --destructive:#b12c3b;
    --border:#dce4ed;
    --input:#bac8d7;
    --ring:#2181b9;
    --radius:.75rem
}
* {
    box-sizing:border-box
}
html {
    scroll-behavior:smooth;
    scroll-padding-top:30px
}
body {
    background:var(--background);
    color:var(--foreground);
    -webkit-font-smoothing:antialiased;
    margin:0;
    font-family:Arial,Helvetica,sans-serif
}
button,
input {
    font:inherit
}
button,
a {
    -webkit-tap-highlight-color:transparent
}
button {
    cursor:pointer
}
button:disabled {
    cursor:not-allowed
}
a {
    color:inherit;
    text-decoration:none
}
button,
a,
input {
    touch-action:manipulation
}
:focus-visible {
    outline:3px solid var(--ring);
    outline-offset:4px
}
h1:focus {
    outline:none
}
p,
h1,
h2,
h3 {
    margin:0
}
svg {
    flex-shrink:0
}
.shell {
    width:min(1240px,100% - 80px);
    margin:0 auto
}
.skip-link {
    z-index:100;
    color:var(--navy);
    background:#fff;
    padding:12px 20px;
    position:fixed;
    top:-60px;
    left:20px
}
.skip-link:focus {
    top:10px
}
.announcement {
    background:var(--navy);
    color:#fff;
    letter-spacing:.015em;
    justify-content:space-between;
    gap:16px;
    min-height:38px;
    padding:9px max(40px,50vw - 620px);
    font-size:.875rem;
    display:flex
}
.announcement>span {
    align-items:center;
    gap:7px;
    display:flex
}
.announcement strong {
    font-weight:700
}
.announcement-right {
    opacity:.78
}
.site-header {
    border-bottom:1px solid var(--border);
    align-items:center;
    gap:28px;
    min-height:114px;
    display:flex
}
.brand {
    background:0 0;
    border:0;
    flex-shrink:0;
    align-items:center;
    gap:20px;
    padding:0;
    display:flex
}
.brand img {
    -o-object-fit:contain;
       object-fit:contain;
    width:82px;
    height:82px
}
.brand-divider {
    background:var(--border);
    width:1px;
    height:29px
}
.shop-label {
    color:var(--navy);
    letter-spacing:-.03em;
    font-size:1.1875rem;
    font-weight:700
}
.site-header nav {
    color:var(--muted-foreground);
    flex:1;
    justify-content:flex-end;
    align-items:center;
    gap:26px;
    font-size:.875rem;
    display:flex
}
.site-header nav button {
    background:0 0;
    border:0;
    padding:12px 0
}
.site-header nav a:hover,
.site-header nav button:hover {
    color:var(--navy)
}
.website-link {
    align-items:center;
    gap:3px;
    display:flex
}
.cart-toggle {
    border:1px solid var(--border);
    color:var(--navy);
    background:#fff;
    border-radius:9px;
    align-items:center;
    gap:10px;
    padding:12px 16px;
    font-size:.875rem;
    font-weight:700;
    transition:border-color .2s,background .2s;
    display:flex
}
.cart-toggle:hover {
    border-color:var(--navy);
    background:var(--sky-light)
}
.cart-count {
    color:#fff;
    background:var(--navy);
    border-radius:50%;
    place-items:center;
    width:23px;
    height:23px;
    font-size:.75rem;
    display:grid
}
.shop-section {
    padding-top:45px;
    padding-bottom:68px
}
.shop-intro {
    justify-content:space-between;
    align-items:flex-end;
    gap:28px;
    margin-bottom:32px;
    display:flex
}
.eyebrow {
    color:var(--navy);
    letter-spacing:.14em;
    font-size:.75rem;
    font-weight:800;
    line-height:1.6
}
h1 {
    color:var(--navy);
    letter-spacing:-.045em;
    font-size:clamp(2rem,3.4vw,2.8rem);
    font-weight:750;
    line-height:1.12
}
.shop-intro h1 {
    margin-top:11px
}
.shop-intro h1 span {
    font-weight:400
}
.preview-tag {
    border:1px solid var(--border);
    color:var(--muted-foreground);
    border-radius:5px;
    flex-shrink:0;
    align-self:flex-start;
    margin-top:7px;
    padding:6px 10px;
    font-size:.75rem
}
.shop-grid {
    grid-template-columns:minmax(0,1.25fr) minmax(380px,.85fr);
    align-items:start;
    gap:44px;
    display:grid
}
.product-stage {
    aspect-ratio:1.4;
    background:#e9f8fe;
    border-radius:20px;
    flex-direction:column;
    min-height:430px;
    padding:25px 27px 23px;
    display:flex;
    position:relative;
    overflow:hidden
}
.stage-topline {
    color:var(--navy);
    letter-spacing:.13em;
    z-index:1;
    justify-content:space-between;
    align-items:center;
    gap:12px;
    font-size:.75rem;
    font-weight:700;
    display:flex;
    position:relative
}
.stage-topline>span:first-child {
    align-items:center;
    gap:8px;
    display:flex
}
.stage-topline>span:last-child {
    color:#668298;
    font-weight:400
}
.status-dot {
    background:var(--sky);
    border-radius:50%;
    width:6px;
    height:6px;
    display:block
}
.product-image {
    -o-object-fit:contain;
       object-fit:contain;
    filter:drop-shadow(0 15px 13px #203f5512);
    width:100%;
    height:auto;
    margin:auto;
    padding:15px 0 5px;
    display:block
}
.stage-bottomline {
    color:var(--navy);
    justify-content:space-between;
    align-items:center;
    gap:20px;
    font-size:.875rem;
    display:flex
}
.product-benefits {
    border-bottom:1px solid var(--border);
    grid-template-columns:repeat(3,minmax(0,1fr));
    gap:10px;
    padding:27px 0;
    display:grid
}
.product-benefits>div {
    align-items:flex-start;
    gap:11px;
    display:flex
}
.product-benefits svg {
    width:22px;
    height:22px;
    color:var(--navy);
    stroke-width:1.5px;
    margin-top:2px
}
.product-benefits p {
    flex-direction:column;
    gap:5px;
    display:flex
}
.product-benefits strong {
    color:var(--navy);
    font-size:.875rem
}
.product-benefits span {
    color:var(--muted-foreground);
    font-size:.8125rem
}
.product-description {
    max-width:580px;
    padding-top:25px
}
.product-description p {
    color:var(--muted-foreground);
    font-size:1rem;
    line-height:1.75
}
.product-description a {
    color:var(--navy);
    align-items:center;
    gap:8px;
    margin-top:15px;
    font-size:.875rem;
    font-weight:700;
    display:inline-flex
}
.purchase-panel {
    border:1px solid var(--border);
    background:#fff;
    border-radius:17px;
    padding:8px;
    box-shadow:0 8px 30px #142b4905
}
.purchase-tabs[data-slot=tabs-list] {
    background:#f0f4f7;
    border-radius:10px;
    gap:3px;
    width:100%;
    height:auto;
    min-height:50px;
    padding:5px
}
.purchase-tabs [data-slot=tabs-trigger] {
    color:#5c6176;
    border-radius:7px;
    min-height:40px;
    padding:8px;
    font-size:.875rem;
    font-weight:600
}
.purchase-tabs [data-slot=tabs-trigger][data-state=active] {
    color:var(--navy);
    background:#fff;
    box-shadow:0 2px 6px #1527350d
}
.purchase-tabs [data-slot=tabs-trigger] svg {
    width:17px;
    height:17px
}
.shop-tabs[data-slot=tabs] {
    gap:0
}
.purchase-content {
    padding:28px 23px 18px
}
.purchase-content>.eyebrow {
    letter-spacing:.11em;
    color:#607088;
    font-size:.75rem
}
.purchase-content h2 {
    letter-spacing:-.04em;
    color:var(--navy);
    margin-top:9px;
    font-size:1.75rem;
    font-weight:750;
    line-height:1.15
}
.purchase-subtitle {
    color:var(--muted-foreground);
    margin-top:10px;
    font-size:1rem;
    line-height:1.5
}
.price-line {
    color:var(--navy);
    align-items:center;
    gap:21px;
    margin-top:23px;
    display:flex
}
.main-price {
    letter-spacing:-.06em;
    font-size:3.5rem;
    font-weight:750;
    line-height:1
}
.main-price small {
    letter-spacing:-.04em;
    font-size:1.85rem;
    font-weight:500
}
.price-caption {
    border-left:1px solid var(--border);
    color:var(--muted-foreground);
    padding-left:20px;
    font-size:.8125rem;
    line-height:1.55
}
.price-tax {
    color:var(--muted-foreground);
    margin-top:10px;
    font-size:.75rem
}
.check-list {
    flex-direction:column;
    gap:10px;
    margin:21px 0 20px;
    padding:0;
    list-style:none;
    display:flex
}
.check-list li {
    align-items:flex-start;
    gap:11px;
    font-size:.875rem;
    line-height:1.4;
    display:flex
}
.check-list svg {
    color:#1989ae;
    stroke-width:2.4px;
    width:17px;
    height:17px
}
.buy-controls {
    border-top:1px solid var(--border);
    padding-top:18px
}
.quantity-line {
    justify-content:space-between;
    align-items:center;
    margin-bottom:17px;
    font-size:.875rem;
    font-weight:600;
    display:flex
}
.quantity {
    border:1px solid var(--border);
    border-radius:7px;
    align-items:center;
    width:-webkit-fit-content;
    width:-moz-fit-content;
    width:fit-content;
    height:42px;
    display:flex;
    overflow:hidden
}
.quantity button {
    color:var(--navy);
    background:#fff;
    border:0;
    place-items:center;
    width:40px;
    height:40px;
    display:grid
}
.quantity button:hover:not(:disabled) {
    background:var(--sky-light)
}
.quantity button:disabled {
    color:#aab1bc
}
.quantity output {
    text-align:center;
    min-width:25px;
    color:var(--navy);
    font-size:.9375rem;
    font-weight:600
}
.primary-button[data-slot=button] {
    border:1px solid var(--navy);
    background:var(--navy);
    color:#fff;
    white-space:normal;
    border-radius:8px;
    height:auto;
    min-height:54px;
    padding:15px 20px;
    font-size:.9375rem;
    font-weight:650;
    line-height:1.45;
    transition:background .2s,transform .2s
}
.primary-button[data-slot=button]:hover {
    background:#151487;
    transform:translateY(-1px)
}
.primary-button[data-slot=button]>svg {
    width:20px;
    height:20px
}
.full-button {
    justify-content:space-between;
    width:100%
}
.quantity-total {
    text-align:center;
    color:var(--muted-foreground);
    margin-top:9px;
    font-size:.8125rem
}
.hofer-hint {
    background:#eff9fd;
    border-radius:9px;
    align-items:center;
    gap:12px;
    margin-top:19px;
    padding:17px 12px;
    display:flex
}
.hofer-icon {
    color:#1478aa;
    place-items:center;
    display:grid
}
.hofer-hint strong {
    color:var(--navy);
    font-size:.8125rem;
    font-weight:700;
    line-height:1.5;
    display:block
}
.text-link {
    color:var(--navy);
    background:0 0;
    border:0;
    align-items:center;
    gap:6px;
    padding:0;
    font-size:.875rem;
    font-weight:650;
    line-height:1.5;
    text-decoration:none;
    display:inline-flex
}
.text-link:hover {
    text-underline-offset:4px;
    text-decoration:underline
}
.hofer-hint .text-link {
    margin-top:4px;
    font-size:.8125rem
}
.preview-notice {
    color:var(--muted-foreground);
    border-top:1px solid #edf1f4;
    padding:13px 23px 12px;
    font-size:.75rem;
    line-height:1.55
}
.preview-notice span {
    font-weight:700
}
.partner-label {
    background:var(--sky-light);
    color:var(--navy);
    letter-spacing:.07em;
    border:1px solid #bee7f7;
    border-radius:4px;
    padding:6px 9px;
    font-size:.75rem;
    font-weight:800;
    display:inline-flex
}
.voucher-content h2 {
    margin-top:17px;
    font-size:2rem
}
.activation-copy {
    color:var(--muted-foreground);
    margin-top:18px;
    font-size:1rem;
    line-height:1.65
}
.activation-copy strong {
    color:var(--navy)
}
.coupon-form {
    margin-top:26px
}
.coupon-form label {
    color:var(--navy);
    margin-bottom:9px;
    font-size:.875rem;
    font-weight:700;
    display:block
}
.code-input-row {
    align-items:stretch;
    gap:8px;
    display:flex
}
.code-input-row input {
    border:1px solid var(--input);
    width:100%;
    min-width:0;
    height:49px;
    color:var(--navy);
    border-radius:7px;
    padding:12px;
    font-size:.875rem
}
.code-submit[data-slot=button] {
    border-radius:7px;
    height:auto;
    min-height:49px;
    padding:12px 14px;
    font-size:.875rem
}
.field-help {
    color:var(--muted-foreground);
    margin-top:10px;
    font-size:.8125rem;
    line-height:1.6
}
.field-error {
    color:#b12c3b;
    margin-top:9px;
    font-size:.875rem;
    line-height:1.55
}
input[aria-invalid=true] {
    border-color:#b12c3b
}
.demo-code-button {
    color:var(--navy);
    text-underline-offset:3px;
    background:0 0;
    border:0;
    align-items:center;
    gap:6px;
    padding:9px 0 0;
    font-size:.8125rem;
    text-decoration:underline;
    display:inline-flex
}
.voucher-foot {
    border-top:1px solid var(--border);
    color:var(--muted-foreground);
    align-items:flex-start;
    gap:10px;
    margin-top:25px;
    padding-top:24px;
    font-size:.875rem;
    line-height:1.55;
    display:flex
}
.voucher-foot svg {
    color:var(--navy);
    margin-top:2px
}
.coupon-applied {
    background:#edf8f3;
    border:1px solid #bee2d2;
    border-radius:8px;
    margin-top:22px;
    padding:18px
}
.coupon-success-top {
    color:#155b42;
    align-items:center;
    gap:9px;
    font-size:.875rem;
    display:flex
}
.coupon-applied p {
    color:#346451;
    margin-top:11px;
    font-size:.875rem;
    line-height:1.6
}
.coupon-applied .text-link {
    color:#155b42;
    margin-top:12px;
    font-size:.8125rem
}
.coupon-continue {
    margin-top:16px
}
.how-section {
    border-top:1px solid var(--border);
    padding:48px 0 68px
}
.section-heading h2 {
    color:var(--navy);
    letter-spacing:-.04em;
    margin-top:9px;
    font-size:clamp(1.7rem,2.6vw,2.15rem);
    font-weight:700;
    line-height:1.15
}
.section-heading>p:not(.eyebrow) {
    color:var(--muted-foreground);
    margin-top:13px;
    line-height:1.6
}
.steps-grid {
    grid-template-columns:repeat(3,minmax(0,1fr));
    gap:30px;
    margin-top:32px;
    display:grid
}
.steps-grid article {
    border-top:1px solid var(--border);
    gap:17px;
    padding-top:25px;
    padding-right:15px;
    display:flex;
    position:relative
}
.step-number {
    color:#117cae;
    margin-top:3px;
    font-size:.8125rem;
    font-weight:700
}
.steps-grid h3 {
    color:var(--navy);
    margin-bottom:10px;
    font-size:1.0625rem;
    font-weight:700
}
.steps-grid p {
    color:var(--muted-foreground);
    max-width:285px;
    font-size:1rem;
    line-height:1.65
}
.steps-grid article>svg {
    display:none
}
.experience-band {
    background:var(--navy);
    color:#fff
}
.experience-inner {
    grid-template-columns:1.2fr 1fr;
    align-items:center;
    gap:100px;
    padding:56px 0 60px;
    display:grid
}
.experience-inner .eyebrow {
    color:#70ceef
}
.experience-inner h2 {
    letter-spacing:-.035em;
    margin-top:10px;
    font-size:clamp(1.95rem,3vw,2.65rem);
    font-weight:700;
    line-height:1.12
}
.experience-inner p:not(.eyebrow) {
    color:#cacfe7;
    margin-top:19px;
    font-size:1rem;
    line-height:1.65
}
.light-link {
    border-bottom:1px solid #7477ac;
    align-items:center;
    gap:16px;
    margin-top:24px;
    padding-bottom:7px;
    font-size:.9375rem;
    font-weight:700;
    display:inline-flex
}
.experience-details {
    border-left:1px solid #444785;
    padding-left:50px
}
.experience-details>svg {
    color:var(--sky);
    margin-bottom:20px
}
.experience-details h3 {
    letter-spacing:-.02em;
    font-size:1.45rem;
    font-weight:600;
    line-height:1.25
}
.experience-details p {
    margin-top:12px!important
}
.category-chips {
    flex-wrap:wrap;
    gap:8px;
    margin-top:23px;
    display:flex
}
.category-chips span {
    color:#e4eaf7;
    border:1px solid #575a92;
    border-radius:4px;
    padding:6px 10px;
    font-size:.8125rem
}
.faq-section {
    grid-template-columns:.65fr 1.35fr;
    gap:90px;
    padding:74px 0;
    display:grid
}
.faq-section .section-heading .text-link {
    margin-top:21px
}
.faq-list {
    border-top:1px solid var(--border)
}
.faq-list [data-slot=accordion-trigger] {
    color:var(--navy);
    border-radius:0;
    padding:23px 0;
    font-size:1rem;
    font-weight:600;
    line-height:1.4;
    text-decoration:none
}
.faq-list [data-slot=accordion-trigger]:hover {
    color:#117cae
}
.faq-list [data-slot=accordion-content]>div {
    color:var(--muted-foreground);
    padding:0 24px 23px 0;
    font-size:1rem;
    line-height:1.7
}
footer {
    border-top:1px solid var(--border);
    background:#f6f9fb
}
.footer-main {
    justify-content:space-between;
    align-items:center;
    gap:30px;
    padding:26px 0;
    display:flex
}
.footer-brand {
    align-items:center;
    gap:19px;
    display:flex
}
.footer-brand img {
    -o-object-fit:contain;
       object-fit:contain
}
.footer-brand div {
    flex-direction:column;
    gap:6px;
    display:flex
}
.footer-brand strong {
    color:var(--navy);
    font-size:1rem
}
.footer-brand span {
    color:var(--muted-foreground);
    font-size:.8125rem
}
.footer-main>a {
    color:var(--navy);
    align-items:center;
    gap:10px;
    font-size:.875rem;
    display:flex
}
.footer-bottom {
    border-top:1px solid var(--border);
    color:var(--muted-foreground);
    align-items:center;
    gap:28px;
    padding:21px 0;
    font-size:.75rem;
    display:flex
}
.footer-bottom nav {
    gap:20px;
    font-size:.875rem;
    display:flex
}
.footer-demo {
    margin-left:auto
}
.cart-sheet[data-slot=sheet-content] {
    background:#fff;
    border-left:0;
    gap:0;
    width:min(540px,100vw);
    max-width:540px
}
.cart-sheet-header[data-slot=sheet-header] {
    border-bottom:1px solid var(--border);
    flex-direction:row;
    justify-content:space-between;
    align-items:center;
    padding:31px 30px 25px;
    display:flex
}
.cart-sheet-header .eyebrow {
    color:var(--muted-foreground);
    font-size:.75rem
}
.cart-sheet-header [data-slot=sheet-title] {
    color:var(--navy);
    letter-spacing:-.025em;
    margin-top:4px;
    font-size:1.5rem
}
.cart-sheet-header [data-slot=sheet-title] span {
    color:#788397;
    font-weight:400
}
.icon-button {
    border:1px solid var(--border);
    width:38px;
    height:38px;
    color:var(--navy);
    background:#fff;
    border-radius:50%;
    place-items:center;
    display:grid
}
.cart-sheet-body {
    flex:1;
    min-height:0;
    padding:25px 30px;
    overflow-y:auto
}
.cart-item {
    grid-template-columns:110px 1fr;
    gap:19px;
    display:grid
}
.cart-image {
    background:var(--sky-light);
    border-radius:10px;
    justify-content:center;
    align-items:center;
    height:114px;
    padding:8px;
    display:flex
}
.cart-image img {
    width:100%;
    height:auto
}
.cart-item-info h3 {
    color:var(--navy);
    font-size:1rem;
    font-weight:700
}
.cart-item-info>p {
    color:var(--muted-foreground);
    margin-top:5px;
    font-size:.8125rem;
    line-height:1.5
}
.cart-item-info>strong {
    color:var(--navy);
    margin-top:10px;
    font-size:1rem;
    display:block
}
.cart-item-info>strong span {
    color:var(--muted-foreground);
    font-size:.8125rem;
    font-weight:400
}
.cart-item-actions {
    justify-content:space-between;
    align-items:center;
    gap:12px;
    margin-top:14px;
    display:flex
}
.remove-item {
    color:var(--muted-foreground);
    text-underline-offset:3px;
    background:0 0;
    border:0;
    padding:10px 0;
    font-size:.8125rem;
    text-decoration:underline
}
.cart-coupon {
    border-top:1px solid var(--border);
    margin-top:32px;
    padding-top:27px
}
.cart-coupon h3 {
    color:var(--navy);
    align-items:center;
    gap:9px;
    font-size:.9375rem;
    font-weight:700;
    display:flex
}
.cart-coupon .coupon-form {
    margin-top:19px
}
.cart-coupon .coupon-form label {
    color:var(--muted-foreground);
    font-weight:500
}
.cart-sheet-footer {
    border-top:1px solid var(--border);
    background:#fbfcfe;
    flex-shrink:0;
    padding:25px 30px 19px
}
.order-totals>div {
    color:var(--muted-foreground);
    justify-content:space-between;
    gap:20px;
    margin-bottom:13px;
    font-size:.875rem;
    line-height:1.4;
    display:flex
}
.order-totals>div>span:last-child {
    white-space:nowrap;
    color:var(--foreground)
}
.order-totals .discount-row {
    color:#176a4c;
    font-size:.8125rem
}
.order-totals .discount-row>span:last-child {
    color:#176a4c
}
.order-totals .total-row {
    border-top:1px solid var(--border);
    color:var(--navy);
    margin-top:19px;
    margin-bottom:4px;
    padding-top:18px;
    font-size:1.25rem
}
.tax-note {
    text-align:right;
    color:var(--muted-foreground);
    margin-bottom:22px;
    font-size:.75rem
}
.cart-preview-info {
    text-align:center;
    color:var(--muted-foreground);
    margin-top:10px;
    font-size:.75rem
}
.continue-shopping {
    text-align:center;
    color:var(--navy);
    background:0 0;
    border:0;
    margin:13px auto 0;
    padding:6px;
    font-size:.875rem;
    display:block
}
.empty-cart {
    text-align:center;
    margin:auto 0;
    padding:70px 30px
}
.empty-cart>span {
    background:var(--sky-light);
    width:90px;
    height:90px;
    color:var(--navy);
    border-radius:50%;
    place-items:center;
    margin:0 auto 25px;
    display:grid
}
.empty-cart h3 {
    color:var(--navy);
    letter-spacing:-.03em;
    margin-bottom:12px;
    font-size:1.375rem
}
.empty-cart p {
    color:var(--muted-foreground);
    margin-bottom:25px;
    font-size:1rem;
    line-height:1.6
}
.checkout-section {
    padding:30px 0 80px
}
.back-link {
    color:var(--muted-foreground);
    background:0 0;
    border:0;
    align-items:center;
    gap:5px;
    padding:5px 0;
    font-size:.875rem;
    display:inline-flex
}
.checkout-heading {
    justify-content:space-between;
    align-items:flex-start;
    gap:24px;
    margin-top:25px;
    display:flex
}
.checkout-heading h1 {
    max-width:670px;
    margin-top:10px;
    font-size:clamp(1.85rem,3.5vw,2.6rem)
}
.checkout-steps {
    gap:30px;
    margin:30px 0 34px;
    padding:0;
    list-style:none;
    display:flex
}
.checkout-steps li {
    color:#647284;
    align-items:center;
    gap:9px;
    font-size:.875rem;
    display:flex
}
.checkout-steps li>span {
    background:#fff;
    border:1px solid #cdd7e2;
    border-radius:50%;
    place-items:center;
    width:25px;
    height:25px;
    font-size:.75rem;
    display:grid
}
.checkout-steps li.current {
    color:var(--navy);
    font-weight:700
}
.checkout-steps li.current>span,
.checkout-steps li.finished>span {
    background:var(--navy);
    border-color:var(--navy);
    color:#fff
}
.checkout-grid {
    grid-template-columns:minmax(0,1.5fr) minmax(320px,.85fr);
    align-items:start;
    gap:45px;
    display:grid
}
.checkout-form-panel {
    border:1px solid var(--border);
    border-radius:14px;
    padding:35px
}
.form-section-title {
    color:var(--navy);
    align-items:flex-start;
    gap:15px;
    display:flex
}
.form-section-title svg {
    margin-top:3px
}
.form-section-title h2 {
    letter-spacing:-.03em;
    font-size:1.5rem;
    font-weight:700
}
.form-section-title p {
    color:var(--muted-foreground);
    margin-top:7px;
    font-size:.9375rem;
    line-height:1.55
}
.demo-fill {
    color:var(--muted-foreground);
    background:#f4f8fb;
    border-radius:6px;
    flex-wrap:wrap;
    justify-content:space-between;
    gap:6px 15px;
    margin:24px 0;
    padding:14px;
    font-size:.8125rem;
    display:flex
}
.demo-fill .text-link {
    font-size:.8125rem
}
.form-grid {
    grid-template-columns:repeat(2,minmax(0,1fr));
    gap:21px 19px;
    display:grid
}
.form-field label {
    color:var(--navy);
    margin-bottom:9px;
    font-size:.875rem;
    font-weight:600;
    display:block
}
.form-field label>span {
    color:var(--muted-foreground);
    font-weight:400
}
.form-field input {
    border:1px solid var(--input);
    width:100%;
    height:48px;
    color:var(--foreground);
    background:#fff;
    border-radius:7px;
    padding:12px 13px;
    font-size:1rem;
    display:block
}
.form-field input[aria-invalid=true] {
    border-color:#b12c3b
}
.full-width {
    grid-column:1/-1
}
.form-subheading {
    border-top:1px solid var(--border);
    margin-top:31px;
    margin-bottom:20px;
    padding-top:25px
}
.form-subheading h3 {
    color:var(--navy);
    font-size:1.0625rem;
    font-weight:700
}
.form-subheading p {
    color:var(--muted-foreground);
    margin-top:8px;
    font-size:.875rem;
    line-height:1.55
}
.payment-options {
    gap:12px
}
.payment-option {
    border:1px solid var(--border);
    color:var(--navy);
    cursor:pointer;
    border-radius:8px;
    align-items:center;
    gap:14px;
    padding:17px;
    display:flex
}
.payment-option.selected {
    border-color:var(--navy);
    background:#f7f9fd
}
.payment-option>span {
    flex-direction:column;
    gap:5px;
    display:flex
}
.payment-option strong {
    font-size:.9375rem;
    font-weight:600
}
.payment-option small {
    color:var(--muted-foreground);
    font-size:.8125rem
}
.form-footnote {
    color:var(--muted-foreground);
    margin:25px 0 20px;
    font-size:.8125rem;
    line-height:1.55
}
.free-checkout-note {
    color:#155b42;
    background:#eff8f3;
    border:1px solid #c6e3d7;
    border-radius:8px;
    align-items:flex-start;
    gap:13px;
    margin-top:26px;
    padding:19px;
    display:flex
}
.free-checkout-note strong {
    font-size:.9375rem
}
.free-checkout-note p {
    margin-top:7px;
    font-size:.875rem;
    line-height:1.55
}
.checkout-summary {
    background:#f5f9fc;
    border:1px solid #e8eef3;
    border-radius:14px;
    padding:27px;
    position:-webkit-sticky;
    position:sticky;
    top:25px
}
.checkout-summary>h2 {
    color:var(--navy);
    font-size:1.25rem;
    font-weight:700
}
.summary-product {
    border-bottom:1px solid var(--border);
    align-items:center;
    gap:18px;
    margin:5px 0 17px;
    padding:23px 0;
    display:flex
}
.summary-product img {
    width:98px;
    height:auto
}
.summary-product h3 {
    color:var(--navy);
    font-size:.9375rem;
    font-weight:650
}
.summary-product p {
    color:var(--muted-foreground);
    margin-top:5px;
    font-size:.8125rem;
    line-height:1.45
}
.summary-product span {
    margin-top:9px;
    font-size:.875rem;
    display:block
}
.checkout-summary .text-link {
    font-size:.8125rem
}
.summary-delivery {
    border-top:1px solid var(--border);
    color:var(--navy);
    align-items:center;
    gap:12px;
    margin-top:27px;
    padding-top:22px;
    display:flex
}
.summary-delivery p {
    color:var(--muted-foreground);
    font-size:.875rem;
    line-height:1.6
}
.launch-note {
    color:var(--muted-foreground);
    align-items:center;
    gap:10px;
    margin-top:18px;
    font-size:.8125rem;
    display:flex
}
.review-block {
    border-bottom:1px solid var(--border);
    padding:22px 0
}
.review-label {
    justify-content:space-between;
    align-items:center;
    display:flex
}
.review-block h3 {
    color:var(--navy);
    margin-bottom:9px;
    font-size:.875rem;
    font-weight:700
}
.review-block p {
    color:var(--muted-foreground);
    overflow-wrap:anywhere;
    font-size:1rem;
    line-height:1.65
}
.review-label .text-link {
    font-size:.8125rem
}
.consent-box {
    align-items:flex-start;
    gap:13px;
    margin:27px 0 23px;
    display:flex
}
.consent-box [data-slot=checkbox] {
    border-color:#9bacc0;
    width:20px;
    height:20px;
    margin-top:2px
}
.consent-box label {
    color:var(--muted-foreground);
    cursor:pointer;
    font-size:.875rem;
    line-height:1.7
}
.consent-box a {
    color:var(--navy);
    text-underline-offset:3px;
    text-decoration:underline
}
.simulation-note {
    text-align:center;
    color:var(--muted-foreground);
    margin-top:15px;
    font-size:.8125rem;
    line-height:1.6
}
.complete-section {
    text-align:center;
    max-width:760px;
    padding:65px 0 75px
}
.complete-check {
    color:#17684b;
    background:#eff9f4;
    border:1px solid #bce2d3;
    border-radius:50%;
    place-items:center;
    width:80px;
    height:80px;
    margin:0 auto 25px;
    display:grid
}
.complete-section h1 {
    margin-top:14px
}
.complete-section h1 span {
    font-weight:400
}
.complete-intro {
    max-width:590px;
    color:var(--muted-foreground);
    margin:24px auto 0;
    line-height:1.75
}
.completion-card {
    background:var(--sky-light);
    text-align:left;
    border-radius:15px;
    align-items:center;
    gap:35px;
    margin:29px 0;
    padding:24px;
    display:flex
}
.completion-card>img {
    width:43%;
    height:auto
}
.completion-card h2 {
    color:var(--navy);
    font-size:1.1875rem;
    font-weight:700
}
.completion-card p {
    color:var(--muted-foreground);
    margin-top:8px;
    font-size:.875rem
}
.completion-card strong {
    color:var(--navy);
    margin-top:15px;
    font-size:1.5rem;
    display:block
}
.completion-card div>span {
    color:var(--muted-foreground);
    margin-top:4px;
    font-size:.8125rem;
    display:block
}
.next-step-note {
    text-align:left;
    max-width:560px;
    color:var(--navy);
    gap:13px;
    margin:0 auto 30px;
    display:flex
}
.next-step-note p {
    color:var(--muted-foreground);
    font-size:.9375rem;
    line-height:1.65
}
@media (width>=1450px) {
    .shop-section {
        padding-top:51px
    }
    .shop-intro {
        margin-bottom:37px
    }
    .product-stage {
        min-height:453px
    }
}
@media (width<=1120px) {
    .shell {
        width:calc(100% - 48px)
    }
    .site-header {
        gap:22px
    }
    .site-header nav {
        gap:18px
    }
    .site-header .website-link {
        display:none
    }
    .brand {
        gap:13px
    }
    .shop-grid {
        grid-template-columns:minmax(0,1fr) minmax(365px,.9fr);
        gap:27px
    }
    .product-stage {
        min-height:360px
    }
    .purchase-content {
        padding:25px 19px 18px
    }
    .product-benefits {
        gap:15px
    }
    .product-benefits>div {
        flex-direction:column;
        gap:9px
    }
    .experience-inner {
        gap:60px
    }
    .checkout-grid {
        gap:25px
    }
    .checkout-form-panel {
        padding:25px
    }
    .checkout-summary {
        padding:23px
    }
    .announcement {
        padding-left:24px;
        padding-right:24px
    }
}
@media (width<=880px) {
    .site-header nav button {
        display:none
    }
    .site-header nav .website-link {
        display:flex
    }
    .site-header {
        min-height:100px
    }
    .brand img {
        width:74px;
        height:74px
    }
    .shop-grid {
        grid-template-columns:minmax(0,1fr) minmax(330px,.95fr);
        gap:22px
    }
    .product-stage {
        aspect-ratio:auto;
        min-height:320px;
        padding:19px
    }
    .stage-topline {
        letter-spacing:.03em;
        font-size:.75rem
    }
    .stage-topline>span:last-child {
        display:none
    }
    .stage-bottomline {
        font-size:.8125rem
    }
    .product-benefits {
        grid-template-columns:1fr;
        gap:17px;
        padding:23px 0
    }
    .product-benefits>div {
        flex-direction:row;
        gap:12px
    }
    .product-benefits p {
        flex-flow:wrap;
        align-items:center;
        gap:8px
    }
    .purchase-content {
        padding:23px 15px 16px
    }
    .purchase-content h2 {
        font-size:1.6rem
    }
    .price-line {
        gap:14px
    }
    .price-caption {
        padding-left:14px
    }
    .preview-notice {
        padding:12px 15px
    }
    .steps-grid {
        gap:24px
    }
    .steps-grid article {
        gap:12px;
        padding-right:0
    }
    .experience-inner {
        gap:40px
    }
    .experience-details {
        padding-left:32px
    }
    .faq-section {
        gap:45px
    }
    .footer-bottom {
        flex-wrap:wrap;
        gap:20px
    }
    .footer-demo {
        margin-left:0
    }
    .checkout-grid {
        grid-template-columns:1fr;
        gap:25px
    }
    .checkout-summary {
        position:static
    }
}
@media (width<=700px) {
    .shell {
        width:calc(100% - 36px)
    }
    .announcement {
        justify-content:center;
        padding:9px 18px;
        font-size:.75rem
    }
    .announcement-right {
        display:none!important
    }
    .site-header {
        justify-content:space-between;
        gap:12px;
        min-height:88px
    }
    .brand img {
        width:65px;
        height:65px
    }
    .brand {
        gap:11px
    }
    .brand-divider {
        height:24px
    }
    .shop-label {
        font-size:1rem
    }
    .site-header nav {
        display:none
    }
    .cart-toggle {
        border-color:#0000;
        gap:8px;
        padding:10px
    }
    .cart-label {
        display:none
    }
    .shop-section {
        padding-top:30px;
        padding-bottom:42px
    }
    .shop-intro {
        gap:14px;
        margin-bottom:23px;
        position:relative
    }
    .shop-intro h1 {
        font-size:clamp(1.75rem,6.6vw,2.35rem)
    }
    .shop-intro .eyebrow {
        letter-spacing:.1em;
        padding-right:76px;
        font-size:.75rem
    }
    .shop-intro>.preview-tag {
        margin:0;
        padding:3px 6px;
        font-size:.75rem;
        position:absolute;
        top:-1px;
        right:0
    }
    .shop-grid {
        grid-template-columns:1fr;
        gap:21px
    }
    .product-column {
        display:contents
    }
    .product-stage {
        aspect-ratio:1.55;
        border-radius:13px;
        order:0;
        min-height:0;
        padding:19px
    }
    .product-image {
        width:92%;
        max-width:510px;
        padding:8px 0
    }
    .stage-topline {
        letter-spacing:.05em;
        font-size:.75rem
    }
    .stage-bottomline {
        font-size:.75rem
    }
    .stage-bottomline svg {
        width:18px
    }
    .purchase-panel {
        border-radius:13px;
        order:1
    }
    .product-benefits {
        order:2;
        grid-template-columns:repeat(3,minmax(0,1fr));
        gap:12px;
        padding:7px 0 24px;
        display:grid
    }
    .product-benefits>div {
        flex-direction:column;
        gap:9px
    }
    .product-benefits p {
        flex-direction:column;
        align-items:flex-start;
        gap:5px
    }
    .product-benefits strong {
        font-size:.8125rem
    }
    .product-benefits span {
        font-size:.75rem;
        line-height:1.5
    }
    .product-description {
        order:3;
        padding-top:0
    }
    .purchase-content {
        padding:25px 21px 20px
    }
    .purchase-content h2 {
        font-size:1.75rem
    }
    .main-price {
        font-size:3.7rem
    }
    .price-line {
        gap:25px
    }
    .price-caption {
        padding-left:25px;
        font-size:.875rem
    }
    .check-list li {
        font-size:.9375rem
    }
    .check-list {
        gap:13px
    }
    .hofer-hint {
        padding:17px 14px
    }
    .hofer-hint strong,.hofer-hint .text-link {
        font-size:.875rem
    }
    .preview-notice {
        padding:14px 21px
    }
    .how-section {
        padding:35px 0 44px
    }
    .steps-grid {
        grid-template-columns:1fr;
        gap:23px;
        margin-top:25px
    }
    .steps-grid article {
        gap:19px;
        padding-top:20px
    }
    .steps-grid p {
        max-width:100%
    }
    .steps-grid article>svg {
        width:22px;
        height:22px;
        color:var(--navy);
        margin-top:2px;
        display:block
    }
    .experience-inner {
        grid-template-columns:1fr;
        gap:32px;
        padding:39px 0 42px
    }
    .experience-details {
        border-top:1px solid #444785;
        border-left:0;
        padding-top:27px;
        padding-left:0
    }
    .experience-details>svg {
        margin-bottom:15px
    }
    .experience-details h3 {
        font-size:1.3rem
    }
    .desktop-break {
        display:none
    }
    .faq-section {
        grid-template-columns:1fr;
        gap:27px;
        padding:45px 0
    }
    .faq-list [data-slot=accordion-trigger] {
        padding:22px 0
    }
    .footer-main {
        align-items:flex-start;
        gap:15px
    }
    .footer-brand img {
        width:54px;
        height:54px
    }
    .footer-brand {
        gap:12px
    }
    .footer-brand strong {
        font-size:.875rem;
        line-height:1.5
    }
    .footer-brand span {
        max-width:170px;
        font-size:.75rem;
        line-height:1.55
    }
    .footer-main>a {
        display:none
    }
    .footer-bottom {
        justify-content:space-between;
        gap:17px;
        padding:20px 0
    }
    .footer-bottom nav {
        gap:17px;
        font-size:.8125rem
    }
    .footer-demo {
        width:100%;
        font-size:.75rem
    }
    .cart-sheet-header[data-slot=sheet-header] {
        padding:23px 21px
    }
    .cart-sheet-body {
        padding:24px 21px
    }
    .cart-sheet-footer {
        padding:21px
    }
    .cart-item {
        grid-template-columns:88px 1fr;
        gap:16px
    }
    .cart-image {
        height:102px;
        padding:4px
    }
    .cart-item-actions {
        flex-wrap:wrap;
        gap:7px
    }
    .checkout-section {
        padding-top:25px;
        padding-bottom:40px
    }
    .checkout-heading {
        margin-top:18px
    }
    .checkout-heading h1 {
        font-size:1.8rem
    }
    .checkout-heading>.preview-tag {
        display:none
    }
    .checkout-steps {
        justify-content:space-between;
        gap:14px;
        margin:25px 0
    }
    .checkout-steps li {
        flex-direction:column;
        flex:1;
        align-items:flex-start;
        gap:7px;
        font-size:.75rem;
        line-height:1.4
    }
    .checkout-form-panel {
        border-radius:11px;
        padding:24px 19px
    }
    .form-section-title {
        gap:12px
    }
    .form-section-title h2 {
        font-size:1.35rem
    }
    .form-section-title p {
        font-size:.875rem
    }
    .form-grid {
        grid-template-columns:1fr;
        gap:20px
    }
    .demo-fill {
        padding:13px
    }
    .payment-option {
        gap:10px;
        padding:15px 12px
    }
    .payment-option strong {
        font-size:.875rem
    }
    .checkout-summary {
        padding:24px 21px
    }
    .complete-section {
        padding:42px 0 45px
    }
    .complete-section .eyebrow {
        letter-spacing:.08em;
        font-size:.75rem
    }
    .complete-section h1 {
        font-size:2rem
    }
    .completion-card {
        gap:19px;
        padding:19px
    }
    .completion-card>img {
        width:40%
    }
    .completion-card h2 {
        font-size:1rem
    }
    .completion-card p {
        font-size:.8125rem
    }
}
@media (prefers-reduced-motion:reduce) {
    html {
        scroll-behavior:auto
    }
    *,:before,:after {
        transition-duration:.01ms!important;
        -webkit-animation-duration:.01ms!important;
                animation-duration:.01ms!important
    }
}
.checkout-lead {
    color:var(--muted-foreground);
    margin-top:14px;
    font-size:1rem;
    line-height:1.6
}
.checkout-grid {
    grid-template-areas:"form summary"
}
.checkout-form-panel {
    background:#fff;
    grid-area:form
}
.checkout-summary {
    grid-area:summary
}
.summary-heading {
    color:var(--navy);
    align-items:center;
    gap:10px;
    display:flex
}
.summary-heading h2 {
    font-size:1.25rem;
    font-weight:700
}
.summary-quantity {
    justify-content:space-between;
    align-items:center;
    gap:16px;
    margin-bottom:26px;
    font-size:.9375rem;
    display:flex
}
.section-index {
    height:36px;
    color:var(--navy);
    background:var(--sky-light);
    border-radius:9px;
    flex:0 0 36px;
    place-items:center;
    font-size:.875rem;
    font-weight:700;
    display:grid
}
.checkout-form-panel .form-section-title h2 {
    font-size:1.25rem
}
.checkout-form-panel .form-subheading {
    margin-top:34px;
    padding-top:28px
}
.checkout-form-panel .payment-option {
    min-height:80px
}
.checkout-form-panel .payment-option small,
.checkout-form-panel .field-help,
.checkout-form-panel .form-footnote,
.checkout-form-panel .simulation-note,
.checkout-form-panel .demo-fill,
.checkout-form-panel .demo-fill .text-link {
    font-size:.875rem
}
.checkout-form-panel .field-help {
    margin-top:12px;
    line-height:1.6
}
.checkout-final {
    border-top:1px solid var(--border);
    margin-top:30px;
    padding-top:3px
}
.checkout-due {
    color:var(--navy);
    justify-content:space-between;
    align-items:baseline;
    gap:18px;
    margin:25px 0 19px;
    display:flex
}
.checkout-due strong {
    font-size:1.65rem
}
.checkout-empty {
    text-align:center;
    background:var(--sky-light);
    color:var(--navy);
    border-radius:14px;
    padding:54px 24px
}
.checkout-empty>svg {
    margin:0 auto 20px
}
.checkout-empty h2 {
    font-size:1.4rem;
    font-weight:700
}
.checkout-empty p {
    color:var(--muted-foreground);
    margin:15px 0 25px;
    line-height:1.6
}
.complete-section {
    max-width:860px
}
.complete-section h1 {
    overflow-wrap:anywhere;
    font-size:clamp(2rem,4.5vw,3rem)
}
.completion-demo {
    max-width:610px;
    color:var(--muted-foreground);
    margin:17px auto 0;
    font-size:.875rem;
    line-height:1.6
}
.confirmation-details {
    border:1px solid var(--border);
    text-align:left;
    border-radius:14px;
    grid-template-columns:1fr 1fr;
    gap:38px;
    margin-bottom:35px;
    padding:30px;
    display:grid
}
.confirmation-details h2,
.next-step-note h2 {
    color:var(--navy);
    margin-bottom:20px;
    font-size:1.125rem;
    font-weight:700
}
.confirmation-details .review-block:first-child {
    padding-top:0
}
.confirmation-details .review-block:last-child {
    border:0;
    padding-bottom:0
}
.confirmation-details .order-totals {
    margin-top:0
}
.next-step-note>svg {
    flex-shrink:0
}
.next-step-note h2 {
    margin-bottom:8px
}
.checkout-summary .text-link,
.checkout-summary .tax-note,
.checkout-summary .launch-note,
.summary-product p {
    font-size:.875rem
}
@media (width<=880px) {
    .checkout-grid {
        grid-template-areas:"summary""form"
    }
    .checkout-summary {
        position:static
    }
}
@media (width<=700px) {
    .confirmation-details {
        grid-template-columns:1fr;
        gap:26px;
        padding:24px 20px
    }
    .checkout-steps li {
        font-size:.875rem
    }
    .completion-card {
        text-align:center;
        flex-direction:column
    }
    .completion-card>img {
        width:min(100%,290px)
    }
    .summary-quantity {
        flex-wrap:wrap
    }
    .checkout-final .consent-box {
        gap:12px
    }
    .checkout-final [data-slot=checkbox] {
        flex-shrink:0
    }
}/*
 * design-shim.css
 *
 * design.css was lifted from a React app whose tabs / accordion / sheet / button /
 * checkbox came from shadcn-ui. Those components carried their box model in Tailwind
 * utility classes on the elements themselves, so design.css only *overrides* them --
 * it never defines them.
 *
 * This file supplies exactly those base styles, transcribed from the utility classes
 * on the corresponding elements in the reference markup. Keep it minimal: anything
 * design.css already sets (colour, radius, padding, font-size, min-height) is
 * deliberately omitted here so design.css stays the single source of truth.
 *
 * Global :focus-visible is handled by design.css, so shadcn's focus ring utilities
 * are intentionally not reproduced.
 *//* ---------------------------------------------------------------- tabs ---- */
[data-slot="tabs"] {
    display: flex;
    flex-direction: column;
    gap: .5rem;
}
[data-slot="tabs-list"] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    color: var(--muted-foreground);
}
[data-slot="tabs-trigger"] {
    position: relative;
    display: inline-flex;
    flex: 1;
    align-items: center;
    justify-content: center;
    gap: .375rem;
    border: 1px solid transparent;
    background: none;
    white-space: nowrap;
    transition: color .2s, background .2s, box-shadow .2s;
}
[data-slot="tabs-trigger"]:hover {
    color: var(--foreground);
}
[data-slot="tabs-trigger"]:disabled {
    pointer-events: none;
    opacity: .5;
}
[data-slot="tabs-content"] {
    flex: 1;
    outline: none;
}/* -------------------------------------------------------------- button ---- */
[data-slot="button"] {
    display: inline-flex;
    flex-shrink: 0;
    align-items: center;
    justify-content: center;
    gap: .5rem;
    border: 0;
    border-radius: .375rem;
    background: none;
    color: inherit;
    font-size: .875rem;
    font-weight: 500;
    white-space: nowrap;
    text-decoration: none;
    transition: background .2s, color .2s, transform .2s;
}
[data-slot="button"]:disabled,
[data-slot="button"][aria-disabled="true"] {
    pointer-events: none;
    opacity: .5;
}
[data-slot="button"] svg {
    pointer-events: none;
}/* ----------------------------------------------------------- accordion ---- */
[data-slot="accordion-item"] {
    border-bottom: 1px solid var(--border);
}
[data-slot="accordion-item"]:last-child {
    border-bottom: 0;
}
[data-slot="accordion-trigger"] {
    display: flex;
    flex: 1;
    width: 100%;
    align-items: flex-start;
    justify-content: space-between;
    gap: 1rem;
    border: 0;
    background: none;
    text-align: left;
    transition: color .2s;
}
[data-slot="accordion-trigger"] svg {
    transition: rotate .2s;
}
[data-slot="accordion-trigger"][data-state="open"] > svg {
    rotate: 180deg;
}
[data-slot="accordion-content"] {
    overflow: hidden;
}/*
 * design.css already reads var(--accordion-panel-height, auto), so the panel
 * animates from a plain scrollHeight measurement -- see FaqAccordion.vue.
 */
[data-slot="accordion-content"][data-state="open"] {
    -webkit-animation: accordion-down .2s ease-out;
            animation: accordion-down .2s ease-out;
}
[data-slot="accordion-content"][data-state="closed"] {
    -webkit-animation: accordion-up .2s ease-out;
            animation: accordion-up .2s ease-out;
}
@-webkit-keyframes accordion-down {
    from { height: 0 }
    to   { height: var(--accordion-panel-height, auto) }
}
@keyframes accordion-down {
    from { height: 0 }
    to   { height: var(--accordion-panel-height, auto) }
}
@-webkit-keyframes accordion-up {
    from { height: var(--accordion-panel-height, auto) }
    to   { height: 0 }
}
@keyframes accordion-up {
    from { height: var(--accordion-panel-height, auto) }
    to   { height: 0 }
}/* --------------------------------------------- sheet (cart slide-over) ---- */
[data-slot="sheet-overlay"] {
    position: fixed;
    inset: 0;
    z-index: 50;
    background: #00000080;
}
[data-slot="sheet-content"] {
    position: fixed;
    inset-block: 0;
    right: 0;
    z-index: 50;
    display: flex;
    flex-direction: column;
    height: 100%;
    background: var(--background);
    box-shadow: 0 10px 40px #142b4926;
}/* ------------------------------------------------------------ checkbox ---- */
[data-slot="checkbox"] {
    display: inline-flex;
    flex-shrink: 0;
    align-items: center;
    justify-content: center;
    width: 1rem;
    height: 1rem;
    padding: 0;
    border: 1px solid var(--input);
    border-radius: 4px;
    background: var(--background);
    color: var(--primary-foreground);
    -webkit-appearance: none;
       -moz-appearance: none;
            appearance: none;
}
[data-slot="checkbox"]:checked,
[data-slot="checkbox"][data-state="checked"] {
    border-color: var(--primary);
    background: var(--primary);
}
[data-slot="checkbox"]:checked::after {
    content: "";
    width: .3rem;
    height: .6rem;
    border: solid currentColor;
    border-width: 0 2px 2px 0;
    rotate: 45deg;
    translate: 0 -10%;
}
[data-slot="checkbox"]:disabled {
    cursor: not-allowed;
    opacity: .5;
}/* ----------------------------------------------------------- utilities ---- *//* Toggled by OrderForm.vue's per-field validation. */
.hidden {
    display: none !important;
}
.sr-only {
    position: absolute;
    width: 1px;
    height: 1px;
    padding: 0;
    margin: -1px;
    overflow: hidden;
    clip: rect(0, 0, 0, 0);
    white-space: nowrap;
    border-width: 0;
}/*
 * app-extra.css
 *
 * Project-specific additions on top of design.css, for cases where this shop has
 * something the design reference did not: real anchors instead of scroll buttons,
 * Stripe Elements, the Raiffeisen IBAN modal, and the point-of-sale screens.
 *
 * Written in design.css's idiom -- reuse its tokens, don't introduce new ones.
 *//* ------------------------------------------------------------- header ---- *//*
 * The reference header used <button> + scroll JS for the in-page section links.
 * We use real anchors (semantics, SEO, middle-click), so the button-scoped rules
 * from design.css are re-applied to them here -- including the >=880px hide,
 * which is what frees up room for .website-link on small screens.
 */
.site-header nav .section-link {
    background: 0 0;
    border: 0;
    padding: 12px 0;
}
@media (width<=880px) {
    .site-header nav .section-link {
        display: none;
    }
}/* ---------------------------------------------------------------- FAQ ---- *//*
 * The FAQ uses native <details>/<summary> instead of a scripted accordion, so the
 * copy is in the server-rendered HTML and works without JavaScript. design.css
 * styles the [data-slot] hooks; what it cannot do is react to <details open>,
 * because that element exposes no data-state attribute. Those bits live here.
 */
.faq-list [data-slot="accordion-trigger"] {
    cursor: pointer;
    list-style: none;
}
.faq-list [data-slot="accordion-trigger"]::-webkit-details-marker,
.faq-list [data-slot="accordion-trigger"]::marker {
    display: none;
    content: "";
}
.faq-list details[open] > [data-slot="accordion-trigger"] > svg {
    rotate: 180deg;
}/* Animate the disclosure where the browser supports it; a no-op elsewhere. */
@supports (interpolate-size: allow-keywords) {
    .faq-list details {
        interpolate-size: allow-keywords;
    }

    .faq-list details::details-content {
        height: 0;
        overflow: hidden;
        transition: height .2s ease-out, content-visibility .2s allow-discrete;
    }

    .faq-list details[open]::details-content {
        height: auto;
    }
}/* ------------------------------------------- cart slide-over & modals ---- *//*
 * The cart drawer and the IBAN modal are Headless UI dialogs. Headless UI only
 * applies the class names given to <TransitionChild>, so the actual transitions
 * live here (they were Tailwind utility classes before).
 */
.cart-sheet-root,
.modal-root {
    position: relative;
    z-index: 50;
}
.sheet-fade {
    transition: opacity .3s ease-in-out;
}
.sheet-fade-hidden { opacity: 0 }
.sheet-fade-shown  { opacity: 1 }
.sheet-slide {
    transition: transform .4s cubic-bezier(.32, .72, 0, 1);
}
.sheet-closed { transform: translateX(100%) }
.sheet-open   { transform: translateX(0) }
.modal-viewport {
    position: fixed;
    inset: 0;
    z-index: 50;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 20px;
    overflow-y: auto;
}
.modal-panel {
    width: min(440px, 100%);
    background: #fff;
    border-radius: 17px;
    padding: 28px 26px;
    box-shadow: 0 20px 60px #142b4926;
}
.modal-panel h3 {
    color: var(--navy);
    letter-spacing: -.025em;
    font-size: 1.375rem;
}
.modal-panel .form-field {
    margin: 20px 0 22px;
}
.modal-pop {
    transition: opacity .25s ease-out, transform .25s ease-out;
}
.modal-hidden { opacity: 0; transform: translateY(12px) scale(.97) }
.modal-shown  { opacity: 1; transform: none }
.modal-brand {
    width: 56px;
    height: 56px;
    margin: 0 auto 18px;
}
.modal-brand img {
    width: 100%;
    height: 100%;
    -o-object-fit: contain;
       object-fit: contain;
}
.modal-error {
    display: flex;
    align-items: flex-start;
    gap: 11px;
    margin-bottom: 18px;
    padding: 14px;
    border-radius: 10px;
    background: #fdf2f3;
    color: var(--destructive);
    font-size: .875rem;
}
.modal-error svg {
    width: 20px;
    height: 20px;
}
.modal-error p {
    margin-top: 4px;
    line-height: 1.55;
}/*
 * Quantity control inside a cart line. The reference used the .quantity stepper,
 * but this shop drives the amount server-side through a select (or a free number
 * input at the point of sale), so the native control is styled to match.
 */
.quantity-field {
    height: 42px;
    min-width: 72px;
    padding: 0 10px;
    border: 1px solid var(--border);
    border-radius: 7px;
    background: #fff;
    color: var(--navy);
    font-size: .9375rem;
    font-weight: 600;
}/* ------------------------------------------------------------ payment ---- *//*
 * design.css styles .payment-option assuming shadcn's radio indicator. These are
 * native radios, so they get the equivalent look here.
 */
.payment-options {
    border: 0 none;
    padding: 0;
}
.payment-option input[type="radio"] {
    flex-shrink: 0;
    width: 18px;
    height: 18px;
    margin: 0;
    border: 1px solid var(--input);
    border-radius: 50%;
    background: #fff;
    -webkit-appearance: none;
       -moz-appearance: none;
            appearance: none;
    display: grid;
    place-items: center;
}
.payment-option input[type="radio"]:checked {
    border-color: var(--navy);
}
.payment-option input[type="radio"]:checked::after {
    content: "";
    width: 9px;
    height: 9px;
    border-radius: 50%;
    background: var(--navy);
}
.payment-option svg {
    width: 25px;
    height: 25px;
    color: var(--navy);
}
.payment-element {
    margin-top: 18px;
}/* Stripe renders its own iframe here, so only the frame is styled. */
.stripe-element {
    min-height: 48px;
    padding: 14px 13px;
    border: 1px solid var(--input);
    border-radius: 7px;
    background: #fff;
}/* --------------------------------------------- point of sale & detail ---- */
.preissued-cards {
    margin-top: 26px;
}
.preissued-cards h4 {
    margin-bottom: 12px;
    color: var(--navy);
    font-size: .9375rem;
    font-weight: 700;
}
.card-details-body {
    margin-top: 12px;
    color: var(--muted-foreground);
    font-size: .875rem;
    line-height: 1.7;
}
.submit-spinner {
    -webkit-animation: submit-spin 1s linear infinite;
            animation: submit-spin 1s linear infinite;
}
@-webkit-keyframes submit-spin {
    to { rotate: 360deg }
}
@keyframes submit-spin {
    to { rotate: 360deg }
}/* Hide the number-input spinners on the postcode field. */
input[type="number"][name="zip"]::-webkit-inner-spin-button,
input[type="number"][name="zip"]::-webkit-outer-spin-button {
    -webkit-appearance: none;
    margin: 0;
}
input[type="number"][name="zip"] {
    -moz-appearance: textfield;
}

