/* v3 shop layer */
[hidden]{display:none!important}
.view{min-height:60vh}
.page-top{padding-top:clamp(2rem,5vw,3.5rem)}
.page-h{font-size:clamp(2rem,4vw,3.2rem);margin:.4rem 0 1rem}
.h3{font-size:1.4rem;margin:0 0 1rem}
.wrap.narrow{width:min(860px,92vw)}
.crumbs{font-size:.78rem;letter-spacing:.08em;color:var(--muted);margin-bottom:1.2rem}
.crumbs a{text-decoration:none;color:var(--copper)}
.ctl{display:flex;gap:.6rem;align-items:center;flex-wrap:wrap}
/* entrance */
.door-hit{position:absolute;z-index:2;background:none;border:0;cursor:pointer;border-radius:4px;padding:0}
.door-hit:focus-visible{outline:2px solid var(--blush)}
#entrance.playing .door-hit{display:none}
.ent-hint{margin-top:.8rem;font-size:.72rem;letter-spacing:.24em;text-transform:uppercase;opacity:.75}
.ent-open img{filter:brightness(0) invert(1);opacity:.9}
.light-ghost{color:var(--hanji)!important;border-color:rgba(251,246,241,.6)!important}
.light-ghost:hover{background:var(--hanji)!important;color:var(--ink)!important}
/* product photos */
.card .shelf{text-decoration:none}
.card .shelf.has-photo{background:#fff}
.card .shelf.has-photo::after{display:none}
.card .shelf img.photo{width:84%;height:84%;object-fit:contain;transition:transform .5s var(--ease)}
.card:hover .shelf img.photo{transform:scale(1.03)}
.card h3 a{text-decoration:none}
.card .info .price{font-size:1.15rem}
/* aisle tiles */
.aisle-tiles{display:grid;grid-template-columns:repeat(5,1fr);gap:1rem}
.tile{position:relative;background:var(--paper);border:1px solid rgba(168,100,63,.14);border-radius:var(--r);padding:1rem;text-decoration:none;display:flex;flex-direction:column;gap:.15rem;transition:.3s var(--ease)}
.tile:hover{transform:translateY(-3px);box-shadow:var(--shadow)}
.tile img{aspect-ratio:1;object-fit:contain;width:70%;margin:0 auto .6rem;mix-blend-mode:multiply}
.tile .no{position:absolute;top:.7rem;left:.9rem;font-family:var(--serif);font-style:italic;color:var(--copper)}
.tile b{font-family:var(--serif);font-weight:500;font-size:1.05rem}
.tile small{color:var(--copper);font-size:.8rem}
.tile .n{font-size:.75rem;color:var(--muted)}
.concerns{display:flex;flex-wrap:wrap;gap:.5rem;margin:.6rem 0 1rem}
.concerns .chip{text-decoration:none}
.sub{font-size:1.2rem;margin-top:1.4rem}
/* PDP */
.pdp{display:grid;grid-template-columns:1.05fr 1fr;gap:clamp(1.5rem,4vw,4rem);align-items:start}
.pdp-pic{position:sticky;top:110px;border-radius:24px;aspect-ratio:1;display:grid;place-items:center;background:radial-gradient(70% 60% at 50% 40%,#fff,var(--tint,#f4e1da));overflow:hidden;border:1px solid rgba(168,100,63,.12)}
.pdp-pic.has-photo{background:#fff}
.pdp-pic svg{width:62%}
.pdp-pic img{width:86%;height:86%;object-fit:contain}
.pdp-body .brand{font-size:.78rem;letter-spacing:.24em;text-transform:uppercase;color:var(--copper);margin-top:.8rem}
.pdp-body h1{font-size:clamp(1.9rem,3.4vw,2.8rem);margin:.3rem 0 .6rem}
.pdp-price{display:flex;align-items:baseline;gap:1rem;margin:.4rem 0 1rem}
.pdp-price .price{font-size:1.9rem}
.pdp-price .size{color:var(--muted);font-size:.9rem}
.lead{color:var(--ink-2);font-size:1.02rem}
.buy{display:flex;gap:.8rem;align-items:center;margin:1.4rem 0 .6rem;flex-wrap:wrap}
.qty.big{border:1px solid rgba(30,26,26,.22);border-radius:999px;padding:.25rem;gap:0;margin:0}
.qty.big button{width:40px;height:40px;border:0;font-size:1.15rem}
.qty.big input{width:44px;text-align:center;border:0;background:none;font:inherit;font-size:1rem;-moz-appearance:textfield}
.qty.big input::-webkit-inner-spin-button{-webkit-appearance:none}
.ship-note{font-size:.82rem;color:var(--muted);margin:.2rem 0 1.4rem}
.acc{border-top:1px solid rgba(168,100,63,.22);padding:.9rem 0}
.acc:last-child{border-bottom:1px solid rgba(168,100,63,.22)}
.acc summary{cursor:pointer;list-style:none;font-size:.78rem;letter-spacing:.2em;text-transform:uppercase;display:flex;justify-content:space-between}
.acc summary::-webkit-details-marker{display:none}
.acc summary::after{content:"+";font-size:1.1rem;line-height:1;color:var(--copper)}
.acc[open] summary::after{content:"–"}
.acc p,.acc li,.acc dd{color:var(--ink-2);font-size:.95rem}
.acc a{color:var(--copper)}
.keys{display:flex;flex-wrap:wrap;gap:.4rem;list-style:none;padding:0;margin:.8rem 0 .2rem}
.keys li{background:var(--blush);border-radius:999px;padding:.3em .85em;font-size:.85rem}
.acc dl{display:grid;grid-template-columns:auto 1fr;gap:.4rem 1.2rem;margin:.8rem 0 0}
.acc dt{color:var(--muted);font-size:.72rem;letter-spacing:.16em;text-transform:uppercase;padding-top:.25em}
.acc dd{margin:0}
.related{margin-top:4rem}
/* lines, basket */
.line .thumb{overflow:hidden;background:var(--tint,var(--blush))}
.line .thumb img{width:100%;height:100%;object-fit:contain;background:#fff}
.line .nm a{text-decoration:none}
.line .nm .sz{display:block;color:var(--muted);font-size:.78rem}
.line .lp{font-family:var(--serif);font-size:1.05rem}
.qty span{min-width:1.4em;text-align:center}
.qty .rm{width:auto;height:auto;border:0;border-radius:0;font-size:.72rem;letter-spacing:.12em;text-transform:uppercase;color:var(--muted);text-decoration:underline;margin-left:.6rem}
.btn.full{width:100%;justify-content:center}
.free-bar{font-size:.8rem;color:var(--ink-2);display:grid;gap:.4rem}
.free-bar i{display:block;height:4px;border-radius:4px;background:linear-gradient(90deg,var(--celadon-d) var(--p),rgba(47,74,64,.15) var(--p))}
.basket-lines{display:grid;gap:1.2rem;padding:1rem 0 2rem;border-bottom:1px solid rgba(168,100,63,.2)}
.basket-lines .line{grid-template-columns:90px 1fr auto}
.basket-lines .thumb{width:90px;height:90px}
.basket-foot{display:grid;grid-template-columns:1fr 1fr;gap:2rem;margin-top:2rem;align-items:start}
.summary{background:var(--paper);border:1px solid rgba(168,100,63,.15);border-radius:var(--r);padding:1.4rem;display:grid;gap:.6rem;align-content:start}
.srow{display:flex;justify-content:space-between;gap:1rem;font-size:.92rem}
.srow small{color:var(--muted)}
.srow.total{font-family:var(--serif);font-size:1.35rem;border-top:1px solid rgba(168,100,63,.2);padding-top:.8rem;margin-bottom:.4rem}
fieldset{border:0;margin:0 0 1.4rem;padding:0;display:grid;gap:.8rem}
legend{font-family:var(--serif);font-size:1.3rem;margin-bottom:.6rem;padding:0}
legend small{font-family:var(--sans);font-size:.8rem;color:var(--muted)}
.ship{display:grid;grid-template-columns:auto 1fr auto;gap:.8rem;align-items:center;border:1px solid rgba(30,26,26,.18);border-radius:14px;padding:.9rem 1rem;cursor:pointer;background:var(--paper)}
.ship.on{border-color:var(--celadon-d);box-shadow:0 0 0 1px var(--celadon-d)}
.ship input{accent-color:var(--celadon-d)}
.ship b{display:block;font-weight:500}.ship small{color:var(--muted);font-size:.8rem}
.ship em{font-style:normal;font-family:var(--serif)}
.ship-opts{display:grid;gap:.6rem}
/* checkout */
.co-grid{display:grid;grid-template-columns:1.3fr 1fr;gap:clamp(1.5rem,4vw,4rem);align-items:start}
.co-grid aside{position:sticky;top:110px}
#co-form label{display:grid;gap:.35rem;font-size:.82rem;letter-spacing:.04em;color:var(--ink-2)}
#co-form label small{color:var(--muted)}
#co-form input,#co-form select,#co-form textarea{width:100%;border:1px solid rgba(30,26,26,.2);border-radius:12px;padding:.85em 1em;font:inherit;font-size:1rem;background:var(--paper);color:var(--ink)}
#co-form input:focus,#co-form textarea:focus,#co-form select:focus{outline:2px solid var(--copper-l);outline-offset:1px}
#co-form .bad{border-color:#b3412f;background:#fff6f4}
.two{display:grid;grid-template-columns:1.4fr 1fr;gap:.8rem}
.co-err{color:#a03a2a;font-size:.9rem;margin:.2rem 0 .8rem;min-height:.5em}
.sum-lines{display:grid;gap:.8rem;margin-bottom:.6rem}
.sl{display:grid;grid-template-columns:56px 1fr auto;gap:.8rem;align-items:center;font-size:.88rem}
.sl .thumb{position:relative;width:56px;height:56px;border-radius:10px;background:var(--tint);display:grid;place-items:center}
.sl .thumb img{width:100%;height:100%;object-fit:contain;background:#fff;border-radius:10px}
.sl .thumb svg{width:40px}
.sl .thumb b{position:absolute;top:-6px;right:-6px;background:var(--ink);color:#fff;font-size:.68rem;min-width:20px;height:20px;border-radius:999px;display:grid;place-items:center}
.sl .n small{display:block;color:var(--muted)}
/* confirmation */
.confirm-head{text-align:center;display:grid;justify-items:center;gap:.3rem;margin-bottom:2rem}
.confirm-grid{display:grid;grid-template-columns:1.3fr 1fr;gap:1.2rem;margin-bottom:1.6rem}
/* footer line */
.demo-line{opacity:.85}
/* install banner */
.install{position:fixed;left:0;right:0;margin:0 auto;bottom:calc(18px + env(safe-area-inset-bottom));z-index:85;width:min(520px,92vw);display:grid;grid-template-columns:44px 1fr auto auto;gap:.8rem;align-items:center;background:var(--celadon-d);color:var(--hanji);border-radius:20px;padding:.8rem .9rem;box-shadow:0 20px 50px -20px rgba(0,0,0,.5);font-size:.88rem;animation:rise .6s var(--ease)}
.install img{width:44px;height:44px;border-radius:11px}
.install .btn{padding:.6em 1.1em;font-size:.7rem;background:var(--blush);color:var(--ink);border-color:var(--blush)}
.install .x{background:none;border:0;color:var(--hanji);font-size:1.3rem;opacity:.7;padding:.2em .4em}
.ios-share{display:inline-block;width:1.15em;height:1.15em;vertical-align:-.2em;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
/* bottom nav (mobile app feel) */
.bottom-nav{display:none}
@media (max-width:980px){
  .aisle-tiles{grid-template-columns:repeat(3,1fr)}
  .pdp,.co-grid,.basket-foot,.confirm-grid{grid-template-columns:1fr}
  .pdp-pic,.co-grid aside{position:static}
  .co-grid aside{order:-1}
}
@media (max-width:760px){
  body{padding-bottom:calc(64px + env(safe-area-inset-bottom))}
  .bottom-nav{display:grid;grid-template-columns:repeat(4,1fr);position:fixed;left:0;right:0;bottom:0;z-index:70;background:rgba(251,246,241,.96);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);border-top:1px solid rgba(168,100,63,.22);padding:0 0 env(safe-area-inset-bottom)}
  .bottom-nav a{position:relative;display:grid;justify-items:center;gap:2px;padding:.55rem 0 .5rem;text-decoration:none;font-size:.62rem;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-2)}
  .bottom-nav svg{width:23px;height:23px;fill:none;stroke:currentColor;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round}
  .bottom-nav a.on{color:var(--copper)}
  .bottom-nav .bag-count{position:absolute;top:4px;left:calc(50% + 6px);background:var(--copper);color:#fff;border-radius:999px;font-size:.6rem;min-width:17px;height:17px;display:grid;place-items:center;padding:0 4px;letter-spacing:0}
  .bottom-nav .bag-count.zero{display:none}
  .toast{bottom:calc(80px + env(safe-area-inset-bottom))}
  .install{bottom:calc(76px + env(safe-area-inset-bottom))}
  body.locked .bottom-nav{display:none}
}
@media (max-width:560px){
  .aisle-tiles{grid-template-columns:repeat(2,1fr)}
  .two{grid-template-columns:1fr}
  .install{grid-template-columns:36px 1fr auto auto;font-size:.8rem}
  .install img{width:36px;height:36px}
  .basket-lines .line{grid-template-columns:64px 1fr auto}
  .basket-lines .thumb{width:64px;height:64px}
}
.install .txt b{display:block;font-family:var(--serif);font-weight:500;font-size:1rem}
.ent-ui{pointer-events:none;z-index:3}
.ent-ui>*{pointer-events:auto}
.door-hit{left:0;top:0;width:0;height:0}

/* ---------- real-time door entrance ---------- */
#entrance{background:#20262b}
#entrance .inside,#entrance .stage{position:absolute;left:0;top:0;width:100vw;height:100vh;will-change:transform}
#entrance .inside{background:url(../img/interior.webp) center/100% 100% no-repeat;transform-origin:0 0}
#entrance .stage{transform-origin:0 0}
#entrance .facade{position:absolute;inset:0;width:100%;height:100%;max-width:none}
#entrance .jamb{position:absolute;left:42.03%;top:20.83%;width:15.55%;height:67.36%;box-shadow:inset 0 0 0 1px rgba(20,14,10,.5),inset 10px 0 18px -6px rgba(25,16,10,.65),inset -10px 0 18px -6px rgba(25,16,10,.6),inset 0 12px 20px -8px rgba(25,16,10,.6)}
#entrance .door-wrap{position:absolute;left:42.03%;top:20.83%;width:15.55%;height:67.36%;perspective:var(--persp,1100px);perspective-origin:50% 45%}
#entrance .door{position:absolute;inset:0;transform-origin:100% 50%;will-change:transform;backface-visibility:hidden}
#entrance .door img{position:absolute;inset:0;width:100%;height:100%;max-width:none}
#entrance .lever{position:absolute;left:3.72%;top:50.9%;width:19.1%;height:auto;aspect-ratio:2/1;transform-origin:20% 53%;filter:drop-shadow(0 1px 1px rgba(0,0,0,.45));overflow:visible}
#entrance .door-shade{position:absolute;inset:0;background:linear-gradient(90deg,rgba(18,12,8,.85),rgba(18,12,8,.35));opacity:0}
#entrance .spill{position:absolute;left:30%;top:60%;width:40%;height:45%;background:radial-gradient(50% 40% at 50% 38%,rgba(255,214,170,.75),rgba(255,190,140,.25) 55%,transparent 75%);mix-blend-mode:screen;opacity:0;pointer-events:none}
#entrance video.approach{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;transition:opacity .45s ease;z-index:1}
#entrance video.approach.done{opacity:0;pointer-events:none}
#entrance .vignette{z-index:1}
.ent-tools{position:absolute;top:16px;right:18px;z-index:4;display:flex;gap:.4rem;align-items:center}
.ent-tools .ent-skip{position:static}
.ent-sound{background:rgba(251,246,241,.12);border:1px solid rgba(251,246,241,.4);color:var(--hanji);border-radius:999px;padding:.45em .9em;font-size:.66rem;letter-spacing:.2em;text-transform:uppercase}
.ent-sound[aria-pressed=true]{background:var(--hanji);color:var(--ink)}
.ent-open{z-index:4}
#entrance.walking .ent-ui,#entrance.walking .ent-tools,#entrance.walking .ent-open,#entrance.walking .vignette{opacity:0;transition:opacity .35s}
#entrance.walking .door-hit{display:none}
#entrance:not(.clip-done) .ent-hint{visibility:hidden}
.door-hit::after{content:"";position:absolute;inset:-3px;border-radius:4px;box-shadow:0 0 0 1px rgba(255,226,190,.0),0 0 26px rgba(255,214,170,0);transition:.4s}
#entrance.clip-done:not(.walking) .door-hit::after{animation:doorglow 2.6s 1s ease-in-out infinite}
@keyframes doorglow{50%{box-shadow:0 0 0 1px rgba(255,226,190,.55),0 0 30px rgba(255,214,170,.35)}}
.interior .bg.resettle{animation:settle2 1.6s var(--ease) both}
@keyframes settle2{from{transform:scale(1.1)}to{transform:scale(1.04)}}
.interior .bg.hold{animation:none;transform:scale(1.1)}
/* ---------- entrance: sound choice ---------- */
.ent-ui .choose,.ent-ui .go{display:flex;flex-direction:column;align-items:center;gap:.7rem}
#entrance:not(.chosen) .go,#entrance.chosen .choose{display:none}
#entrance:not(.chosen) .door-hit{pointer-events:none}
.door-btn .ico{width:1.15em;height:1.15em;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round;margin-right:.2em}
.ent-quiet{background:none;border:0;color:var(--hanji);opacity:.8;font-size:.72rem;letter-spacing:.24em;text-transform:uppercase;padding:.5em 1em;text-decoration:underline;text-underline-offset:4px}
.ent-quiet:hover{opacity:1}
/* header sound toggle */
.icon-btn.mute .i-on{display:none}.icon-btn.mute.on .i-on{display:block}.icon-btn.mute.on .i-off{display:none}
.icon-btn.mute.on{color:var(--celadon-d);border-color:rgba(47,74,64,.45)}
/* ---------- Inside the shop ---------- */
.interior{height:min(100vh,900px)}
.inside-shop{position:relative;z-index:5;margin-top:-60vh;padding:0 0 clamp(3rem,6vw,5rem)}
.inside-head{display:flex;justify-content:space-between;align-items:flex-end;gap:1.5rem;flex-wrap:wrap;margin-bottom:1rem;background:rgba(251,246,241,.86);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border-radius:20px;padding:1.1rem 1.4rem;box-shadow:0 20px 40px -28px rgba(80,40,25,.45)}
.inside-head h1{font-size:clamp(1.6rem,2.6vw,2.2rem);margin:.25rem 0 .25rem}
.inside-head h1 .ko{font-size:.5em;color:var(--copper);margin-left:.4em}
.inside-head p{margin:0;color:var(--ink-2);font-size:.95rem;max-width:640px}
.inside-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:1.1rem}
.inside-shop .inside-head,.inside-shop .card{opacity:0;transform:translateY(28px)}
.inside-shop.revealed .inside-head{animation:cardIn .9s var(--ease) both}
.inside-shop.revealed .card{animation:cardIn 1s var(--ease) both;animation-delay:calc(var(--i,0)*110ms + 250ms)}
@keyframes cardIn{from{opacity:0;transform:translateY(28px)}to{opacity:1;transform:none}}
#grid .card{animation:cardIn .6s var(--ease) both;animation-delay:calc(var(--i,0)*35ms)}
/* card: what it does + peek */
.pic-wrap{position:relative}
.card .does{margin:.15rem 0 .1rem;font-size:.86rem;line-height:1.35;color:var(--ink-2)}
.peek{position:absolute;inset:0;z-index:2;overflow:hidden;background:rgba(251,246,241,.95);padding:1rem 1.1rem;display:flex;flex-direction:column;gap:.45rem;justify-content:center;opacity:0;pointer-events:none;transition:opacity .35s var(--ease)}
.peek b{font-size:.68rem;letter-spacing:.22em;text-transform:uppercase;color:var(--copper);font-weight:500}
.peek p{margin:0;font-size:.88rem;line-height:1.45;color:var(--ink);display:-webkit-box;-webkit-line-clamp:6;-webkit-box-orient:vertical;overflow:hidden}
.peek small{font-size:.76rem;color:var(--celadon-d)}
.peek-btn{position:absolute;z-index:3;right:10px;bottom:10px;width:30px;height:30px;border-radius:50%;border:1px solid rgba(30,26,26,.25);background:rgba(251,246,241,.92);font-family:var(--serif);font-style:italic;font-size:.95rem;line-height:1;padding:0}
.card.peek-on .peek{opacity:1;pointer-events:auto}
.card.peek-on .peek-btn{background:var(--ink);color:var(--hanji)}
@media (hover:hover){.card:hover .peek{opacity:1;transition-delay:.35s}.card:hover .peek-btn{opacity:0}}
/* PDP facts */
.what-line{font-family:var(--serif);font-size:1.25rem;color:var(--ink);line-height:1.35}
.facts{display:grid;grid-template-columns:1fr 1fr;gap:1rem 1.4rem;margin:1.2rem 0 1.4rem;padding:1.2rem 1.3rem;background:var(--paper);border:1px solid rgba(168,100,63,.15);border-radius:var(--r)}
.facts h2{font-family:var(--sans);font-size:.72rem;letter-spacing:.22em;text-transform:uppercase;color:var(--copper);font-weight:500;margin:0 0 .5rem}
.facts p{margin:0;font-size:.94rem;color:var(--ink-2)}
.facts section:first-child{grid-column:1/-1}
.keys.good li{background:var(--celadon-l)}
@media (max-width:980px){.inside-grid{grid-template-columns:repeat(2,1fr)}.inside-shop{margin-top:-62vh}}
@media (max-width:560px){
  .inside-shop{margin-top:-66vh}
  .inside-head{padding:.75rem 1rem;margin-bottom:.8rem}.inside-head p{font-size:.82rem}.inside-head p .long{display:none}.inside-head .btn{display:none}.inside-head h1{font-size:1.6rem}
  .inside-grid{gap:.7rem}
  .card .does{font-size:.8rem}
  .facts{grid-template-columns:1fr}
  .peek{padding:.65rem .7rem 2.4rem;gap:.3rem;justify-content:flex-start}.peek p{font-size:.76rem;-webkit-line-clamp:6}.peek small{font-size:.68rem}
}
@media (prefers-reduced-motion:reduce){.inside-shop .inside-head,.inside-shop .card{opacity:1;transform:none}}
