:root{
  --paper:#f4f3ef; --card:#fff; --ink:#111318; --muted:#6b7280;
  --line:#e3e0d6; --line-soft:#eceae3; --thin:#e2e0d9; --blue:#1e4fa3; --blue-dark:#173c7d;
  --orange:#ff4d00; --mono:'JetBrains Mono',monospace; --sans:'Archivo',Inter,sans-serif;
  --radius:12px; --shadow:0 6px 20px rgba(17,19,24,.06);
}
*{box-sizing:border-box} html{scroll-behavior:smooth}
body{margin:0;font-family:var(--sans);background:var(--paper);color:var(--ink);line-height:1.6;
  background-image:linear-gradient(rgba(17,19,24,.04) 1px,transparent 1px),linear-gradient(90deg,rgba(17,19,24,.04) 1px,transparent 1px);
  background-size:28px 28px;}
img{max-width:100%;display:block} a{color:inherit}
.wrap{max-width:1140px;margin:0 auto;padding:0 20px}
.mono-label{font-family:var(--mono);font-size:.72rem;letter-spacing:.12em;font-weight:700}
.mono-label.light{color:#cbd5e1} .red-dot{display:inline-block;width:8px;height:8px;background:var(--orange);border-radius:50%;margin-right:6px}
h1{font-size:clamp(2.8rem,7vw,4.6rem);line-height:.9;letter-spacing:-.04em;margin:.15em 0;font-weight:900}
h1 .blue,h2 .blue{color:var(--blue)} h2{font-size:clamp(1.4rem,3vw,2rem);letter-spacing:-.02em;margin:.2em 0}
.big{font-size:clamp(2.2rem,5vw,3.4rem)!important;line-height:.95;letter-spacing:-.04em}
section{scroll-margin-top:70px}

/* topbar */
.topbar{position:sticky;top:0;z-index:50;background:rgba(244,243,239,.92);backdrop-filter:blur(8px);border-bottom:1px solid var(--line)}
.topbar-inner{display:flex;align-items:center;justify-content:space-between;height:58px}
.logo{font-weight:900;text-decoration:none;display:flex;align-items:center;gap:8px}
.logo .dot{width:12px;height:12px;background:var(--orange);border-radius:50%;display:inline-block}
.logo small{font-family:var(--mono);font-weight:500;font-size:.65rem;color:var(--muted)}
.toplinks{display:flex;gap:26px;font-family:var(--mono);font-size:.78rem;font-weight:700}
.toplinks a{text-decoration:none} .toplinks a:hover{color:var(--blue)}
.topright{display:flex;align-items:center;gap:10px}
.btn-talk{background:var(--ink);color:#fff;padding:9px 16px;border-radius:999px;font-family:var(--mono);font-size:.75rem;font-weight:700;text-decoration:none}
.burger{display:none;background:#fff;border:1px solid var(--line);border-radius:8px;font-size:1.2rem;cursor:pointer;padding:2px 10px}

/* hero */
.hero{padding:32px 0 26px}
.hero-grid{display:grid;grid-template-columns:1.2fr .8fr;gap:24px}
.hero-left h2{font-size:1.25rem;font-weight:700;margin:.3em 0}
.hero-desc{color:#333;max-width:56ch}
.hero-btns{display:flex;gap:10px;margin:16px 0;flex-wrap:wrap}
.btn-dark{background:var(--ink);color:#fff;padding:12px 20px;border-radius:10px;font-family:var(--mono);font-size:.78rem;font-weight:700;text-decoration:none;border:1px solid var(--ink)}
.btn-light{background:#fff;padding:12px 20px;border-radius:10px;font-family:var(--mono);font-size:.78rem;font-weight:700;border:1px solid var(--line);cursor:pointer}
.hero-stats{display:grid;grid-template-columns:repeat(3,1fr);border:1px solid var(--line);border-radius:var(--radius);margin-top:16px;background:#fff;box-shadow:var(--shadow);overflow:hidden}
.hero-stats div{padding:12px 14px;border-right:1px solid var(--line-soft)} .hero-stats div:last-child{border-right:0}
.hero-stats strong{font-size:1.2rem;display:block;letter-spacing:-.02em;font-weight:800} .hero-stats small{color:var(--muted);font-family:var(--mono);font-size:.66rem;line-height:1.5;display:block;margin-top:4px}

/* spec sheet */
.spec-sheet{background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:0;box-shadow:var(--shadow);overflow:hidden}
.spec-head{display:flex;justify-content:space-between;font-family:var(--mono);font-size:.7rem;font-weight:700;padding:10px 14px;border-bottom:1px solid var(--line-soft);background:#faf9f6}
.tag-id{background:var(--ink);color:#fff;padding:2px 8px;border-radius:6px}
.spec-rows div{display:flex;justify-content:space-between;gap:12px;padding:8px 14px;border-bottom:1px solid var(--line-soft);font-size:.85rem;align-items:baseline}
.spec-rows span{font-family:var(--mono);font-size:.66rem;color:var(--muted);flex-shrink:0} .spec-rows b{text-align:right;overflow-wrap:anywhere;line-height:1.4;font-weight:600} .spec-rows .small{font-size:.74rem;font-weight:500}
.spec-icons{display:flex;align-items:center;gap:10px;padding:10px 14px;font-family:var(--mono);font-size:.62rem;border-bottom:1px solid var(--line-soft);color:var(--muted)}
.spec-icons .dots{color:var(--ink);letter-spacing:2px}
.spec-cards{display:grid;grid-template-columns:1fr 1fr}
.mini{padding:14px;color:#fff} .mini.blue{background:var(--blue)} .mini.orange{background:var(--orange)}
.mini small{font-family:var(--mono);font-size:.62rem;display:block;opacity:.9} .mini strong{font-size:1.6rem;display:block;line-height:1.1} .mini span{font-family:var(--mono);font-size:.68rem;opacity:.9}

/* about */
.about{padding:40px 0;background:#faf9f6;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
.about-grid{display:grid;grid-template-columns:.85fr 1.15fr;gap:28px}
.person{display:flex;gap:10px;align-items:center;margin-top:18px}
.person img{width:44px;height:44px;border-radius:50%;object-fit:cover;background:#111;border:1px solid var(--line)}
.person b{display:block;font-size:.9rem} .person small{font-family:var(--mono);font-size:.68rem;color:var(--muted)}
.lead{font-size:1.05rem} .pill{background:#e8ecf5;border:1px solid #b9c6e4;border-radius:6px;padding:1px 8px;font-weight:700;font-size:.9em}
.about-4{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin-top:18px}
.about-4 div{background:#fff;border:1px solid var(--line);border-radius:10px;padding:12px;min-height:112px;box-shadow:var(--shadow)}
.about-4 small{font-family:var(--mono);font-size:.62rem;color:var(--muted);display:block}
.about-4 b{font-size:.8rem;display:block;margin:4px 0} .about-4 span{font-size:.72rem;color:var(--muted)}

/* exp dark */
.exp{background:#16181d;color:#fff;padding:44px 0}
.exp-head{display:flex;justify-content:space-between;align-items:end;gap:16px}
.exp-head h2{color:#fff;font-size:clamp(2rem,4vw,3rem);line-height:.95}
.stamp{font-family:var(--mono);font-size:.68rem;color:#9ca3af;text-align:right}
.exp-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:22px}
.exp-grid article{background:#1d2026;border:1px solid #2c313a;border-radius:var(--radius);padding:20px}
.exp-grid small{display:inline-block;background:rgba(255,77,0,.14);border:1px solid rgba(255,77,0,.5);color:#ff8a4d;padding:2px 8px;border-radius:6px;font-weight:700;font-family:var(--mono);font-size:.68rem}
.exp-grid h3{margin:.4em 0;font-size:1.02rem} .exp-grid ul{margin:8px 0 0;padding-left:18px;color:#cbd5e1;font-size:.88rem} .exp-grid li{margin:4px 0}

/* skills */
.skills{padding:40px 0}
.sec-head{display:flex;justify-content:space-between;align-items:end}
.sec-head .mono{font-family:var(--mono);font-size:.72rem;color:var(--muted)}
.skills-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;margin-top:18px}
.skill{background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:18px;box-shadow:var(--shadow)}
.skill h3{margin:.3em 0 10px} .skill ul{list-style:none;margin:0;padding:0;border-top:1px solid var(--line-soft)}
.skill li{padding:8px 0;border-bottom:1px solid var(--line-soft);font-size:.88rem} .skill li:last-child{border-bottom:0}

/* summary at a glance */
.summary{padding:40px 0;border-bottom:1px solid var(--line);background:var(--paper)}
.summary-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-top:18px}
.sum-card{position:relative;background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:12px;text-decoration:none;box-shadow:var(--shadow);transition:transform .2s ease,box-shadow .2s ease;display:block}
.sum-card:hover{transform:translateY(-4px);box-shadow:0 12px 28px rgba(17,19,24,.12);text-decoration:none}
.sum-card img{width:100%;aspect-ratio:1/1;object-fit:contain;background:#faf9f6;border:1px solid var(--line-soft);border-radius:8px;padding:8px}
.sum-num{position:absolute;top:18px;left:18px;font-family:var(--mono);font-size:.66rem;font-weight:700;background:var(--ink);color:#fff;padding:2px 8px;border-radius:6px}
.sum-card b{display:block;margin:10px 0 2px;font-size:.92rem} .sum-card small{font-family:var(--mono);font-size:.66rem;color:var(--muted)}
.sum-card.is-active{border-color:var(--blue);box-shadow:0 0 0 2px rgba(30,79,163,.25),var(--shadow)}
.work-card{scroll-margin-top:76px}

/* work carousel */
.work{padding:40px 0;background:#faf9f6;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
.work .note{font-family:var(--mono);font-size:.68rem;color:var(--muted);text-align:right}
.carousel-bar{display:flex;align-items:center;gap:16px;margin-top:18px;flex-wrap:wrap}
.carousel-btns{display:flex;gap:8px}
.car-btn{background:#fff;border:1px solid var(--line);border-radius:999px;padding:9px 16px;font-family:var(--mono);font-size:.7rem;font-weight:700;cursor:pointer;box-shadow:var(--shadow)}
.car-btn:hover{background:var(--ink);color:#fff;border-color:var(--ink)}
.car-count{font-size:.72rem;font-weight:700;letter-spacing:.1em}
.car-dots{display:flex;gap:8px;margin-left:auto}
.car-dots button{width:34px;height:8px;border-radius:99px;border:1px solid var(--line);background:#fff;cursor:pointer;padding:0}
.car-dots button.is-active{background:var(--orange);border-color:var(--orange)}
.carousel{overflow:hidden;margin-top:14px;border-radius:var(--radius)}
.work-track{display:flex;gap:16px;transition:transform .55s cubic-bezier(.22,.61,.36,1)}
.work-card{flex:0 0 100%;max-width:100%;background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:clamp(16px,3vw,28px);box-shadow:var(--shadow)}
.work-card.is-current{border-color:var(--blue)}
.work-meta{display:flex;justify-content:space-between;font-family:var(--mono);font-size:.66rem;font-weight:700;color:var(--muted)}
.work-card h3{margin:.4em 0 0;font-size:1.35rem;letter-spacing:-.01em} .work-sub{font-family:var(--mono);font-size:.68rem;color:var(--muted);margin:2px 0 10px}
.work-media{border:1px solid var(--line-soft);border-radius:8px;background:#eceae3;overflow:hidden;aspect-ratio:4/3}
.work-media img{width:100%;height:100%;object-fit:cover;object-position:center 38%;cursor:zoom-in;transition:transform .35s ease}
.work-card:hover .work-media img{transform:scale(1.03)}
.work-desc{font-size:.9rem;color:#444;margin:12px 0 4px}
.tags{display:flex;flex-wrap:wrap;gap:6px;margin:10px 0}
.tags span{font-family:var(--mono);font-size:.62rem;border:1px solid var(--line);border-radius:999px;padding:4px 10px;background:#f4f3ef;color:#444}
.spec-toggle{width:100%;background:var(--ink);color:#fff;border:0;border-radius:8px;padding:10px;font-family:var(--mono);font-size:.72rem;font-weight:700;cursor:pointer}
.work-detail{display:none;margin-top:12px;border-top:1px dashed var(--line);padding-top:12px}
.work-detail.open{display:block}
.omr{display:grid;grid-template-columns:1fr 1fr 1fr;gap:8px;margin-bottom:10px}
.omr div{border:1px solid var(--line-soft);border-radius:8px;padding:10px;font-size:.8rem;background:#faf9f6}
.omr b{font-family:var(--mono);font-size:.68rem;color:var(--blue)}
.omr p{margin:4px 0 0} .thumb{margin-top:8px;max-width:220px;border-radius:8px}
.work-media.house img{object-position:center 65%}
.work-detail img{border:1px solid var(--line-soft);border-radius:8px;background:#fff;width:100%;margin-top:10px}

/* inventory */
.inventory{background:var(--blue);color:#fff;padding:44px 0}
.inv-grid{display:grid;grid-template-columns:1fr .9fr;gap:24px;align-items:start}
.inventory h2{font-size:clamp(1.8rem,4vw,2.8rem);line-height:1}
.inv-stats{display:grid;grid-template-columns:1fr 1fr 1fr;margin:18px 0;border:1px solid rgba(255,255,255,.35);border-radius:10px;overflow:hidden;background:rgba(255,255,255,.08)}
.inv-stats div{padding:14px 16px;border-right:1px solid rgba(255,255,255,.25);background:rgba(0,0,0,.14)} .inv-stats div:last-child{border-right:0}
.inv-stats .hl{background:var(--orange)} .inv-stats strong{font-size:1.6rem;display:block;line-height:1} .inv-stats small{font-family:var(--mono);font-size:.68rem;opacity:.95}
.inv-pills{display:flex;flex-wrap:wrap;gap:8px} .inv-pills span{font-family:var(--mono);font-size:.65rem;border:1px solid rgba(255,255,255,.4);border-radius:999px;padding:6px 10px}
.sys-card{background:#fff;color:var(--ink);padding:0;border:0;border-radius:var(--radius);overflow:hidden;box-shadow:0 10px 30px rgba(0,0,0,.25)}
.sys-head{display:flex;justify-content:space-between;font-family:var(--mono);font-size:.7rem;font-weight:700;padding:10px 14px;border-bottom:1px solid var(--line-soft);background:#faf9f6}
.live{color:var(--orange)} .sys-card ol{margin:0;padding:14px 14px 14px 38px} .sys-card li{margin:8px 0;font-size:.9rem}
.sys-card li b{background:var(--blue);color:#fff;width:22px;height:22px;display:inline-grid;place-items:center;border-radius:6px;margin-right:8px;font-size:.75rem}
.sys-foot{font-size:.65rem;background:#16181d;color:#cbd5e1;padding:12px 14px;font-family:var(--mono)}

/* contact */
.contact{padding:44px 0}
.contact-grid{display:grid;grid-template-columns:1fr 420px;gap:24px}
.muted{color:var(--muted);font-family:var(--mono);font-size:.72rem}
.c-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:18px}
.c-grid div{background:#fff;border:1px solid var(--line);border-radius:10px;padding:14px;overflow-wrap:anywhere;box-shadow:var(--shadow)} .c-grid small{font-family:var(--mono);font-size:.65rem;color:var(--muted);display:block;margin-bottom:4px}
.c-grid a{font-weight:700;font-size:.88rem;text-decoration:none} .c-grid a:hover{color:var(--blue)}
.msg-card{background:#16181d;color:#fff;padding:18px;border-radius:var(--radius);box-shadow:0 12px 32px rgba(0,0,0,.22)}
.msg-head{display:flex;justify-content:space-between;font-family:var(--mono);font-size:.7rem;margin-bottom:12px;color:#cbd5e1}
.msg-card input,.msg-card textarea{width:100%;background:#22262e;border:1px solid #333a45;color:#fff;border-radius:8px;padding:11px;margin-bottom:10px;font:inherit;font-size:.85rem}
.two{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.btn-generate{width:100%;background:var(--orange);border:0;border-radius:8px;color:#fff;font-family:var(--mono);font-weight:700;padding:13px;cursor:pointer}
.tiny{font-size:.68rem;color:#9ca3af;font-family:var(--mono)}

footer{padding:16px 0;background:#faf9f6;border-top:1px solid var(--line)}
.foot{display:flex;justify-content:space-between;gap:10px;font-family:var(--mono);font-size:.68rem;flex-wrap:wrap;color:var(--muted)}

.lightbox{position:fixed;inset:0;background:rgba(0,0,0,.9);display:none;place-items:center;z-index:99;padding:20px}
.lightbox.open{display:grid} .lightbox img{max-width:94vw;max-height:86vh;background:#fff;border-radius:8px}
.lightbox button{position:absolute;top:12px;right:16px;font-size:2rem;background:none;border:0;color:#fff;cursor:pointer}
.btn-dark:hover,.spec-toggle:hover{background:var(--blue-dark)}
.btn-light:hover{background:var(--ink);color:#fff}
.btn-talk:hover{background:var(--blue-dark)}
.btn-generate:hover{filter:brightness(1.08)}
a:focus-visible,button:focus-visible,input:focus-visible,textarea:focus-visible{outline:2px solid var(--blue);outline-offset:2px}

/* ---- scroll reveal (JS adds .rv, observer adds .in) ---- */
.rv{opacity:0;transform:translateY(22px);transition:opacity .6s ease,transform .6s cubic-bezier(.22,.61,.36,1)}
.rv-l{opacity:0;transform:translateX(-26px);transition:opacity .6s ease,transform .6s cubic-bezier(.22,.61,.36,1)}
.rv-r{opacity:0;transform:translateX(26px);transition:opacity .6s ease,transform .6s cubic-bezier(.22,.61,.36,1)}
.rv-s{opacity:0;transform:scale(.94);transition:opacity .55s ease,transform .55s cubic-bezier(.22,.61,.36,1)}
.rv.in,.rv-l.in,.rv-r.in,.rv-s.in{opacity:1;transform:none}
/* stagger siblings: JS sets --d delay */
.rv.in,.rv-l.in,.rv-r.in,.rv-s.in{transition-delay:var(--d,0ms)}
.work-media img{will-change:transform}
@media (prefers-reduced-motion:reduce){
  .rv,.rv-l,.rv-r,.rv-s{opacity:1!important;transform:none!important;transition:none!important}
  html{scroll-behavior:auto}
}

@media print{
  .topbar,.hero-btns,.spec-toggle,.lightbox,.burger,.btn-talk,.msg-card{display:none!important}
  body{background:#fff} .exp,.inventory{background:#fff!important;color:#000!important}
  .exp-grid article,.exp-grid ul{color:#000!important;border-color:#ccc!important}
  .work-detail{display:block!important}
}

@media(max-width:900px){
  .hero-grid,.about-grid,.inv-grid,.contact-grid{grid-template-columns:1fr}
  .work-grid,.exp-grid,.skills-grid{grid-template-columns:1fr}
  .summary-grid{grid-template-columns:1fr 1fr}
  .toplinks{display:none;position:absolute;top:58px;left:0;right:0;background:var(--paper);flex-direction:column;padding:14px 20px;border-bottom:1px solid var(--line)}
  .toplinks.open{display:flex} .burger{display:block}
  .about-4{grid-template-columns:1fr 1fr}
  .omr{grid-template-columns:1fr}
}
