.shop-page { min-height:100vh; display:flex; flex-direction:column; }
.shop-header { background:var(--paper); border-bottom:1px solid var(--line); }
.shop-header-inner { display:flex; justify-content:space-between; align-items:center; gap:24px; padding-block:12px; }
.shop-header nav { display:flex; flex-wrap:wrap; gap:18px; align-items:center; font-weight:700; font-size:14px; }
.shop-header nav [aria-current] { text-decoration:underline; text-underline-offset:5px; }
.shop-main { flex:1; max-width:1100px; padding-block:36px 64px; }
.shop-main h1 { font-size:clamp(30px,5vw,56px); margin:18px 0 30px; }
.shop-main h2 { font-size:26px; line-height:1.2; margin:0 0 18px; }
.shop-main h3 { font-family:var(--body),Arial,sans-serif; font-size:19px; line-height:1.4; letter-spacing:normal; }
.shop-main p { line-height:1.65; }
.shop-steps { font-size:13px; color:var(--muted); }
.shop-panel { background:var(--paper); border:1px solid var(--line); border-radius:4px; padding:24px; margin:24px 0; min-width:0; }
.shop-panel legend { padding-inline:8px; font-size:22px; font-weight:800; }
.shop-main form { margin-block:18px; }
.shop-main form form { margin:0; }
.shop-fields,.shop-addresses { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:20px; }
.shop-addresses .shop-panel { margin-top:0; }
.shop-main label:not(.shop-check) { display:flex; flex-direction:column; gap:8px; font-size:14px; font-weight:650; }
.shop-main input:not([type=checkbox]):not([type=radio]),.shop-main select { width:100%; min-height:46px; border:1px solid #9aafbf; border-radius:3px; padding:10px 12px; background:#fff; color:var(--ink); font:inherit; }
.shop-main .shop-quantity { width:100px; display:inline-flex; margin:0 12px 12px 0; }
.shop-main .shop-check { display:flex; align-items:flex-start; gap:12px; margin-block:18px; font-size:15px; line-height:1.6; cursor:pointer; }
.shop-check input { flex:0 0 auto; width:20px; height:20px; margin-top:3px; accent-color:#087da4; }
.shop-main address { font-style:normal; line-height:1.7; overflow-wrap:anywhere; }
.shop-main .btn { margin:8px 12px 8px 0; white-space:normal; line-height:1.5; text-align:center; cursor:pointer; }
.shop-table-wrap { overflow-x:auto; margin-block:20px; }
.shop-table { width:100%; border-collapse:collapse; text-align:left; font-size:15px; }
.shop-table caption { text-align:left; margin-bottom:16px; font-weight:750; }
.shop-table th,.shop-table td { border-bottom:1px solid var(--line); padding:14px 12px; vertical-align:top; }
.shop-table th { font-size:13px; }
.shop-table td:first-child { min-width:180px; }
.shop-table .shop-quantity { margin:0; }
.shop-link-button { border:0; background:none; padding:8px 0; color:#075e82; text-decoration:underline; cursor:pointer; font:inherit; text-align:left; }
.shop-error-text { color:#963221; }
.shop-legal { border-block:1px solid var(--line); padding-block:24px; margin-block:28px; }
.shop-legal details { margin-block:14px; }
.shop-legal summary { cursor:pointer; font-weight:750; padding-block:10px; }
.shop-legal-text { white-space:pre-wrap; overflow-wrap:anywhere; font-size:15px; line-height:1.7; max-height:28rem; overflow-y:auto; padding:12px 0; }
.shop-totals { display:grid; grid-template-columns:minmax(0,1fr) auto; gap:14px 24px; line-height:1.5; }
.shop-totals dt,.shop-totals dd { margin:0; }
.shop-totals dd { text-align:right; font-weight:700; }
.shop-totals dt:last-of-type,.shop-totals dd:last-of-type { border-top:2px solid var(--line); padding-top:16px; font-size:18px; font-weight:850; }
.shop-footer { display:flex; flex-wrap:wrap; gap:24px; padding-block:28px; border-top:1px solid var(--line); font-size:14px; }
.shop-skip { position:absolute; left:12px; top:-100px; padding:12px; background:var(--paper); z-index:100; }
.shop-skip:focus { top:12px; }
.shop-main .notice { margin-block:24px; }
@media(max-width:650px) {
  .shop-header-inner { flex-direction:column; align-items:flex-start; gap:8px; }
  .shop-header .brand-logo { width:160px; height:60px; }
  .shop-fields,.shop-addresses { grid-template-columns:minmax(0,1fr); }
  .shop-panel { padding:18px; }
  .shop-totals { gap:12px; font-size:14px; }
  .shop-totals dt:last-of-type,.shop-totals dd:last-of-type { font-size:16px; }
  .shop-final-button { width:100%; }
}