/* MSGG SQUAD — 共用樣式 v1（紫主題） */
:root{
  --ink:#0d0c11;--ink-2:#15131c;--ink-3:#1b1826;--line:#282336;--line-2:#3a3454;
  --paper:#f0e9dc;--dim:#bdb3a0;--faint:#98907e;
  --acc:#b3a4d4;--acc-rgb:179,164,212;--acc-hi:#ece7f8;
  --frame:#46405e;--wall:#2e2940;--wall-d:#141220;--mull:#363150;--sil:#0a0910;
  --serif:'Noto Serif TC',serif;--sans:'Noto Sans TC',sans-serif;--mono:'IBM Plex Mono',monospace;
}
*{margin:0;padding:0;box-sizing:border-box}
html{scroll-behavior:smooth}
body{background:var(--ink);color:var(--paper);font-family:var(--sans);font-weight:350;line-height:1.75;-webkit-font-smoothing:antialiased;min-height:100vh;overflow-x:hidden}
a{color:inherit;text-decoration:none}
button{font-family:var(--sans)}
::selection{background:var(--acc);color:var(--ink)}

/* ── 三層景深：後景流動火焰 / 中景內容 / 前景燼點+顆粒 ── */
.bg1,.bg2{position:fixed;inset:-16%;pointer-events:none;background:url('bg_flame.webp') center/cover no-repeat;will-change:transform;z-index:-3}
.bg1{filter:blur(56px) saturate(.7) brightness(.34);opacity:.5;animation:flowA 26s ease-in-out infinite alternate}
.bg2{z-index:-2;filter:blur(80px) saturate(.8) brightness(.42) hue-rotate(12deg);opacity:.26;mix-blend-mode:screen;animation:flowB 38s ease-in-out infinite alternate}
@keyframes flowA{from{transform:scale(1.06) translate(-2.2%,-1.6%) rotate(-1.2deg)}to{transform:scale(1.14) translate(2.2%,1.8%) rotate(1.2deg)}}
@keyframes flowB{from{transform:scale(1.18) translate(2.6%,1.2%) rotate(1.6deg)}to{transform:scale(1.08) translate(-2.6%,-2%) rotate(-1.4deg)}}
.vig{position:fixed;inset:0;z-index:-1;pointer-events:none;background:radial-gradient(ellipse 66% 76% at 50% 40%,rgba(13,12,17,.66),rgba(13,12,17,.3) 62%,rgba(13,12,17,.08)),linear-gradient(rgba(13,12,17,.3),rgba(13,12,17,.6))}
.dust{position:fixed;inset:0;z-index:6;pointer-events:none;overflow:hidden}
.dust i{position:absolute;bottom:-3vh;width:3px;height:3px;border-radius:50%;background:rgba(var(--acc-rgb),.7);box-shadow:0 0 6px rgba(var(--acc-rgb),.55);animation:rise linear infinite;opacity:0}
.dust i:nth-child(1){left:12%;animation-duration:19s}
.dust i:nth-child(2){left:26%;animation-duration:24s;animation-delay:6s;transform:scale(.55)}
.dust i:nth-child(3){left:41%;animation-duration:21s;animation-delay:11s;transform:scale(.8)}
.dust i:nth-child(4){left:58%;animation-duration:26s;animation-delay:3s;transform:scale(.5)}
.dust i:nth-child(5){left:71%;animation-duration:18s;animation-delay:9s;transform:scale(.9)}
.dust i:nth-child(6){left:86%;animation-duration:23s;animation-delay:14s;transform:scale(.6)}
@keyframes rise{0%{transform:translateY(0);opacity:0}8%{opacity:.85}80%{opacity:.45}100%{transform:translateY(-108vh) translateX(3vw);opacity:0}}
.grain{position:fixed;inset:0;pointer-events:none;z-index:7;opacity:.05;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='2'/%3E%3C/filter%3E%3Crect width='160' height='160' filter='url(%23n)' opacity='.6'/%3E%3C/svg%3E")}
@media (prefers-reduced-motion:reduce){.bg1,.bg2,.dust i{animation:none!important}}

/* ── LOGO：亮燈小窗（REF 定稿） ── */
.logo-win{width:34px;height:27px;border:1px solid var(--frame);border-radius:4px 4px 2px 2px;position:relative;overflow:hidden;background:linear-gradient(165deg,var(--wall),var(--wall-d) 75%);box-shadow:0 0 14px rgba(var(--acc-rgb),.22),inset 0 0 8px rgba(var(--acc-rgb),.14);flex:0 0 auto}
.logo-win::before{content:'';position:absolute;inset:0;background:radial-gradient(ellipse 95% 80% at 50% 80%,rgba(var(--acc-rgb),.42),transparent 65%)}
.logo-win::after{content:'';position:absolute;inset:0;background:linear-gradient(var(--mull),var(--mull)) 50% 0/1px 100% no-repeat,linear-gradient(var(--mull),var(--mull)) 0 44%/100% 1px no-repeat}
.logo-win .s{position:absolute;width:24%;height:15%;left:20%;bottom:24%;background:linear-gradient(180deg,var(--acc-hi),var(--acc));border-radius:1px;box-shadow:0 0 5px rgba(var(--acc-rgb),.8)}
.logo-win .h{position:absolute;width:13%;aspect-ratio:1;border-radius:50%;background:var(--sil);right:26%;bottom:37%}
.logo-win .b{position:absolute;width:22%;height:15%;border-radius:4px 4px 0 0;background:var(--sil);right:21%;bottom:21%}

/* ── 導覽列 ── */
nav.sq{position:sticky;top:0;z-index:20;display:flex;align-items:center;gap:14px;padding:16px 44px;border-bottom:1px solid var(--line);background:rgba(13,12,17,.82);backdrop-filter:blur(10px)}
nav.sq .brand{display:flex;align-items:center;gap:12px;font-family:var(--mono);font-weight:500;font-size:15px;letter-spacing:.24em;white-space:nowrap}
nav.sq .links{display:flex;gap:26px;margin-left:34px;font-size:13px;letter-spacing:.1em;color:var(--dim)}
nav.sq .links a{white-space:nowrap}
nav.sq .links a:hover,nav.sq .links a.on{color:var(--paper)}
nav.sq .links a.on{color:var(--acc)}
nav.sq .me{margin-left:auto;display:flex;align-items:center;gap:10px;font-size:12.5px;color:var(--dim);white-space:nowrap}
nav.sq .me .dot{width:7px;height:7px;border-radius:50%;background:var(--acc);box-shadow:0 0 8px var(--acc)}
nav.sq .me .out{font-family:var(--mono);font-size:10px;letter-spacing:.14em;color:var(--faint);border:1px solid var(--line);padding:5px 12px;border-radius:999px;cursor:pointer}
nav.sq .me .out:hover{color:var(--paper);border-color:var(--line-2)}

/* ── 版面 ── */
.page{max-width:1280px;margin:0 auto;padding:0 44px;position:relative;z-index:2}
.sec-label{display:flex;justify-content:space-between;align-items:baseline;border-bottom:1px solid var(--line);padding-bottom:12px;margin:56px 0 26px}
.sec-label h2{font-family:var(--serif);font-weight:600;font-size:21px;letter-spacing:.14em}
.sec-label span{font-family:var(--mono);font-size:10.5px;letter-spacing:.18em;color:var(--faint)}

/* ── 房間卡（巷弄） ── */
.rooms{display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:20px}
.room{position:relative;border:1px solid var(--line);border-radius:10px 10px 4px 4px;background:rgba(21,19,28,.82);backdrop-filter:blur(6px);overflow:hidden;transition:transform .35s cubic-bezier(.2,.8,.2,1),border-color .35s;cursor:pointer;display:block}
.room:hover{transform:translateY(-6px);border-color:var(--line-2)}
.room .win{height:140px;margin:13px 13px 0;border-radius:6px 6px 2px 2px;border:1px solid var(--frame);position:relative;overflow:hidden;background:linear-gradient(165deg,var(--wall),var(--wall-d) 78%)}
.room .win::after{content:'';position:absolute;inset:0;z-index:3;background:linear-gradient(var(--mull),var(--mull)) 50% 0/2px 100% no-repeat,linear-gradient(var(--mull),var(--mull)) 0 42%/100% 2px no-repeat}
.room.lit .win{box-shadow:0 0 32px rgba(var(--acc-rgb),.14),inset 0 0 24px rgba(var(--acc-rgb),.1)}
.room.lit .glow{position:absolute;inset:0;background:radial-gradient(ellipse 90% 75% at 50% 78%,rgba(var(--acc-rgb),.34),rgba(var(--acc-rgb),.05) 62%,transparent)}
.room.dark .win{opacity:.5}
.fig{position:absolute;inset:0;z-index:2}
.fig .desk{position:absolute;left:12%;right:12%;bottom:18%;height:3px;background:var(--sil);border-radius:2px}
.fig .screen{position:absolute;width:26%;height:17%;bottom:21%;background:linear-gradient(180deg,var(--acc-hi),var(--acc));border-radius:2px;box-shadow:0 0 16px rgba(var(--acc-rgb),.55)}
.fig .head{position:absolute;width:13%;aspect-ratio:1;border-radius:50%;background:var(--sil);bottom:34%}
.fig .body{position:absolute;width:22%;height:16%;border-radius:10px 10px 0 0;background:var(--sil);bottom:18%}
.room.dark .fig .screen{background:#221e30;box-shadow:none}
.p1 .screen{left:16%}.p1 .head{right:24%}.p1 .body{right:20%}
.p2 .screen{right:16%}.p2 .head{left:24%}.p2 .body{left:20%}
.p3 .screen{left:38%}.p3 .head{right:14%}.p3 .body{right:10%}
.room-meta{padding:13px 16px 15px}
.room-name{font-family:var(--serif);font-weight:600;font-size:16px;letter-spacing:.08em;display:flex;align-items:center;gap:8px}
.room.lit .room-name::after{content:'';width:6px;height:6px;border-radius:50%;background:var(--acc);box-shadow:0 0 7px var(--acc)}
.room-now{margin-top:4px;font-size:12.5px;color:var(--dim);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.room-tag{margin-top:9px;font-family:var(--mono);font-size:10.5px;letter-spacing:.14em;color:var(--faint)}

/* ── 分類 chips ── */
.cats{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:28px}
.cat{font-size:13px;letter-spacing:.1em;padding:7px 18px;border:1px solid var(--line);border-radius:999px;color:var(--dim);cursor:pointer;transition:.25s;background:transparent}
.cat:hover{color:var(--paper);border-color:var(--line-2)}
.cat.on{background:var(--acc);border-color:var(--acc);color:var(--ink);font-weight:500}
.cat.add{border-style:dashed;color:var(--faint);font-family:var(--mono);font-size:11px}

/* ── 貼文卡 ── */
.posts{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:22px}
.post{border:1px solid var(--line);border-radius:8px;background:rgba(21,19,28,.82);backdrop-filter:blur(6px);overflow:hidden;transition:transform .35s cubic-bezier(.2,.8,.2,1),border-color .35s;cursor:pointer;display:block}
.post:hover{transform:translateY(-4px);border-color:var(--line-2)}
.cover{height:176px;position:relative;background:radial-gradient(ellipse 80% 90% at 70% 25%,#4b4368,#1c1828 60%,#121019)}
.cover .dur{position:absolute;right:12px;bottom:10px;font-family:var(--mono);font-size:10.5px;letter-spacing:.1em;background:rgba(0,0,0,.55);padding:3px 8px;border-radius:3px;color:var(--dim)}
.cover .play{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:46px;height:46px;border:1px solid rgba(240,233,220,.4);border-radius:50%;display:grid;place-items:center;background:rgba(0,0,0,.3);transition:.25s}
.cover .play::after{content:'';border-style:solid;border-width:7px 0 7px 11px;border-color:transparent transparent transparent var(--paper);margin-left:3px}
.post:hover .play{border-color:var(--acc);box-shadow:0 0 18px rgba(var(--acc-rgb),.3)}
.post-body{padding:17px 19px 15px}
.post-cat{font-family:var(--mono);font-size:10px;letter-spacing:.22em;color:var(--acc)}
.post-title{font-family:var(--serif);font-weight:600;font-size:16.5px;letter-spacing:.05em;margin-top:7px;line-height:1.5;color:var(--paper)}
.post-meta{display:flex;justify-content:space-between;margin-top:11px;font-size:12px;color:var(--faint)}
.post-tools{margin-top:11px;display:flex;gap:6px;flex-wrap:wrap}
.tool{font-family:var(--mono);font-size:10px;letter-spacing:.06em;padding:3px 8px;border:1px solid var(--line);border-radius:3px;color:var(--dim)}
.auto-note{margin-top:13px;padding-top:11px;border-top:1px dashed var(--line);font-size:11.5px;color:var(--faint);display:flex;align-items:center;gap:7px}
.auto-note i{font-style:normal;color:var(--acc);font-family:var(--mono);font-size:10px}

/* ── 按鈕/表單 ── */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:11px 26px;background:var(--acc);border:0;border-radius:8px;color:var(--ink);font-weight:500;font-size:14px;letter-spacing:.1em;cursor:pointer;transition:.25s;white-space:nowrap;flex:0 0 auto}
.btn:hover{box-shadow:0 6px 24px rgba(var(--acc-rgb),.3);transform:translateY(-1px)}
.btn.ghost{background:transparent;border:1px solid var(--line-2);color:var(--dim)}
.btn.ghost:hover{color:var(--paper);box-shadow:none}
.btn.danger{background:transparent;border:1px solid #6e3a3a;color:#c98484}
input.sq,textarea.sq{background:var(--ink);border:1px solid var(--line);border-radius:6px;padding:10px 14px;color:var(--paper);font-family:var(--sans);font-size:13px;outline:none;width:100%}
input.sq:focus,textarea.sq:focus{border-color:var(--acc)}

footer.sq{margin-top:96px;border-top:1px solid var(--line);padding:28px 44px;display:flex;justify-content:space-between;font-family:var(--mono);font-size:10px;letter-spacing:.2em;color:var(--faint);position:relative;z-index:2}

@media (max-width:900px){
  nav.sq{padding:14px 20px}
  nav.sq .links{margin-left:12px;gap:16px}
}
/* 窄螢幕：選單保持一行不斷行，縮小字並收起品牌文字 */
@media (max-width:640px){
  nav.sq{gap:8px}
  nav.sq .brand{font-size:0;gap:0}
  nav.sq .links{margin-left:2px;gap:12px;font-size:12px;letter-spacing:.06em}
  nav.sq .me{gap:8px;font-size:12px}
  nav.sq .me .out{padding:4px 10px}
}
@media (max-width:900px){
  .page{padding:0 20px}
  footer.sq{padding:24px 20px}
  .rooms{grid-template-columns:repeat(2,minmax(0,1fr))}
  .posts{grid-template-columns:1fr}
  .room-now{white-space:normal}
}
