/* TIMEGRAPH Official：商品一覧・商品詳細・カート・購入手続き・注文完了・マイアカウント
   WooCommerce標準のCSSは読み込まず、標準（クラシック）の画面部品をこのファイルだけで整える。
   PC 3列／タブレット 2列／SP 1列、操作部品は44px以上、青系の色は使わない。 */

.sub--shop { max-width: 1200px; position: relative; }
.sub--wc { max-width: 1040px; }
.shop-note { font-size: 12.5px; }

/* カートへの小さな入口（カートに商品があるときだけ） */
.shop-cartlink {
  position: absolute; right: var(--gutter); top: calc(var(--header-h) + 52px);
  display: inline-flex; align-items: center; gap: 10px; min-height: 44px; padding: 0 16px;
  border: 1px solid var(--c-line-light); border-radius: 4px; background: var(--c-ivory);
  font-family: var(--f-serif); font-size: 14px; letter-spacing: .14em; text-decoration: none;
}
.shop-cartlink__n { display: inline-grid; place-items: center; min-width: 24px; height: 24px; padding: 0 6px; border-radius: 12px; background: var(--c-yellow); color: var(--c-ink); font-family: var(--f-latin); font-size: 12px; letter-spacing: 0; }

/* ---------- 商品一覧 ---------- */
.shop-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 48px 32px; margin-top: 48px; }
.shop-card__link { display: flex; flex-direction: column; gap: 8px; height: 100%; text-decoration: none; container-type: inline-size; }
/* 「詳しく見る」 at the foot of every card of a row, also beside a card without a picture */
.shop-card__link > * { flex: none; }
.shop-card__link > .shop-card__more { margin-top: auto; align-self: flex-start; }
.shop-card__media { display: block; aspect-ratio: 4 / 3; overflow: hidden; background: linear-gradient(160deg, #fffcf3, #fff2d0); box-shadow: 0 16px 32px rgba(40, 30, 20, .14); }
.shop-card__media .shop-img { width: 100%; height: 100%; object-fit: contain; transition: transform .6s var(--ease-out); }
.shop-card__link:hover .shop-img { transform: scale(1.03); }
.shop-img--none { display: block; width: 100%; height: 100%; background: linear-gradient(135deg, #e9e2d4, #d9cfbd); }
.shop-card__cat { margin-top: 14px; font-family: var(--f-latin); font-size: 11px; letter-spacing: .26em; color: var(--c-ink-soft); word-break: auto-phrase; text-wrap: pretty; }
.shop-card__name { font-family: var(--f-serif); font-size: clamp(15px, 5.4cqi, 20px); line-height: 1.6; letter-spacing: .06em; }
.shop-card__desc { display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden; font-size: 13px; line-height: 1.9; color: var(--c-ink-soft); }
.shop-card__price { font-family: var(--f-latin); font-size: 16px; letter-spacing: .06em; }
.shop-card__price del, .shop-product__price del { opacity: .55; margin-right: .4em; }
.shop-card__price ins, .shop-product__price ins { text-decoration: none; }
.shop-card__more { display: inline-flex; align-items: center; min-height: 44px; font-family: var(--f-serif); font-size: 14px; letter-spacing: .2em; border-bottom: 1px solid var(--c-yellow); justify-self: start; }
.shop-pages { margin-top: 56px; }
.shop-pages ul { display: flex; flex-wrap: wrap; gap: 8px; }
.shop-pages a, .shop-pages span { display: inline-grid; place-items: center; min-width: 44px; min-height: 44px; padding: 0 12px; border: 1px solid var(--c-line-light); text-decoration: none; }
.shop-pages .current { background: var(--c-charcoal); color: var(--c-ivory); }

/* ---------- 商品カテゴリーの見出し ---------- */
.shop-crumbs { margin-top: 4px; font-size: 13px; letter-spacing: .06em; color: var(--c-ink-soft); }
.shop-crumbs ol { display: flex; flex-wrap: wrap; align-items: center; }
.shop-crumbs li { display: inline-flex; align-items: center; min-width: 0; overflow-wrap: anywhere; }
.shop-crumbs li + li::before { content: "／"; margin: 0 6px; color: var(--c-stone); }
.shop-crumbs a { display: inline-flex; align-items: center; min-height: 44px; text-underline-offset: 3px; }
.shop-head { margin-top: 12px; }
.shop-head--image { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: clamp(28px, 4vw, 64px); align-items: center; }
.shop-head__img { width: 100%; aspect-ratio: 16 / 10; object-fit: cover; box-shadow: 0 16px 32px rgba(40, 30, 20, .14); }
.shop-head__desc { max-width: 680px; margin-top: 16px; color: var(--c-ink-soft); }
.shop-empty { font-family: var(--f-serif); font-size: 20px; letter-spacing: .1em; color: var(--c-ink); }

/* ---------- 商品詳細 ---------- */
.shop-product { display: grid; grid-template-columns: minmax(0, 1.05fr) minmax(0, 1fr); gap: clamp(28px, 4vw, 64px); align-items: start; margin-top: 24px; }
.shop-product__media .shop-zoom > .shop-img, .shop-product__media > .shop-img { width: 100%; box-shadow: 0 24px 48px rgba(40, 30, 20, .18); }
.shop-product__media > .shop-img--none { aspect-ratio: 4 / 3; }
.shop-product__gallery { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 10px; margin-top: 12px; }
.shop-product__gallery img { width: 100%; aspect-ratio: 4 / 3; object-fit: contain; background: var(--c-ivory); }
.shop-zoom { position: relative; display: block; cursor: zoom-in; }
.shop-zoom:focus-visible { outline: 2px solid var(--c-charcoal); outline-offset: 3px; }
.shop-product__media > .shop-zoom::after { content: "拡大"; position: absolute; right: 10px; bottom: 10px; padding: 4px 12px; border-radius: 4px; background: var(--c-charcoal); color: var(--c-ivory); font-size: 12px; letter-spacing: .14em; }
.shop-product__body { container-type: inline-size; }
.shop-product__body .eyebrow { margin-bottom: 4px; }
.shop-product__title { margin-top: 8px; font-size: clamp(19px, 5.8cqi, 34px); letter-spacing: .04em; }
.shop-product__price { margin-top: 24px; font-family: var(--f-latin); font-size: 24px; letter-spacing: .06em; }
.shop-product__price .woocommerce-price-suffix { font-family: var(--f-sans); font-size: 12px; }
.shop-product__short { margin-top: 16px; color: var(--c-ink-soft); }
.shop-product__buy { margin-top: 28px; }
.shop-product__demo { display: grid; justify-items: start; gap: 8px; margin: 28px 0 0; }
.shop-product__demo .btn-solid { width: min(100%, 360px); }
.shop-product__demoname { font-size: 13px; letter-spacing: .06em; }
.shop-product__ext { font-size: 12px; color: var(--c-ink-soft); }
.shop-product__buy .stock { margin-bottom: 12px; font-size: 13px; }
.shop-product__buy .stock.out-of-stock { color: #8a3b12; }
.shop-files { margin-top: 36px; padding: 22px 24px; background: var(--c-ivory); border-left: 3px solid var(--c-yellow); }
.shop-h2 { font-family: var(--f-serif); font-weight: 500; font-size: 17px; letter-spacing: .1em; }
.shop-files ul { margin-top: 10px; }
.shop-files li { position: relative; padding-left: 20px; font-size: 14px; }
.shop-files li::before { content: ""; position: absolute; left: 2px; top: .8em; width: 8px; height: 8px; border: 1px solid var(--c-ink); transform: rotate(45deg); }
/* per-plan download terms: plan, 「5回まで、」 and 「ご購入から365日間（1年）」 each stay whole; a narrow line breaks between them */
.shop-terms__part { display: inline-block; max-width: 100%; }
.shop-files__note { margin-top: 10px; font-size: 12.5px; color: var(--c-ink-soft); }
.shop-info { display: grid; grid-template-columns: max-content 1fr; gap: 10px 24px; margin-top: 32px; padding-top: 24px; border-top: 1px solid var(--c-line-light); font-size: 14px; }
.shop-info dt { font-family: var(--f-serif); letter-spacing: .1em; color: var(--c-ink-soft); }
.shop-info dd { margin: 0; }
.shop-desc { max-width: 760px; margin-top: 64px; padding-top: 40px; border-top: 1px solid var(--c-line-light); color: var(--c-ink-soft); }
.shop-desc > * + * { margin-top: 1.2em; }
.shop-desc ul { padding-left: 1.4em; list-style: disc; }
.shop-desc ol { padding-left: 1.4em; list-style: decimal; }
.shop-desc h2 { font-family: var(--f-serif); font-weight: 400; font-size: 22px; letter-spacing: .1em; color: var(--c-ink); }
.shop-desc h2:not(:first-child) { margin-top: 2.2em; }
.shop-desc details { border-top: 1px solid var(--c-line-light); }
.shop-desc details:last-child { border-bottom: 1px solid var(--c-line-light); }
.shop-desc details + details { margin-top: 0; }
.shop-desc summary { min-height: 44px; padding: 12px 0; line-height: 1.7; color: var(--c-ink); cursor: pointer; }
.shop-desc details p { padding-bottom: 14px; }

/* ---------- 商品画像の拡大表示 ---------- */
html.is-zooming { overflow: hidden; }
.shop-zoomer { position: fixed; inset: 0; width: 100%; height: 100%; max-width: none; max-height: none; margin: 0; padding: 0; border: 0; overflow: hidden; background: rgba(28, 25, 21, .94); color: var(--c-ivory); }
.shop-zoomer[open] { display: grid; grid-template-rows: auto minmax(0, 1fr) auto; }
.shop-zoomer::backdrop { background: transparent; }
.shop-zoomer__head { display: flex; justify-content: flex-end; padding: 8px var(--gutter); }
.shop-zoomer__stage { display: grid; place-items: center; min-height: 0; padding: 0 var(--gutter); }
.shop-zoomer__img { width: auto; height: auto; max-width: 100%; max-height: calc(100vh - 148px); max-height: calc(100dvh - 148px); object-fit: contain; }
.shop-zoomer__foot { display: grid; grid-template-columns: auto minmax(0, 1fr) auto; align-items: center; gap: 12px; padding: 12px var(--gutter); }
.shop-zoomer__caption { font-size: 13px; line-height: 1.6; text-align: center; word-break: keep-all; overflow-wrap: anywhere; }
.shop-zoomer__btn { min-width: 44px; min-height: 44px; padding: 0 14px; border: 1px solid rgba(250, 247, 240, .6); border-radius: 4px; background: transparent; color: inherit; font: inherit; font-size: 13px; letter-spacing: .08em; cursor: pointer; }
.shop-zoomer__btn:hover { border-color: var(--c-yellow); }
.shop-zoomer__btn:focus-visible { outline: 2px solid var(--c-yellow); outline-offset: 2px; }
.shop-zoomer__btn[hidden] { display: none; }

/* ---------- WooCommerce標準の部品 ---------- */
.woocommerce-notices-wrapper:empty { display: none; }
.woocommerce-message, .woocommerce-info, .woocommerce-error, .woocommerce-noreviews, p.no-comments {
  display: flex; flex-wrap: wrap; align-items: center; gap: 8px 16px; margin: 28px 0 0; padding: 14px 18px;
  background: var(--c-ivory); border-left: 3px solid var(--c-yellow); list-style: none; font-size: 14px;
}
.woocommerce-error { border-left-color: #8a3b12; flex-direction: column; align-items: flex-start; }
.woocommerce-error li { margin: 0; }
.woocommerce-message a:not(.button), .woocommerce-info a:not(.button), .shop-notice-link { text-underline-offset: 3px; }
.woocommerce-message .button, .woocommerce-info .button { order: 2; margin-left: auto; }

.woocommerce .button, .woocommerce button.button, .woocommerce a.button, .woocommerce input.button, .single_add_to_cart_button, #place_order, .checkout-button {
  display: inline-flex; align-items: center; justify-content: center; gap: 12px; min-height: 48px; padding: 0 24px;
  border: 1px solid var(--c-charcoal); border-radius: 4px; background: transparent; color: var(--c-ink);
  font-family: var(--f-serif); font-size: 15px; letter-spacing: .16em; text-decoration: none; cursor: pointer; line-height: 1.4;
}
.woocommerce .button.alt, .single_add_to_cart_button, #place_order, .checkout-button, .woocommerce .button.woocommerce-button--next, .woocommerce-form-login__submit, .woocommerce-form-register__submit {
  min-height: 56px; background: var(--c-charcoal); color: var(--c-ivory); font-size: 17px; letter-spacing: .22em;
}
.woocommerce .button:hover, .single_add_to_cart_button:hover { box-shadow: inset 0 -3px 0 var(--c-yellow); }
.woocommerce .button:disabled, .woocommerce .button.disabled { opacity: .5; cursor: not-allowed; }

form.cart .quantity.hidden { display: none; }
form.cart { display: flex; flex-wrap: wrap; gap: 12px; align-items: stretch; }
form.cart .single_add_to_cart_button { flex: 1 1 220px; }
.quantity { display: inline-flex; }
.quantity .qty, .woocommerce input.input-text, .woocommerce textarea, .woocommerce select, .woocommerce input[type="email"], .woocommerce input[type="tel"], .woocommerce input[type="text"], .woocommerce input[type="password"] {
  width: 100%; min-height: 48px; padding: 10px 12px; border: 1px solid #a99f8e; border-radius: 4px; background: #fffdf8;
  color: var(--c-ink); font: inherit; font-size: 16px; letter-spacing: .03em;
}
.quantity .qty { width: 84px; text-align: center; }
.woocommerce input:focus, .woocommerce textarea:focus, .woocommerce select:focus { outline: 2px solid var(--c-yellow); outline-offset: 1px; border-color: var(--c-charcoal); }

/* 表 */
.woocommerce table.shop_table { width: 100%; margin-top: 28px; border-collapse: collapse; font-size: 14px; }
.woocommerce table.shop_table th, .woocommerce table.shop_table td { padding: 14px 10px; border-bottom: 1px solid var(--c-line-light); text-align: left; vertical-align: middle; }
.woocommerce table.shop_table thead th { font-family: var(--f-serif); font-weight: 500; letter-spacing: .1em; color: var(--c-ink-soft); border-bottom-color: var(--c-ink); }
.woocommerce table.shop_table tfoot th { font-weight: 500; }
.woocommerce table.shop_table .product-thumbnail img { width: 88px; height: 66px; object-fit: cover; }
.woocommerce table.shop_table .product-remove a.remove { display: inline-grid; place-items: center; width: 44px; height: 44px; border-radius: 50%; color: #8a3b12; font-size: 24px; text-decoration: none; }
.woocommerce table.shop_table .product-remove a.remove:hover { background: rgba(138, 59, 18, .08); }
.woocommerce table.shop_table td.actions { padding-top: 20px; text-align: right; }
.woocommerce table.shop_table td.actions .coupon { display: inline-flex; flex-wrap: wrap; gap: 8px; float: left; }
.woocommerce table.shop_table td.actions .coupon .input-text { width: 180px; }
.woocommerce .woocommerce-Price-amount { font-family: var(--f-latin); letter-spacing: .04em; white-space: nowrap; }
.woocommerce .order-total .woocommerce-Price-amount { font-size: 18px; }
.woocommerce small.includes_tax, .woocommerce .tax_label { font-size: 12px; color: var(--c-ink-soft); }

/* カート */
.cart-collaterals { display: flex; justify-content: flex-end; margin-top: 32px; }
.cart_totals { width: min(100%, 440px); }
.cart_totals h2, #order_review_heading, .woocommerce-billing-fields h3, .woocommerce-additional-fields h3, .woocommerce-order-details__title, .woocommerce-order-downloads__title, .woocommerce-column__title, .woocommerce-account h2 {
  margin-top: 40px; font-family: var(--f-serif); font-weight: 400; font-size: 20px; letter-spacing: .12em;
}
.wc-proceed-to-checkout { margin-top: 20px; }
.wc-proceed-to-checkout .checkout-button { width: 100%; }
.cart-empty { margin-top: 28px; }
.return-to-shop { margin-top: 20px; }

/* 購入手続き */
.woocommerce form .form-row { margin: 0 0 18px; padding: 0; }
.woocommerce form .form-row label { display: block; margin-bottom: 6px; font-size: 14px; letter-spacing: .06em; }
.woocommerce form .form-row .required { color: #8a3b12; text-decoration: none; border: 0; }
.woocommerce form .form-row .optional { font-size: 12px; color: var(--c-ink-soft); }
.woocommerce form .form-row.woocommerce-invalid input.input-text, .woocommerce form .form-row.woocommerce-invalid select { border-color: #8a3b12; }
.woocommerce form .form-row-first, .woocommerce form .form-row-last { width: calc(50% - 10px); float: left; }
.woocommerce form .form-row-last { margin-left: 20px; }
.woocommerce form .form-row-wide, .woocommerce form .form-row.notes { clear: both; }
.woocommerce .col2-set::after, .woocommerce form .woocommerce-billing-fields__field-wrapper::after { content: ""; display: table; clear: both; }
.woocommerce-checkout .col2-set { display: grid; grid-template-columns: 1fr; }
.woocommerce form.checkout { display: grid; grid-template-columns: minmax(0, 1.2fr) minmax(0, 1fr); gap: 0 clamp(28px, 4vw, 56px); align-items: start; }
.woocommerce form.checkout > .woocommerce-NoticeGroup { grid-column: 1 / -1; }
.woocommerce form.checkout #customer_details { grid-column: 1; grid-row: 1 / span 3; }
.woocommerce form.checkout #order_review_heading, .woocommerce form.checkout #order_review { grid-column: 2; }
#order_review { padding: 4px 24px 24px; background: var(--c-ivory); }
#order_review table.shop_table { margin-top: 12px; }
#payment .payment_methods { margin: 20px 0 0; }
#payment .payment_methods li { padding: 12px 0; border-bottom: 1px solid var(--c-line-light); }
#payment .payment_methods li label { display: inline-flex; align-items: center; min-height: 44px; font-family: var(--f-serif); letter-spacing: .08em; cursor: pointer; }
#payment .payment_methods li input[type="radio"] { width: 20px; height: 20px; margin: 0 10px 0 0; accent-color: var(--c-charcoal); vertical-align: middle; }
#payment .payment_box { margin-top: 6px; padding: 10px 14px; background: var(--c-cream); font-size: 13px; color: var(--c-ink-soft); }
#payment .place-order { margin-top: 20px; }
#payment #place_order { width: 100%; }
.woocommerce-terms-and-conditions-wrapper, .woocommerce-privacy-policy-text { font-size: 12.5px; color: var(--c-ink-soft); }
.woocommerce-form__label-for-checkbox { display: inline-flex !important; align-items: center; gap: 10px; min-height: 44px; cursor: pointer; }
.woocommerce-form__label-for-checkbox input { width: 20px; height: 20px; accent-color: var(--c-charcoal); }
.woocommerce-form-login-toggle, .woocommerce-form-coupon-toggle { margin-top: 8px; }
.woocommerce mark { padding: 0; background: none; color: inherit; font-weight: 600; }
.woocommerce .download-purchased { white-space: nowrap; }
.woocommerce-MyAccount-navigation a { word-break: auto-phrase; text-wrap: pretty; }
/* Password reset (ask for the link, set the new password): explanation, label, field, button, one under the other at
   every width; WooCommerce's half-width first / last rows put the button beside the field (Shia 214529) */
.woocommerce form.lost_reset_password .form-row-first, .woocommerce form.lost_reset_password .form-row-last { width: 100%; float: none; margin-left: 0; }
.woocommerce form.lost_reset_password .form-row { clear: both; }
.woocommerce form.lost_reset_password > p:first-child { margin-bottom: 18px; }
/* Qualified invoice details under an order (content plugin inc/invoice.php) */
.tgoc-invoice { margin: 28px 0 0; padding: 16px 20px; border: 1px solid var(--c-line-light); border-left: 3px solid var(--c-yellow); background: var(--c-ivory); }
.tgoc-invoice__title { margin: 0 0 8px; font-size: 15px; letter-spacing: .08em; }
.tgoc-invoice__list { margin: 0; padding-left: 1.2em; font-size: 14px; line-height: 1.9; }
.tgoc-account-note { margin: 0 0 18px; font-size: 14px; line-height: 1.9; color: var(--c-ink-soft); }
.woocommerce-billing-fields + .tgoc-account-note, .woocommerce-billing-fields__field-wrapper + .tgoc-account-note { margin: 14px 0 0; }
.woocommerce form.login, .woocommerce form.register, .woocommerce form.checkout_coupon { margin-top: 20px; padding: 24px; background: var(--c-ivory); }
.woocommerce .lost_password { margin-top: 10px; font-size: 13px; }
.woocommerce .lost_password a { display: inline-flex; align-items: center; min-height: 44px; }

/* 注文完了 */
.woocommerce-thankyou-order-received { margin-top: 28px; font-family: var(--f-serif); font-size: 18px; letter-spacing: .08em; }
.woocommerce-order-overview { display: grid; grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); gap: 0; margin-top: 24px; border-top: 1px solid var(--c-line-light); }
.woocommerce-order-overview li { padding: 14px 12px 14px 0; border-bottom: 1px solid var(--c-line-light); font-size: 12.5px; color: var(--c-ink-soft); letter-spacing: .08em; }
.woocommerce-order-overview li strong { display: block; margin-top: 4px; font-size: 15px; color: var(--c-ink); font-weight: 500; }
.woocommerce-order-downloads { margin-top: 12px; padding: 4px 24px 20px; background: var(--c-ivory); border-left: 3px solid var(--c-yellow); }
.woocommerce-order-downloads table.shop_table { margin-top: 8px; }
.woocommerce table .download-file a.button, .woocommerce-MyAccount-downloads-file { white-space: nowrap; }
.woocommerce-customer-details address { margin-top: 12px; padding: 16px 20px; font-style: normal; border: 1px solid var(--c-line-light); }
.woocommerce-customer-details--email, .woocommerce-customer-details--phone { margin-top: 6px; }

/* マイアカウント */
.woocommerce-account .woocommerce { display: grid; grid-template-columns: 220px minmax(0, 1fr); gap: clamp(24px, 4vw, 56px); margin-top: 32px; align-items: start; }
.woocommerce-account:not(.logged-in) .woocommerce { display: block; }
.woocommerce-MyAccount-navigation ul { border-top: 1px solid var(--c-line-light); }
.woocommerce-MyAccount-navigation li { border-bottom: 1px solid var(--c-line-light); }
.woocommerce-MyAccount-navigation a { display: flex; align-items: center; min-height: 48px; padding: 0 10px; font-family: var(--f-serif); letter-spacing: .1em; text-decoration: none; }
.woocommerce-MyAccount-navigation .is-active a { background: var(--c-ivory); box-shadow: inset 3px 0 0 var(--c-yellow); }
.woocommerce-MyAccount-content > p:first-child { margin-top: 0; }
.woocommerce-MyAccount-content p + p { margin-top: 1em; }
.woocommerce-pagination { margin-top: 20px; display: flex; gap: 12px; }
.u-columns.col2-set { display: grid; grid-template-columns: 1fr 1fr; gap: 32px; }

/* ---------- タブレット ---------- */
@media (max-width: 1099px) {
  .shop-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 40px 24px; }
}
@media (max-width: 900px) {
  .woocommerce form.checkout { grid-template-columns: 1fr; }
  .woocommerce form.checkout #customer_details, .woocommerce form.checkout #order_review_heading, .woocommerce form.checkout #order_review { grid-column: 1; grid-row: auto; }
  .woocommerce-account .woocommerce { grid-template-columns: 1fr; }
  .woocommerce-MyAccount-navigation ul { display: flex; flex-wrap: wrap; border-top: 0; gap: 0 4px; }
  .woocommerce-MyAccount-navigation li { border-bottom: 0; }
  .woocommerce-MyAccount-navigation a { border: 1px solid var(--c-line-light); }
}

/* ---------- 商品詳細はタブレットから一段（画像、商品情報の順） ---------- */
@media (max-width: 1023px) {
  .shop-product { grid-template-columns: minmax(0, 1fr); gap: 32px; }
  .shop-product__media { justify-self: center; width: min(100%, 560px); }
}

/* ---------- SP ---------- */
@media (max-width: 767px) {
  .shop-grid { grid-template-columns: 1fr; gap: 40px; margin-top: 32px; }
  .shop-head--image { grid-template-columns: 1fr; }
  .shop-cartlink { position: static; margin-top: 4px; float: right; }
  .shop-product { gap: 24px; }
  .shop-zoomer__foot { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .shop-zoomer__caption { grid-column: 1 / -1; grid-row: 1; }
  .shop-zoomer__img { max-height: calc(100vh - 200px); max-height: calc(100dvh - 200px); }
  .shop-product__gallery { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .shop-info { grid-template-columns: 1fr; gap: 2px; }
  .shop-info dd + dt { margin-top: 10px; }
  .u-columns.col2-set { grid-template-columns: 1fr; }
  .woocommerce form .form-row-first, .woocommerce form .form-row-last { width: 100%; float: none; margin-left: 0; }
  #order_review { padding: 4px 16px 18px; }
  .woocommerce table.shop_table td.actions .coupon { float: none; display: flex; margin-bottom: 12px; }
  .woocommerce table.shop_table td.actions .coupon .input-text { flex: 1 1 140px; width: auto; }
  .woocommerce table.shop_table td.actions .button { width: 100%; }
  /* 表は1件ずつ縦に並べる（WooCommerceが付けるdata-titleを見出しにする） */
  .woocommerce table.shop_table_responsive thead, .woocommerce table.my_account_orders thead, .woocommerce table.woocommerce-table--order-downloads thead { display: none; }
  .woocommerce table.shop_table_responsive tr, .woocommerce table.my_account_orders tr, .woocommerce table.woocommerce-table--order-downloads tr { display: block; padding: 10px 0; border-bottom: 1px solid var(--c-line-light); }
  .woocommerce table.shop_table_responsive td, .woocommerce table.my_account_orders td, .woocommerce table.woocommerce-table--order-downloads td { display: flex; justify-content: space-between; gap: 16px; padding: 6px 0; border: 0; text-align: right; }
  .woocommerce table.shop_table_responsive td::before, .woocommerce table.my_account_orders td::before, .woocommerce table.woocommerce-table--order-downloads td::before { content: attr(data-title); flex: none; font-family: var(--f-serif); color: var(--c-ink-soft); text-align: left; }
  .woocommerce table.shop_table_responsive td.product-remove::before, .woocommerce table.shop_table_responsive td.product-thumbnail::before, .woocommerce table.shop_table_responsive td.actions::before { display: none; }
  .woocommerce table.shop_table_responsive td.product-thumbnail { justify-content: flex-start; }
  .woocommerce table.shop_table_responsive td.actions { display: block; text-align: left; }
  .woocommerce table.shop_table tfoot tr { display: flex; justify-content: space-between; }
  .woocommerce table.shop_table tfoot th, .woocommerce table.shop_table tfoot td { border: 0; }
  .cart_totals { width: 100%; }
}

/* 小さな文字リンクも指で押せる高さに（見た目の行は変えず、押せる範囲だけ44pxにする） */
.shop-notice-link, .woocommerce-info a.showcoupon, .woocommerce-info a.showlogin, .woocommerce table.shop_table td a:not(.button):not(.remove), .woocommerce-order-details a:not(.button), .woocommerce-MyAccount-content a:not(.button) {
  display: inline-flex; align-items: center; min-height: 44px; text-underline-offset: 3px;
}
.woocommerce table.shop_table td.product-name a { min-height: 44px; }
/* パスワード欄の「表示」ボタン（WooCommerceのアイコン用CSSは読み込まないため文字で示す） */
.woocommerce .password-input { position: relative; display: block; }
.woocommerce .password-input input { padding-right: 64px; }
.woocommerce .show-password-input { position: absolute; right: 2px; top: 2px; display: grid; place-items: center; width: 56px; height: 44px; padding: 0; border: 0; background: none; color: var(--c-ink-soft); font-size: 12px; cursor: pointer; }
.woocommerce .show-password-input::after { content: "表示"; }
.woocommerce .show-password-input.display-password::after { content: "隠す"; }

/* 販売準備中：価格・購入ボタンの代わりの表示（下に空白を残さない） */
.shop-status { display: inline-flex; align-items: center; justify-self: start; min-height: 28px; padding: 0 12px; border: 1px solid var(--c-stone); border-radius: 14px; background: var(--c-ivory); color: var(--c-ink-soft); font-family: var(--f-sans); font-size: 12.5px; letter-spacing: .14em; }
.shop-product__pricebox { margin-top: 24px; }
.shop-product__pricebox .shop-product__price { margin-top: 0; }
.shop-product__pricebox .shop-status { min-height: 32px; font-size: 13px; }
.shop-preparing { color: var(--c-ink-soft); }
.shop-preparing--box { margin: 0; padding: 16px 20px; border: 1px solid var(--c-line-light); border-left: 3px solid var(--c-yellow); background: var(--c-ivory); font-size: 14px; line-height: 1.9; }

/* Download buttons (order received, My account downloads): the file name stays inside the screen and wraps at its
   hyphens and dots, not every letter or two (narrow letter spacing, no break-all) */
.woocommerce table .download-file a.button, .woocommerce table .download-file .woocommerce-MyAccount-downloads-file { max-width: 100%; white-space: normal; overflow-wrap: break-word; word-break: normal; letter-spacing: .02em; }
/* In the tables the headings (WooCommerce's .nobr) and the short cells stay on one line: beside My account's menu,
   期限 and なし fell into one letter a line */
.woocommerce table .nobr, .woocommerce table td.download-remaining, .woocommerce table td.download-expires { white-space: nowrap; }
/* At every width the download lists (order page, order received, My account downloads) are one card per product
   (product, purchase date, downloads left, expiry, download): beside My account's menu the five-column table left the
   product column a few letters wide, so a long product and plan name stood one or two letters a line even at 1440px
   (shia-official-home-20261108-214529). The product name wraps at phrases. */
.woocommerce table.woocommerce-table--order-downloads td.download-product > *, .woocommerce table.woocommerce-MyAccount-downloads td.download-product > * { min-width: 0; word-break: auto-phrase; text-wrap: pretty; }
@media all {
  .woocommerce table.woocommerce-table--order-downloads thead, .woocommerce table.woocommerce-MyAccount-downloads thead { display: none; }
  .woocommerce table.woocommerce-table--order-downloads, .woocommerce table.woocommerce-MyAccount-downloads, .woocommerce table.woocommerce-table--order-downloads tbody, .woocommerce table.woocommerce-MyAccount-downloads tbody { display: block; width: 100%; }
  .woocommerce table.woocommerce-table--order-downloads tr, .woocommerce table.woocommerce-MyAccount-downloads tr { display: block; padding: 10px 0 14px; border-bottom: 1px solid var(--c-line-light); }
  .woocommerce table.woocommerce-table--order-downloads td, .woocommerce table.woocommerce-MyAccount-downloads td { display: flex; justify-content: space-between; align-items: baseline; gap: 16px; padding: 6px 0; border: 0; text-align: right; }
  .woocommerce table.woocommerce-table--order-downloads td::before, .woocommerce table.woocommerce-MyAccount-downloads td::before { content: attr(data-title); flex: none; font-family: var(--f-serif); color: var(--c-ink-soft); text-align: left; }
  .woocommerce table.woocommerce-table--order-downloads td.download-file, .woocommerce table.woocommerce-MyAccount-downloads td.download-file { display: block; text-align: left; }
  .woocommerce table.woocommerce-table--order-downloads td.download-file::before, .woocommerce table.woocommerce-MyAccount-downloads td.download-file::before { display: block; float: none; margin-bottom: 6px; }
  .woocommerce table .download-file a.button, .woocommerce table .download-file .woocommerce-MyAccount-downloads-file { display: flex; align-items: center; justify-content: center; width: 100%; min-height: 44px; padding: 10px 14px; line-height: 1.5; text-align: center; }
}
/* The Stripe gateway's invisible input it reads the form's text style from (absolutely placed, opacity 0) takes the
   full width of the fields and pushes past the screen's right edge: kept to its own size, the style is the same. */
#wc-stripe-hidden-style-input { width: 1px !important; max-width: 1px; left: 0; }
