*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{transition:background-color .5s,color .5s;margin:0;background:var(--bg);color:var(--ink);font-family:var(--font-body);font-size:1rem;line-height:1.6}
img{display:block;max-width:100%;height:auto}
a{color:inherit}
h1,h2,h3{font-family:var(--font-heading);line-height:1.05;letter-spacing:-.02em;margin:0 0 .5em}
h1{font-size:clamp(2.6rem,7vw,5.5rem)}
h2{font-size:clamp(1.8rem,4vw,3rem)}
h3{font-size:1.2rem;letter-spacing:-.01em}
.wrap{max-width:var(--page-width);margin:0 auto;padding:0 clamp(1rem,4vw,2.5rem)}
.section{padding:clamp(2.5rem,6vw,5rem) 0}
.skip{position:absolute;left:-999px}.skip:focus{left:1rem;top:1rem;background:var(--ink);color:var(--bg);padding:.5rem 1rem;z-index:99}
:focus-visible{outline:3px solid var(--accent);outline-offset:3px}
.btn{display:inline-block;background:var(--accent);color:var(--accent-ink);border:0;padding:.9rem 1.6rem;font:inherit;font-weight:600;text-decoration:none;cursor:pointer;transition:transform .15s,box-shadow .15s}
.btn:hover{transform:translate(-2px,-2px);box-shadow:3px 3px 0 var(--ink)}
.btn--ghost{background:transparent;color:var(--ink);box-shadow:inset 0 0 0 2px var(--ink)}
.btn[disabled]{opacity:.5;cursor:not-allowed;transform:none;box-shadow:none}
input,select{font:inherit;color:inherit;background:var(--surface);border:2px solid var(--ink);padding:.7rem .9rem;border-radius:0;max-width:100%}
.header{border-bottom:2px solid var(--ink)}
.header .wrap{display:flex;align-items:center;justify-content:space-between;gap:1.5rem;padding-top:1rem;padding-bottom:1rem;flex-wrap:wrap}
.logo{font-family:var(--font-heading);font-weight:800;font-size:1.6rem;letter-spacing:-.04em;text-decoration:none}
.logo img{max-height:44px;width:auto}
.nav{display:flex;gap:1.5rem;list-style:none;margin:0;padding:0;flex-wrap:wrap}
.nav a{text-decoration:none;font-weight:500}.nav a:hover{text-decoration:underline;text-underline-offset:4px}
.cart-link{font-weight:600;text-decoration:none}
.cart-link span{background:var(--accent);color:var(--accent-ink);padding:.1rem .55rem;margin-left:.3rem;font-size:.85rem}
.announce{background:var(--ink);color:var(--bg);text-align:center;padding:.45rem 1rem;font-size:.9rem}
.hero{display:grid;grid-template-columns:1.1fr .9fr;gap:clamp(1.5rem,4vw,4rem);align-items:center}
.hero p{font-size:1.15rem;color:var(--muted);max-width:34ch;margin:0 0 1.75rem}
.hero__img{aspect-ratio:4/5;background:var(--surface);overflow:hidden}
.hero__img img,.hero__img svg{width:100%;height:100%;object-fit:cover}
.section-head{display:flex;justify-content:space-between;align-items:baseline;gap:1rem;margin-bottom:1.5rem;flex-wrap:wrap}
.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:clamp(1rem,2vw,1.75rem);list-style:none;margin:0;padding:0}
.card{text-decoration:none;display:block}
.card__media{position:relative;aspect-ratio:1;background:var(--surface);overflow:hidden}
.card__media img,.card__media svg{width:100%;height:100%;object-fit:cover;transition:transform .4s}
.card:hover .card__media img{transform:scale(1.04)}
.tag{position:absolute;left:0;bottom:0;background:var(--accent);color:var(--accent-ink);padding:.3rem .8rem;font-weight:600}
.tag s{opacity:.7;margin-left:.4rem;font-weight:400}
.card h3{margin:.8rem 0 0}
.badge{position:absolute;top:.6rem;right:.6rem;background:var(--ink);color:var(--bg);padding:.15rem .6rem;font-size:.8rem}
.product{display:grid;grid-template-columns:1.2fr 1fr;gap:clamp(1.5rem,4vw,4rem);align-items:start}
.product__media{display:grid;gap:1rem}
.product__media img{width:100%;background:var(--surface)}
.product__info{position:sticky;top:1.5rem}
.price{font-size:1.5rem;font-weight:600;margin:0 0 1.25rem}.price s{color:var(--muted);font-weight:400;margin-left:.5rem}
.field{display:grid;gap:.4rem;margin-bottom:1rem}.field label{font-weight:600}
.field--row{display:flex;gap:.75rem;align-items:end}.field--row .btn{flex:1}
.prose{color:var(--muted);max-width:60ch}
.page-title{border-bottom:2px solid var(--ink);padding-bottom:1rem;margin-bottom:2rem}
.pagination{display:flex;gap:.5rem;justify-content:center;margin-top:3rem;flex-wrap:wrap}
.pagination a,.pagination span{padding:.5rem 1rem;border:2px solid var(--ink);text-decoration:none}
.pagination .current{background:var(--ink);color:var(--bg)}
.cart-row{display:grid;grid-template-columns:90px 1fr auto;gap:1rem;align-items:center;padding:1rem 0;border-bottom:1px solid var(--muted)}
.cart-row img{width:90px;aspect-ratio:1;object-fit:cover}
.cart-row input{width:4.5rem}
.cart-total{display:flex;justify-content:space-between;align-items:center;margin-top:1.5rem;gap:1rem;flex-wrap:wrap;font-size:1.3rem;font-weight:600}
.footer{background:var(--ink);color:var(--bg);margin-top:3rem}
.footer .wrap{display:flex;justify-content:space-between;gap:2rem;padding-top:3rem;padding-bottom:3rem;flex-wrap:wrap}
.footer ul{list-style:none;padding:0;margin:0;display:grid;gap:.4rem}
.footer p{color:#A9B5B0;margin:.4rem 0 0;max-width:36ch}
@media(max-width:800px){.hero,.product{grid-template-columns:1fr}.product__info{position:static}.hero__img{aspect-ratio:1}}
@media(prefers-reduced-motion:reduce){*{transition:none!important}}

[data-tone="lamp"]{--bg:#EBCB8C;--surface:#F6E2B2;--ink:#2A1B0E;--muted:#5B4528;--accent:#2A1B0E;--accent-ink:#F6E2B2;--glow:.5}
[data-tone="night"]{--bg:#15122B;--surface:#221E3D;--ink:#F6EED6;--muted:#B5AECB;--accent:#FFC857;--accent-ink:#15122B;--glow:.8}
.dimmer{display:flex;align-items:center;gap:.6rem;font-size:.9rem}
.dimmer input{padding:0;border:0;background:none;width:90px;accent-color:var(--accent)}
.dimmer output{min-width:5.5rem;font-weight:600}
.hero__img{position:relative}
.hero__img::after{content:"";position:absolute;inset:0;background:radial-gradient(circle at 50% 28%,var(--accent),transparent 62%);opacity:var(--glow);mix-blend-mode:soft-light;transition:opacity .5s;pointer-events:none}
.card__alt{position:absolute;inset:0;opacity:0;transition:opacity .3s}.card:hover .card__alt{opacity:1}
.tiles{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:1.25rem}
.tile{position:relative;aspect-ratio:4/5;background:var(--surface);overflow:hidden;display:flex;align-items:flex-end;text-decoration:none}
.tile img,.tile svg{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.tile span{position:relative;background:var(--bg);padding:.6rem 1.1rem;font-family:var(--font-heading);font-weight:600;font-size:1.25rem}
.layout{display:grid;grid-template-columns:230px 1fr;gap:2.5rem;align-items:start}
.filters{display:grid;gap:1.25rem}
.filters fieldset{border:0;padding:0;margin:0;display:grid;gap:.4rem}
.filters legend{font-weight:700;margin-bottom:.4rem;font-family:var(--font-heading)}
.filters label{display:flex;gap:.5rem;align-items:center;font-size:.95rem}
.filters input[type=checkbox]{width:1.1rem;height:1.1rem;padding:0;accent-color:var(--accent)}
.filters .price-in{display:flex;gap:.5rem}.filters .price-in input{width:100%}
.specs{display:grid;grid-template-columns:auto 1fr;gap:.35rem 1.25rem;margin:1.5rem 0;padding:1rem 0;border-block:2px solid var(--ink)}
.specs dt{font-weight:700}.specs dd{margin:0}
.note{background:var(--surface);padding:.8rem 1rem;margin:0 0 1.25rem;font-size:.95rem}
@media(max-width:800px){.layout{grid-template-columns:1fr}.dimmer input{width:70px}}
