parts-store/assets/style.css

277 lines
16 KiB
CSS
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

:root{
--bg:#0b0b0c; --bg2:#111113; --panel:#141416; --line:#242427; --line2:#33333a;
--text:#f4f3ee; --dim:#9c988f; --dim2:#6c6961;
--acc:#c8ff2e; --acc-ink:#0b0b0c;
--display:"Space Grotesk",-apple-system,BlinkMacSystemFont,sans-serif;
--mono:"IBM Plex Mono",ui-monospace,Menlo,monospace;
}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{margin:0;background:var(--bg);color:var(--text);font-family:var(--display);font-size:17px;line-height:1.5;-webkit-font-smoothing:antialiased}
a{color:var(--text);text-decoration:none}
::selection{background:var(--acc);color:var(--acc-ink)}
.wrap{max-width:1180px;margin:0 auto;padding:0 28px}
.mono{font-family:var(--mono)}
/* header */
header.top{position:sticky;top:0;z-index:60;background:rgba(11,11,12,.72);backdrop-filter:blur(14px);border-bottom:1px solid var(--line)}
.top .wrap{display:flex;align-items:center;gap:26px;height:66px}
.brand{display:flex;align-items:center;gap:11px;font-weight:700;font-size:18px;letter-spacing:-.01em}
.brand .mk{width:13px;height:13px;background:var(--acc);border-radius:2px}
.brand small{font-family:var(--mono);font-size:12px;color:var(--dim);font-weight:400}
nav.main{display:flex;gap:26px}
nav.main a{font-family:var(--mono);font-size:14px;color:var(--dim);transition:color .15s}
nav.main a:hover,nav.main a.active{color:var(--text)}
.spacer{flex:1}
.credits{font-family:var(--mono);font-size:13px;color:var(--acc);border:1px solid var(--line2);padding:7px 13px;border-radius:2px}
.btn{display:inline-flex;align-items:center;gap:9px;background:var(--acc);color:var(--acc-ink);border:none;
padding:13px 22px;border-radius:2px;font-family:var(--display);font-weight:600;font-size:15px;cursor:pointer;transition:transform .12s,background .15s}
.btn:hover{transform:translateY(-2px)}
.btn.ghost{background:transparent;color:var(--text);border:1px solid var(--line2)}
.btn.ghost:hover{border-color:var(--acc);color:var(--acc)}
/* hero */
.hero{position:relative;min-height:82vh;display:flex;align-items:center;overflow:hidden;border-bottom:1px solid var(--line)}
#hero-canvas{position:absolute;inset:0;width:100%;height:100%;display:block;z-index:0}
.hero .wrap{position:relative;z-index:2;width:100%}
.hero .eyebrow{font-family:var(--mono);font-size:13px;color:var(--acc);letter-spacing:.08em;text-transform:uppercase;margin-bottom:22px}
.hero h1{font-size:clamp(44px,7vw,92px);line-height:.98;font-weight:700;letter-spacing:-.03em;margin:0 0 24px;max-width:14ch}
.hero h1 em{font-style:normal;color:var(--acc)}
.hero p{font-size:clamp(17px,2vw,21px);color:var(--dim);max-width:52ch;margin:0 0 34px;line-height:1.5}
.hero .cta{display:flex;gap:14px;align-items:center;flex-wrap:wrap}
.hero .fade{position:absolute;left:0;right:0;bottom:0;height:180px;background:linear-gradient(transparent,var(--bg));z-index:1;pointer-events:none}
/* section scaffolding */
.sec{padding:96px 0;border-bottom:1px solid var(--line)}
.sec-h{font-family:var(--mono);font-size:13px;color:var(--dim);letter-spacing:.06em;text-transform:uppercase;margin:0 0 8px}
.sec h2{font-size:clamp(30px,4vw,48px);font-weight:700;letter-spacing:-.02em;margin:0 0 18px;max-width:20ch}
.sec .lead{font-size:19px;color:var(--dim);max-width:60ch;line-height:1.55}
/* value row */
.vals{display:grid;grid-template-columns:repeat(3,1fr);gap:26px;margin-top:56px}
@media(max-width:820px){.vals{grid-template-columns:1fr}}
.val{border-top:2px solid var(--acc);padding-top:20px}
.val h3{font-size:22px;margin:0 0 8px;font-weight:600;letter-spacing:-.01em}
.val p{color:var(--dim);font-size:16px;margin:0;line-height:1.55}
/* search + catalog */
.searchbar{display:flex;gap:12px;align-items:center;background:var(--panel);border:1px solid var(--line2);border-radius:2px;padding:6px 8px 6px 20px}
.searchbar:focus-within{border-color:var(--acc)}
.searchbar svg{opacity:.5}
.searchbar input{flex:1;background:none;border:none;outline:none;color:var(--text);font-family:var(--display);font-size:19px;padding:14px 4px}
.searchbar input::placeholder{color:var(--dim2)}
.chips{display:flex;flex-wrap:wrap;gap:9px;margin:20px 0 0}
.chip{font-family:var(--mono);font-size:13px;color:var(--dim);background:transparent;border:1px solid var(--line);padding:7px 14px;border-radius:2px;cursor:pointer;transition:.12s}
.chip:hover{border-color:var(--line2);color:var(--text)}
.chip.on{background:var(--acc);color:var(--acc-ink);border-color:var(--acc);font-weight:600}
.count{font-family:var(--mono);font-size:13px;color:var(--dim);margin:26px 0 14px}
.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:20px;padding-bottom:20px}
.card{background:var(--panel);border:1px solid var(--line);border-radius:3px;overflow:hidden;cursor:pointer;transition:border-color .18s,transform .18s;display:flex;flex-direction:column}
.card:hover{border-color:var(--acc);transform:translateY(-4px)}
.thumb{aspect-ratio:16/11;background:#f3f3f0;position:relative;display:flex;align-items:center;justify-content:center;border-bottom:1px solid var(--line)}
.thumb img,.thumb canvas{width:100%;height:100%;object-fit:contain}
.thumb .cls{position:absolute;top:12px;left:12px;font-family:var(--mono);font-size:11px;color:var(--acc);letter-spacing:.04em;text-transform:uppercase}
.thumb .ser{position:absolute;top:12px;right:12px;font-family:var(--mono);font-size:10px;color:var(--acc-ink);background:var(--acc);padding:2px 7px;border-radius:2px;font-weight:600}
.card .body{padding:16px 18px 18px}
.card .nm{font-weight:600;font-size:17px;margin:0 0 4px;letter-spacing:-.01em}
.card .mpn{font-family:var(--mono);font-size:12px;color:var(--dim);margin-bottom:10px}
.card .sm{color:var(--dim);font-size:14px;line-height:1.5;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;min-height:42px}
.card .meta{display:flex;gap:14px;margin-top:13px;font-family:var(--mono);font-size:11px;color:var(--dim2)}
.card .meta b{color:var(--acc);font-weight:400}
/* detail */
.detail{display:grid;grid-template-columns:1.02fr 1fr;gap:40px;padding:44px 0 90px}
@media(max-width:900px){.detail{grid-template-columns:1fr}}
.viewer{position:sticky;top:92px;height:min(64vh,540px);background:#f3f3f0;border:1px solid var(--line2);border-radius:3px;overflow:hidden}
.viewer canvas{width:100%;height:100%;display:block}
.vbar{position:absolute;bottom:0;left:0;right:0;display:flex;gap:10px;padding:14px}
.vtag{font-family:var(--mono);font-size:11px;color:var(--dim);border:1px solid var(--line2);padding:5px 11px;border-radius:2px;background:rgba(11,11,12,.6)}
.dclass{font-family:var(--mono);font-size:13px;color:var(--acc);text-transform:uppercase;letter-spacing:.06em}
.dh1{font-size:clamp(30px,4vw,46px);font-weight:700;letter-spacing:-.02em;margin:8px 0 6px;line-height:1.02}
.dmpn{font-family:var(--mono);color:var(--dim);font-size:15px;margin-bottom:18px}
.section{margin:30px 0}
.section h3{font-family:var(--mono);font-size:12px;text-transform:uppercase;letter-spacing:.08em;color:var(--dim);margin:0 0 14px}
.ptable{width:100%;border-collapse:collapse;font-size:15px}
.ptable td{padding:11px 4px;border-bottom:1px solid var(--line);vertical-align:top}
.ptable td:first-child{color:var(--dim);width:46%}
.ptable td.v{font-family:var(--mono);color:var(--text)}
.ptable td .cond{color:var(--dim2);font-size:12px;display:block;margin-top:2px}
.uc{display:flex;flex-direction:column;gap:2px;padding:0;margin:0}
.uc li{list-style:none;padding:13px 0;border-bottom:1px solid var(--line);font-size:16px;line-height:1.5;display:flex;gap:12px}
.uc li::before{content:"//";color:var(--acc);font-family:var(--mono);font-size:13px}
.pins{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:8px}
.pin{display:flex;gap:9px;align-items:center;font-family:var(--mono);font-size:13px;border:1px solid var(--line);border-radius:2px;padding:9px 11px}
.pin .n{color:var(--acc);min-width:26px}
.pin .t{margin-left:auto;color:var(--dim2);font-size:10px;text-transform:uppercase}
pre.spice{background:#08080a;border:1px solid var(--line);border-radius:3px;padding:16px;overflow-x:auto;font-family:var(--mono);font-size:13px;color:var(--dim);line-height:1.6;margin:0}
.tags{display:flex;flex-wrap:wrap;gap:8px}
.tag{font-family:var(--mono);font-size:12px;color:var(--dim);border:1px solid var(--line2);padding:6px 11px;border-radius:2px}
.tag b{color:var(--acc);font-weight:400}
.dactions{display:flex;gap:12px;flex-wrap:wrap;margin:4px 0 22px}
.assets{display:flex;flex-wrap:wrap;gap:20px;font-family:var(--mono);font-size:13px;color:var(--dim)}
.assets .ok{color:var(--acc)}
/* forms */
.form{max-width:840px;padding:44px 0 90px}
.banner{border-left:2px solid var(--acc);padding:16px 0 16px 22px;margin:18px 0 30px;color:var(--dim);font-size:16px;line-height:1.6}
.banner b{color:var(--text)}
.field{margin:20px 0}
.field label{display:block;font-family:var(--mono);font-size:12px;text-transform:uppercase;letter-spacing:.06em;color:var(--dim);margin-bottom:9px}
.field input,.field select,.field textarea{width:100%;background:var(--panel);border:1px solid var(--line2);border-radius:2px;color:var(--text);padding:13px 15px;font-size:16px;font-family:var(--display);outline:none}
.field textarea{min-height:96px;font-family:var(--mono);font-size:14px;line-height:1.6}
.field input:focus,.field textarea:focus,.field select:focus{border-color:var(--acc)}
.row2{display:grid;grid-template-columns:1fr 1fr;gap:16px}
@media(max-width:640px){.row2{grid-template-columns:1fr}}
.drop{border:1px dashed var(--line2);border-radius:2px;padding:24px;text-align:center;font-family:var(--mono);font-size:14px;color:var(--dim);cursor:pointer}
.drop:hover{border-color:var(--acc);color:var(--text)}
.footer{color:var(--dim2);font-family:var(--mono);font-size:13px;padding:40px 0}
.footer .wrap{display:flex;gap:24px;flex-wrap:wrap;align-items:center}
.footer a{color:var(--dim)}.footer a:hover{color:var(--acc)}
.empty{text-align:center;color:var(--dim);padding:90px 0;font-family:var(--mono)}
.spin{width:15px;height:15px;border:2px solid var(--line2);border-top-color:var(--acc);border-radius:50%;animation:sp .9s linear infinite;display:inline-block;vertical-align:middle}
@keyframes sp{to{transform:rotate(360deg)}}
/* scroll reveal */
.reveal{opacity:0;transform:translateY(26px);transition:opacity .7s cubic-bezier(.2,.7,.2,1),transform .7s cubic-bezier(.2,.7,.2,1)}
.reveal.in{opacity:1;transform:none}
.reveal.d1{transition-delay:.08s}.reveal.d2{transition-delay:.16s}.reveal.d3{transition-delay:.24s}
/* page fade-in */
body{animation:pagein .5s ease both}
@keyframes pagein{from{opacity:0}to{opacity:1}}
@media(prefers-reduced-motion:reduce){.reveal{opacity:1;transform:none;transition:none}body{animation:none}}
/* visualization tabs (3D / schematic / footprint) */
.viz{position:sticky;top:92px}
.viztabs{display:flex;margin-bottom:12px;border:1px solid var(--line2);border-radius:2px;width:fit-content;overflow:hidden}
.viztabs button{background:transparent;border:none;border-right:1px solid var(--line2);color:var(--dim);font-family:var(--mono);font-size:13px;padding:9px 20px;cursor:pointer;transition:.12s}
.viztabs button:last-child{border-right:none}
.viztabs button.on{background:var(--acc);color:var(--acc-ink);font-weight:600}
.vizpanel{height:min(60vh,520px);background:#f3f3f0;border:1px solid var(--line2);border-radius:3px;overflow:hidden;position:relative;display:flex;align-items:center;justify-content:center}
.vizpanel canvas{width:100%;height:100%;display:block}
.vizpanel svg{width:100%;height:100%}
.vizpanel .hint{position:absolute;bottom:12px;left:12px;font-family:var(--mono);font-size:11px;color:#555}
.viznote{font-family:var(--mono);font-size:12px;color:var(--dim);margin-top:12px;line-height:1.5}
.viznote b{color:var(--acc)}
/* login gate */
html:not(.ppcb-authed) body{overflow:hidden}
#ppcb-gate{position:fixed;inset:0;z-index:200;background:var(--bg);display:flex;align-items:center;justify-content:center;padding:24px}
.gate-card{width:100%;max-width:400px;display:flex;flex-direction:column}
.gate-brand{display:flex;align-items:center;gap:10px;font-weight:700;font-size:20px;margin-bottom:30px}
.gate-brand .mk{width:13px;height:13px;background:var(--acc);border-radius:2px}
.gate-brand small{font-family:var(--mono);font-size:12px;color:var(--dim);font-weight:400}
.gate-h{font-size:29px;font-weight:700;letter-spacing:-.02em;margin-bottom:8px;line-height:1.1}
.gate-sub{color:var(--dim);font-size:15px;line-height:1.5;margin-bottom:26px}
.gate-tabs{display:flex;border:1px solid var(--line2);border-radius:2px;width:fit-content;overflow:hidden;margin-bottom:18px}
.gate-tabs button{background:transparent;border:none;border-right:1px solid var(--line2);color:var(--dim);font-family:var(--mono);font-size:13px;padding:8px 18px;cursor:pointer}
.gate-tabs button:last-child{border-right:none}
.gate-tabs button.on{background:var(--acc);color:var(--acc-ink);font-weight:600}
#ppcb-gate input{background:var(--panel);border:1px solid var(--line2);border-radius:2px;color:var(--text);padding:14px 15px;font-size:15px;font-family:var(--display);outline:none;margin-bottom:12px}
#ppcb-gate input:focus{border-color:var(--acc)}
.gate-go{width:100%;justify-content:center;margin-top:4px}
.gate-msg{font-family:var(--mono);font-size:13px;margin-top:14px;min-height:18px}
/* fix: hidden viz panels must actually hide (display:flex was overriding [hidden]) */
.vizpanel[hidden]{display:none !important}
/* ---------- mobile ---------- */
@media(max-width:820px){
body{font-size:16px}
.wrap{padding:0 18px}
.top .wrap{gap:14px;height:56px}
nav.main{gap:16px}
nav.main a{font-size:13px}
.credits{font-size:12px;padding:6px 10px}
.hero{min-height:76vh}
.sec{padding:60px 0}
.vals{gap:22px;margin-top:40px}
.detail{grid-template-columns:1fr;gap:26px;padding:26px 0 60px}
.viz,.viewer{position:static}
.vizpanel,.viewer{height:56vh;min-height:320px}
.grid{grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:14px}
.pins{grid-template-columns:repeat(auto-fill,minmax(130px,1fr))}
.dactions{gap:8px}
.searchbar input{font-size:16px}
}
@media(max-width:540px){
.top .wrap{gap:10px}
nav.main{gap:12px}
nav.main a{font-size:12px}
.brand small{display:none}
.credits{display:none}
.hero h1{font-size:clamp(34px,10vw,56px)}
.grid{grid-template-columns:1fr}
.row2{grid-template-columns:1fr}
.viztabs{width:100%}
.viztabs button{flex:1;padding:9px 8px;text-align:center}
.assets{gap:12px;font-size:12px}
.gate-h{font-size:24px}
}
/* ============ readability + phone-fit pass (overrides) ============ */
html,body{overflow-x:hidden;max-width:100%}
body{font-size:16px;line-height:1.55}
.wrap{max-width:1060px}
/* grid/flex children must be allowed to shrink, or wide content (SPICE, tables, monospace) forces
the whole page wider than the viewport = horizontal scroll on phones */
.detail>div,.card,.vals>div,.viz,.grid>*{min-width:0}
pre.spice{max-width:100%;font-size:12px}
.ptable{table-layout:fixed;width:100%}
.ptable td{word-break:break-word}
.ptable td:first-child{width:42%}
.uc li{overflow-wrap:anywhere}
/* calmer, more readable type + spacing */
.hero{min-height:70vh}
.hero h1{font-size:clamp(32px,5.4vw,60px);max-width:17ch;line-height:1.04}
.hero p{font-size:clamp(16px,1.9vw,18px);max-width:50ch}
.sec{padding:68px 0}
.sec h2{font-size:clamp(25px,3.2vw,36px)}
.sec .lead{font-size:17px}
.vals{margin-top:44px;gap:24px}
.val h3{font-size:19px}
.val p{font-size:15px}
/* detail page: tighter + scannable */
.detail{gap:36px;padding:36px 0 80px}
.dclass{font-size:12px}
.dh1{font-size:clamp(25px,3.2vw,36px)}
.dmpn{font-size:14px}
.section{margin:24px 0}
.section h3{margin-bottom:10px}
.uc li{font-size:15px;padding:11px 0;line-height:1.5}
.ptable{font-size:14px}
.ptable td{padding:9px 4px}
.pin{font-size:12px;padding:8px 10px}
.card .sm{font-size:13px}
.assets{gap:16px;font-size:12px}
/* mobile */
@media(max-width:820px){
.hero{min-height:auto;padding:92px 0 64px}
#hero-canvas{opacity:.65}
.sec{padding:48px 0}
.vizpanel,.viewer{height:44vh;min-height:270px}
.dactions{gap:8px}
.dactions .btn{padding:11px 15px;font-size:14px}
}
@media(max-width:540px){
.wrap{padding:0 16px}
nav.main{gap:13px}
nav.main a{font-size:12px}
.hero h1{font-size:clamp(27px,8.5vw,38px)}
.hero p{font-size:15px}
.sec h2{font-size:23px}
.sec .lead,.val p,.card .sm{font-size:14px}
.uc li{font-size:14px}
pre.spice{font-size:11px}
}
/* collapsible "more" toggles (use-cases / SPICE) */
.more{margin-top:8px}
.more>summary{cursor:pointer;font-family:var(--mono);font-size:13px;color:var(--acc);list-style:none;padding:6px 0}
.more>summary::-webkit-details-marker{display:none}
.more>summary::before{content:"+ "}
.more[open]>summary::before{content:"– "}
.more[open]>summary{margin-bottom:8px}
.more .uc li:first-child{border-top:1px solid var(--line)}