:root{
  --ink:#0e1230;
  --paper:#f6f3ec;
  --muted:#a8adc4;
  --amber:#ffd08a;
  --coral:#ff6b6b;
  --line:rgba(255,255,255,.09);
  --maxw:960px;
}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{
  margin:0;
  background:var(--ink);
  color:var(--paper);
  font-family:"Source Sans 3","Noto Sans TC",-apple-system,BlinkMacSystemFont,"Segoe UI",system-ui,sans-serif;
  line-height:1.7;
  -webkit-font-smoothing:antialiased;
}
.wrap{max-width:var(--maxw);margin:0 auto;padding:0 24px}
a{color:inherit;text-decoration:none}
h1,h2,h3{line-height:1.2;margin:0}

/* sunrise glow behind hero */
.dawn{
  position:fixed;inset:0;z-index:-1;pointer-events:none;
  background:
    radial-gradient(120% 70% at 50% 118%, rgba(255,107,107,.55) 0%, rgba(255,158,94,.32) 26%, rgba(255,208,138,.14) 44%, rgba(14,18,48,0) 66%),
    linear-gradient(180deg,#0a0d24 0%, #0e1230 55%, #14183a 100%);
}

/* hero */
.hero{padding:120px 0 96px;text-align:center}
.mark{
  font-weight:700;font-size:22px;letter-spacing:.02em;
  color:var(--amber);margin-bottom:56px;
}
.mark span{color:var(--muted);font-weight:400}
.hero h1{
  font-size:clamp(46px,9vw,88px);font-weight:700;letter-spacing:-.02em;
  background:linear-gradient(180deg,#fff 0%,var(--amber) 130%);
  -webkit-background-clip:text;background-clip:text;color:transparent;
}
.lede{max-width:600px;margin:28px auto 0;color:#e7e4dc;font-size:clamp(16px,2.3vw,19px)}
.lede b{color:var(--amber);font-weight:600}
.scroll{
  display:inline-block;margin-top:44px;color:var(--muted);font-size:15px;
  border-bottom:1px solid var(--line);padding-bottom:3px;transition:color .2s
}
.scroll:hover{color:var(--paper)}

/* sections */
section{padding:64px 0}
h2{font-size:clamp(24px,4vw,32px);font-weight:700;margin-bottom:36px}
h2::after{content:"";display:block;width:44px;height:3px;margin-top:14px;
  background:linear-gradient(90deg,var(--coral),var(--amber));border-radius:2px}

/* project grid */
.grid{list-style:none;margin:0;padding:0;display:grid;gap:22px;
  grid-template-columns:repeat(2,1fr)}
.card{
  background:rgba(255,255,255,.035);border:1px solid var(--line);
  border-radius:16px;overflow:hidden;transition:transform .22s ease,border-color .22s ease,background .22s ease
}
.card:hover{transform:translateY(-4px);border-color:rgba(255,208,138,.4);background:rgba(255,255,255,.06)}
.card a{display:block;height:100%}
.thumb{height:158px;display:flex;align-items:flex-end;padding:16px 18px;position:relative;overflow:hidden}
.thumb img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:top center;z-index:0}
.thumb span{font-weight:700;font-size:19px;color:#fff;
  text-shadow:0 1px 14px rgba(0,0,0,.55);position:relative;z-index:2}
.thumb::after{content:"";position:absolute;inset:0;z-index:1;
  background:linear-gradient(180deg,rgba(10,13,36,0) 42%,rgba(10,13,36,.72) 100%)}
.t-respark{background:linear-gradient(135deg,#ff8f6b,#ff5e8a)}
.t-maho{background:linear-gradient(135deg,#6b8bff,#9b6bff)}
.t-kotoba{background:linear-gradient(135deg,#ffb56b,#ff7e6b)}
.t-connex{background:linear-gradient(135deg,#3fb6a8,#3f7fd6)}
.body{padding:18px}
.row{display:flex;align-items:center;gap:10px;margin-bottom:8px}
.body h3{font-size:19px;font-weight:700}
.chip{font-style:normal;font-size:12px;font-weight:600;color:var(--ink);
  background:var(--amber);padding:2px 9px;border-radius:100px;white-space:nowrap}
.body p{margin:0 0 14px;color:var(--muted);font-size:15px}
.go{color:var(--amber);font-size:14px;font-weight:600}

/* about */
.about .bio{max-width:680px;color:#e7e4dc;font-size:17px;margin:0}
.about .bio b{color:var(--amber);font-weight:600}
.about .links{margin-top:22px}
.about .links a{color:var(--amber);font-weight:600;border-bottom:1px solid var(--line);padding-bottom:2px}

/* footer */
footer{padding:40px 24px 56px;color:var(--muted);font-size:14px;
  border-top:1px solid var(--line);margin-top:24px}

@media(max-width:640px){
  .hero{padding:88px 0 64px}
  .mark{margin-bottom:40px}
  .grid{grid-template-columns:1fr}
  section{padding:48px 0}
}
