.wrap{max-width:1240px;margin:0 auto;padding:0 20px}
.notice{background:var(--ink);color:#EDE7DD;font-size:13px;text-align:center;padding:9px 16px}

.top{position:sticky;top:0;z-index:20;background:rgba(245,241,234,.94);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);border-bottom:1px solid var(--line)}
.top-in{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:20px;min-height:68px}
.logo{font-size:28px;text-decoration:none;line-height:1}
.search{display:flex;align-items:center;gap:10px;max-width:440px;width:100%;justify-self:center;background:var(--paper);border:1px solid var(--line);border-radius:999px;padding:0 16px;height:44px;color:var(--mute)}
.search input{border:0;outline:0;background:none;flex:1;min-width:0;font-size:15px;color:var(--ink)}
.search:focus-within{border-color:var(--ink)}
.cart-btn{min-height:42px;padding:0 8px 0 18px;font-size:14px}
.count{display:inline-grid;place-items:center;min-width:24px;height:24px;padding:0 7px;border-radius:999px;background:var(--wa);font-size:12px;font-weight:600}

.hero{display:grid;grid-template-columns:1fr 360px;gap:48px;align-items:end;padding-top:64px;padding-bottom:40px}
.hero h1{font-size:clamp(42px,6.4vw,80px);line-height:.98;margin:0}
.steps{list-style:none;counter-reset:s;margin:0;padding:0;display:grid;gap:14px}
.steps li{counter-increment:s;position:relative;padding:4px 0 0 42px;min-height:28px;font-size:14px;line-height:1.45;color:var(--mute)}
.steps li::before{content:counter(s);position:absolute;left:0;top:0;display:grid;place-items:center;width:28px;height:28px;border:1px solid var(--ink);border-radius:50%;color:var(--ink);font-size:13px;font-weight:500}
.steps b{color:var(--ink);font-weight:600}

.cats{border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
.cats-in{display:flex;gap:8px;overflow-x:auto;padding-top:14px;padding-bottom:14px;scrollbar-width:none}
.cats-in::-webkit-scrollbar{display:none}

.list{padding-top:20px;padding-bottom:140px}
.result{font-size:14px;margin:0 0 18px}
.grid{display:grid;grid-template-columns:repeat(4,1fr);gap:40px 24px}
.card{display:grid;gap:10px;align-content:start;text-align:left}
.card-ph{aspect-ratio:4/5;border-radius:6px}
.card-ph .tag{position:absolute;z-index:2;top:10px;left:10px;font-size:11px;font-weight:500;padding:4px 9px;border-radius:999px;background:var(--paper)}
.card-ph .tag.new{background:var(--ink);color:#fff}
.card-ph .in{position:absolute;z-index:2;top:10px;right:10px;font-size:11px;font-weight:600;padding:4px 9px;border-radius:999px;background:var(--wa);color:#fff}
.card-ph.out img{filter:grayscale(1);opacity:.6}
.card-code{font-size:12px;color:var(--mute);margin:0;letter-spacing:.02em}
.card-name{font-size:16px;font-weight:500;margin:0;line-height:1.3}
.card-price{font-size:15px;margin:0}
.card-price small{color:var(--mute);font-size:13px}
.card .btn{min-height:42px;font-size:14px;margin-top:4px}
.card[data-out] .btn{pointer-events:none;opacity:.5}
.empty{text-align:center;padding:60px 0}
.empty p{font-size:28px;margin:0 0 16px}

.foot{background:var(--ink);color:#fff;padding:32px 0 120px}
.foot-in{display:flex;justify-content:space-between;align-items:center;gap:16px;flex-wrap:wrap}
.foot .serif{font-size:24px}.foot .mute{color:#B7B0A4;font-size:13px}

.bar{position:fixed;left:0;right:0;bottom:0;z-index:30;padding:12px 16px calc(12px + env(safe-area-inset-bottom));pointer-events:none}
.bar-in{pointer-events:auto;max-width:560px;margin:0 auto;display:flex;align-items:center;gap:20px;background:var(--ink);color:#fff;border-radius:999px;padding:8px 8px 8px 24px;box-shadow:0 14px 34px rgba(28,26,23,.22)}
.bar-sum{display:flex;gap:14px;align-items:baseline;flex:1;min-width:0}
.bar-sum .mute{color:#B7B0A4;font-size:13px;white-space:nowrap}
.bar-sum strong{font-size:16px;white-space:nowrap}

/* ---------- dialogs ---------- */
.sheet{border:0;padding:0;background:transparent;max-width:none;max-height:none;width:100%;height:100%;margin:0;color:var(--ink)}
.sheet::backdrop{background:rgba(28,26,23,.45)}
.sheet-in{background:var(--bg);position:relative}
.close{position:absolute;top:12px;right:12px;z-index:5;width:42px;height:42px;border-radius:50%;background:var(--paper);display:grid;place-items:center;box-shadow:0 2px 8px rgba(0,0,0,.08)}

.pv{display:grid;grid-template-columns:minmax(0,1.05fr) minmax(0,1fr);width:min(1080px,calc(100% - 48px));height:min(780px,calc(100% - 64px));margin:32px auto;border-radius:var(--r-lg);overflow:hidden}
.pv-gal{position:relative;background:var(--sand);min-width:0;height:100%}
.pv-track{display:flex;overflow-x:auto;scroll-snap-type:x mandatory;height:100%;scrollbar-width:none}
.pv-track::-webkit-scrollbar{display:none}
.pv-track>div{flex:0 0 100%;scroll-snap-align:start;height:100%}
.pv-dots{position:absolute;bottom:14px;left:0;right:0;display:flex;justify-content:center;gap:6px}
.pv-dots i{width:7px;height:7px;border-radius:50%;background:#fff;opacity:.7}
.pv-dots i.on{background:var(--ink);opacity:1}
.pv-info{padding:36px 36px 28px;overflow-y:auto;display:grid;gap:22px;align-content:start}
.pv-code{margin:0;font-size:13px}
.pv-name{font-size:48px;line-height:1;margin:-14px 0 0}
.pv-desc{margin:-8px 0 0;font-size:15px;max-width:52ch}
.pv-desc:empty{display:none}
.pv-group{display:grid;gap:10px}
.pv-label{margin:0;font-size:14px;font-weight:600}
.pv-label .mute{font-weight:400}
.pv-vars{display:flex;flex-wrap:wrap;gap:8px}
.var{display:inline-flex;align-items:center;gap:8px;padding:6px 14px 6px 6px;border-radius:999px;border:1px solid var(--line);background:var(--paper);font-size:14px}
.var i{width:22px;height:22px;border-radius:50%;background:var(--sand);box-shadow:inset 0 0 0 1px rgba(0,0,0,.08)}
.var[aria-checked="true"]{border-color:var(--ink);box-shadow:0 0 0 1px var(--ink)}
.pv-units{display:grid;gap:8px}
.unit{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:14px 16px;border:1px solid var(--line);border-radius:var(--r);background:var(--paper);text-align:left}
.unit[aria-checked="true"]{border-color:var(--ink);box-shadow:0 0 0 1px var(--ink)}
.unit b{font-weight:600;display:block}
.unit small{color:var(--mute);font-size:13px}
.unit strong{font-weight:600;white-space:nowrap}
.pv-qty{grid-template-columns:auto auto;justify-content:start;align-items:center;column-gap:16px}
.pv-qty .pv-label{grid-column:1/-1}
.pv-sub{margin:0;font-size:14px}
.pv-in{margin:-8px 0 -10px;font-size:13px;color:var(--wa)}
.pv-add{min-height:54px;font-size:16px}
.pv-note{margin:0;padding:14px 16px;border-radius:10px;background:var(--wa-bg);font-size:13px;line-height:1.5}

.side[open]{display:flex;justify-content:flex-end}
.cart{width:min(480px,100%);height:100%;display:flex;flex-direction:column;background:var(--paper)}
.cart-head{display:flex;justify-content:space-between;align-items:flex-start;padding:24px 24px 8px}
.cart-head h2{font-size:40px;margin:0;line-height:1}
.cart-head p{margin:4px 0 0;font-size:14px}
.cart-head .close{position:static;box-shadow:none;background:var(--bg)}
.cart-body{flex:1;overflow-y:auto;padding:8px 24px 24px}
.cart-list{list-style:none;margin:0;padding:0}
.cart-list li{display:grid;grid-template-columns:72px 1fr;gap:14px;padding:16px 0;border-bottom:1px solid var(--line)}
.cart-list .ph{width:72px;aspect-ratio:4/5;border-radius:6px}
.ci-top{display:flex;justify-content:space-between;gap:8px}
.ci-name{font-weight:500;margin:0}
.ci-meta{margin:2px 0 0;font-size:13px;color:var(--mute)}
.ci-rm{font-size:13px;color:var(--mute);text-decoration:underline;align-self:start}
.ci-bot{display:flex;justify-content:space-between;align-items:center;margin-top:10px}
.ci-bot .stepper button{width:34px;height:34px;font-size:17px}
.ci-bot .stepper input{width:38px;font-size:15px}
.cart-total{display:flex;justify-content:space-between;align-items:baseline;padding:18px 0 4px;font-weight:500}
.cart-total strong{font-size:20px}
.cart-form{display:grid;gap:14px}
.warn{margin:0;padding:10px 14px;border-radius:10px;background:var(--warn-bg);color:var(--warn);font-size:14px}
.cart-empty{text-align:center;padding:48px 8px}
.cart-empty .serif{font-size:28px;margin:0 0 6px}
.cart-foot{padding:16px 24px calc(18px + env(safe-area-inset-bottom));border-top:1px solid var(--line);display:grid;gap:8px;text-align:center}
.cart-foot .btn{min-height:54px;font-size:16px}
.small{font-size:12px;margin:0}

.done{width:min(440px,calc(100% - 32px));margin:20vh auto 0;border-radius:var(--r-lg);padding:32px 28px;display:grid;gap:14px;text-align:center}
.done h2{font-size:36px;margin:0;line-height:1.05}
.done p{margin:0;color:var(--mute)}

@media (max-width:1000px){
  .grid{grid-template-columns:repeat(3,1fr)}
  .hero{grid-template-columns:1fr;gap:28px;padding-top:40px}
}
@media (max-width:720px){
  .wrap{padding:0 16px}
  .top-in{grid-template-columns:1fr auto;gap:10px;min-height:58px;padding-bottom:0}
  .logo{font-size:24px}
  .search{grid-column:1/-1;grid-row:2;max-width:none;height:42px;margin-bottom:10px}
  .cart-btn{min-height:38px;padding:0 6px 0 14px;font-size:13px}
  .hero{padding-top:28px;padding-bottom:24px;gap:20px}
  .hero h1{font-size:40px}
  .steps{gap:10px}
  .grid{grid-template-columns:repeat(2,1fr);gap:28px 12px}
  .card-name{font-size:14px}.card-price{font-size:14px}
  .card .btn{min-height:38px;font-size:13px;padding:0 10px}
  .bar{padding:0}
  .bar-in{border-radius:0;padding:12px 16px calc(12px + env(safe-area-inset-bottom));max-width:none;box-shadow:0 -6px 20px rgba(0,0,0,.12)}
  .bar-sum{flex-direction:column;gap:0}
  .bar .btn{flex:1}
  .pv{display:block;width:100%;margin:0;border-radius:0;height:100%;overflow-y:auto}
  .pv-info{padding:24px 18px 32px;overflow:visible}
  .pv-name{font-size:40px}
  .pv-add{position:sticky;bottom:calc(12px + env(safe-area-inset-bottom));z-index:3;box-shadow:0 8px 24px rgba(28,26,23,.25)}
  .pv-track{height:auto}
  .pv-track>div{aspect-ratio:1;height:auto}
  .pv-gal{height:auto}
  .done{margin-top:16vh}
}
@media (min-width:721px){
  .sheet.side[open]{animation:slideIn .22s ease-out}
}
@keyframes slideIn{from{transform:translateX(30px);opacity:.6}}
