/* ===== A COAT LAB. 共用樣式 ===== */
:root{
  --ink:#5A5654; --ink-soft:#6E6A65; --surface:#F7F5F5; --paper:#DBD7D0;
  --stone:#C8C5BE; --accent:#7A8FA6; --accent-deep:#5E7488; --oxide:#A15A4E;
  --mute:#918E89; --black:#1A1A1A; --line:#DBD7D0;
  --lat:'Outfit',sans-serif; --logo:'Archivo Expanded',sans-serif;
  --mono:'IBM Plex Mono',monospace; --cjk:'Noto Sans TC',sans-serif;
  --ease:cubic-bezier(.22,.61,.36,1);
}
*{margin:0;padding:0;box-sizing:border-box}
html{scroll-behavior:smooth}
body{font-family:var(--lat),var(--cjk);color:var(--ink);background:var(--surface);
  -webkit-font-smoothing:antialiased;overflow-x:hidden;line-height:1.6}
.wrap{max-width:1320px;margin:0 auto;padding:0 48px}
img{display:block;max-width:100%}
.cjk{font-family:var(--cjk)}
.mono{font-family:var(--mono);letter-spacing:.04em}
a{color:inherit}

/* reveal */
[data-reveal]{opacity:0;transform:translateY(34px);
  transition:opacity 1.1s var(--ease),transform 1.1s var(--ease)}
[data-reveal].in{opacity:1;transform:none}
[data-reveal].d1{transition-delay:.12s}
[data-reveal].d2{transition-delay:.24s}
[data-reveal].d3{transition-delay:.36s}

/* nav */
nav{position:fixed;top:0;left:0;right:0;z-index:100;padding:22px 0;
  transition:background .5s var(--ease),padding .5s var(--ease),box-shadow .5s var(--ease)}
nav.solid{background:rgba(247,245,245,.92);backdrop-filter:blur(12px);padding:15px 0;
  box-shadow:0 1px 0 rgba(90,86,84,.08)}
nav .wrap{display:flex;align-items:center;justify-content:space-between}
.brand{font-family:var(--logo);font-weight:700;font-size:19px;letter-spacing:.14em;
  color:#fff;transition:color .5s var(--ease);text-decoration:none}
nav.solid .brand{color:var(--ink)}
nav.light .brand{color:var(--ink)}
.navlinks{display:flex;gap:38px;align-items:center}
.navlinks a{font-size:13.5px;letter-spacing:.05em;text-decoration:none;color:rgba(255,255,255,.9);
  transition:color .5s var(--ease),opacity .3s}
nav.solid .navlinks a,nav.light .navlinks a{color:var(--ink-soft)}
.navlinks a:hover{opacity:.6}
.navcta{border:1px solid rgba(255,255,255,.5);padding:9px 20px;border-radius:2px;
  font-size:13px;letter-spacing:.05em;transition:all .4s var(--ease)}
nav.solid .navcta,nav.light .navcta{border-color:var(--accent);color:var(--accent-deep)}
.navcta:hover{background:var(--accent);border-color:var(--accent)!important;color:#fff!important;opacity:1!important}
/* nav 英中 hover 切換 */
.navlinks a.swap{display:inline-grid;place-items:center;line-height:1}
.navlinks a.swap>span{grid-area:1/1;transition:opacity .35s var(--ease),transform .35s var(--ease)}
.navlinks a.swap .zh{opacity:0;transform:translateY(5px);font-family:var(--cjk);letter-spacing:.08em}
.navlinks a.swap:hover{opacity:1}
.navlinks a.swap:hover .en{opacity:0;transform:translateY(-5px)}
.navlinks a.swap:hover .zh{opacity:1;transform:translateY(0)}
@media(max-width:820px){.navlinks{display:none}}
/* 柔霧跟隨球 */
.cursor-mist{position:fixed;top:0;left:0;width:42px;height:42px;border-radius:50%;
  pointer-events:none;z-index:9999;opacity:0;transition:opacity .5s ease,width .35s var(--ease),height .35s var(--ease);
  background:radial-gradient(circle,rgba(122,143,166,.6),rgba(122,143,166,0) 68%);
  filter:blur(6px);will-change:transform}
.cursor-mist.big{width:76px;height:76px;background:radial-gradient(circle,rgba(161,90,78,.5),rgba(161,90,78,0) 68%)}
@media(max-width:820px){.cursor-mist{display:none}}
@media(hover:none){.cursor-mist{display:none}}

/* page hero (sub-pages) */
.phero{position:relative;height:66vh;min-height:460px;overflow:hidden;display:flex;align-items:flex-end}
.phero-img{position:absolute;inset:0;background-size:cover;background-position:center;
  animation:kenburns 18s ease-out forwards;will-change:transform}
@keyframes kenburns{from{transform:scale(1.1)}to{transform:scale(1)}}
.phero::after{content:'';position:absolute;inset:0;
  background:linear-gradient(180deg,rgba(26,26,26,.34) 0%,rgba(26,26,26,.08) 40%,rgba(26,26,26,.6) 100%)}
.phero .wrap{position:relative;z-index:2;padding-bottom:7vh;width:100%}
.phero .kicker{color:rgba(255,255,255,.82);font-size:12px;letter-spacing:.26em;text-transform:uppercase;
  margin-bottom:20px;opacity:0;transform:translateY(18px);animation:up 1.1s var(--ease) .3s forwards}
.phero h1{color:#fff;font-weight:var(--acl-heading-weight,200);font-size:clamp(34px,5.4vw,var(--acl-phero-size,72px));line-height:1.05;letter-spacing:-.01em;
  width:max-content;max-width:92vw;
  opacity:0;transform:translateY(26px);animation:up 1.2s var(--ease) .5s forwards}
.phero h1 em{font-style:var(--acl-heading-style,italic);font-weight:var(--acl-heading-weight,200)}
.phero .zh{font-family:var(--cjk);font-size:15px;color:rgba(255,255,255,.55);margin-left:14px;font-weight:300}
.phero .sub{color:rgba(255,255,255,.9);font-size:var(--acl-sub-size,16px);margin-top:22px;max-width:60ch;font-weight:300;word-break:keep-all;
  opacity:0;transform:translateY(20px);animation:up 1.1s var(--ease) .8s forwards}
@keyframes up{to{opacity:1;transform:none}}

/* sections */
section{padding:120px 0}
.eyebrow{font-family:var(--mono);font-size:12px;letter-spacing:.16em;color:var(--accent-deep);
  text-transform:uppercase;margin-bottom:24px;display:flex;align-items:center;gap:12px}
.eyebrow::before{content:'';width:26px;height:1px;background:var(--accent)}
h2{font-weight:var(--acl-heading-weight,200);font-size:clamp(28px,4vw,var(--acl-h2-size,52px));line-height:1.12;letter-spacing:-.01em;color:var(--ink)}
h2 em{font-style:var(--acl-heading-style,italic)}
.lead{font-size:var(--acl-lead-size,18px);font-weight:300;color:var(--ink-soft);max-width:60ch;margin-top:24px;line-height:1.7;word-break:keep-all}

/* buttons */
.btn{display:inline-flex;align-items:center;gap:10px;background:var(--ink);color:var(--surface);
  padding:16px 30px;border-radius:2px;text-decoration:none;font-size:14px;letter-spacing:.04em;
  transition:background .4s var(--ease),gap .4s var(--ease)}
.btn::after{content:'→';transition:transform .4s}
.btn:hover{background:var(--accent-deep);gap:15px}
.btn-oxide{background:var(--oxide)}
.btn-oxide:hover{background:#8f4d43}
.btn-ghost{background:transparent;color:var(--ink);border:1px solid var(--line)}
.btn-ghost:hover{background:var(--paper);border-color:var(--paper)}
.btn-ghost::after{content:'→'}

/* footer */
footer{background:var(--black);color:rgba(255,255,255,.72);padding:90px 0 40px}
.fgrid{display:grid;grid-template-columns:2fr 1fr 1fr;gap:40px;padding-bottom:60px;
  border-bottom:1px solid rgba(255,255,255,.12)}
footer .brand{color:#fff;font-size:22px;margin-bottom:20px;display:inline-block}
footer .tagline{font-size:var(--acl-tagline-size,14px);font-weight:300;max-width:40ch;line-height:1.7;word-break:keep-all}
.fcol h4{font-size:12px;letter-spacing:.12em;text-transform:uppercase;color:rgba(255,255,255,.5);
  margin-bottom:18px;font-weight:500}
.fcol a{display:block;color:rgba(255,255,255,.72);text-decoration:none;font-size:14px;
  margin-bottom:11px;font-weight:300;transition:color .3s}
.fcol a:hover{color:#fff}
.fbot{display:flex;justify-content:space-between;flex-wrap:wrap;gap:14px;padding-top:32px;
  font-size:12px;color:rgba(255,255,255,.45);font-family:var(--mono)}
@media(max-width:820px){.fgrid{grid-template-columns:1fr;gap:44px}}

/* prototype note */
.note{position:fixed;bottom:14px;right:14px;z-index:200;background:rgba(26,26,26,.82);color:#fff;
  font-size:11px;padding:8px 13px;border-radius:4px;font-family:var(--mono);max-width:240px;line-height:1.5;
  backdrop-filter:blur(6px)}
.note b{color:var(--accent)}

/* tags */
.tag{display:inline-block;font-family:var(--mono);font-size:11px;letter-spacing:.08em;
  padding:5px 11px;border-radius:2px}
.tag-b{background:var(--accent);color:#fff}
.tag-bc{background:var(--oxide);color:#fff}

/* ===== 真 LOGO ===== */
.brand{display:inline-flex;align-items:center;gap:11px}
.brandmark{height:29px;width:auto;filter:brightness(0) invert(1);transition:filter .5s var(--ease)}
nav.solid .brandmark{filter:brightness(0)}
nav.light .brandmark{filter:brightness(0)}
footer .brand{display:inline-block}
footer .brandfull{height:58px;width:auto;filter:brightness(0) invert(1)}

/* ===== 侘寂灰泥質地（CSS生成，無外部圖）===== */
.plaster::before{content:'';position:absolute;inset:0;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='180' height='180'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
  opacity:.14;mix-blend-mode:overlay;pointer-events:none}
.t-oxide{background:radial-gradient(130% 100% at 18% 12%,#b56d5f,transparent 58%),radial-gradient(120% 90% at 88% 85%,#834840,transparent 55%),linear-gradient(140deg,#9c5449,#a85d51 48%,#8d4c42)}
.t-smoke{background:radial-gradient(130% 100% at 25% 15%,#4a4643,transparent 60%),radial-gradient(120% 90% at 85% 88%,#201d1c,transparent 55%),linear-gradient(140deg,#33302e,#3c3835 50%,#242120)}
.t-warm{background:radial-gradient(130% 100% at 20% 15%,#d8cfc4,transparent 60%),radial-gradient(120% 90% at 85% 85%,#b3a898,transparent 55%),linear-gradient(140deg,#c8bfb2,#d0c7ba 50%,#bcb2a3)}
.t-stone{background:radial-gradient(130% 100% at 20% 15%,#a7a29b,transparent 60%),radial-gradient(120% 90% at 85% 85%,#6f6b66,transparent 55%),linear-gradient(140deg,#8b8781,#96918b 50%,#7a766f)}
.t-blue{background:radial-gradient(130% 100% at 20% 15%,#92a4b6,transparent 60%),radial-gradient(120% 90% at 85% 85%,#56697d,transparent 55%),linear-gradient(140deg,#6f8398,#7a8fa6 50%,#5e7488)}
.fill{width:100%;height:100%;position:relative}
.photo{background-size:cover;background-position:center}
