/* ============================================================
   Lounge Meetup — original visual identity: "The Invitation"
   Espresso noir ground · cream invitation stock · burgundy & brass
   Signature: Guest Pass cards (perforated stub + gold-foil seal),
   Resonance Index rings, Timeline-of-the-Day ribbons.
   ============================================================ */
:root{
  --ground:#161009; --ground2:#1e150c; --panel:#221910; --panel2:#2a1f14;
  --hair:rgba(216,178,106,.22); --hair-soft:rgba(216,178,106,.12);
  --cream:#f4ecdc; --cream2:#efe3cb; --ink:#2b2118; --ink-soft:#6f6151;
  --paper-line:rgba(43,33,24,.14);
  --brass:#c9a24b; --brass-hi:#eed188; --brass-lo:#8f6b23;
  --wine:#8e3b46; --wine-deep:#5f2731; --sage:#8fa382;
  --tx:#f0e9da; --tx-dim:#c9bda6; --tx-mute:#978a76;
  --serif:'Noto Serif TC','Cormorant Garamond',serif;
  --sans:'Noto Sans TC',system-ui,sans-serif;
  --r-lg:18px; --r-md:12px;
  --shadow-pass:0 1px 2px rgba(0,0,0,.35),0 14px 34px -14px rgba(0,0,0,.65);
  --shadow-lift:0 2px 4px rgba(0,0,0,.4),0 24px 48px -18px rgba(0,0,0,.75);
}
*{box-sizing:border-box}
html{scroll-behavior:smooth;overflow-x:clip}
body{overflow-x:clip}
body{margin:0;background:
  radial-gradient(1100px 520px at 85% -10%,rgba(201,162,75,.13),transparent 60%),
  radial-gradient(900px 600px at -10% 30%,rgba(142,59,70,.10),transparent 55%),
  linear-gradient(180deg,var(--ground2),var(--ground) 340px);
  color:var(--tx);font-family:var(--sans);font-weight:300;line-height:1.75;letter-spacing:.01em;-webkit-font-smoothing:antialiased}
.wrap{max-width:1120px;margin:0 auto;padding:0 24px}
a{color:var(--brass-hi);text-decoration:none}
a:hover{text-decoration:underline;text-underline-offset:3px}
h1,h2,h3{font-family:var(--serif);font-weight:700;line-height:1.3;letter-spacing:.04em;color:var(--cream);text-align:left}
h1{font-size:clamp(1.7rem,4.2vw,2.6rem)}
h2{font-size:clamp(1.3rem,3vw,1.7rem);margin:2.2em 0 .7em}
h2::after{content:"";display:block;width:56px;height:1px;margin-top:12px;background:linear-gradient(90deg,var(--brass),transparent)}
p{text-align:left}
small{color:var(--tx-mute)}
/* ---------- top bar ---------- */
.topbar{position:sticky;top:0;z-index:50;background:rgba(22,16,9,.88);backdrop-filter:blur(14px);border-bottom:1px solid var(--hair-soft)}
.topbar-in{display:flex;align-items:center;gap:28px;min-height:72px}
.brand{display:flex;align-items:center;gap:13px;color:var(--cream)}
.brand:hover{text-decoration:none}
.brand-mark{width:42px;height:42px;border-radius:50%;display:grid;place-items:center;font-family:var(--serif);font-weight:900;font-size:.95rem;color:#3a2a10;
  background:radial-gradient(circle at 32% 30%,var(--brass-hi),var(--brass) 55%,var(--brass-lo));
  box-shadow:inset 0 0 0 2px rgba(255,246,214,.55),inset 0 -3px 7px rgba(90,60,10,.55),0 4px 14px rgba(0,0,0,.5);letter-spacing:.02em}
.brand-text strong{display:block;font-family:var(--serif);font-size:1.06rem;letter-spacing:.06em;line-height:1.15}
.brand-text small{display:block;font-size:.6rem;letter-spacing:.42em;color:var(--brass);font-weight:500}
.mainnav{margin-left:auto;display:flex;align-items:center;gap:26px;flex-wrap:wrap}
.mainnav a{color:var(--tx-dim);font-size:.92rem;letter-spacing:.06em}
.mainnav a:hover{color:var(--brass-hi);text-decoration:none}
.nav-cta{border:1px solid var(--brass);border-radius:999px;padding:6px 18px;color:var(--brass-hi)!important}
.nav-cta:hover{background:rgba(201,162,75,.12)}
.lang-toggle{border-left:1px solid var(--hair);padding-left:22px;font-size:.85rem!important}
.nav-toggle{display:none;background:none;border:1px solid var(--hair);color:var(--cream);border-radius:8px;font-size:1.05rem;padding:5px 12px;cursor:pointer}
.linkbtn{background:none;border:0;color:var(--tx-dim);font:inherit;font-size:.92rem;cursor:pointer;padding:0}
.linkbtn:hover{color:var(--brass-hi)}
.inline-form{display:inline}
/* ---------- hero: the invitation ---------- */
.hero{padding:64px 0 30px;display:grid;grid-template-columns:1.15fr .85fr;gap:48px;align-items:center}
.hero-kicker{font-size:.72rem;letter-spacing:.5em;color:var(--brass);font-weight:500;text-transform:uppercase}
.hero h1{margin:.35em 0 .4em}
.hero h1 em{font-style:normal;background:linear-gradient(100deg,var(--brass-hi),var(--brass) 60%,var(--brass-lo));-webkit-background-clip:text;background-clip:text;color:transparent}
.hero-sub{color:var(--tx-dim);font-size:1.02rem;max-width:34em}
.hero-stats{display:flex;gap:34px;margin-top:30px;flex-wrap:wrap}
.hero-stats div strong{display:block;font-family:var(--serif);font-size:1.65rem;color:var(--cream);line-height:1.1}
.hero-stats div span{font-size:.78rem;letter-spacing:.18em;color:var(--tx-mute)}
/* even 3-up stats (my area) + tidy action rows */
.stats-3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px}
.stats-3 div span{display:block;margin-top:2px;line-height:1.5}
.action-row{display:flex;gap:12px;flex-wrap:wrap;margin:0 0 8px}
.action-row .btn{flex:0 1 auto}
.hero-pass{transform:rotate(2.2deg)}
.hero-pass .pass{box-shadow:var(--shadow-lift)}
/* ---------- search ---------- */
.searchbar{margin:26px 0 8px;background:linear-gradient(180deg,rgba(244,236,220,.05),rgba(244,236,220,.02));border:1px solid var(--hair);border-radius:var(--r-lg);padding:20px;display:grid;grid-template-columns:1fr 1fr 1fr auto;gap:14px;align-items:end}
.searchbar label,.field label{display:block;font-size:.76rem;letter-spacing:.22em;color:var(--brass);font-weight:500;margin-bottom:7px;text-transform:uppercase}
/* ---------- forms (same care as marketing pages) ---------- */
input,select,textarea{width:100%;max-width:100%;background:#171008;border:1px solid rgba(216,178,106,.28);color:var(--cream);border-radius:10px;padding:11px 14px;font:inherit;font-size:.95rem;transition:border-color .18s,box-shadow .18s}
.searchbar>*,.grid2>*,.grid3>*,.hero>*,.detail-grid>*,.pass-list>*{min-width:0}
input[type=date],input[type=time]{min-width:0}
input::placeholder,textarea::placeholder{color:#7d7261}
input:focus,select:focus,textarea:focus{outline:none;border-color:var(--brass);box-shadow:0 0 0 3px rgba(201,162,75,.18)}
input[type=checkbox],input[type=radio]{width:auto;accent-color:var(--brass)}
input[type=date],input[type=time]{color-scheme:dark}
.btn{display:inline-block;border:0;cursor:pointer;border-radius:999px;padding:12px 30px;font:inherit;font-size:.95rem;letter-spacing:.12em;font-weight:500;transition:transform .15s,box-shadow .15s,background .15s;text-align:center}
.btn:hover{text-decoration:none;transform:translateY(-1px)}
.btn:active{transform:translateY(0)}
.btn-gold{color:#33240a;background:linear-gradient(115deg,var(--brass-hi),var(--brass) 55%,#a87e2c);box-shadow:0 8px 22px -8px rgba(201,162,75,.65),inset 0 1px 0 rgba(255,250,230,.7)}
.btn-gold:hover{box-shadow:0 12px 28px -8px rgba(201,162,75,.8),inset 0 1px 0 rgba(255,250,230,.8)}
.btn-ghost{background:transparent;color:var(--brass-hi);border:1px solid var(--hair)}
.btn-ghost:hover{background:rgba(201,162,75,.09)}
.btn-wine{background:linear-gradient(115deg,#a34a56,var(--wine-deep));color:#f7e9e4;box-shadow:0 8px 20px -8px rgba(142,59,70,.7)}
.btn-sm{padding:7px 18px;font-size:.85rem}
.btn[disabled]{opacity:.45;cursor:not-allowed;transform:none}
.card{background:linear-gradient(180deg,var(--panel2),var(--panel));border:1px solid var(--hair-soft);border-radius:var(--r-lg);padding:26px;box-shadow:0 10px 30px -18px rgba(0,0,0,.8)}
.form-card{max-width:760px}
.field{margin-bottom:18px}
.field small{display:block;margin-top:6px;color:var(--tx-mute);font-size:.8rem}
/* language multi-select dropdown */
.dd{position:relative}
.dd-summary{list-style:none;cursor:pointer;width:100%;background:#171008;border:1px solid rgba(216,178,106,.28);color:var(--cream);border-radius:10px;padding:11px 14px;font-size:.95rem}
.dd-summary::-webkit-details-marker{display:none}
.dd-summary::after{content:"▾";float:right;color:var(--brass)}
.dd[open ] .dd-summary{border-color:var(--brass)}
.dd-panel{position:absolute;left:0;right:0;top:calc(100% + 6px);z-index:30;background:#221708;border:1px solid var(--hair);border-radius:12px;box-shadow:var(--shadow-lift);padding:8px;max-height:260px;overflow:auto}
.field .dd-opt{display:flex;align-items:center;gap:10px;padding:9px 10px;border-radius:8px;cursor:pointer;font-size:.95rem;color:var(--cream);letter-spacing:0;text-transform:none;font-weight:300;margin-bottom:0}
.field .dd-opt:hover{background:rgba(201,162,75,.10)}
.field .dd-opt input{width:auto}
/* alliance tier rows on profile */
.tier-row{display:flex;align-items:center;gap:12px;margin-bottom:10px}
.tier-name{flex:0 0 42%;font-size:.92rem;color:var(--tx-dim)}
.tier-row select{flex:1;min-width:0}
.other-wrap{margin:-2px 0 12px}
.other-wrap[hidden]{display:none}
@media (max-width:640px){.tier-name{flex-basis:38%;font-size:.86rem}}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:16px}
.grid3{display:grid;grid-template-columns:1.2fr 1fr 1fr;gap:16px}
.seg{display:flex;gap:10px}
.seg-opt{flex:1}
.seg-opt input{position:absolute;opacity:0}
.seg-opt span{display:block;text-align:center;padding:12px;border:1px solid rgba(216,178,106,.3);border-radius:12px;cursor:pointer;letter-spacing:.08em;color:var(--tx-dim);transition:all .15s}
.seg-opt input:checked+span{background:linear-gradient(115deg,rgba(238,209,136,.18),rgba(201,162,75,.10));border-color:var(--brass);color:var(--brass-hi);box-shadow:inset 0 0 0 1px rgba(201,162,75,.35)}
.conds{border:1px solid var(--hair-soft);border-radius:12px;padding:14px 18px;margin:6px 0 20px}
.conds legend{font-size:.76rem;letter-spacing:.22em;color:var(--brass);padding:0 8px}
.conds label{display:block;margin:7px 0;color:var(--tx-dim);font-size:.93rem;cursor:pointer}
/* ---------- Guest Pass card (signature) ---------- */
.pass-list{display:grid;grid-template-columns:1fr 1fr;gap:22px;margin:18px 0}
.pass{display:flex;background:linear-gradient(135deg,var(--cream) 0%,var(--cream2) 78%,#e7d7b4 100%);color:var(--ink);border-radius:14px;box-shadow:var(--shadow-pass);overflow:hidden;position:relative;transition:transform .18s,box-shadow .18s}
.pass:hover{transform:translateY(-3px) rotate(-.15deg);box-shadow:var(--shadow-lift)}
.pass::before{content:"";position:absolute;inset:7px;border:1px solid var(--paper-line);border-radius:9px;pointer-events:none}
.pass-main{flex:1;padding:20px 22px;min-width:0}
.pass-topline{display:flex;justify-content:space-between;gap:10px;font-size:.68rem;letter-spacing:.26em;font-weight:700;text-transform:uppercase}
.pass-offer .pass-kind{color:var(--wine)}
.pass-request .pass-kind{color:#5c7151}
.pass-no{color:var(--ink-soft)}
.pass-route{display:flex;align-items:baseline;gap:12px;margin:8px 0 2px}
.pass-code{font-family:var(--serif);font-weight:900;font-size:2rem;letter-spacing:.05em;line-height:1;color:var(--ink)}
.pass-city{color:var(--ink-soft);font-size:.9rem;letter-spacing:.08em}
.pass-lounge{font-family:var(--serif);font-size:1.02rem;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pass-meta{display:flex;gap:8px 16px;flex-wrap:wrap;margin:7px 0 9px;font-size:.84rem;color:var(--ink-soft);letter-spacing:.04em}
.pass-host{display:flex;justify-content:space-between;align-items:center;gap:10px;border-top:1px dashed var(--paper-line);padding-top:9px;font-size:.86rem}
.pass-host a{color:var(--wine-deep);font-weight:500}
.pass-status{font-size:.7rem;letter-spacing:.16em;padding:2px 10px;border-radius:999px;border:1px solid var(--paper-line);color:var(--ink-soft)}
.st-open{color:#5c7151;border-color:rgba(92,113,81,.45)}
.st-matched{color:var(--wine);border-color:rgba(142,59,70,.45)}
.pass-stub{width:104px;flex:none;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;padding:16px 8px;text-align:center;
  border-left:2px dashed rgba(43,33,24,.35);position:relative;
  background:radial-gradient(circle at 50% 62%,rgba(201,162,75,.20),transparent 62%)}
.pass-stub::before,.pass-stub::after{content:"";position:absolute;left:-9px;width:16px;height:16px;border-radius:50%;background:var(--ground)}
.pass-stub::before{top:-8px}.pass-stub::after{bottom:-8px}
.admit-label{font-size:.62rem;letter-spacing:.34em;color:var(--ink-soft);font-weight:700}
.admit-num{font-family:var(--serif);font-weight:900;font-size:1.9rem;line-height:1;color:var(--ink)}
.foil-seal{width:34px;height:34px;border-radius:50%;display:grid;place-items:center;color:#4a3408;font-size:.95rem;margin:5px 0;
  background:radial-gradient(circle at 34% 30%,#ffeeb8,var(--brass) 55%,var(--brass-lo));
  box-shadow:inset 0 0 0 2px rgba(255,248,220,.6),inset 0 -3px 6px rgba(96,64,8,.6),0 3px 8px rgba(60,40,5,.35)}
.pass-view{font-size:.78rem;letter-spacing:.14em;color:var(--wine-deep);font-weight:700}
/* ---------- resonance ---------- */
.resonance-mini{display:flex;align-items:center;gap:10px;margin-top:10px;font-size:.83rem;color:var(--ink-soft)}
.resonance-ring{--p:0;width:44px;height:44px;flex:none;border-radius:50%;display:grid;place-items:center;font-family:var(--serif);font-weight:900;font-size:.86rem;color:var(--ink);
  background:conic-gradient(var(--brass) calc(var(--p)*1%),rgba(43,33,24,.13) 0)}
.resonance-ring::after{content:"";position:absolute}
.resonance-big{display:flex;gap:22px;align-items:center;flex-wrap:wrap}
.resonance-dial{width:104px;height:104px;border-radius:50%;display:grid;place-items:center;position:relative;background:conic-gradient(var(--brass) calc(var(--p)*1%),rgba(216,178,106,.14) 0)}
.resonance-dial i{position:absolute;inset:9px;border-radius:50%;background:var(--panel);display:grid;place-items:center;font-family:var(--serif);font-style:normal;font-weight:900;font-size:1.7rem;color:var(--cream)}
.resonance-parts{display:flex;gap:8px;flex-wrap:wrap}
.chip{font-size:.76rem;letter-spacing:.08em;border:1px solid var(--hair);border-radius:999px;padding:3px 12px;color:var(--tx-dim)}
.chip b{color:var(--brass-hi);font-weight:700}
/* ---------- timeline ribbon ---------- */
.ribbon{margin:14px 0 4px}
.ribbon-row{display:flex;align-items:center;gap:12px;margin:6px 0}
.ribbon-tag{width:52px;flex:none;font-size:.72rem;letter-spacing:.18em;color:var(--brass)}
.ribbon-track{flex:1;height:12px;border-radius:999px;background:rgba(244,236,220,.07);position:relative;overflow:hidden}
.ribbon-bar{position:absolute;top:0;height:100%;border-radius:999px}
.bar-a{background:rgba(142,59,70,.75)}.bar-b{background:rgba(143,163,130,.75)}
.bar-over{background:linear-gradient(90deg,var(--brass-hi),var(--brass));box-shadow:0 0 10px rgba(201,162,75,.8);z-index:2}
.ribbon-time{width:104px;flex:none;font-size:.78rem;color:var(--tx-mute);text-align:right}
.ribbon-scale{display:flex;justify-content:space-between;margin:2px 116px 0 64px;font-size:.66rem;color:var(--tx-mute)}
/* ---------- sections / misc ---------- */
.section{padding:14px 0 8px}
.rules-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:14px;margin:16px 0}
.rule-item{border:1px solid var(--hair-soft);border-radius:var(--r-md);padding:16px 18px;background:rgba(244,236,220,.02)}
.rule-item .rule-ic{color:var(--brass);font-size:1.05rem}
.rule-item p{margin:6px 0 0;font-size:.9rem;color:var(--tx-dim)}
.how-steps{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;counter-reset:step}
.how-step{padding:20px;border-top:1px solid var(--hair);position:relative}
.how-step::before{counter-increment:step;content:"0" counter(step);font-family:var(--serif);font-size:1.5rem;color:var(--brass);display:block;margin-bottom:8px}
.how-step p{margin:0;color:var(--tx-dim);font-size:.93rem}
.empty{border:1px dashed rgba(216,178,106,.35);border-radius:var(--r-lg);padding:44px 26px;text-align:center;color:var(--tx-dim)}
.empty .empty-seal{width:52px;height:52px;margin:0 auto 12px;border-radius:50%;display:grid;place-items:center;color:#4a3408;background:radial-gradient(circle at 34% 30%,#ffeeb8,var(--brass) 55%,var(--brass-lo));font-size:1.2rem}
.empty p{text-align:center;margin:4px 0 14px}
.flash{border-radius:10px;padding:12px 18px;margin:18px 0 0;font-size:.93rem}
.flash-ok{background:rgba(143,163,130,.15);border:1px solid rgba(143,163,130,.5);color:#cfdec4}
.flash-err{background:rgba(142,59,70,.18);border:1px solid rgba(163,74,86,.55);color:#f0cfd2}
.pager{display:flex;gap:10px;justify-content:center;margin:26px 0}
.pager a,.pager span{border:1px solid var(--hair);border-radius:999px;padding:6px 16px;color:var(--tx-dim)}
.pager .cur{background:rgba(201,162,75,.15);color:var(--brass-hi)}
.detail-grid{display:grid;grid-template-columns:1.2fr .8fr;gap:24px;align-items:start;margin-top:26px}
.kv{display:grid;grid-template-columns:110px 1fr;gap:7px 16px;font-size:.95rem}
.kv dt{color:var(--brass);font-size:.76rem;letter-spacing:.2em;text-transform:uppercase;padding-top:3px}
.kv dd{margin:0;color:var(--cream)}
.thread{display:flex;flex-direction:column;gap:10px;margin:14px 0}
.msg{max-width:78%;padding:10px 15px;border-radius:14px;font-size:.93rem;line-height:1.6}
.msg.me{align-self:flex-end;background:linear-gradient(120deg,rgba(238,209,136,.22),rgba(201,162,75,.13));border:1px solid rgba(201,162,75,.4)}
.msg.them{align-self:flex-start;background:rgba(244,236,220,.05);border:1px solid var(--hair-soft)}
.msg small{display:block;color:var(--tx-mute);font-size:.72rem;margin-top:3px}
.msg-form{display:flex;gap:10px}.msg-form input{flex:1}
.admin-cards{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin:20px 0}
.admin-card{border:1px solid var(--hair-soft);border-radius:var(--r-md);padding:18px;background:rgba(244,236,220,.02)}
.admin-card strong{display:block;font-family:var(--serif);font-size:1.8rem;color:var(--cream)}
.admin-row{display:flex;justify-content:space-between;gap:14px;align-items:center;border:1px solid var(--hair-soft);border-radius:var(--r-md);padding:14px 18px;margin:10px 0;flex-wrap:wrap;background:rgba(244,236,220,.015)}
.admin-row .acts{display:flex;gap:8px;flex-wrap:wrap}
.profile-head{display:flex;gap:20px;align-items:center;flex-wrap:wrap}
.avatar-seal{width:64px;height:64px;border-radius:50%;display:grid;place-items:center;font-family:var(--serif);font-weight:900;font-size:1.35rem;color:#3a2a10;background:radial-gradient(circle at 32% 30%,var(--brass-hi),var(--brass) 55%,var(--brass-lo));box-shadow:inset 0 0 0 2px rgba(255,246,214,.5),0 6px 18px rgba(0,0,0,.5)}
.stat-line{display:flex;gap:22px;flex-wrap:wrap;color:var(--tx-dim);font-size:.9rem}
.stat-line b{color:var(--brass-hi);font-family:var(--serif);font-size:1.15rem}
.sitefoot{margin-top:70px;border-top:1px solid var(--hair-soft);background:rgba(0,0,0,.25)}
.foot-in{display:flex;justify-content:space-between;gap:30px;padding:34px 24px 10px;flex-wrap:wrap}
.foot-brand{font-family:var(--serif);font-size:1.25rem;letter-spacing:.06em;color:var(--cream)}
.foot-in p{color:var(--tx-mute);font-size:.88rem;margin:5px 0}
.foot-rules{color:var(--brass)!important;letter-spacing:.06em}
.foot-links{display:flex;flex-direction:column;gap:8px}
.foot-links a{color:var(--tx-dim);font-size:.9rem}
.foot-fine{padding:12px 24px 26px;font-size:.76rem;letter-spacing:.14em;color:var(--tx-mute)}
.auth-wrap{max-width:480px;margin:44px auto}
/* ---------- responsive: tablet ---------- */
@media (max-width:960px){
  .hero{grid-template-columns:1fr;padding-top:42px}
  .hero-pass{max-width:520px}
  .searchbar{grid-template-columns:1fr 1fr}
  .pass-list{grid-template-columns:1fr}
  .rules-grid{grid-template-columns:repeat(2,1fr)}
  .how-steps{grid-template-columns:repeat(2,1fr)}
  .detail-grid{grid-template-columns:1fr}
  .admin-cards{grid-template-columns:repeat(2,1fr)}
}
/* ---------- responsive: mobile (full experience, not reduced) ---------- */
@media (max-width:640px){
  .wrap{padding:0 16px}
  .nav-toggle{display:block;margin-left:auto}
  .mainnav{display:none;position:absolute;top:72px;left:0;right:0;background:#1c130a;border-bottom:1px solid var(--hair);flex-direction:column;align-items:flex-start;padding:18px 22px;gap:16px}
  body.nav-open .mainnav{display:flex}
  .lang-toggle{border-left:0;padding-left:0}
  .searchbar{grid-template-columns:minmax(0,1fr);padding:16px}
  .searchbar .btn{width:100%}
  input[type=date],input[type=time]{-webkit-appearance:none;appearance:none;min-height:47px}
  .grid2,.grid3{grid-template-columns:1fr}
  .rules-grid{grid-template-columns:1fr}
  .how-steps{grid-template-columns:1fr}
  .pass{flex-direction:column}
  .pass-stub{width:auto;flex-direction:row;justify-content:space-between;border-left:0;border-top:2px dashed rgba(43,33,24,.35);padding:10px 18px}
  .pass-stub::before,.pass-stub::after{display:none}
  .admit-num{font-size:1.4rem}
  .hero{padding:34px 0 10px;gap:28px}
  .hero-stats{gap:22px}
  .stats-3{gap:12px}
  .stats-3 div strong{font-size:1.45rem}
  .stats-3 div span{font-size:.72rem;letter-spacing:.1em}
  .action-row{flex-direction:column}
  .action-row .btn{width:100%}
  .empty{padding:30px 20px}
  .ribbon-time{width:86px}
  .ribbon-scale{margin-right:98px}
  .msg{max-width:92%}
  .foot-in{flex-direction:column}
  .admin-cards{grid-template-columns:1fr 1fr}
}

/* ---------- private messages （站內信）: inbox + conversation ---------- */
.nav-badge{display:inline-block;min-width:20px;text-align:center;margin-left:7px;padding:1px 6px;border-radius:999px;
  background:linear-gradient(115deg,var(--brass-hi),var(--brass) 60%,var(--brass-lo));color:#33240a;
  font-size:.72rem;font-weight:700;line-height:1.5;vertical-align:2px;box-shadow:0 3px 8px -2px rgba(201,162,75,.7)}
.pm-badge{display:inline-block;min-width:22px;text-align:center;padding:1px 7px;border-radius:999px;
  background:linear-gradient(115deg,var(--brass-hi),var(--brass) 60%,var(--brass-lo));color:#33240a;
  font-size:.74rem;font-weight:700;line-height:1.6;vertical-align:1px}
.inbox-list{display:flex;flex-direction:column;gap:10px;margin-top:18px}
.inbox-row{display:flex;justify-content:space-between;gap:14px;align-items:flex-start;
  border:1px solid var(--hair-soft);border-radius:var(--r-md);padding:14px 18px;background:rgba(244,236,220,.015);
  color:var(--tx);transition:border-color .15s,background .15s}
.inbox-row:hover{border-color:var(--hair);background:rgba(244,236,220,.04);text-decoration:none}
.inbox-row.has-unread{border-color:rgba(201,162,75,.45);background:rgba(201,162,75,.05)}
.inbox-main{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}
.inbox-top{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.inbox-top strong{font-family:var(--serif);font-size:1.05rem;color:var(--cream)}
.inbox-ctx{font-size:.85rem;color:var(--brass-hi);letter-spacing:.03em;overflow-wrap:anywhere}
.inbox-preview{font-size:.9rem;color:var(--tx-dim);overflow-wrap:anywhere}
.inbox-preview em{font-style:normal;color:var(--tx-mute)}
.inbox-time{flex:none;font-size:.76rem;color:var(--tx-mute);letter-spacing:.04em;padding-top:4px;white-space:nowrap}
.conv-wrap{max-width:760px;margin:0 auto}
.conv-head{display:flex;gap:16px;align-items:center;margin:14px 0 6px}
.conv-thread{margin:18px 0}
.conv-thread .msg{overflow-wrap:anywhere}
.conv-form{display:flex;flex-direction:column;gap:10px;margin:6px 0 10px}
.conv-form textarea{resize:vertical;min-height:76px}
.conv-form .btn{align-self:flex-end}
@media (max-width:640px){
  .inbox-row{padding:12px 14px}
  .inbox-time{display:none}
  .conv-form .btn{width:100%}
}
/* ---------- lounge directory picker (custom dropdown) ----------
   The native select stays in the DOM as the value carrier, visually
   hidden sr-only style (NOT display:none, so it keeps submitting);
   the cream panel is the "invitation stock" counterpart to the
   espresso form fields. z-index 40: above cards, below the topbar. */
.lm-select-native{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;border:0}
.lm-picker{position:relative;min-width:0;margin-top:8px}
.lm-trigger{display:flex;align-items:center;gap:10px;width:100%;background:#171008;border:1px solid rgba(216,178,106,.28);color:var(--cream);border-radius:10px;padding:11px 14px;font:inherit;font-size:.95rem;text-align:left;cursor:pointer;transition:border-color .18s,box-shadow .18s}
.lm-trigger:hover{border-color:rgba(216,178,106,.55)}
.lm-trigger:focus-visible{outline:none;border-color:var(--brass);box-shadow:0 0 0 3px rgba(201,162,75,.25)}
.lm-picker.is-open .lm-trigger{border-color:var(--brass)}
.lm-trigger[disabled]{opacity:.6;cursor:wait}
.lm-picker.is-loading .lm-trigger-name{animation:lmPulse 1s ease-in-out infinite}
@keyframes lmPulse{0%,100%{opacity:.4}50%{opacity:1}}
.lm-trigger-name{flex:1 1 auto;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.lm-trigger.is-placeholder .lm-trigger-name{color:var(--tx-mute)}
.lm-trigger-term{flex:none;font-size:.68rem;letter-spacing:.16em;text-transform:uppercase;color:var(--brass)}
.lm-chev{flex:none;width:8px;height:8px;border-right:1.5px solid var(--brass);border-bottom:1.5px solid var(--brass);transform:rotate(45deg) translate(-1px,-1px);transition:transform .18s}
.lm-picker.is-open .lm-chev{transform:rotate(225deg) translate(-1px,-1px)}
.lm-panel{position:absolute;left:0;right:0;top:calc(100% + 6px);z-index:40;background:linear-gradient(180deg,var(--cream),var(--cream2));color:var(--ink);border-top:2px solid var(--brass);border-radius:var(--r-lg);box-shadow:var(--shadow-lift);overflow:hidden;animation:lmDrop .14s ease-out}
.lm-panel-up{top:auto;bottom:calc(100% + 6px)}
@keyframes lmDrop{from{opacity:0;transform:translateY(-3px)}to{opacity:1;transform:none}}
.lm-panel-scroll{max-height:272px;overflow-y:auto;padding:6px 6px 2px;scrollbar-width:thin}
.lm-group{font-size:.64rem;letter-spacing:.26em;text-transform:uppercase;color:#7a5a1c;font-weight:600;padding:10px 12px 5px}
.lm-opt{display:flex;align-items:center;gap:10px;width:100%;min-height:48px;padding:8px 12px;background:none;border:0;border-radius:10px;color:var(--ink);font:inherit;text-align:left;cursor:pointer}
.lm-opt:hover{background:rgba(201,162,75,.16)}
.lm-opt:focus-visible{outline:none;background:rgba(201,162,75,.22);box-shadow:inset 0 0 0 1.5px rgba(143,107,35,.55)}
.lm-opt.is-selected{background:linear-gradient(90deg,rgba(201,162,75,.30),rgba(201,162,75,.12))}
.lm-opt-check{flex:none;width:15px;text-align:center;font-size:.8rem;color:var(--brass-lo);opacity:0}
.lm-opt.is-selected .lm-opt-check{opacity:1}
.lm-opt-name{flex:1 1 auto;min-width:0;font-family:var(--serif);font-size:1rem;font-weight:500;line-height:1.4;overflow-wrap:anywhere}
.lm-opt-meta{flex:none;margin-left:auto;padding-left:10px;font-size:.62rem;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-soft);white-space:nowrap}
.lm-opt-clear{min-height:40px;color:var(--ink-soft);font-size:.9rem}
.lm-opt-other{border-top:1px dashed rgba(43,33,24,.28);border-radius:0;background:rgba(255,255,255,.28);font-weight:500}
.lm-opt-other:hover{background:rgba(201,162,75,.18)}
/* Mobile bottom sheet (phones are the primary audience): the picker
   panel docks to the viewport bottom over a dim backdrop, with a
   brass drag handle, sticky terminal group headers, thumb-height
   rows and safe-area padding. Body scroll locks while it is open. */
.lm-sheet-handle{display:none}
.lm-backdrop{position:fixed;inset:0;background:rgba(16,10,4,.55);z-index:39}
.lm-backdrop[hidden]{display:none}
body.lm-lock{overflow:hidden}
@keyframes lmSheet{from{transform:translateY(26px);opacity:.5}to{transform:none;opacity:1}}
@media (max-width:640px){
  .lm-trigger{min-height:52px;font-size:1rem}
  .lm-opt{min-height:52px}
  .lm-opt-name{font-size:1.02rem}
  .lm-picker.is-sheet .lm-panel{position:fixed;left:0;right:0;top:auto;bottom:0;z-index:41;border-radius:18px 18px 0 0;animation:lmSheet .18s ease-out;padding-bottom:env(safe-area-inset-bottom)}
  .lm-picker.is-sheet .lm-panel-scroll{max-height:62vh;padding-top:2px}
  .lm-picker.is-sheet .lm-sheet-handle{display:block;width:44px;height:4px;border-radius:2px;background:rgba(122,90,28,.55);margin:9px auto 3px}
  .lm-picker.is-sheet .lm-group{position:sticky;top:0;background:linear-gradient(180deg,var(--cream),var(--cream2));z-index:1}
}
@media (prefers-reduced-motion:reduce){
  .lm-panel{animation:none}
  .lm-chev{transition:none}
  .lm-picker.is-loading .lm-trigger-name{animation:none}
}
/* ---------- layout strengthening: sticky footer + footer rhythm ----------
   Short pages (empty inbox, login…) used to leave the footer floating
   mid-viewport with a sagging void; the page skeleton is now a flex
   column so the footer always rests at the bottom. Footer links get a
   uniform list treatment (hairlines, no stray underlines). */
body{display:flex;flex-direction:column;min-height:100dvh}
main.wrap{flex:1 0 auto;width:100%}
.sitefoot{flex:none;margin-top:56px}
.foot-links{gap:0}
.foot-links a{padding:8px 2px;color:var(--tx-dim);font-size:.92rem;text-decoration:none;border-bottom:1px solid rgba(216,178,106,.10)}
.foot-links a:last-child{border-bottom:0}
.foot-links a:hover{color:var(--brass-hi);text-decoration:none}
.foot-fine{border-top:1px solid var(--hair-soft);margin-top:14px;padding-top:16px}
@media (max-width:640px){
  .foot-in{padding:28px 16px 4px;gap:22px}
  .foot-fine{padding:14px 16px 22px}
}
