/* ============================================================
   tqmane — editorial portfolio
   type-driven / warm paper / hairlines / mono details
   light + dark themes via [data-theme]
   ============================================================ */

/* ---------- Reset ---------- */
*,*::before,*::after{margin:0;padding:0;box-sizing:border-box}

/* ---------- Themes ---------- */
:root{
  --sans:  'Satoshi','Noto Sans JP',system-ui,-apple-system,sans-serif;
  --serif: 'Instrument Serif',Georgia,'Times New Roman',serif;
  --mono:  'JetBrains Mono',ui-monospace,'SF Mono',Menlo,monospace;
  --ease:  cubic-bezier(.16,1,.3,1);
  --gutter: clamp(20px,4vw,56px);
  --maxw: 1280px;
}

:root[data-theme="light"]{
  color-scheme:light;
  --paper:   #f4f2ed;
  --paper-2: #eae7e0;
  --ink:     #1a1915;
  --muted:   #78756b;
  --line:    #d9d6cc;
}

:root[data-theme="dark"]{
  color-scheme:dark;
  --paper:   #131311;
  --paper-2: #1c1c19;
  --ink:     #e8e6df;
  --muted:   #8d8a80;
  --line:    #2c2b27;
}

html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}
body{
  font-family:var(--sans);
  background:var(--paper);
  color:var(--ink);
  line-height:1.6;
  font-size:16px;
  overflow-x:hidden;
  -webkit-font-smoothing:antialiased;
  text-rendering:optimizeLegibility;
  transition:background .35s var(--ease),color .35s var(--ease);
}
::selection{background:var(--ink);color:var(--paper)}
img{display:block;max-width:100%;height:auto}
a{color:inherit;text-decoration:none}
button{font:inherit;cursor:pointer;border:none;background:none;color:inherit}
ul{list-style:none}
sup{font-size:.55em;font-weight:400;color:var(--muted)}

:focus-visible{outline:1.5px solid var(--ink);outline-offset:3px}

.mono{
  font-family:var(--mono);
  font-weight:400;
  letter-spacing:0;
}

/* ---------- Header ---------- */
.site-head{
  position:fixed;top:0;left:0;right:0;z-index:100;
  display:flex;align-items:center;gap:clamp(14px,2.5vw,32px);
  padding:0 var(--gutter);
  height:58px;
  background:color-mix(in srgb,var(--paper) 88%,transparent);
  backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);
  border-bottom:1px solid var(--line);
  transition:background .35s var(--ease),border-color .35s var(--ease);
}
.wordmark{
  font-weight:700;font-size:1rem;letter-spacing:-.02em;
}
.head-clock{
  font-size:.7rem;color:var(--muted);
  font-variant-numeric:tabular-nums;
}
.clock-city{
  text-transform:uppercase;letter-spacing:.14em;
  margin-right:.4em;
}
.head-nav{
  margin-left:auto;
  display:flex;gap:clamp(14px,2.5vw,28px);
}
.head-nav a{
  font-size:.78rem;color:var(--muted);
  transition:color .25s var(--ease);
}
.head-nav a:hover{color:var(--ink)}
.head-nav a::before{content:'./'}

.theme-toggle{
  font-size:.78rem;color:var(--muted);
  padding:4px 2px;
  transition:color .2s;
  font-variant-numeric:tabular-nums;
}
.theme-toggle:hover{color:var(--ink)}

.head-lang{display:flex;gap:2px}
.lang-item{
  font-size:.68rem;letter-spacing:.04em;
  color:var(--muted);
  padding:4px 7px;border-radius:3px;
  transition:color .2s,background .2s;
}
.lang-item:hover{color:var(--ink)}
.lang-item.active{color:var(--paper);background:var(--ink)}

/* ---------- Layout ---------- */
main{
  max-width:var(--maxw);
  margin:0 auto;
  padding:0 var(--gutter);
}
section{margin-bottom:clamp(96px,14vh,180px)}

.sec-head{
  border-bottom:1px solid var(--line);
  padding-bottom:12px;
  margin-bottom:clamp(32px,5vw,56px);
}
.sec-head h2{
  font-size:.72rem;font-weight:400;
  text-transform:uppercase;letter-spacing:.16em;
  color:var(--ink);
}
.sec-no{color:var(--muted)}
.sec-sep{color:var(--muted);margin:0 .6em}

/* ---------- Hero ---------- */
.hero{
  padding-top:clamp(120px,18vh,200px);
  margin-bottom:clamp(80px,12vh,150px);
}
.hero-top{
  display:flex;align-items:flex-start;justify-content:space-between;
  gap:32px;
  margin-bottom:clamp(40px,7vh,88px);
}
.hero-id{display:flex;align-items:center;gap:12px}
.hero-avatar{
  width:40px;height:40px;border-radius:50%;object-fit:cover;
}
.hero-name{font-size:.85rem;font-weight:700}
.hero-intro{
  font-size:.9rem;color:var(--muted);
  max-width:300px;text-align:right;
  line-height:1.7;
}
.hero-kicker{
  display:block;
  font-size:.75rem;color:var(--muted);
  margin-bottom:14px;
}
.hero-title{
  font-weight:500;
  font-size:clamp(3rem,10.5vw,8.5rem);
  line-height:.98;
  letter-spacing:-.04em;
}
.hero-l1{display:block}
.hero-l2{display:block;margin-left:clamp(24px,8vw,120px)}
.hero-l2 em{
  font-family:var(--serif);
  font-style:italic;font-weight:400;
  letter-spacing:-.02em;
}
.hero-foot{
  display:flex;justify-content:space-between;align-items:baseline;
  border-top:1px solid var(--line);
  margin-top:clamp(40px,7vh,80px);
  padding-top:14px;
  font-size:.72rem;color:var(--muted);
  text-transform:uppercase;letter-spacing:.1em;
}

/* ---------- Works ---------- */
.work-list{
  display:grid;
  grid-template-columns:repeat(2,1fr);
  column-gap:clamp(20px,3vw,40px);
  row-gap:clamp(56px,8vw,96px);
}
.work--full{grid-column:1/-1}
.work--half{grid-column:span 1}

.work a{display:block}

.work-fig{
  overflow:hidden;
  border-radius:4px;
  border:1px solid var(--line);
  background:var(--paper-2);
  aspect-ratio:16/9;
  transition:border-color .35s var(--ease),background .35s var(--ease);
}
.work--half .work-fig{aspect-ratio:4/3}
.work-fig img{
  width:100%;height:100%;
  object-fit:cover;object-position:top center;
  transition:transform 1s var(--ease);
}
.work a:hover .work-fig img{transform:scale(1.025)}

.work-cap{
  display:flex;align-items:baseline;gap:14px;
  padding-top:16px;
}
.work-no{
  font-size:.7rem;color:var(--muted);
  font-variant-numeric:tabular-nums;
}
.work-title{
  font-size:clamp(1.15rem,2vw,1.5rem);
  font-weight:500;letter-spacing:-.02em;
  background-image:linear-gradient(var(--ink),var(--ink));
  background-repeat:no-repeat;
  background-size:0% 1px;
  background-position:0 100%;
  transition:background-size .45s var(--ease);
}
.work a:hover .work-title{background-size:100% 1px}
.work-tags{
  margin-left:auto;
  font-size:.68rem;color:var(--muted);
  text-transform:uppercase;letter-spacing:.1em;
  white-space:nowrap;
}
.work-arrow{
  width:15px;height:15px;flex-shrink:0;
  align-self:center;
  color:var(--muted);
  transition:transform .35s var(--ease),color .35s;
}
.work a:hover .work-arrow{
  transform:translate(2px,-2px);
  color:var(--ink);
}
.work-desc{
  font-size:.88rem;color:var(--muted);
  max-width:56ch;line-height:1.7;
  margin-top:6px;
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;
}

/* ---------- About ---------- */
.about-body{
  display:grid;
  grid-template-columns:minmax(0,7fr) minmax(0,5fr);
  gap:clamp(32px,6vw,88px);
  align-items:start;
}
.about-text{
  font-size:clamp(1.25rem,2.3vw,1.7rem);
  font-weight:500;
  line-height:1.55;
  letter-spacing:-.015em;
  max-width:24em;
}
.meta{border-top:1px solid var(--line)}
.meta-row{
  display:flex;justify-content:space-between;align-items:baseline;
  gap:24px;
  padding:14px 0;
  border-bottom:1px solid var(--line);
}
.meta-row dt{
  font-size:.68rem;color:var(--muted);
  text-transform:uppercase;letter-spacing:.12em;
}
.meta-row dd{
  font-size:.92rem;font-weight:500;text-align:right;
}

/* ---------- Contact ---------- */
.contact-list{border-top:1px solid var(--line)}
.contact-row{
  display:flex;align-items:baseline;gap:18px;
  padding:clamp(18px,3vw,28px) 0;
  border-bottom:1px solid var(--line);
  font-size:clamp(1.3rem,3vw,2rem);
  font-weight:500;letter-spacing:-.02em;
  transition:padding-left .4s var(--ease);
}
.contact-row:hover{padding-left:14px}
.contact-handle{
  margin-left:auto;
  font-size:.75rem;color:var(--muted);
}
.contact-row .work-arrow{width:18px;height:18px}
.contact-row:hover .work-arrow{transform:translate(2px,-2px);color:var(--ink)}

/* ---------- Footer ---------- */
.footer{
  border-top:1px solid var(--line);
  overflow:hidden;
}
.footer-fine{
  max-width:var(--maxw);margin:0 auto;
  padding:20px var(--gutter) 0;
  display:flex;justify-content:space-between;align-items:baseline;
  gap:16px;flex-wrap:wrap;
  font-size:.68rem;color:var(--muted);
}
.footer-clock{font-variant-numeric:tabular-nums}
.footer-giant{
  max-width:var(--maxw);margin:0 auto;
  padding:0 var(--gutter);
  font-weight:700;
  font-size:clamp(88px,19.5vw,262px);
  line-height:.76;
  letter-spacing:-.05em;
  transform:translateY(.1em);
  user-select:none;
}

/* ---------- Reveal ---------- */
.reveal{
  opacity:0;transform:translateY(20px);
  transition:opacity .9s var(--ease),transform .9s var(--ease);
}
.reveal.in{opacity:1;transform:translateY(0)}
.d1{transition-delay:.08s}
.d2{transition-delay:.16s}
.d3{transition-delay:.24s}

@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation:none!important;transition:none!important}
  .reveal{opacity:1;transform:none}
  html{scroll-behavior:auto}
}

/* ---------- Responsive ---------- */
@media(max-width:900px){
  .head-clock{display:none}
}

@media(max-width:640px){
  .head-nav{margin-left:auto;gap:12px}
  .head-nav a{font-size:.72rem}
  .head-lang .lang-item{padding:4px 5px}

  .hero{padding-top:110px}
  .hero-top{flex-direction:column;gap:20px}
  .hero-intro{text-align:left;max-width:34ch}
  .hero-title{font-size:clamp(2.6rem,13.5vw,4rem)}
  .hero-l2{margin-left:10vw}

  .work-list{grid-template-columns:1fr}
  .work--half{grid-column:1/-1}
  .work--half .work-fig{aspect-ratio:16/10}
  .work-cap{flex-wrap:wrap;gap:10px}
  .work-tags{margin-left:auto}

  .about-body{grid-template-columns:1fr}

  .footer-fine{flex-direction:column;gap:6px}
}
