.payment-actions, .downloads {
  display: grid;
  gap: 12px;
  margin: 24px 0;
}
.payment-actions .primary {
  justify-content: center;
}
.downloads:empty, .payment-actions:empty {
  display: none;
}
.delivery-section { margin: 32px 0; padding: 24px; border: 1px solid var(--line); text-align: left; }
.delivery-fields { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0 16px; }
.delivery-section p { line-height: 1.6; }
.address-check { margin: 20px 0; padding: 20px; border: 1px solid var(--line); background: var(--paper, #f5f3ee); }
.address-check label { display: block; margin-bottom: 12px; }
.address-check select { display: block; width: 100%; margin-top: 8px; font: inherit; padding: 10px; }
.address-check button { display: block; width: 100%; margin-top: 12px; white-space: normal; }
@media (max-width: 520px) { .delivery-fields { grid-template-columns: 1fr; } }
:root {
  --paper:#f7f5ef;
  --ink:#26332f;
  --muted:#4f5b53;
  --font-ui:system-ui,-apple-system,"Segoe UI",Arial,sans-serif;
  --line:#dedfd4;
  --accent:#c65d3a;
  --green:#344b40;
  --wash:#eeeee5;
  font-family:var(--font-ui);
  font-size:18px;
  line-height:1.6;
  color:var(--ink);
  background:var(--paper);
  -webkit-text-size-adjust:100%;
  text-size-adjust:100%;
}
* {
  box-sizing:border-box;
}
[hidden] {
  display:none!important;
}
body {
  margin:0;
}
button,input,select,textarea {
  font:inherit;
}
button,a,input {
  -webkit-tap-highlight-color:transparent;
}
button {
  cursor:pointer;
}
button:disabled {
  cursor:default;
}
button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible {
  outline:3px solid #c65d3a;
  outline-offset:4px;
}
a {
  color:inherit;
  text-decoration:none;
}
.topbar {
  min-height:97px;
  flex-wrap:wrap;
  padding-block:16px;
  border-bottom:1px solid var(--line);
  display:flex;
  align-items:center;
  gap:24px;
  padding:0 5.3vw;
}
.wordmark {
  font:700 2rem/1.25 var(--font-ui);
  letter-spacing:-.04em;
}
.wordmark span {
  color:var(--accent);
  font-size:1rem;
  padding-left:4px;
  vertical-align:baseline;
}
.environment {
  font-size:1rem;
  letter-spacing:1.6px;
  border:1px solid #bfc7b6;
  border-radius:3px;
  padding:7px 10px;
  color:var(--muted);
}
.text-button {
  border:0;
  background:none;
  padding:12px 0;
  font-size:1rem;
  color:var(--ink);
}
.account-actions {
  margin-left:auto;
}
main {
  max-width:1440px;
  margin:auto;
  padding:0 5.3vw;
}
h1,h2 {
  font-family:var(--font-ui);
  font-weight:650;
}
h1 {
  font-size:64px;
  line-height:1.08;
  letter-spacing:-.025em;
  margin:20px 0;
}
h2 {
  font-size:32px;
  letter-spacing:-.02em;
  margin:14px 0;
}
h3 {
  font-weight:500;
}
.eyebrow {
  font-size:1rem;
  font-weight:600;
  letter-spacing:2px;
  line-height:1.7;
}
.muted,.intro {
  color:var(--muted);
  font-size:1rem;
  line-height:1.7;
}
.intro {
  font-size:1rem;
}
.login-layout {
  display:grid;
  grid-template-columns:1.1fr 1fr;
  gap:6%;
  padding:65px 0 75px;
  align-items:start;
}
.login-entry { min-width:0; max-width:440px; }
.login-entry .login-card { max-width:none; width:100%; }
#recovery-section { border-top:0; box-shadow:0 22px 40px #343c2909; padding-top:18px; padding-bottom:22px; }
#recovery-section summary { cursor:pointer; }
.welcome h1 {
  font-size:clamp(2.25rem,5vw,3.5rem);
  margin:15px 0 24px;
}
.login-card {
  max-width:440px;
  background:#fffdf8;
  border:1px solid var(--line);
  padding:40px 38px;
  box-shadow:0 18px 50px #343c2910;
}
.login-card>p:not(.eyebrow) {
  color:var(--muted);
  font-size:1rem;
  line-height:1.6;
}
label {
  font-size:1rem;
  display:block;
  margin:25px 0 10px;
}
input {
  width:100%;
  border:1px solid #c9cdbf;
  background:var(--paper);
  padding:15px;
  color:var(--ink);
  border-radius:0;
}
.primary,.secondary {
  padding:17px 20px;
  width:100%;
  border:1px solid var(--green);
  background:var(--green);
  color:#fff;
  font-size:1rem;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:10px;
  transition:background .15s;
}
.primary:hover {
  background:#203e2f;
}
.primary:disabled {
  background:#e1e5df;
  color:#4f5b53;
  border-color:#89948a;
}
.primary span {
  font-size:19px;
}
.secondary {
  background:transparent;
  color:var(--ink);
  justify-content:center;
  width:auto;
}
.secondary:hover {
  background:var(--wash);
}
.fineprint {
  font-size:1rem!important;
  color:var(--muted);
  line-height:1.7;
  margin:20px 0 0;
}
.error {
  font-size:1rem;
  color:#a24329;
  line-height:1.4;
  min-height:8px;
}
.login-art {
  height:190px;
  position:relative;
  overflow:hidden;
  background:#b0b7a0;
  background-image:var(--studio-login-image,none);
  background-size:cover;
  background-position:center;
  margin-top:20px;
  max-width:435px;
}
.login-art.has-image>* { display:none; }
.arch {
  position:absolute;
  top:25px;
  left:50px;
  width:110px;
  height:200px;
  border-radius:65px 65px 0 0;
  background:#dfcaa5;
}
.sun {
  position:absolute;
  width:60px;
  height:60px;
  border-radius:50%;
  background:#e8ba88;
  right:75px;
  top:23px;
}
.hill {
  position:absolute;
  width:400px;
  height:240px;
  border-radius:50%;
  background:#6b8170;
  top:110px;
  left:100px;
  transform:rotate(-20deg);
}
.hill.two {
  background:#395348;
  left:-120px;
  top:140px;
}
.login-art>span {
  position:absolute;
  bottom:14px;
  right:17px;
  color:#fff;
  font-size:1rem;
  letter-spacing:2px;
}
.collection-header {
  display:flex;
  justify-content:space-between;
  align-items:center;
  padding:49px 0 42px;
}
.collection-header h1 {
  font-size:49px;
  margin:14px 0 14px;
}
.collection-header .muted {
  margin:0;
}
.collection-stamp {
  text-align:center;
  font-size:1rem;
  line-height:1.5;
  letter-spacing:1.7px;
  transform:rotate(10deg);
  margin:0 18px 0 30px;
  color:var(--muted);
}
.collection-stamp b {
  display:block;
  font-size:49px;
  line-height:1.2;
  font-weight:400;
}
.gallery-layout {
  display:grid;
  grid-template-columns:minmax(0,1fr) 360px;
  gap:48px;
  align-items:start;
}
.gallery-toolbar {
  border-top:1px solid var(--line);
  padding:18px 0 23px;
  display:flex;
  justify-content:space-between;
  font-size:1rem;
  gap:15px;
}
.gallery-toolbar b {
  font-size:1rem;
  background:#e8e8de;
  margin-left:9px;
  padding:5px 7px;
  border-radius:10px;
  font-weight:400;
}
#selection-label {
  font-size:1rem;
  color:var(--muted);
}
.image-grid {
  display:grid;
  grid-template-columns:repeat(3,minmax(0,1fr));
  gap:25px 20px;
}
.image-card {
  border:0;
  background:transparent;
  text-align:left;
  padding:0;
  color:var(--ink);
}
.image-frame {
  position:relative;
  overflow:hidden;
  background:#d8d6c8;
}
.image-frame img {
  display:block;
  width:100%;
  height:auto;
  aspect-ratio:3/4;
  object-fit:cover;
  transition:transform .25s;
}
.image-card:hover img {
  transform:scale(1.025);
}
.image-check {
  position:absolute;
  right:12px;
  top:12px;
  border:1px solid #ffffffc4;
  background:#ffffff35;
  width:24px;
  height:24px;
  border-radius:50%;
  font-size:1rem;
  color:transparent;
  display:grid;
  place-items:center;
}
.image-card[aria-pressed=true] .image-check {
  background:var(--green);
  color:white;
  border-color:white;
}
.image-card[aria-pressed=true] .image-frame {
  outline:3px solid var(--green);
  outline-offset:3px;
}
.image-caption {
  display:flex;
  justify-content:space-between;
  gap:5px;
  font-size:1rem;
  margin:13px 0 2px;
}
.image-caption span:last-child {
  font-size:1rem;
  color:var(--muted);
}
.gallery-note {
  font-size:1rem;
  color:var(--muted);
  padding:22px 0 35px;
}
.basket {
  position:sticky;
  top:25px;
  border:1px solid #d6d9cc;
  background:#efefe6;
  padding:28px 24px;
}
.basket h2 {
  font-size:29px;
}
.basket .eyebrow {
  font-size:1rem;
  letter-spacing:1.5px;
}
.basket>.muted {
  font-size:1rem;
  margin-bottom:25px;
}
.products {
  display:grid;
  gap:8px;
}
.product {
  border:1px solid #d4d8ca;
  background:transparent;
  padding:13px 11px;
  justify-content:space-between;
  gap:8px;
  align-items:center;
  color:var(--ink);
  text-align:left;
  display:grid;
  grid-template-columns:minmax(0,1fr) auto;
}
.product span {
  font-size:1rem;
  line-height:1.5;
}
.product strong {
  font-size:1rem;
  white-space:nowrap;
  font-weight:500;
}
.product[aria-pressed=true] {
  border-color:var(--green);
  background:#fafbf4;
  box-shadow:inset 3px 0 var(--green);
}
.basket-selection {
  border-top:1px solid #d5d8cb;
  padding-top:22px;
  margin-top:25px;
  display:grid;
  gap:8px;
  font-size:1rem;
}
.basket-selection small {
  font-size:1rem;
  color:var(--muted);
}
.total {
  display:flex;
  justify-content:space-between;
  align-items:center;
  margin:28px 0 12px;
  font-size:1rem;
}
.total strong {
  font:700 1.6rem/1.25 var(--font-ui);
}
.basket-hint {
  font-size:1rem;
  color:var(--muted);
  min-height:30px;
  line-height:1.5;
}
.basket .primary {
  font-size:1rem;
  padding:14px 16px;
}
.basket .fineprint {
  font-size:1rem!important;
}
.order-view {
  max-width:650px;
  margin:65px auto 100px;
}
.order-detail {
  background:var(--wash);
  border:1px solid var(--line);
  padding:30px;
  margin:30px 0;
}
.order-total {
  font:700 1.8rem/1.25 var(--font-ui);
  display:block;
  margin:20px 0;
}
.status-label {
  font-size:1rem;
  color:#4f6b52;
  border:1px solid #adbda5;
  padding:6px 9px;
  display:inline-block;
}
.order-view>.secondary {
  margin-top:30px;
}
footer {
  border-top:1px solid var(--line);
  padding:25px 5.3vw;
  display:flex;
  gap:35px;
  align-items:center;
  color:var(--muted);
  font-size:1rem;
}
footer .wordmark {
  font-size:31px;
  color:var(--ink);
}
footer .wordmark span {
  font-size:1rem;
}
footer>span:last-child {
  margin-left:auto;
}
.global-error {
  font-size:1rem;
  color:#a24329;
  line-height:1.6;
}
.global-error:not(:empty) {
  padding:20px;
  background:#f3e6da;
}
.loading {
  margin:100px 0;
  text-align:center;
  font-size:1rem;
  color:var(--muted);
}
dialog {
  border:1px solid var(--line);
  padding:35px 40px;
  max-width:620px;
  width:calc(100% - 32px);
  background:var(--paper);
  color:var(--ink);
}
dialog::backdrop {
  background:#17251ca3;
  backdrop-filter:blur(3px);
}
dialog form {
  text-align:right;
}
dialog .eyebrow {
  font-size:1rem;
}
dialog h2 {
  font-size:36px;
}
dialog p {
  line-height:1.7;
  font-size:1rem;
}
dialog .primary {
  margin-top:20px;
}
@media(min-width:1500px) {
  .gallery-layout {
    grid-template-columns:minmax(0,1fr) 380px;
    gap:60px;
  }
}
@media(max-width:1000px) {
  .gallery-layout {
    gap:25px;
    grid-template-columns:minmax(0,1fr) 340px;
  }
  .image-grid {
    grid-template-columns:repeat(2,minmax(0,1fr));
  }
  .collection-header h1 {
    font-size:42px;
  }
  .login-layout {
    gap:6%;
  }
  .welcome h1 {
    font-size:3rem;
  }
  .login-card {
    padding:30px;
  }
}
@media(max-width:800px) {
  .topbar {
    min-height:78px;
    height:auto;
    padding:0 6vw;
    gap:18px;
  }
  .wordmark {
    font-size:37px;
  }
  .environment {
    font-size:1rem;
    letter-spacing:1px;
  }
  main {
    padding:0 6vw;
  }
  .login-layout {
    grid-template-columns:1fr;
    padding:35px 0 45px;
    gap:30px;
  }
  .login-entry { max-width:none; }
  .welcome h1 {
    font-size:2.5rem;
  }
  .welcome .intro {
    font-size:1rem;
  }
  .welcome .eyebrow {
    font-size:1rem;
  }
  .login-art {
    display:none;
  }
  .login-card {
    max-width:none;
    padding:25px;
  }
  .login-card h2 {
    font-size:30px;
  }
  }
  .gallery-layout {
    display:flex;
    flex-direction:column;
    gap:10px;
  }
  .gallery-layout>div,.basket {
    width:100%;
  }
  .basket {
    position:static;
    margin-bottom:35px;
    padding:25px;
  }
  .collection-header {
    padding:30px 0;
  }
  .collection-header h1 {
    font-size:38px;
    max-width:280px;
  }
  .collection-header .eyebrow {
    font-size:1rem;
  }
  .collection-stamp {
    display:none;
  }
  .collection-header .muted {
    font-size:1rem;
  }
  .image-grid {
    gap:24px 16px;
  }
  .gallery-toolbar {
    font-size:1rem;
  }
  #selection-label {
    font-size:1rem;
  }
  .gallery-note {
    padding-bottom:8px;
  }
  .order-view {
    margin:40px 0 70px;
  }
  .order-view h1 {
    font-size:46px;
  }
  .order-detail {
    padding:25px;
  }
  .secondary {
    font-size:1rem;
    line-height:1.5;
  }
  footer {
    gap:20px;
    padding:20px 6vw;
  }
  footer>span:nth-child(2) {
    display:none;
  }
  dialog {
    padding:25px;
  }
  .image-frame img {
    aspect-ratio:3/4;
  }
}
.account-actions { display:flex; column-gap:16px; row-gap:0; flex-wrap:wrap; justify-content:flex-end; }
#personal-code { width:100%; box-sizing:border-box; font-family:monospace; }
#access-dialog form { margin-top:16px; }
@media(prefers-reduced-motion:reduce) {
  * {
    scroll-behavior:auto!important;
    transition:none!important;
  }
}

.product-editor { margin:16px 0; }
.product-editor select { display:block; width:100%; padding:10px; margin:8px 0 16px; }
.set-download { display:flex; align-items:center; gap:8px; margin:6px 0; }
.set-download input { width:auto; margin:0; }
.cart-line { border-top:1px solid var(--line,#ddd); padding:12px 0; }
.cart-line input { display:block; width:90px; padding:8px; margin:4px 0; }
.cart-line button { display:block; margin:8px 0; text-align:left; }
.basket-selection { display:block; }
.crop-preview { position:relative; overflow:hidden; width:min(100%,220px); margin:14px auto; background:#eee; }
.crop-preview img { position:absolute; max-width:none; max-height:none; }
#crop-dialog { width:min(92vw,520px); max-height:90vh; overflow:auto; }
#crop-dialog input { padding:0; width:100%; }
#crop-dialog label { display:flex; justify-content:space-between; }
#review-dialog { max-height:90vh; overflow:auto; }

#crop-dialog .crop-preview { width:min(100%,160px); }
#crop-dialog label { margin:8px 0 0; }
#crop-dialog input { margin:4px 0 8px; height:24px; }

.gallery-photo{min-width:0}.gallery-photo>.image-card{width:100%}.favorite-button{margin-top:8px;padding:8px 12px;border:1px solid var(--line,#d5dcd7);border-radius:6px;background:white;cursor:pointer}.favorite-button[aria-pressed="true"]{background:#e8eee5}
.school-public{max-width:700px;margin:2rem auto;padding:1.5rem}.school-public h1{font-size:clamp(2rem,6vw,3.5rem)}.school-public input:not([type=checkbox]),.school-public select{display:block;width:100%;box-sizing:border-box;margin:.5rem 0 1rem;padding:.75rem}.school-public label{display:block;margin:.8rem 0}.school-public input[type=checkbox]{width:auto;margin-right:.6rem}.school-policy{margin:1.5rem 0;padding:1rem;border:1px solid #d7ded5;border-radius:12px}.school-copy{white-space:pre-wrap;overflow-wrap:anywhere}

/* Readable controls and image-led order summaries on desktop and small screens. */
button,.primary,.secondary,.text-button,select { min-height:48px; }
input:not([type=checkbox]):not([type=range]) { min-height:48px; }
input[type=checkbox] { width:24px; height:24px; flex-shrink:0; accent-color:var(--green); }
button,input,select,textarea { line-height:1.5; }
.product { min-height:64px; }
.product small { grid-column:1 / -1; font-size:1rem; line-height:1.5; }
.product:disabled { color:#505b53; background:#e5e8e2; border-color:#a2aba0; }
.product:disabled strong { font-weight:600; }
.product strong,.total strong,.order-total { font-variant-numeric:tabular-nums; }
.image-caption,.gallery-toolbar,footer,.topbar { flex-wrap:wrap; }
.image-caption span:last-child { color:var(--muted); }
h1,h2,h3,p,figcaption { overflow-wrap:anywhere; }
.order-photo { display:grid; grid-template-columns:96px minmax(0,1fr); gap:18px; align-items:center; margin:20px 0; padding:16px 0; border-top:1px solid #c7cec3; }
.order-photo figcaption { display:grid; gap:6px; min-width:0; line-height:1.5; }
.order-photo figcaption span { color:var(--muted); }
.order-thumbnail { display:block; width:96px; height:112px; object-fit:contain; background:#fffdf8; border:1px solid var(--line); border-radius:6px; }
.order-photo .crop-preview { width:96px; margin:0; border:1px solid var(--line); border-radius:6px; }
.order-photo-missing { font-size:1rem; overflow-wrap:anywhere; }
@media(max-width:420px) {
  .topbar { column-gap:12px; padding-inline:4vw; }
  main { padding-inline:4vw; }
  .login-card,.basket,.order-detail,dialog { padding:20px; }
  .image-grid { gap:20px 12px; }
  .order-photo { grid-template-columns:80px minmax(0,1fr); gap:12px; }
  .order-thumbnail,.order-photo .crop-preview { width:80px; }
  .order-thumbnail { height:96px; }
  .collection-header h1,.order-view h1 { font-size:2rem; }
}

/* Payment stays attached to the order, including external bank/provider steps. */
.paypal-buttons { width:100%; max-width:420px; min-height:48px; }
.payment-actions { align-items:stretch; }
.payment-overlay { width:min(540px,calc(100% - 32px)); max-height:calc(100dvh - 32px); overflow:auto; padding:32px; }
.payment-overlay::backdrop { background:rgb(19 30 25 / 72%); backdrop-filter:blur(3px); }
.payment-overlay h2 { line-height:1.25; margin-top:0; }
.payment-window-status { background:var(--paper,#f5f4ef); border-left:4px solid var(--accent,#37624b); padding:16px; }
.payment-window-controls { display:grid; gap:12px; }
.payment-window-controls button { width:100%; white-space:normal; }
.payment-alternatives { width:100%; }
.payment-alternatives summary { cursor:pointer; padding:12px 0; }
.payment-alternatives button { margin:8px 8px 0 0; }
@media (max-width:480px) { .payment-overlay { padding:24px 20px; } }
.inbox-message{white-space:pre-wrap;overflow-wrap:anywhere}.gallery-contact{margin:1rem 0}.gallery-contact textarea{width:100%;font:inherit;padding:.8rem}.gallery-contact article{border-bottom:1px solid #d9ddd7;padding:1rem 0}

/* Whole motifs for browsing; crop previews remain limited to the chosen product. */
.image-frame img { aspect-ratio:auto; object-fit:contain; max-height:360px; }
.image-card:hover img { transform:none; }
.image-frame { display:flex; align-items:center; min-height:100px; background:#e8e8df; }
.select-photo { width:100%; margin-top:12px; justify-content:center; white-space:normal; }
.select-photo[aria-pressed=true], .set-choice[aria-pressed=true], .set-part[aria-pressed=true] { border:2px solid var(--green); background:#e1eadf; }
.select-photo:disabled,.set-choice:disabled { color:var(--muted); background:#eeeee5; }
.owned-label { font-size:1rem; color:var(--green); font-weight:650; margin:8px 0; }
.gallery-photo>a { display:block; text-decoration:underline; }
.set-parts,.set-picker { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:10px; }
.set-part,.set-choice { border:1px solid var(--line); background:var(--paper); color:var(--ink); padding:10px; text-align:left; overflow-wrap:anywhere; }
.set-part img,.set-choice img { width:100%; height:100px; object-fit:contain; display:block; }
.set-part small,.set-part span { display:block; }
.set-part small { font-size:1rem; }
.set-picker { max-height:420px; overflow:auto; padding:6px; }
#photo-dialog { max-width:1100px; max-height:95dvh; overflow:auto; }
#photo-large { display:block; width:100%; height:60dvh; object-fit:contain; margin:16px auto; }
.photo-navigation { display:flex; justify-content:space-between; gap:12px; flex-wrap:wrap; }
#photo-dialog form { display:flex; justify-content:flex-end; }

/* Keep package suggestions and mobile checkout visible without hiding photos. */
.offer-recommendation { border:1px solid var(--green); background:#f8faf4; padding:18px; margin:0 0 16px; }
.offer-recommendation h3 { margin:4px 0 10px; font-size:1.25rem; line-height:1.3; }
.offer-recommendation strong { display:block; font-size:1.2rem; margin:12px 0; }
.offer-recommendation button { width:100%; }
.mobile-selection { display:none; }
@media(max-width:800px) {
  #gallery-view { padding-bottom:calc(78px + env(safe-area-inset-bottom)); }
  .mobile-selection:not([hidden]) { display:block; position:fixed; z-index:20; bottom:0; left:0; right:0; padding:8px max(16px,env(safe-area-inset-left)) calc(8px + env(safe-area-inset-bottom)) max(16px,env(safe-area-inset-right)); background:#fbfaf6; box-shadow:0 -3px 18px rgb(21 40 30 / 16%); }
  .mobile-selection button { width:100%; min-height:48px; border:0; border-radius:7px; color:white; background:var(--green); font:600 1rem/1.3 var(--font-ui); padding:8px 12px; }
}

#crop-dialog .crop-preview { width:min(100%,380px); border:2px solid var(--green); border-radius:6px; touch-action:none; cursor:grab; user-select:none; }
#crop-dialog .crop-preview.is-dragging { cursor:grabbing; }
#crop-dialog .crop-preview img { pointer-events:none; user-select:none; }
.crop-actions,.review-actions { display:flex; flex-wrap:wrap; gap:12px; margin-top:18px; }
.crop-actions button,.review-actions button { flex:1 1 180px; }
