:root {
    --cream: #fff0ea;
    --white: #fff;
    --ink-dark: #322c11;
    --olive: #635127;
    --terracotta: #d6895b;
    --brown-body: #7b634c;
    --link-brown: #6d5c32;
    --gold: #ffb500;
    --tan: #ab977a;
    --line: rgba(50, 44, 17, .14);
    --maxw: 1180px
}

* {
    box-sizing: border-box
}

html {
    scroll-behavior: smooth
}

body {
    margin: 0;
    background: var(--cream);
    color: var(--brown-body);
    font-family: "Century Gothic", STHeiti, Candara, AppleGothic, Verdana, "Microsoft JhengHei", Tahoma, Helvetica, Arial, sans-serif;
    -webkit-font-smoothing: antialiased
}

a {
    color: inherit;
    text-decoration: none
}

img {
    display: block;
    max-width: 100%
}

button {
    font-family: inherit;
    cursor: pointer
}

.wrap {
    max-width: var(--maxw);
    margin: 0 auto;
    padding: 0 32px
}

header {
    position: sticky;
    top: 0;
    z-index: 100;
    padding: 12px 32px;
    display: flex;
    align-items: center;
    justify-content: space-between;
    background: rgba(255, 240, 234, .96);
    backdrop-filter: blur(6px);
    border-bottom: 1px solid var(--line)
}

.brand-logo {
    height: 46px
}

.primary-nav {
    display: flex;
    gap: 28px;
    align-items: center
}

.primary-nav a {
    font-size: 13.5px;
    color: var(--terracotta)
}

.primary-nav a:hover {
    color: var(--blue)
}

.nav-cta {
    border: 1px solid var(--terracotta);
    padding: 8px 18px;
    border-radius: 2px
}

.page-hero {
    padding: 80px 0 48px
}

.eyebrow {
    font-size: 11px;
    letter-spacing: .22em;
    color: var(--terracotta);
    font-weight: bold
}

.page-hero h1 {
    margin: 12px 0 14px;
    color: var(--ink-dark);
    font-size: clamp(32px, 5vw, 52px)
}

.page-hero p {
    line-height: 2;
    max-width: 680px
}

.tabs {
    display: flex;
    gap: 10px;
    flex-wrap: wrap;
    margin: 0 0 36px
}

.tabs button {
    border: 1px solid var(--line);
    background: var(--white);
    padding: 10px 20px;
    border-radius: 2px;
    color: var(--link-brown)
}

.tabs button.active {
    background: var(--terracotta);
    color: #fff;
    border-color: var(--terracotta)
}

.p-grid {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 20px;
    padding-bottom: 100px
}

.p-card {
    background: var(--white);
    border: 1px solid var(--line);
    border-radius: 4px;
    overflow: hidden;
    display: flex;
    flex-direction: column;
    position: relative
}

.p-thumb {
    aspect-ratio: 1/1;
    background: #f3efe8;
    position: relative;
    overflow: hidden
}

.p-thumb img {
    width: 100%;
    height: 100%;
    object-fit: cover
}

.p-badge {
    position: absolute;
    top: 10px;
    left: 10px;
    background: var(--terracotta);
    color: #fff;
    font-size: 10px;
    padding: 4px 9px;
    border-radius: 2px;
    z-index: 4
}

.p-body {
    padding: 16px;
    flex: 1;
    position: relative;
    z-index: 1
}

.p-name {
    font-size: 15px;
    color: var(--ink-dark);
    display: block;
    margin-bottom: 8px;
    font-weight: bold
}

.p-desc {
    font-size: 12.5px;
    line-height: 1.75;
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden
}

.p-price {
    display: inline-block;
    margin-top: 10px;
    color: var(--terracotta);
    font-weight: bold
}

.p-temp {
    display: inline-block;
    margin-left: 8px;
    font-size: 10px;
    border: 1px solid var(--line);
    padding: 2px 6px;
    border-radius: 99px
}

.card-detail-overlay {
    position: absolute;
    inset: 0 0 62px;
    z-index: 2;
    background: rgba(50, 44, 17, .72);
    display: flex;
    align-items: center;
    justify-content: center;
    opacity: 0;
    visibility: hidden;
    transition: .2s
}

.card-detail-overlay span {
    border: 1px solid rgba(255, 255, 255, .85);
    color: #fff;
    padding: 11px 20px;
    font-size: 13px;
    letter-spacing: .06em;
    background: rgba(50, 44, 17, .2)
}

.p-card:hover .card-detail-overlay {
    opacity: 1;
    visibility: visible
}

.card-purchase {
    height: 62px;
    border-top: 1px solid var(--line);
    padding: 10px;
    display: grid;
    grid-template-columns: 112px 1fr;
    gap: 8px;
    position: relative;
    z-index: 5;
    background: #fff
}

.card-qty {
    display: grid;
    grid-template-columns: 36px 1fr 36px;
    border: 1px solid var(--line);
    height: 40px
}

.card-qty button {
    border: 0;
    background: #fff;
    color: var(--link-brown);
    font-size: 17px
}

.card-qty span {
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 13px;
    color: var(--ink-dark)
}

.card-add {
    height: 40px;
    border: 1px solid var(--link-brown);
    background: var(--link-brown);
    color: #fff;
    font-size: 12px
}

.card-add:hover {
    background: var(--ink-dark)
}

.empty {
    grid-column: 1/-1;
    background: #fff;
    border: 1px solid var(--line);
    padding: 36px;
    text-align: center
}

.header-cart {
    border: 0;
    background: none;
    color: var(--terracotta);
    font-size: 13.5px;
    padding: 8px 0
}

.cart-count {
    display: inline-flex;
    min-width: 20px;
    height: 20px;
    border-radius: 10px;
    background: var(--terracotta);
    color: #fff;
    align-items: center;
    justify-content: center;
    font-size: 11px;
    padding: 0 5px
}

.cart-overlay {
    position: fixed;
    inset: 0;
    background: rgba(30, 25, 12, .36);
    opacity: 0;
    visibility: hidden;
    transition: .22s;
    z-index: 250
}

.cart-overlay.open {
    opacity: 1;
    visibility: visible
}

.cart-drawer {
    position: fixed;
    top: 0;
    right: 0;
    height: 100dvh;
    width: min(520px, 92vw);
    background: #fff;
    z-index: 260;
    transform: translateX(100%);
    transition: transform .28s ease;
    box-shadow: -16px 0 46px rgba(50, 44, 17, .16);
    display: grid;
    grid-template-rows: auto 1fr auto
}

.cart-drawer.open {
    transform: translateX(0)
}

.cart-head {
    padding: 20px 22px;
    border-bottom: 1px solid var(--line);
    display: flex;
    justify-content: space-between;
    align-items: center
}

.cart-head h2 {
    font-size: 17px;
    color: var(--ink-dark);
    margin: 0
}

.cart-close {
    width: 36px;
    height: 36px;
    border: 0;
    border-radius: 50%;
    background: #f4f1eb;
    color: var(--ink-dark);
    font-size: 22px
}

.cart-items {
    padding: 8px 22px 22px;
    overflow: auto
}

.cart-empty,
.cart-sync-note {
    padding: 60px 0;
    text-align: center;
    color: var(--tan)
}

.cart-item {
    display: grid;
    grid-template-columns: 72px 1fr auto;
    gap: 12px;
    padding: 16px 0;
    border-bottom: 1px solid var(--line)
}

.cart-item img {
    width: 72px;
    height: 72px;
    object-fit: cover;
    background: #f3efe8
}

.cart-item-name {
    color: var(--ink-dark);
    font-size: 13px;
    font-weight: bold
}

.cart-item-unit {
    font-size: 11px;
    color: var(--tan);
    margin-top: 4px
}

.qty-control {
    margin-top: 8px;
    width: 112px;
    height: 34px;
    display: grid;
    grid-template-columns: 34px 1fr 34px;
    border: 1px solid var(--line)
}

.qty-control button {
    border: 0;
    background: #fff
}

.qty-control span {
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 12px
}

.remove-item {
    margin-top: 7px;
    border: 0;
    background: none;
    padding: 0;
    color: var(--tan);
    font-size: 11px;
    text-decoration: underline
}

.cart-item-price {
    font-size: 12px;
    color: var(--ink-dark);
    font-weight: bold;
    white-space: nowrap
}

.cart-temp-group {
    margin: 8px 0 22px;
    border: 1px solid var(--line)
}

.cart-temp-title {
    display: flex;
    justify-content: space-between;
    padding: 12px 14px;
    background: #f7f4ee;
    color: var(--ink-dark);
    font-size: 14px;
    font-weight: bold
}

.cart-temp-group .cart-item {
    margin: 0 14px
}

.cart-temp-summary {
    padding: 12px 14px;
    background: #fbfaf7
}

.cart-temp-summary>div:not(.cart-temp-progress) {
    display: flex;
    justify-content: space-between;
    gap: 16px;
    padding: 4px 0;
    font-size: 12px;
    color: var(--tan)
}

.cart-temp-summary strong {
    color: var(--ink-dark)
}

.cart-temp-progress {
    font-size: 11px;
    color: var(--tan);
    padding: 3px 0 7px
}

.cart-temp-total {
    margin-top: 6px;
    padding-top: 10px !important;
    border-top: 1px solid var(--line);
    font-size: 14px !important;
    color: var(--ink-dark) !important
}

.cart-foot {
    padding: 20px 22px;
    border-top: 1px solid var(--line)
}

.cart-total {
    display: flex;
    justify-content: space-between;
    color: var(--ink-dark);
    font-size: 18px;
    font-weight: bold;
    margin-bottom: 14px
}

.checkout-btn {
    width: 100%;
    height: 50px;
    border: 0;
    background: var(--link-brown);
    color: #fff;
    font-size: 14px
}

.checkout-note {
    font-size: 11px;
    color: var(--tan);
    text-align: center;
    margin-top: 10px
}

footer {
    padding: 44px 0;
    border-top: 1px solid var(--line);
    font-size: 12px
}

.footer-row {
    display: flex;
    justify-content: space-between;
    gap: 20px;
    align-items: center;
    flex-wrap: wrap
}

.footer-logo {
    height: 38px
}

.footer-nav {
    display: flex;
    gap: 18px;
    flex-wrap: wrap
}

@media(max-width:900px) {
    .p-grid {
        grid-template-columns: repeat(2, 1fr)
    }

    .primary-nav {
        display: none
    }

    .wrap {
        padding: 0 20px
    }
}

@media(max-width:560px) {
    .p-grid {
        grid-template-columns: 1fr
    }

    .page-hero {
        padding-top: 52px
    }

    .card-purchase {
        grid-template-columns: 108px 1fr
    }

    .card-detail-overlay {
        display: flex;
        opacity: 0;
        visibility: hidden;
        pointer-events: none
    }

    .p-card.mobile-detail-open .card-detail-overlay {
        opacity: 1;
        visibility: visible;
        pointer-events: auto
    }

    .p-card.mobile-detail-open .card-detail-overlay span {
        transform: translateY(0)
    }
}

.card-purchase-stock {
    grid-template-columns: 112px 1fr
}

.card-stock-status {
    height: 40px;
    display: flex;
    align-items: center;
    justify-content: center;
    background: #f3f0ea;
    color: #9a8e80;
    border: 1px solid var(--line);
    font-size: 12px;
    letter-spacing: .04em
}

.card-stock {
    width: 100%;
    height: 40px;
    border: 1px solid var(--link-brown);
    font-size: 12px;
    letter-spacing: .04em
}

.card-stock-preorder {
    background: var(--link-brown);
    color: #fff;
    cursor: pointer
}

.card-stock-preorder:hover {
    background: var(--ink-dark)
}

.cart-preorder-notice {
    margin: 8px 0 14px;
    padding: 12px 14px;
    border: 1px solid #d77b55;
    background: #fff5ef;
    color: #9b4f33;
    display: flex;
    flex-direction: column;
    gap: 3px;
    font-size: 12px;
    line-height: 1.55
}

.cart-preorder-notice strong {
    font-size: 13px;
    color: #8f4329
}

.cart-preorder-badge {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    margin-left: 6px;
    padding: 2px 7px;
    border: 1px solid #e1704c;
    color: #d95d36;
    background: #fff7f3;
    font-size: 10px;
    font-weight: 700;
    line-height: 1.3;
    vertical-align: 1px;
    white-space: nowrap
}

.card-variant-row {
    position: relative;
    z-index: 5;
    background: #fff;
    padding: 10px 10px 0;
    border-top: 1px solid var(--line)
}

.card-variant-label {
    display: block;
    margin: 0;
    font-size: 11px;
    color: var(--tan)
}

.card-variant-select {
    display: block;
    width: 100%;
    margin-top: 5px;
    height: 38px;
    border: 1px solid var(--line);
    background: #fff;
    color: var(--ink-dark);
    padding: 0 10px;
    font-size: 12px;
    border-radius: 2px
}

.card-variant-select:focus {
    outline: 1px solid var(--terracotta);
    border-color: var(--terracotta)
}

/* products.html：依 web_category 分區的橫向商品列 */
#tabs{display:none!important}
#grid{display:block!important}
.collection-section{margin:0 0 64px}
.collection-head{display:flex;align-items:center;justify-content:space-between;gap:20px;margin:0 0 20px}
.collection-title{margin:0;color:var(--ink-dark);font-size:24px;font-weight:500;letter-spacing:.04em}
.collection-count{margin-left:10px;color:var(--tan);font-size:11px;font-weight:400}
.collection-arrows{display:flex;gap:8px;flex:0 0 auto}
.collection-arrow{width:42px;height:42px;border:1px solid var(--line);background:#fff;color:var(--ink-dark);font-size:19px;display:inline-flex;align-items:center;justify-content:center;cursor:pointer;transition:.18s}
.collection-arrow:hover:not(:disabled){background:var(--ink-dark);color:#fff;border-color:var(--ink-dark)}
.collection-arrow:disabled{opacity:.28;cursor:default}
.collection-viewport{overflow-x:auto;overflow-y:hidden;scroll-behavior:smooth;scroll-snap-type:x proximity;overscroll-behavior-inline:contain;-webkit-overflow-scrolling:touch;scrollbar-width:none;padding:0 0 10px}
.collection-viewport::-webkit-scrollbar{display:none}
.collection-track{display:flex;gap:18px;width:max-content}
.collection-track .p-card{flex:0 0 clamp(265px,27vw,340px);width:clamp(265px,27vw,340px);scroll-snap-align:start}
.collection-section .empty{width:100%}
@media(max-width:900px){
  .collection-section{margin-bottom:52px}
  .collection-title{font-size:21px}
  .collection-track .p-card{flex-basis:310px;width:310px}
}
@media(max-width:560px){
  .collection-section{margin-bottom:44px}
  .collection-head{margin-bottom:14px}
  .collection-title{font-size:19px}
  .collection-arrow{width:38px;height:38px}
  .collection-track{gap:12px}
  .collection-track .p-card{flex-basis:82vw;width:82vw;max-width:330px}
}

@media (max-width:560px){
  .p-card .card-detail-overlay{
    display:flex !important;
    opacity:0 !important;
    visibility:visible !important;
    background:transparent !important;
    pointer-events:auto !important;
  }
  .p-card .card-detail-overlay span{display:none !important;}
  .card-variant-row,.card-purchase{position:relative;z-index:5;}
}
