mirror of
https://github.com/hanzoai/karma-style.git
synced 2026-10-30 18:33:08 +00:00
411 lines
25 KiB
CSS
411 lines
25 KiB
CSS
/* Karma Bikinis — white, high-fashion, monochrome. Self-contained, no CDNs.
|
||
The only colour on the page is the product photography.
|
||
|
||
Type is Zen, sans and mono. The faces, their @font-face and the --font-sans
|
||
/ --font-mono tokens all come from @hanzo/design, served at
|
||
/zen/tokens/fonts.css and linked from index.html. Name the variable here,
|
||
never a family: the family is the package's to change. */
|
||
|
||
:root{
|
||
--bg:#ffffff; --fg:#0a0a0a; --mut:#767676; --dim:#9a9a9a;
|
||
--line:#ececec; --line2:#dcdcdc; --soft:#f6f6f4;
|
||
--maxw:1360px; --gutter:32px;
|
||
--hh:76px; /* header height */
|
||
}
|
||
*{box-sizing:border-box}
|
||
html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}
|
||
body{margin:0;background:var(--bg);color:var(--fg);
|
||
font-family:var(--font-sans);
|
||
font-size:16px;line-height:1.55;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}
|
||
body.no-scroll{overflow:hidden}
|
||
img{display:block;max-width:100%}
|
||
a{color:inherit;text-decoration:none}
|
||
button{font-family:inherit}
|
||
.mono{font-family:var(--font-mono)}
|
||
.wrap{max-width:var(--maxw);margin:0 auto;padding:0 var(--gutter)}
|
||
.eyebrow{font-family:var(--font-mono);font-size:11px;letter-spacing:.34em;
|
||
text-transform:uppercase;color:var(--mut)}
|
||
|
||
/* ---------- header (transparent over hero -> solid white on scroll) ---------- */
|
||
header{position:fixed;top:0;left:0;right:0;z-index:50;height:var(--hh);
|
||
display:flex;align-items:center;transition:background .3s ease,border-color .3s ease,color .3s ease;
|
||
border-bottom:1px solid transparent;color:#fff}
|
||
header .wrap{display:flex;align-items:center;gap:26px;width:100%}
|
||
header .logo{height:32px;display:flex;align-items:center;flex-shrink:0}
|
||
header .logo img{height:100%;width:auto;display:block}
|
||
header .logo .lw{display:none} header .logo .lb{display:block}
|
||
header nav{display:flex;gap:26px;margin-left:8px}
|
||
header nav a{font-size:13px;letter-spacing:.02em;opacity:.9;transition:opacity .15s}
|
||
header nav a:hover{opacity:.55}
|
||
header .sp{flex:1}
|
||
header .bag{display:inline-flex;align-items:center;gap:8px;font-size:13px;letter-spacing:.04em;
|
||
background:none;border:0;color:inherit;cursor:pointer}
|
||
header .bag .n{min-width:20px;height:20px;border:1px solid currentColor;border-radius:0;
|
||
font-size:11px;letter-spacing:.02em;display:inline-flex;align-items:center;justify-content:center;padding:0 5px}
|
||
header .bag .ico{display:block}
|
||
.menu-btn{display:none;background:none;border:0;color:inherit;cursor:pointer;
|
||
padding:6px;margin-right:-6px;align-items:center;justify-content:center}
|
||
.menu-btn svg{display:block}
|
||
/* solid state */
|
||
header.solid{background:rgba(255,255,255,.9);backdrop-filter:blur(16px);
|
||
border-bottom-color:var(--line);color:var(--fg)}
|
||
header.solid .logo .lw{display:none} header.solid .logo .lb{display:block}
|
||
/* on hero (transparent) -> white logo */
|
||
header.on-hero .logo .lw{display:block} header.on-hero .logo .lb{display:none}
|
||
|
||
/* ---------- mobile menu (full-screen white overlay) ---------- */
|
||
.mmenu{position:fixed;inset:0;z-index:80;background:#fff;display:flex;flex-direction:column;
|
||
padding:0 var(--gutter) 40px;transform:translateY(-101%);opacity:0;pointer-events:none;
|
||
transition:transform .4s cubic-bezier(.4,0,.1,1),opacity .3s ease}
|
||
.mmenu.open{transform:none;opacity:1;pointer-events:auto}
|
||
.mm-top{display:flex;align-items:center;justify-content:space-between;height:var(--hh)}
|
||
.mm-top .logo{height:28px;display:flex;align-items:center}
|
||
.mm-top .logo img{height:100%;width:auto;display:block}
|
||
.mm-close{background:none;border:0;line-height:1;cursor:pointer;color:var(--fg);
|
||
display:inline-flex;align-items:center;justify-content:center;padding:6px;margin-right:-6px}
|
||
.mm-close svg{display:block}
|
||
.mm-nav{display:flex;flex-direction:column;margin-top:22px}
|
||
.mm-nav a{font-size:clamp(34px,11vw,54px);font-weight:600;letter-spacing:-.02em;line-height:1.16;
|
||
color:var(--fg);padding:6px 0}
|
||
.mm-foot{margin-top:auto;display:flex;flex-wrap:wrap;gap:16px 22px;border-top:1px solid var(--line);padding-top:22px}
|
||
.mm-foot a{font-family:var(--font-mono);font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--mut)}
|
||
.mm-foot a:hover{color:var(--fg)}
|
||
@media(min-width:641px){.mmenu{display:none}}
|
||
|
||
/* ---------- hero ---------- */
|
||
.hero{position:relative;height:100vh;min-height:640px;display:flex;align-items:flex-end;overflow:hidden;background:#111}
|
||
.hero img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:50% 30%}
|
||
.hero::after{content:"";position:absolute;inset:0;
|
||
background:linear-gradient(180deg,rgba(0,0,0,.22),rgba(0,0,0,0) 26%,rgba(0,0,0,0) 55%,rgba(0,0,0,.55))}
|
||
.hero .inner{position:relative;z-index:2;color:#fff;padding-bottom:56px}
|
||
.hero .eyebrow{color:rgba(255,255,255,.82)}
|
||
.hero h1{font-size:clamp(44px,8vw,112px);line-height:.92;font-weight:600;letter-spacing:-.02em;
|
||
margin:14px 0 20px;max-width:16ch;text-transform:none}
|
||
.hero p{max-width:44ch;font-size:16px;color:rgba(255,255,255,.86);margin:0 0 26px}
|
||
.hero .cta{display:flex;gap:14px;flex-wrap:wrap}
|
||
|
||
/* ---------- buttons ---------- */
|
||
.btn{display:inline-flex;align-items:center;justify-content:center;gap:9px;
|
||
background:var(--fg);color:#fff;border:1px solid var(--fg);border-radius:0;
|
||
padding:15px 30px;min-height:52px;line-height:1;white-space:nowrap;
|
||
font-size:13px;font-weight:500;letter-spacing:.11em;text-transform:uppercase;
|
||
cursor:pointer;-webkit-tap-highlight-color:transparent;
|
||
transition:background .18s ease,color .18s ease,border-color .18s ease,opacity .18s ease}
|
||
.btn:not(:disabled):hover{background:#fff;color:var(--fg)}
|
||
.btn.inv{background:#fff;color:var(--fg);border-color:#fff}
|
||
.btn.inv:not(:disabled):hover{background:transparent;color:#fff}
|
||
.btn.line{background:transparent;color:var(--fg);border-color:var(--fg)}
|
||
.btn.line:not(:disabled):hover{background:var(--fg);color:#fff}
|
||
.btn.block{width:100%}
|
||
.btn:not(:disabled):active{transform:translateY(1px)}
|
||
.btn:disabled{opacity:.5;cursor:not-allowed}
|
||
|
||
/* ---------- accessibility: crisp square keyboard focus (adapts to bg) ---------- */
|
||
a:focus-visible,button:focus-visible,input:focus-visible,summary:focus-visible{
|
||
outline:2px solid currentColor;outline-offset:3px}
|
||
:focus:not(:focus-visible){outline:none}
|
||
|
||
/* ---------- section shell ---------- */
|
||
main{padding-top:0}
|
||
.sec{padding:104px 0;border-top:1px solid var(--line);scroll-margin-top:calc(var(--hh) + 8px)}
|
||
.sec:first-child{border-top:0}
|
||
.sec-head{display:flex;justify-content:space-between;align-items:flex-end;gap:24px;margin-bottom:44px;flex-wrap:wrap}
|
||
.sec-head h2{font-size:clamp(30px,4.4vw,56px);font-weight:600;letter-spacing:-.02em;margin:10px 0 0;line-height:1}
|
||
.sec-head p{color:var(--mut);margin:0;max-width:46ch}
|
||
|
||
/* ---------- collection grid ---------- */
|
||
.grid{display:grid;grid-template-columns:repeat(4,1fr);gap:6px 6px}
|
||
.card{cursor:pointer;position:relative;background:var(--soft)}
|
||
.card .frame{position:relative;aspect-ratio:3/4;overflow:hidden;background:var(--soft)}
|
||
.card .frame img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;
|
||
transition:opacity .5s ease,transform 1.4s ease}
|
||
.card .frame img.b{opacity:0}
|
||
.card:hover .frame img.a{opacity:0}
|
||
.card:hover .frame img.b{opacity:1;transform:scale(1.04)}
|
||
.card .tag{position:absolute;top:14px;left:14px;z-index:2;font-family:var(--font-mono);
|
||
font-size:10px;letter-spacing:.16em;text-transform:uppercase;color:var(--fg);
|
||
background:rgba(255,255,255,.9);padding:5px 9px}
|
||
.card .meta{display:flex;justify-content:space-between;align-items:baseline;gap:10px;padding:14px 4px 4px}
|
||
.card .meta .nm{font-size:14px;font-weight:500;letter-spacing:.01em}
|
||
.card .meta .pr{font-family:var(--font-mono);font-size:13px;color:var(--fg)}
|
||
.card .quick{position:absolute;left:0;right:0;bottom:0;z-index:2;opacity:0;transform:translateY(6px);
|
||
transition:.22s;pointer-events:none}
|
||
.card:hover .quick{opacity:1;transform:none;pointer-events:auto}
|
||
.card .quick .btn{width:100%;padding:14px;font-size:12px}
|
||
|
||
/* ---------- collections nav (sticky chip row) ---------- */
|
||
.coll-nav{display:flex;gap:8px;flex-wrap:wrap;margin:-14px 0 40px;position:sticky;top:var(--hh);z-index:12;
|
||
background:rgba(255,255,255,.92);backdrop-filter:blur(12px);padding:12px 0}
|
||
.coll-nav .chip{font-family:var(--font-mono);font-size:11px;letter-spacing:.14em;text-transform:uppercase;
|
||
color:var(--mut);border:1px solid var(--line2);padding:8px 13px;cursor:pointer;transition:.15s;white-space:nowrap}
|
||
.coll-nav .chip:hover{color:var(--fg);border-color:var(--fg)}
|
||
|
||
/* ---------- collection section ---------- */
|
||
.coll-sec{margin:0 0 60px;scroll-margin-top:calc(var(--hh) + 70px)}
|
||
.coll-sec:last-child{margin-bottom:0}
|
||
.coll-head{display:flex;justify-content:space-between;align-items:flex-end;gap:20px;
|
||
border-bottom:1px solid var(--fg);padding-bottom:16px;margin-bottom:20px;flex-wrap:wrap}
|
||
.coll-head h3{font-size:clamp(22px,3vw,34px);font-weight:600;letter-spacing:-.02em;margin:0;line-height:1}
|
||
.coll-head .ch-txt p{color:var(--mut);margin:8px 0 0;max-width:64ch;font-size:14px}
|
||
.coll-head .count{font-family:var(--font-mono);font-size:11px;letter-spacing:.14em;text-transform:uppercase;
|
||
color:var(--dim);white-space:nowrap}
|
||
|
||
/* ---------- sold-out / pre-order card state ---------- */
|
||
.card.pre .frame img{filter:saturate(.94)}
|
||
.card .soldout{position:absolute;top:14px;right:14px;z-index:3;font-family:var(--font-mono);
|
||
font-size:10px;letter-spacing:.16em;text-transform:uppercase;color:#fff;background:var(--fg);padding:5px 9px}
|
||
.card.pre:hover .quick .btn{background:var(--fg);color:#fff}
|
||
|
||
/* ---------- lookbook ---------- */
|
||
.look{columns:3;column-gap:6px}
|
||
.look img{width:100%;margin-bottom:6px;break-inside:avoid;background:var(--soft)}
|
||
|
||
/* ---------- editorial split (story) ---------- */
|
||
.split{display:grid;grid-template-columns:1fr 1fr;gap:0;align-items:stretch}
|
||
.split .txt{padding:clamp(40px,6vw,96px)}
|
||
.split .txt h2{font-size:clamp(28px,3.6vw,48px);font-weight:600;letter-spacing:-.02em;margin:12px 0 20px;max-width:15ch}
|
||
.split .txt p{color:var(--mut);max-width:52ch;margin:0 0 16px}
|
||
.split .pic{background:var(--soft);min-height:520px}
|
||
.split .pic img{width:100%;height:100%;object-fit:cover}
|
||
.pillars{display:flex;gap:40px;flex-wrap:wrap;margin-top:26px}
|
||
.pillars b{display:block;font-family:var(--font-mono);font-size:11px;letter-spacing:.14em;text-transform:uppercase}
|
||
.pillars span{color:var(--mut);font-size:14px}
|
||
|
||
/* ---------- try-on band ---------- */
|
||
.tryon{background:var(--bg);color:var(--fg);text-align:center;padding:120px 0;border-top:1px solid var(--line)}
|
||
.tryon .eyebrow{color:var(--mut)}
|
||
.tryon h2{font-size:clamp(30px,5vw,64px);font-weight:600;letter-spacing:-.02em;margin:14px 0 16px}
|
||
.tryon p{color:var(--mut);max-width:50ch;margin:0 auto 30px}
|
||
|
||
/* ---------- press strip ---------- */
|
||
.press{border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
|
||
.press .wrap{display:flex;align-items:center;justify-content:space-between;gap:40px;flex-wrap:wrap;padding:34px var(--gutter)}
|
||
.press .lab{font-family:var(--font-mono);font-size:10px;letter-spacing:.24em;text-transform:uppercase;color:var(--dim)}
|
||
.press .marks{display:flex;align-items:center;gap:48px;flex-wrap:wrap;flex:1;justify-content:space-around}
|
||
.press img{height:26px;width:auto;opacity:.7}
|
||
|
||
/* ---------- founder quote ---------- */
|
||
.quote{padding:120px 0;text-align:center}
|
||
.quote blockquote{max-width:24ch;margin:0 auto;font-size:clamp(24px,3.4vw,42px);font-weight:500;
|
||
letter-spacing:-.01em;line-height:1.2}
|
||
.quote .cite{margin-top:26px;font-family:var(--font-mono);font-size:11px;letter-spacing:.2em;text-transform:uppercase;color:var(--mut)}
|
||
|
||
/* ---------- social / @karma_bikinis ---------- */
|
||
.social .sgrid{display:grid;grid-template-columns:repeat(6,1fr);gap:6px}
|
||
.social .sgrid a{display:block;aspect-ratio:1;overflow:hidden;background:var(--soft);position:relative}
|
||
.social .sgrid img{width:100%;height:100%;object-fit:cover;transition:transform 1s ease}
|
||
.social .sgrid a:hover img{transform:scale(1.06)}
|
||
|
||
/* ---------- footer (organized, high-fashion) ---------- */
|
||
footer{background:var(--bg);border-top:1px solid var(--line)}
|
||
.fgrid{display:grid;grid-template-columns:1.4fr 1fr 1fr 1fr 1.2fr;border-bottom:1px solid var(--line)}
|
||
.fcol{padding:44px 28px;border-left:1px solid var(--line)}
|
||
.fcol:first-child{border-left:0;padding-left:0}
|
||
.fcol h4{font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--fg);margin:0 0 18px;font-weight:600}
|
||
.fcol a{display:block;color:var(--mut);font-size:13px;margin-bottom:11px;transition:color .15s}
|
||
.fcol a:hover{color:var(--fg)}
|
||
.fcol p{color:var(--mut);font-size:13px;margin:0 0 8px}
|
||
.news form{display:flex;align-items:center;border-bottom:1px solid var(--line2);max-width:280px;
|
||
transition:border-color .18s ease}
|
||
.news form:hover{border-bottom-color:var(--dim)}
|
||
.news form:focus-within{border-bottom-color:var(--fg)}
|
||
.news input{flex:1;background:none;border:0;padding:9px 0;font-size:13px;letter-spacing:.01em;color:var(--fg);outline:none}
|
||
.news input:focus-visible{outline:none}
|
||
.news input::placeholder{color:var(--dim)}
|
||
.news button{background:none;border:0;cursor:pointer;font-family:var(--font-mono);font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--fg);transition:opacity .15s ease}
|
||
.news button:hover{opacity:.55}
|
||
.news .ok{font-size:12px;color:var(--mut);margin-top:10px}
|
||
.flogo{padding:0 var(--gutter);display:flex;justify-content:center}
|
||
.flogo img{height:30px;margin:40px 0 18px;opacity:.9}
|
||
.legal{padding:0 var(--gutter) 40px;display:flex;justify-content:center;gap:8px;flex-wrap:wrap;font-size:12px;color:var(--dim);text-align:center}
|
||
|
||
/* ---------- PDP accordion ---------- */
|
||
.acc{border-top:1px solid var(--line);margin-top:6px}
|
||
.acc details{border-bottom:1px solid var(--line)}
|
||
.acc summary{list-style:none;cursor:pointer;padding:16px 0;display:flex;justify-content:space-between;align-items:center;
|
||
font-size:12px;letter-spacing:.08em;text-transform:uppercase;font-weight:500}
|
||
.acc summary::-webkit-details-marker{display:none}
|
||
.acc summary::after{content:"+";font-size:16px;color:var(--mut)}
|
||
.acc details[open] summary::after{content:"–"}
|
||
.acc .body{padding:0 0 18px;color:var(--mut);font-size:14px;line-height:1.6}
|
||
|
||
/* ---------- product detail page (full page overlay/route) ---------- */
|
||
.pdp{display:none}
|
||
body.route-product .home,body.route-page .home{display:none}
|
||
body.route-product .pdp{display:block}
|
||
.pdp .inner{padding-top:calc(var(--hh) + 24px);padding-bottom:80px}
|
||
.pdp .crumbs{font-family:var(--font-mono);font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(--mut);margin-bottom:22px}
|
||
.pdp .crumbs a:hover{color:var(--fg)}
|
||
.pdp .layout{display:grid;grid-template-columns:1.35fr .65fr;gap:48px;align-items:start}
|
||
.pdp .gallery{display:grid;grid-template-columns:1fr 1fr;gap:6px}
|
||
.pdp .gallery img{width:100%;aspect-ratio:3/4;object-fit:cover;background:var(--soft)}
|
||
.pdp .gallery img.wide{grid-column:1/3;aspect-ratio:auto}
|
||
.pdp .info{position:sticky;top:calc(var(--hh) + 24px)}
|
||
.pdp .info .tag{font-family:var(--font-mono);font-size:11px;letter-spacing:.2em;text-transform:uppercase;color:var(--mut)}
|
||
.pdp .info h1{font-size:clamp(30px,3.4vw,44px);font-weight:600;letter-spacing:-.02em;margin:10px 0 8px}
|
||
.pdp .info .price{font-family:var(--font-mono);font-size:18px;margin-bottom:22px}
|
||
.pdp .info .desc{color:var(--mut);margin:0 0 26px}
|
||
.pdp .spec{border-top:1px solid var(--line);margin-bottom:26px}
|
||
.pdp .spec div{display:flex;justify-content:space-between;font-size:13.5px;padding:12px 0;border-bottom:1px solid var(--line)}
|
||
.pdp .spec div span:first-child{color:var(--dim);text-transform:uppercase;letter-spacing:.06em;font-size:11px}
|
||
.sizes{margin:0 0 22px}
|
||
.sizes .lab{font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(--dim);margin-bottom:10px}
|
||
.sizes .row{display:flex;gap:8px;flex-wrap:wrap}
|
||
.sizes button{background:none;border:1px solid var(--line2);color:var(--fg);width:52px;height:48px;
|
||
cursor:pointer;font-family:var(--font-mono);font-size:13px;letter-spacing:.04em;
|
||
transition:background .15s ease,color .15s ease,border-color .15s ease}
|
||
.sizes button:hover{border-color:var(--fg);background:var(--soft)}
|
||
.sizes button.sel{background:var(--fg);color:#fff;border-color:var(--fg)}
|
||
.pdp .buys{display:flex;flex-direction:column;gap:10px}
|
||
.pdp .info .price .soldpill{font-family:var(--font-mono);font-size:10px;letter-spacing:.14em;text-transform:uppercase;
|
||
color:#fff;background:var(--fg);padding:4px 8px;vertical-align:middle;margin-left:8px}
|
||
.pdp .prenote{font-size:13px;line-height:1.55;color:var(--mut);border-left:2px solid var(--fg);
|
||
padding:2px 0 2px 14px;margin-top:4px}
|
||
.opt{margin:0 0 22px}
|
||
.opt .lab{font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(--dim);margin-bottom:10px}
|
||
.opt .chips{display:flex;gap:8px;flex-wrap:wrap}
|
||
.opt .cchip{font-family:var(--font-mono);font-size:11px;letter-spacing:.06em;color:var(--fg);
|
||
border:1px solid var(--line2);padding:7px 12px}
|
||
.pdp .trylink{margin-top:16px;font-size:13px;color:var(--mut)}
|
||
.pdp .trylink a{border-bottom:1px solid var(--line2)}
|
||
.pdp .trylink a:hover{border-color:var(--fg)}
|
||
|
||
/* ---------- content pages (about/legal) ---------- */
|
||
.page{display:none}
|
||
body.route-page .page{display:block}
|
||
.page .inner{max-width:760px;margin:0 auto;padding:calc(var(--hh) + 60px) var(--gutter) 100px}
|
||
.page h1{font-size:clamp(34px,5vw,60px);font-weight:600;letter-spacing:-.02em;margin:10px 0 34px;line-height:1}
|
||
.page .lead{font-size:19px;line-height:1.6;color:var(--fg);margin:0 0 26px}
|
||
.page p{color:#3a3a3a;margin:0 0 18px}
|
||
.page h3{font-size:15px;letter-spacing:.02em;margin:34px 0 10px;font-weight:600}
|
||
.page a{border-bottom:1px solid var(--line2)}
|
||
.page a:hover{border-color:var(--fg)}
|
||
.page .review-note{margin-top:32px;padding:14px 16px;background:var(--soft);border:1px solid var(--line);
|
||
font-size:12.5px;color:var(--mut);font-family:var(--font-mono);letter-spacing:.02em}
|
||
|
||
/* ---------- cart drawer ---------- */
|
||
.scrim{position:fixed;inset:0;z-index:60;background:rgba(10,10,10,.4);opacity:0;pointer-events:none;transition:.3s}
|
||
.scrim.open{opacity:1;pointer-events:auto}
|
||
.cart{position:fixed;top:0;right:0;bottom:0;width:420px;max-width:92vw;z-index:70;background:#fff;
|
||
border-left:1px solid var(--line);transform:translateX(100%);transition:transform .32s ease;
|
||
display:flex;flex-direction:column}
|
||
.cart.open{transform:none}
|
||
.cart h3{margin:0;padding:26px var(--gutter);font-size:13px;letter-spacing:.14em;text-transform:uppercase;
|
||
border-bottom:1px solid var(--line);display:flex;justify-content:space-between;align-items:center}
|
||
.cart h3 button{background:none;border:0;font-size:20px;cursor:pointer;color:var(--fg)}
|
||
.cart .items{flex:1;overflow-y:auto;padding:8px var(--gutter)}
|
||
.cart .empty{color:var(--dim);text-align:center;padding:70px 0;font-size:14px}
|
||
.ci{display:flex;gap:16px;padding:20px 0;border-bottom:1px solid var(--line)}
|
||
.ci img{width:72px;height:96px;object-fit:cover;background:var(--soft)}
|
||
.ci .g{flex:1}
|
||
.ci .g .n{font-size:14px;font-weight:500}
|
||
.ci .g .s{color:var(--dim);font-size:12px;font-family:var(--font-mono);margin-top:2px}
|
||
.ci .g .qty{display:flex;gap:0;align-items:center;margin-top:10px;border:1px solid var(--line2);width:max-content}
|
||
.ci .g .qty button{width:30px;height:30px;border:0;background:none;color:var(--fg);cursor:pointer;
|
||
font-size:14px;line-height:1;transition:background .15s ease,color .15s ease}
|
||
.ci .g .qty button:hover{background:var(--soft)}
|
||
.ci .g .qty span{width:34px;text-align:center;font-family:var(--font-mono);font-size:13px}
|
||
.ci .p{font-family:var(--font-mono);font-size:13px}
|
||
.ci .rm{background:none;border:0;color:var(--dim);cursor:pointer;font-size:11px;text-transform:uppercase;letter-spacing:.08em;align-self:flex-start;margin-top:4px}
|
||
.ci .rm:hover{color:var(--fg)}
|
||
.cart .foot{padding:24px var(--gutter);border-top:1px solid var(--line)}
|
||
.cart .foot .row{display:flex;justify-content:space-between;margin-bottom:16px;font-size:15px}
|
||
.cart .foot .row .mono{font-family:var(--font-mono)}
|
||
.cart .note{font-size:12px;color:var(--dim);text-align:center;margin-top:12px;line-height:1.5}
|
||
|
||
.toast{position:fixed;bottom:26px;left:50%;transform:translateX(-50%) translateY(16px);
|
||
background:var(--fg);color:#fff;padding:13px 22px;font-size:12px;letter-spacing:.06em;text-transform:uppercase;
|
||
z-index:90;opacity:0;transition:.25s;pointer-events:none}
|
||
.toast.show{opacity:1;transform:translateX(-50%)}
|
||
|
||
/* ---------- responsive ---------- */
|
||
@media(max-width:1000px){
|
||
.grid{grid-template-columns:repeat(2,1fr)}
|
||
.look{columns:2}
|
||
.split{grid-template-columns:1fr}
|
||
.split .pic{min-height:420px;order:-1}
|
||
.pdp .layout{grid-template-columns:1fr;gap:28px}
|
||
.pdp .info{position:static}
|
||
.fgrid{grid-template-columns:1fr 1fr}
|
||
.fcol{padding:28px 20px}
|
||
.fcol:nth-child(odd){border-left:0;padding-left:0}
|
||
.social .sgrid{grid-template-columns:repeat(4,1fr)}
|
||
}
|
||
@media(max-width:640px){
|
||
:root{--gutter:20px}
|
||
header nav{display:none}
|
||
.menu-btn{display:inline-flex}
|
||
header .sp{flex:1}
|
||
.sec{padding:64px 0}
|
||
.look{columns:1}
|
||
.hero{height:88vh}
|
||
.quote{padding:72px 0}
|
||
.pdp .gallery{grid-template-columns:1fr}
|
||
.pdp .gallery img.wide{grid-column:auto}
|
||
.fgrid{grid-template-columns:1fr}
|
||
.fcol{border-left:0;padding:24px 0;border-top:1px solid var(--line)}
|
||
.fcol:first-child{border-top:0}
|
||
.social .sgrid{grid-template-columns:repeat(3,1fr)}
|
||
.press .marks{gap:28px}
|
||
.press img{height:20px}
|
||
}
|
||
|
||
/* ---------- header search affordance ---------- */
|
||
header .search-btn{display:inline-flex;align-items:center;gap:9px;background:none;border:0;
|
||
color:inherit;cursor:pointer;padding:0;-webkit-tap-highlight-color:transparent}
|
||
header .search-btn svg{display:block}
|
||
header .search-btn .kk{font-family:var(--font-mono);font-size:10px;letter-spacing:.06em;
|
||
line-height:1;border:1px solid currentColor;padding:3px 5px;opacity:.6}
|
||
@media(max-width:640px){header .search-btn .kk{display:none}}
|
||
|
||
/* ---------- command palette (Cmd/Ctrl+K) ---------- */
|
||
.cmdk{position:fixed;inset:0;z-index:100;display:none}
|
||
.cmdk.open{display:block}
|
||
.cmdk-scrim{position:absolute;inset:0;background:rgba(10,10,10,.44)}
|
||
.cmdk-box{position:relative;width:600px;max-width:92vw;margin:11vh auto 0;background:#fff;
|
||
border:1px solid var(--fg);box-shadow:0 30px 90px rgba(0,0,0,.30);display:flex;flex-direction:column;
|
||
max-height:72vh;animation:cmdkin .16s ease}
|
||
@keyframes cmdkin{from{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:none}}
|
||
.cmdk-head{display:flex;align-items:center;gap:12px;padding:16px 18px;border-bottom:1px solid var(--line)}
|
||
.cmdk-head svg{color:var(--dim);flex-shrink:0;display:block}
|
||
.cmdk-head input{flex:1;min-width:0;border:0;outline:none;background:none;font-family:inherit;
|
||
font-size:16px;color:var(--fg)}
|
||
.cmdk-head input::placeholder{color:var(--dim)}
|
||
.cmdk-head input:focus-visible{outline:none}
|
||
.cmdk-head kbd{font-family:var(--font-mono);font-size:10px;letter-spacing:.1em;text-transform:uppercase;
|
||
color:var(--mut);border:1px solid var(--line2);padding:3px 6px;line-height:1}
|
||
.cmdk-list{overflow-y:auto;padding:6px}
|
||
.cmdk-item{display:flex;align-items:center;gap:13px;padding:10px 12px;cursor:pointer}
|
||
.cmdk-item .ci-thumb{width:34px;height:44px;object-fit:cover;background:var(--soft);flex-shrink:0}
|
||
.cmdk-item .ci-l{flex:1;min-width:0}
|
||
.cmdk-item .ci-n{font-size:14px;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
|
||
.cmdk-item .ci-s{font-size:12px;color:var(--dim);font-family:var(--font-mono);margin-top:2px;
|
||
white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
|
||
.cmdk-item .ci-k{font-family:var(--font-mono);font-size:10px;letter-spacing:.12em;text-transform:uppercase;
|
||
color:var(--dim);flex-shrink:0}
|
||
.cmdk-item.sel{background:var(--fg)}
|
||
.cmdk-item.sel .ci-n{color:#fff}
|
||
.cmdk-item.sel .ci-s,.cmdk-item.sel .ci-k{color:rgba(255,255,255,.72)}
|
||
.cmdk-empty{padding:28px 14px;text-align:center;color:var(--dim);font-size:13px}
|
||
@media(max-width:640px){.cmdk-box{margin:0;width:100%;max-width:none;height:100%;max-height:100%;border:0}}
|
||
|
||
/* ---------- Journal (editorial) — monochrome, from /journal.json ---------- */
|
||
.jgrid{display:grid;grid-template-columns:repeat(2,1fr);gap:36px 28px;margin-top:8px}
|
||
.jcard{display:block;border-bottom:1px solid var(--line);padding-bottom:20px}
|
||
.jcard .jhero{aspect-ratio:4/5;overflow:hidden;background:var(--soft)}
|
||
.jcard .jhero img{width:100%;height:100%;object-fit:cover;transition:transform .5s ease}
|
||
.jcard:hover .jhero img{transform:scale(1.03)}
|
||
.jcard .jmeta{padding-top:14px}
|
||
.jcard h2{font-size:22px;font-weight:600;letter-spacing:-.01em;line-height:1.15;margin:6px 0 8px}
|
||
.jcard p{color:var(--mut);font-size:14px;line-height:1.55;margin:0}
|
||
.jpost{max-width:640px;margin:0 auto}
|
||
.jback{display:inline-block;font-size:12px;letter-spacing:.08em;text-transform:uppercase;color:var(--dim);margin-bottom:24px;border:0}
|
||
.jposthero{aspect-ratio:16/10;overflow:hidden;background:var(--soft);margin-bottom:36px}
|
||
.jposthero img{width:100%;height:100%;object-fit:cover}
|
||
.jbody h1{font-size:clamp(30px,4.4vw,50px);line-height:1.04;margin:0 0 24px}
|
||
.jbody h2{font-size:20px;font-weight:600;margin:32px 0 10px}
|
||
.jbody p{color:#3a3a3a;font-size:17px;line-height:1.7;margin:0 0 20px}
|
||
.jbody strong{color:var(--fg)}
|
||
.jbody a{border-bottom:1px solid var(--line2)}
|
||
@media(max-width:640px){.jgrid{grid-template-columns:1fr;gap:28px}}
|