/* ============================================================
   翼起回家 — 正式站樣式
   組成：前段＝Lounge 相容元件（fork 保留，給尚未改作的頁面與後台沿用）；
   後段＝翼起回家設計系統 v1.0（design/style.css 定版，變數與元件覆寫在後）。
   ============================================================ */
/* ============================================================
   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;justify-content:center}
.hero-stats>div{display:flex;flex-direction:column;align-items:center;text-align:center}
.flap-num{perspective:320px}
.hero-stats div strong.flap-on{display:flex;gap:3px;font-size:1.7rem;line-height:1;margin-bottom:7px}
.hero-stats .flap-cell{position:relative;width:.8em;height:1.16em;font-weight:700;font-size:1em;letter-spacing:0;display:flex;align-items:center;justify-content:center;background:linear-gradient(180deg,#2b1e12 0%,#21160c 49%,#170e06 51%,#1f150a 100%);border:1px solid rgba(201,164,92,.30);border-radius:5px;color:var(--cream);overflow:hidden;box-shadow:inset 0 1px 0 rgba(244,236,220,.07),0 2px 5px rgba(0,0,0,.35)}
.flap-cell::after{content:"";position:absolute;left:0;right:0;top:50%;height:1px;background:rgba(0,0,0,.65);box-shadow:0 1px 0 rgba(244,236,220,.05)}
.flap-cell.flip{animation:lmFlapFlip .12s ease-in-out}
@keyframes lmFlapFlip{0%{transform:rotateX(0)}50%{transform:rotateX(-84deg)}100%{transform:rotateX(0)}}
.flap-comma{align-self:center;color:var(--tx-dim);margin:0 -1px}
.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{display:flex;align-items:center;gap:8px;font-family:var(--serif);font-size:1.02rem;font-weight:600}
.pass-lname{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}
.pass-when{display:flex;gap:6px 12px;flex-wrap:nowrap;align-items:baseline;margin:9px 0 3px;font-size:clamp(1.22rem,5.8vw,1.36rem);font-weight:700;color:var(--ink);letter-spacing:.02em;line-height:1.3;font-variant-numeric:tabular-nums}
.pass-date{letter-spacing:.05em}
.pass-time{color:var(--wine-deep);letter-spacing:.01em}
.pass-meta{display:flex;gap:8px 16px;flex-wrap:wrap;margin:3px 0 9px;font-size:.84rem;color:var(--ink-soft);letter-spacing:.04em}
.pass-host{display:flex;justify-content:flex-start;align-items:center;gap:10px;border-top:1px dashed var(--paper-line);padding-top:9px;font-size:.86rem}
.pass-host .pass-status{margin-left:auto}
.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}
.pass-cover{position:absolute;inset:0;z-index:1}
.prevnext{display:flex;justify-content:space-between;gap:12px;max-width:640px;margin-top:14px}
.prevnext a{color:var(--tx-mute);font-size:.85rem;letter-spacing:.14em;text-decoration:none}
.prevnext a:hover{color:var(--brass-hi)}
.pass-host a{position:relative;z-index:2}
/* ---------- 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:8px;justify-content:center;align-items:center;flex-wrap:wrap;margin:26px 0}
.pager a,.pager span{border:1px solid var(--hair);border-radius:999px;padding:7px 13px;color:var(--tx-dim);white-space:nowrap;line-height:1.2;text-align:center}
.pager a{min-width:38px}
.pager .cur{background:rgba(201,162,75,.15);color:var(--brass-hi);min-width:38px}
.pager .dots{border:0;padding:7px 1px;color:var(--tx-mute)}
.pager .pager-nav{letter-spacing:.06em}
.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)}
.oauth-box{margin-top:18px}
.oauth-divider{display:flex;align-items:center;gap:14px;color:var(--tx-mute);font-size:.78rem;letter-spacing:.22em;margin:4px 0 12px}
.oauth-divider::before,.oauth-divider::after{content:"";flex:1;border-top:1px solid var(--hair-soft)}
.oauth-btns{display:grid;gap:10px}
.oauth-btn{display:flex;align-items:center;justify-content:center;gap:10px;border-radius:999px;padding:12px 20px;font-weight:600;letter-spacing:.04em;text-decoration:none;border:1px solid var(--hair);color:var(--cream)}
.oauth-google{background:#f7f1e7;color:#2b2118}
.oauth-line{background:#06c755;color:#fff;border-color:#06c755}
.oauth-mark{font-weight:800;letter-spacing:.05em}
.oauth-g{color:#b03a2e;font-size:1.05rem}
.oauth-l{font-size:.7rem;background:rgba(255,255,255,.25);border-radius:6px;padding:2px 6px}
.avatar{border-radius:50%;flex:none}
img.avatar{object-fit:cover}
.avatar-ph{display:inline-flex;align-items:center;justify-content:center;background:radial-gradient(circle at 32% 30%,var(--brass-hi),var(--brass) 55%,var(--brass-lo));color:#3a2a10;font-family:var(--serif);font-weight:900;box-shadow:inset 0 0 0 2px rgba(255,246,214,.45)}
.avatar-sm{width:46px;height:46px;font-size:1.2rem}
.avatar-md{width:66px;height:66px;font-size:1.5rem}
.avatar-lg{width:108px;height:108px;font-size:2.4rem}
.avatar-xl{width:176px;height:176px;font-size:3.6rem}
img.avatar-seal{object-fit:cover}
.host-line{display:inline-flex;align-items:center;gap:9px}
.avatar-edit{display:flex;gap:18px;flex-wrap:wrap}
.avatar-form{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-bottom:6px}
.match-other-head{display:flex;align-items:center;gap:12px;margin-bottom:10px}
.inbox-row .avatar{align-self:center}
.adm-stats{display:flex;gap:8px;flex-wrap:wrap;margin:6px 0 2px}
.adm-filters{display:flex;gap:8px;flex-wrap:wrap;margin:12px 0 18px}
.adm-match{border:1px solid var(--hair-soft);border-radius:var(--r-md);padding:16px 18px;margin:12px 0;background:rgba(244,236,220,.015)}
.adm-match-head{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.adm-match-id{font-family:var(--serif);font-weight:700;font-size:1.08rem;color:var(--cream)}
.adm-match-route{margin-left:auto;text-align:right;color:var(--cream);font-weight:600;letter-spacing:.02em}
.adm-match-sub{color:var(--tx-dim);margin-top:3px}
.adm-party{margin:13px 0 3px;display:grid;gap:7px}
.adm-party-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.adm-party-row a{font-weight:600}
.adm-role{flex:none;font-size:.72rem;letter-spacing:.12em;padding:3px 10px;border-radius:999px;border:1px solid var(--hair);color:var(--brass-hi);white-space:nowrap}
.adm-listing-link{font-weight:400!important;font-size:.88rem;color:var(--tx-dim)}
.adm-direct{color:var(--tx-mute);font-size:.9rem}
.adm-meta{display:grid;grid-template-columns:repeat(auto-fit,minmax(148px,1fr));gap:10px 18px;border-top:1px dashed var(--hair-soft);padding-top:11px;margin-top:11px;font-size:.88rem;color:var(--tx-dim)}
.adm-meta b{display:block;font-size:.68rem;letter-spacing:.18em;color:var(--tx-mute);font-weight:500;margin-bottom:2px}
.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:88px;height:88px;border-radius:50%;display:grid;place-items:center;font-family:var(--serif);font-weight:900;font-size:1.75rem;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;flex-direction:column;align-items:center;text-align:center;gap:30px;padding:34px 24px 10px;flex-wrap:wrap}
.foot-brand{font-family:var(--serif);font-size:1.25rem;letter-spacing:.04em;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;align-items:center;width:100%;max-width:430px;margin:0 auto}
.foot-links a{color:var(--tx-dim);font-size:.9rem}
.foot-fine{padding:12px 24px 26px;font-size:.74rem;letter-spacing:.05em;line-height:1.9;color:var(--tx-mute);text-align:center}
.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 96px 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:75}
.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:80;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:42px}
.foot-links{gap:0}
.foot-links a{padding:7px 2px;color:var(--tx-dim);font-size:.9rem;line-height:1.5;text-decoration:none;border-bottom:1px solid rgba(216,178,106,.10);width:100%;text-align:center}
.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:24px 16px 4px;gap:18px}
  .foot-fine{padding:14px 16px 22px}
}
/* ---------- generic custom select (.cs-enhance) ----------
   The native select stays as the value carrier, visually removed;
   the .lm-* picker chrome renders in its place. */
.cs-native{position:absolute!important;opacity:0;pointer-events:none;width:1px!important;height:1px;overflow:hidden}
.cs-picker{margin-top:0}
.field .cs-picker,.searchbar .cs-picker{margin-top:0}
.tier-row .cs-picker{flex:1;min-width:0}
.cs-filter-wrap{padding:12px 12px 8px}
.cs-filter{width:100%;padding:10px 12px;border:1px solid rgba(151,116,44,.45);border-radius:10px;background:#fffdf6;color:var(--ink);font:inherit;font-size:15px}
.cs-filter:focus{outline:2px solid var(--brass);outline-offset:0}
.cs-empty{padding:14px 16px;color:var(--ink-dim);font-size:.92rem}
.lm-opt[hidden],.lm-group[hidden]{display:none!important}
.lm-opt.is-disabled{opacity:.45;cursor:default}
/* Search forms: the submit button always comes after every field.
   (DOM order fixed in the templates; these rules place it.) */
.searchbar{grid-template-columns:1fr 1fr 1fr 1fr auto}
.searchbar.sb6{grid-template-columns:1fr 1fr 1fr 1fr 1fr auto}
.searchbar.sb5{grid-template-columns:1fr 1fr 1fr 1fr auto}
@media (max-width:960px){
  .searchbar,.searchbar.sb6,.searchbar.sb5{grid-template-columns:1fr 1fr}
  .searchbar .btn{grid-column:1/-1}
}
@media (max-width:640px){
  .searchbar,.searchbar.sb6,.searchbar.sb5{grid-template-columns:minmax(0,1fr)}
  .hero-pass{transform:none}
}
/* ---------- Homepage match calendar ---------- */
.cal-card{background:linear-gradient(180deg,var(--panel),var(--ground2));border:1px solid var(--hair);border-radius:20px;padding:20px 20px 14px;margin:26px 0 6px}
.cal-head{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap}
.cal-head h2{font-family:var(--serif);font-size:1.35rem;margin:0;color:var(--cream);letter-spacing:.04em}
.cal-sub{color:var(--tx-dim);font-size:.9rem;margin:6px 0 0}
.cal-nav{display:flex;align-items:center;gap:8px;flex:1 1 auto;justify-content:center}
.cal-month{font-family:var(--serif);font-size:1.02rem;color:var(--brass-hi);min-width:8.4em;text-align:center}
.cal-arrow{width:34px;height:34px;border-radius:50%;border:1px solid var(--hair);background:transparent;color:var(--brass-hi);font-size:1.3rem;line-height:1;cursor:pointer;font-family:inherit}
.cal-arrow:disabled{opacity:.3;cursor:default}
/* ---------- branded date picker (V2.4.1) ---------- */
.dp-wrap{position:relative}
.dp-native{position:absolute!important;opacity:0;pointer-events:none;width:1px!important;height:1px;overflow:hidden}
.dp-trigger{display:flex;align-items:center;justify-content:space-between;gap:10px;width:100%;box-sizing:border-box;min-height:50px;padding:12px 14px;border:1px solid var(--hair);border-radius:12px;background:rgba(238,228,208,.03);color:var(--tx-mute);font:inherit;font-size:1rem;text-align:left;cursor:pointer}
.dp-trigger .dp-ico{color:var(--brass);flex:none}
.dp-trigger.has-value{color:var(--cream)}
.dp-trigger:active{border-color:var(--brass)}
.dp-panel{position:absolute;left:0;top:calc(100% + 8px);z-index:42;width:min(330px,86vw);background:linear-gradient(180deg,var(--panel),var(--ground2));border:1px solid var(--hair);border-radius:18px;padding:16px 16px 12px;box-shadow:0 24px 60px rgba(0,0,0,.55)}
.dp-panel .lm-sheet-handle{display:none}
.dp-head{justify-content:space-between;margin-bottom:2px}
.dp-week{margin:10px 0 6px}
.dp-legend{margin-top:12px}
.cal-day.sel{border-color:var(--brass);box-shadow:inset 0 0 0 1px var(--brass);background:rgba(216,178,106,.14);color:var(--cream)}
.my-item{min-width:0}
.pass-host .pass-status{margin-left:auto}
.pass-sf{display:inline-flex;align-items:center;gap:5px;background:linear-gradient(135deg,#8a2f3d,#6d1f2d);color:#f9ecd9;font-weight:700;font-size:.76rem;letter-spacing:.1em;border:1px solid rgba(216,178,106,.75);border-radius:999px;padding:3px 11px;animation:lmSfPulse 1.8s ease-in-out infinite}
@keyframes lmSfPulse{0%{box-shadow:0 0 0 0 rgba(138,47,61,.5)}55%{box-shadow:0 0 0 8px rgba(138,47,61,0)}100%{box-shadow:0 0 0 0 rgba(138,47,61,0)}}
@media (prefers-reduced-motion: reduce){.pass-sf{animation:none}}
.pass-nextday{display:inline-block;margin-left:7px;font-size:.68rem;letter-spacing:.1em;color:var(--wine-deep);border:1px solid rgba(122,38,51,.5);border-radius:999px;padding:1px 7px;vertical-align:2px}
.posted-ok{max-width:640px;margin-top:26px;background:linear-gradient(135deg,#f7efdb,#efe3c6);color:var(--ink);border:1px solid rgba(176,141,87,.55);border-radius:14px;padding:20px 22px;box-shadow:var(--shadow-pass)}
.posted-ok-t{font-family:var(--serif);font-size:1.3rem;font-weight:700;color:#5d4020}
.posted-ok p{margin:8px 0 0;line-height:1.8;color:#5d4a30}
.posted-ok-links{display:flex;gap:20px;flex-wrap:wrap;margin-top:14px}
.posted-ok-links a{color:var(--wine-deep);font-weight:700;font-size:.88rem;letter-spacing:.08em;text-decoration:none}
.pass-gender{flex:none;font-size:.72rem;letter-spacing:.08em;color:#8a6a26;background:rgba(216,178,106,.22);border:1px solid rgba(138,106,38,.45);border-radius:999px;padding:2px 8px}
.chip-gender{color:var(--brass-hi);border-color:rgba(216,178,106,.5)}
.row-del{flex:none;width:34px;height:34px;border-radius:50%;border:1px solid var(--hair);background:transparent;color:var(--tx-dim);font-size:1.05rem;line-height:1;cursor:pointer;padding:0}
#progAdd{margin-top:10px}
.my-actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-top:10px}
.my-actions form{display:flex;gap:8px;flex-wrap:wrap}
.cal-loc-btn{flex:none;border:1px solid var(--hair);background:transparent;color:var(--brass-hi);border-radius:999px;padding:9px 14px;font-size:.85rem;cursor:pointer;font-family:inherit;letter-spacing:.06em}
.cal-loc-btn:active{transform:scale(.97)}
.cal-loc-note{margin:10px 0 0;color:var(--brass-hi);font-size:.88rem}
.cal-active{margin:14px 2px 0;color:var(--tx-dim);font-size:.92rem}
.cal-active b{color:var(--brass-hi);font-variant-numeric:tabular-nums}
.cal-active a{color:var(--brass-hi);text-decoration:underline;text-underline-offset:3px}
button.cal-day{font:inherit;background:none;cursor:pointer;width:100%}
button.cal-day.past{cursor:default}
.dp-day.dp-selected{border-color:var(--brass);background:rgba(223,160,80,.18);color:var(--cream)}
.dp-foot{display:flex;justify-content:space-between;margin-top:12px;padding-top:10px;border-top:1px solid rgba(238,228,208,.09)}
.dp-foot button{background:none;border:0;color:var(--brass-hi);font:inherit;font-size:.92rem;cursor:pointer;padding:6px 4px;letter-spacing:.08em}
.dp-wrap.is-sheet .dp-panel{position:fixed;left:0;right:0;top:auto;bottom:0;width:auto;border-radius:20px 20px 0 0;animation:lmSheet .18s ease-out;padding-bottom:calc(12px + env(safe-area-inset-bottom));z-index:80}
.dp-wrap.is-sheet .dp-panel .lm-sheet-handle{display:block;width:44px;height:4px;border-radius:2px;background:rgba(223,160,80,.5);margin:2px auto 10px}

/* ---------- reviews & score (V2.4.0) ---------- */
.stars{position:relative;display:inline-block;font-size:.95rem;line-height:1;letter-spacing:.14em;vertical-align:-1px}
.stars .stars-bg{color:rgba(238,228,208,.18)}
.stars .stars-fg{position:absolute;left:0;top:0;overflow:hidden;white-space:nowrap;background:linear-gradient(100deg,#b98c3e,#dfa050 55%,#f3d489);-webkit-background-clip:text;background-clip:text;color:transparent}
.rate-chip{display:inline-flex;align-items:center;gap:3px;padding:3px 10px;border:1px solid rgba(223,160,80,.45);border-radius:999px;color:var(--cream);font-size:.8rem;letter-spacing:.04em;text-decoration:none;background:linear-gradient(180deg,rgba(223,160,80,.14),rgba(223,160,80,.05));vertical-align:2px}
.rate-chip .rate-star{color:var(--brass-hi)}
.rate-chip b{font-variant-numeric:tabular-nums}
.rate-chip-new{color:var(--tx-mute);border-color:rgba(238,228,208,.18);background:none}
.score-layout{display:flex;gap:28px;align-items:center;flex-wrap:wrap}
.gauge{position:relative;width:132px;height:132px;flex:none}
.gauge-svg{width:132px;height:132px;transform:rotate(-90deg)}
.gauge-track{fill:none;stroke:rgba(238,228,208,.1);stroke-width:7}
.gauge-ring{fill:none;stroke:url(#lmGaugeGold);stroke-width:7;stroke-linecap:round;transition:stroke-dashoffset 1.4s cubic-bezier(.22,.8,.26,1)}
.gauge-center{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px}
.gauge-num{font-family:var(--serif-d);font-size:2.3rem;font-weight:500;color:var(--cream);line-height:1;font-variant-numeric:tabular-nums}
.gauge-stars .stars{font-size:.78rem}
.gauge-cap{color:var(--tx-mute);font-size:.78rem;letter-spacing:.18em}
.gauge-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;border:1px dashed rgba(238,228,208,.2);border-radius:50%}
.gauge-empty .gauge-num{color:var(--tx-mute)}
.score-side{flex:1;min-width:230px}
.dist{display:flex;flex-direction:column;gap:5px}
.dist-row{display:flex;align-items:center;gap:10px;font-size:.82rem;color:var(--tx-mute)}
.dist-lab{width:30px;font-variant-numeric:tabular-nums}
.dist-track{flex:1;height:5px;border-radius:99px;background:rgba(238,228,208,.09);overflow:hidden}
.dist-fill{display:block;height:100%;width:0;border-radius:99px;background:linear-gradient(90deg,#8a6a2f,#dfa050,#f3d489);transition:width 1.2s cubic-bezier(.22,.8,.26,1)}
.dist-n{width:22px;text-align:right;font-variant-numeric:tabular-nums}
.tag-cloud{display:flex;flex-wrap:wrap;gap:7px;margin-top:14px}
.tag-pill{padding:4px 11px;border:1px solid rgba(223,160,80,.4);border-radius:999px;font-size:.8rem;color:var(--cream);background:rgba(223,160,80,.07)}
.review-list{margin-top:22px;border-top:1px solid rgba(238,228,208,.1)}
.review-item{padding:16px 2px;border-bottom:1px solid rgba(238,228,208,.08)}
.review-item header{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.review-item header a{color:var(--cream);font-weight:600;text-decoration:none}
.review-item header small{color:var(--tx-mute);letter-spacing:.1em}
.review-item .tag-cloud{margin-top:9px}
.review-item p{margin:9px 0 0;color:var(--tx)}
.review-item .tag-pill{font-size:.75rem;padding:3px 9px}
.score-empty-note{color:var(--tx-mute);line-height:1.8}
.score-mini{display:flex;align-items:center;justify-content:space-between;gap:14px;flex-wrap:wrap;margin-bottom:18px}
.score-mini-line{margin:4px 0 0;font-variant-numeric:tabular-nums}
.score-mini-line b{font-size:1.15rem}
.review-cta{margin-top:16px;padding:16px;border:1px solid rgba(223,160,80,.5);border-radius:14px;background:linear-gradient(160deg,rgba(223,160,80,.13),rgba(223,160,80,.03))}
.review-cta p{margin:0 0 12px;line-height:1.75}
.review-done-note{margin-top:14px;color:var(--brass-hi)}
.review-wrap{max-width:620px;margin:26px auto 0}
.review-meta{color:var(--tx-mute);letter-spacing:.06em}
.review-blind{color:var(--tx-mute);line-height:1.8;font-size:.92rem;border-left:2px solid var(--brass);padding-left:12px}
.review-label{margin:22px 0 10px;letter-spacing:.14em;color:var(--cream)}
.star-input{display:flex;gap:6px;margin-top:8px}
.star-opt{cursor:pointer}
.star-opt input{position:absolute;opacity:0;pointer-events:none}
.star-opt span{font-size:2.5rem;line-height:1;color:rgba(238,228,208,.16);transition:color .18s,transform .18s,text-shadow .18s;display:block}
.star-opt.on span{background:linear-gradient(160deg,#f3d489,#dfa050 60%,#b98c3e);-webkit-background-clip:text;background-clip:text;color:transparent;text-shadow:none;transform:translateY(-2px)}
.star-hint{color:var(--brass-hi);min-height:1.5em;letter-spacing:.08em;margin:8px 0 0}
.tag-picker{display:flex;flex-wrap:wrap;gap:8px}
.tag-chip{cursor:pointer}
.tag-chip input{position:absolute;opacity:0;pointer-events:none}
.tag-chip span{display:inline-block;padding:8px 14px;border:1px solid rgba(238,228,208,.22);border-radius:999px;color:var(--tx-mute);transition:all .18s}
.tag-chip.on span{border-color:var(--brass);color:#241a08;background:linear-gradient(160deg,#f3d489,#dfa050);font-weight:600}
.review-form textarea{width:100%;box-sizing:border-box}
@media (prefers-reduced-motion:reduce){.gauge-ring,.dist-fill{transition:none}}
.cal-filter{display:flex;flex-direction:column;gap:7px;margin-top:18px}
.cal-filter label{color:var(--tx-mute);font-size:.8rem;letter-spacing:.16em}
.cal-filter select{width:100%;min-width:0}
.cal-week,.cal-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:6px}
.cal-week{margin:18px 0 8px;padding-bottom:9px;border-bottom:1px solid var(--hair);color:var(--tx-mute);font-size:.78rem;letter-spacing:.18em;text-align:center}
.cal-week span{position:relative}
.cal-week span.today-wd{color:var(--brass-hi)}
.cal-week span.today-wd::after{content:'';position:absolute;left:50%;bottom:-6px;transform:translateX(-50%);width:4px;height:4px;border-radius:50%;background:var(--brass-hi)}
.cal-day{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;min-height:58px;padding:6px 0 5px;border-radius:12px;border:1px solid rgba(216,178,106,.08);background:rgba(238,228,208,.02);color:var(--tx-dim);text-decoration:none;font-size:.98rem}
.cal-day b{font-weight:500;font-variant-numeric:tabular-nums;line-height:1.15}
a.cal-day:hover{border-color:rgba(216,178,106,.35);background:rgba(216,178,106,.08)}
.cal-day.past{opacity:.38;background:rgba(238,228,208,.01)}
.cal-day.has{color:var(--cream)}
.cal-day.has b{font-weight:700}
.cal-day.h1{background:rgba(216,178,106,.06)}
.cal-day.h2{background:rgba(216,178,106,.11);border-color:rgba(216,178,106,.2)}
.cal-day.h3{background:rgba(216,178,106,.17);border-color:rgba(216,178,106,.34)}
.cal-day.today{border-color:var(--brass);box-shadow:inset 0 0 0 1px var(--brass);background:rgba(216,178,106,.13);color:var(--cream);opacity:1}
.cal-day.today b{color:var(--brass-hi);font-weight:700}
.cal-day.sel{border-color:var(--brass);box-shadow:inset 0 0 0 1px var(--brass);background:rgba(216,178,106,.2);color:var(--cream);opacity:1}
.cal-meta{display:flex;align-items:center;gap:5px;height:12px}
.cal-day small{font-size:.7rem;color:var(--brass-hi);line-height:1;font-weight:600;font-variant-numeric:tabular-nums}
.cal-dots{display:flex;gap:3px;align-items:center}
.dot{width:6px;height:6px;border-radius:50%;display:inline-block;flex:none}
.dot-flight{background:var(--brass-hi)}
.dot-dog{background:#c06a76}
.cal-legend{display:flex;gap:16px;align-items:center;margin-top:14px;padding-top:12px;border-top:1px solid var(--hair);color:var(--tx-mute);font-size:.8rem;flex-wrap:wrap}
.cal-legend .dot{margin-right:6px;vertical-align:1px}
.cal-count-note{margin-left:auto}
.cal-loading{grid-column:1/-1;text-align:center;color:var(--tx-mute);padding:30px 0;letter-spacing:.5em}
@media (max-width:640px){.cal-day{min-height:54px;font-size:.94rem}.cal-card{padding:18px 14px 12px}.cal-week,.cal-grid{gap:5px}}
/* iOS Safari zooms the page when a focused input renders under 16px — keep mobile form text at 16px. */
@media (max-width:820px){input,select,textarea{font-size:16px}}
/* ---------- Homepage app band (install) ---------- */
.app-band{display:flex;align-items:center;gap:20px;background:linear-gradient(120deg,rgba(216,178,106,.13),rgba(216,178,106,.05) 55%,rgba(216,178,106,.1));border:1px solid var(--hair);border-radius:20px;padding:22px 26px;margin:8px 0 6px}
.app-band[hidden]{display:none}
.app-band-icon{width:76px;height:76px;border-radius:18px;flex:none;box-shadow:0 10px 26px rgba(0,0,0,.4)}
.app-band-text{flex:1;min-width:0}
.app-band-text h2{font-family:var(--serif);font-size:1.32rem;letter-spacing:.05em;margin:0 0 6px;color:var(--cream)}
.app-band-text p{margin:0;color:var(--tx-dim);font-size:.94rem;line-height:1.75}
.app-band-btn{flex:none;padding:14px 30px;font-size:1rem}
@media (max-width:640px){
  .app-band{flex-direction:column;text-align:center;padding:24px 20px;gap:14px}
  .app-band-btn{width:100%}
}
/* ---------- Back-to-top plane ---------- */
.to-top{position:fixed;right:18px;bottom:calc(18px + env(safe-area-inset-bottom));z-index:60;width:54px;height:54px;border-radius:50%;background:linear-gradient(160deg,#2b1c0a,#1a1106);border:1px solid var(--brass);cursor:pointer;display:flex;align-items:center;justify-content:center;box-shadow:0 12px 30px rgba(0,0,0,.5);opacity:0;transform:translateY(14px);pointer-events:none;transition:opacity .3s,transform .3s}
.to-top[hidden]{display:none}
.to-top.show{opacity:1;transform:none;pointer-events:auto}
.to-top svg{width:25px;height:25px;transition:transform .35s}
.to-top svg path{fill:var(--brass-hi)}
.to-top-trail{position:absolute;left:50%;top:64%;width:2px;height:12px;transform:translateX(-50%);background:linear-gradient(180deg,rgba(216,178,106,.75),transparent);border-radius:2px;opacity:0;transition:opacity .3s}
.to-top:hover svg{transform:translateY(-3px)}
.to-top:hover .to-top-trail{opacity:1}
.to-top.launch svg{transform:translateY(-30px);opacity:0;transition:transform .45s ease-in,opacity .45s}
.to-top.launch .to-top-trail{opacity:1;height:20px}
/* ---------- App mode: bottom tab bar + native chrome (standalone only) ---------- */
.tabbar{display:none;position:fixed;left:0;right:0;bottom:0;z-index:70;background:rgba(23,16,8,.93);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);border-top:1px solid var(--hair);padding:8px 6px calc(8px + env(safe-area-inset-bottom))}
.tabbar a{flex:1;display:flex;flex-direction:column;align-items:center;gap:3px;color:var(--tx-mute);text-decoration:none;font-size:.64rem;letter-spacing:.22em;padding:4px 0 2px;position:relative;border-radius:12px}
.tabbar a svg{width:24px;height:24px}
.tabbar a.on{color:var(--brass-hi)}
.tabbar a:active{background:rgba(216,178,106,.08)}
.tabbar .tab-create{justify-content:flex-start}
.tabbar .tab-plus{width:47px;height:47px;border-radius:50%;background:linear-gradient(135deg,#e8c87a,#c9a24b);color:#2a1e0e;display:grid;place-items:center;margin-top:-24px;box-shadow:0 10px 24px rgba(0,0,0,.5),0 0 0 5px rgba(23,16,8,.93)}
.tabbar .tab-plus svg{width:23px;height:23px}
.tabbar .tab-badge{position:absolute;top:0;right:calc(50% - 21px);background:var(--wine);color:#f7e8e9;font-size:.62rem;font-weight:700;min-width:17px;height:17px;border-radius:99px;display:grid;place-items:center;padding:0 4px;letter-spacing:0}
@media (display-mode: standalone){
  .tabbar{display:flex}
  body{padding-bottom:calc(66px + env(safe-area-inset-bottom))}
  .sitefoot{display:none}
  .to-top{bottom:calc(88px + env(safe-area-inset-bottom))}
  body{touch-action:manipulation;-webkit-tap-highlight-color:transparent}
  main{animation:lmAppIn .28s ease}
}
html.standalone .tabbar{display:flex}
html.standalone body{padding-bottom:calc(66px + env(safe-area-inset-bottom))}
html.standalone .sitefoot{display:none}
/* ---------- about page (V2.4.1) ---------- */
.about-wrap{max-width:560px;margin:34px auto 0;text-align:center}
.about-mark{width:92px;height:92px;margin:0 auto}
.about-brand{font-family:var(--serif-d);font-size:2rem;color:var(--cream);margin:14px 0 2px}
.about-sub{color:var(--brass-hi);letter-spacing:.34em;font-size:.78rem;text-transform:uppercase;margin:0 0 26px}
.about-story{color:var(--tx);line-height:2.05;text-align:left;margin:0 0 18px}
.about-meta{margin:30px auto 0;max-width:420px;border-top:1px solid rgba(238,228,208,.12);padding-top:20px;color:var(--tx-mute);line-height:2.1;font-size:.92rem;letter-spacing:.08em}
.about-meta b{color:var(--cream);font-variant-numeric:tabular-nums}
.about-links{display:flex;gap:10px;justify-content:center;margin-top:22px;flex-wrap:wrap}
.my-about{display:flex;align-items:center;justify-content:space-between;gap:12px;text-decoration:none;color:var(--cream)}
.my-about small{color:var(--tx-mute);letter-spacing:.14em;font-variant-numeric:tabular-nums}
html.standalone .to-top{bottom:calc(88px + env(safe-area-inset-bottom))}
html.standalone body{touch-action:manipulation;-webkit-tap-highlight-color:transparent}
html.standalone main{animation:lmAppIn .28s ease}
@keyframes lmAppIn{from{opacity:0}to{opacity:1}}
/* ---------- PWA: brand logo image + install hint modal ---------- */
.brand-logo{height:46px;width:auto;display:block;flex:none}
.pwa-modal{position:fixed;inset:0;z-index:80;background:rgba(16,10,4,.66);display:flex;align-items:center;justify-content:center;padding:22px}
.pwa-modal[hidden]{display:none}
.pwa-card{background:linear-gradient(160deg,#241708,#1a1106);border:1px solid var(--hair);border-radius:18px;max-width:340px;width:100%;padding:28px 24px 24px;text-align:center;box-shadow:0 24px 60px rgba(0,0,0,.5)}
.pwa-card img{width:84px;height:auto;margin:0 auto 12px;display:block}
.pwa-card h3{font-family:var(--serif);font-size:1.2rem;letter-spacing:.05em;margin:0 0 10px;color:var(--cream)}
.pwa-card p{color:var(--tx-dim);font-size:.92rem;line-height:1.8;margin:0 0 18px;text-align:left}
/* ---------- cabin class ---------- */
.pass-class{flex:none;display:inline-block;font-family:var(--sans);font-size:.7rem;font-weight:600;letter-spacing:.12em;color:#f7f1e7;background:var(--wine-deep);border:1px solid var(--brass);border-radius:999px;padding:.08rem .5rem;line-height:1.5;white-space:nowrap}
.lm-opt-class{color:var(--wine-deep);border:1px solid var(--brass);border-radius:999px;padding:.05rem .45rem}
.lm-opt-meta + .lm-opt-class{margin-left:8px}
.class-warn{margin-top:10px;font-size:.85rem;color:var(--wine-deep)}
.hint{display:block;font-size:.78rem;opacity:.75;margin-top:4px}

.pass-wrap{display:flex;flex-direction:column}.pass-admin{display:flex;gap:12px;align-items:center;justify-content:flex-end;margin-top:8px;font-size:.8rem;color:var(--muted)}.pass-admin a{color:var(--brass);text-decoration:none}.pass-admin form{margin:0}.pass-admin button{background:none;border:0;padding:0;font:inherit;color:var(--wine);cursor:pointer}

.lounge-multi{margin:2px 0 6px}.lounge-chips{display:flex;flex-wrap:wrap;gap:8px;margin:8px 0}.lounge-chip{display:inline-flex;align-items:center;gap:7px;background:linear-gradient(135deg,var(--cream),var(--cream2));border:1px solid var(--brass-lo,#b08d46);color:var(--ink);border-radius:999px;padding:5px 8px 5px 13px;font-size:.88rem}.lounge-chip-x{background:none;border:0;color:var(--wine);font-size:1rem;line-height:1;cursor:pointer;padding:2px 4px}.pass-more{display:inline-block;margin-left:8px;font-size:.72rem;letter-spacing:.06em;color:var(--brass);border:1px solid var(--brass-lo,#b08d46);border-radius:999px;padding:1px 8px;vertical-align:2px}.pass-any{font-style:italic}

#results{scroll-margin-top:86px}.results-count{font-family:var(--serif);color:var(--brass);letter-spacing:.08em;margin:14px 2px 0}

.admin-actions{display:flex;flex-wrap:wrap;gap:10px;align-items:center}.admin-actions form{display:flex;flex-wrap:wrap;gap:10px;margin:0}.detail-report{margin:16px 0 0;text-align:right;font-size:.85rem}.detail-report a{color:var(--muted);text-decoration:none}.detail-report a:hover{color:var(--wine)}

.trust-seal{display:inline-block;padding:2px 10px;border-radius:999px;background:linear-gradient(120deg,#f3d489,#dfa050 55%,#b97f33);color:#2a1e0c;font-size:.74rem;font-weight:700;letter-spacing:.06em;vertical-align:middle;box-shadow:0 2px 8px rgba(223,160,80,.35)}.trust-meets{color:var(--muted);font-size:.82rem}.profile-trust{margin-top:10px;display:flex;gap:8px;align-items:center;flex-wrap:wrap}

.nearby-head{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap}.nearby-head h2{margin:0}.nearby-hint{color:var(--muted);font-size:.9rem;margin:8px 0 0}.nearby-note{color:var(--muted);margin:12px 0 0}.nearby-group{margin-top:20px}.nearby-group h3{font-family:var(--serif);font-size:1.05rem;margin:0 0 10px}.nearby-group h3 a{color:var(--cream);text-decoration:none}.nearby-km{color:var(--brass);font-size:.85rem;font-family:var(--sans)}

.nearby-pm-row{margin:2px 2px 10px;text-align:right}.nearby-pm{color:var(--brass);font-size:.85rem;text-decoration:none;border:1px solid rgba(201,162,75,.45);padding:4px 12px;border-radius:999px}.nearby-pm:hover{background:rgba(201,162,75,.14)}

.pending-note{color:var(--brass);font-weight:600}.match-row{display:flex;align-items:center;gap:10px}.match-row-main{flex:1;display:flex;align-items:center;gap:10px;text-decoration:none;color:inherit;min-width:0}.match-row-main>span:first-child{flex:1}.match-row.needs-reply{border-color:rgba(201,162,75,.65);background:rgba(201,162,75,.07)}.match-row-actions{display:flex;gap:6px;flex-shrink:0}.match-row-actions form{margin:0}#matchDetail{scroll-margin-top:84px}

.tier-badge{display:inline-block;padding:2px 10px;border-radius:999px;border:1px solid rgba(201,162,75,.55);color:var(--brass-hi,#e3c878);font-size:.74rem;font-weight:700;letter-spacing:.08em;vertical-align:middle}
.tier-badge.t3{background:rgba(201,162,75,.14)}
.tier-badge.t4{background:linear-gradient(120deg,rgba(243,212,137,.28),rgba(185,127,51,.28));border-color:#c9a24b;color:#f3d489}
.tier-badge.t5{background:linear-gradient(120deg,#f3d489,#dfa050 55%,#b97f33);color:#2a1e0c;border-color:#dfa050;box-shadow:0 2px 8px rgba(223,160,80,.35)}
.tier-badge.big{font-size:.9rem;padding:5px 16px}
.tier-now{display:flex;align-items:center;gap:14px;flex-wrap:wrap}
.tier-count{color:var(--muted)}
.tier-bar{margin-top:14px;height:6px;border-radius:99px;background:rgba(201,162,75,.18);overflow:hidden}
.tier-bar i{display:block;height:100%;background:linear-gradient(90deg,#c9a24b,#f3d489);border-radius:99px}
.tier-next{color:var(--muted);margin:10px 0 0}
.feat-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:14px;margin-top:16px}
.feat-card{border:1px solid rgba(201,162,75,.25);border-radius:14px;padding:16px 18px;background:rgba(201,162,75,.04)}
.feat-card h3{margin:0 0 8px;font-family:var(--serif);color:var(--cream);font-size:1.02rem}
.feat-card p{margin:0;color:var(--muted);line-height:1.8;font-size:.92rem}
.tier-ladder{margin-top:16px;border:1px solid rgba(201,162,75,.25);border-radius:14px;overflow:hidden}
.tier-row{display:flex;align-items:center;gap:14px;padding:13px 18px;border-bottom:1px dashed rgba(201,162,75,.18)}
.tier-row:last-child{border-bottom:0}
.tier-row .tier-from{margin-left:auto;color:var(--muted);font-size:.88rem;white-space:nowrap}
.about-sec{max-width:860px;margin:34px auto 0;text-align:left}
.about-sec h2{font-family:var(--serif);color:var(--cream)}
.about-sec .lead{color:var(--muted);line-height:1.9}

.flow-steps{margin-top:16px}
.flow-step{display:flex;gap:18px;padding:18px 4px;border-bottom:1px dashed rgba(201,162,75,.18)}
.flow-step:last-child{border-bottom:0}
.flow-num{flex-shrink:0;width:40px;height:40px;border:1px solid #c9a24b;border-radius:50%;color:#e3c878;font-family:Georgia,serif;font-size:1.05rem;display:flex;align-items:center;justify-content:center;margin-top:2px}
.flow-step h3{margin:0 0 6px;font-family:var(--serif);color:var(--cream);font-size:1.05rem}
.flow-step p{margin:0;color:var(--muted);line-height:1.85}

.badge-row{display:flex;flex-wrap:wrap;gap:6px;align-items:center;margin-top:8px}

.host-cell{display:flex;flex-direction:column;gap:7px;align-items:flex-start}
.host-cell .badge-row{margin-top:0}
.chip{white-space:nowrap}
.pass-host{flex-wrap:wrap}
.host-line{flex-wrap:wrap;row-gap:6px}
.host-line a{white-space:nowrap}

/* 關於頁版權宣告加強（2026-10-28）：受控分行不拆詞、金飾分隔線、避開浮動回到頂部鈕 */
.about-meta{margin:34px auto 12px;padding:22px 16px 18px;text-align:center}
.about-meta .am-ver{font-size:.9rem;letter-spacing:.14em;color:var(--tx-mute)}
.about-meta .am-ver b{color:var(--cream);font-variant-numeric:tabular-nums}
.about-meta .am-rule{display:flex;align-items:center;gap:12px;margin:14px auto 12px;max-width:220px;color:var(--brass,#c9a24d)}
.about-meta .am-rule::before,.about-meta .am-rule::after{content:"";flex:1;height:1px;background:linear-gradient(90deg,transparent,rgba(216,178,106,.55),transparent)}
.about-meta .am-rule span{font-size:.7rem;line-height:1}
.about-meta .am-copy{font-size:.84rem;letter-spacing:.06em;line-height:2;color:var(--tx-mute)}
.about-meta .am-l{display:block;white-space:nowrap}
@media (max-width:380px){.about-meta .am-l{white-space:normal}}

.tabbar-6 a{letter-spacing:.1em}
.tabbar a.tab-create-flat{color:var(--brass-hi)}

/* Request passes print on sage stock (Mars 2026-10-28): same invitation family, second paper. */
.pass-request{background:linear-gradient(135deg,#eef1e3 0%,#e0e7d0 78%,#ccd9b8 100%)}

/* 回頂飛機飛行（2026-10-29）：按下後飛機脫離按鈕，沿弧線在畫面上飛向頂端 */
.to-top-fly{position:fixed;z-index:1200;width:40px;height:40px;margin:-20px 0 0 -20px;pointer-events:none;color:var(--brass-hi);filter:drop-shadow(0 8px 16px rgba(0,0,0,.5));will-change:transform,opacity}
.to-top-fly svg{width:100%;height:100%;display:block}
.to-top-fly svg path{fill:var(--brass-hi)}
.to-top-fly .to-top-trail{display:none}
.to-top-fly .fly-trail{position:absolute;left:50%;top:88%;width:3px;height:44px;transform:translateX(-50%);transform-origin:50% 0;border-radius:3px;background:linear-gradient(180deg,rgba(216,178,106,.85),rgba(216,178,106,0));opacity:0}

/* App band on phones: the title is a display line — centre it (and its gold rule); body stays left. */
@media (max-width:640px){
  .app-band-text h2{text-align:center}
  .app-band-text h2::after{margin-left:auto;margin-right:auto;background:linear-gradient(90deg,transparent,var(--brass),transparent)}
}
.results-watch{margin:2px 0 12px;font-size:.86rem;letter-spacing:.06em}
.results-watch a{color:var(--brass-hi);text-decoration:none;border-bottom:1px solid rgba(216,178,106,.35);padding-bottom:1px}
.met-note{align-self:center;font-size:.86rem;color:var(--brass-hi);letter-spacing:.05em}
.passport-sub{color:var(--ink);opacity:.75;margin:.2rem 0 14px}
.stamp-wall{display:flex;flex-wrap:wrap;gap:14px}
.stamp{width:118px;padding:12px 8px 10px;border:1.6px solid var(--brass);border-radius:12px;text-align:center;transform:rotate(-2deg);background:radial-gradient(circle at 30% 20%,rgba(201,162,75,.14),transparent 70%);box-shadow:inset 0 0 0 3px rgba(201,162,75,.18)}
.stamp:nth-child(2n){transform:rotate(1.6deg)}
.stamp:nth-child(3n){transform:rotate(-1deg)}
.stamp-code{display:block;font-family:Georgia,'Times New Roman',serif;font-size:1.45rem;letter-spacing:.14em;color:var(--brass-hi)}
.stamp-city{display:block;font-size:.82rem;margin-top:2px}
.stamp-meta{display:block;font-size:.72rem;opacity:.65;letter-spacing:.08em;margin-top:3px}
.lang-switch{display:inline-flex;gap:2px;align-items:center}
.lang-switch a{padding:2px 7px;border-radius:999px;font-size:.82rem;letter-spacing:.04em;opacity:.75}
.lang-switch a.on{opacity:1;color:var(--brass-hi);box-shadow:inset 0 0 0 1px var(--brass)}

/* ---- Lounge reviews (V2.31.0) ---- */
.lr-head{margin-bottom:14px}
.lr-head-code{font-family:Georgia,serif;font-size:30px;letter-spacing:6px;color:var(--brass-hi)}
.lr-agg{display:flex;gap:22px;flex-wrap:wrap;align-items:flex-start;background:#251a10;border:1px solid #6e5626;border-radius:12px;padding:14px 16px;margin:12px 0}
.lr-agg-score{display:flex;flex-direction:column;gap:2px}
.lr-agg-num{font-family:Georgia,serif;font-size:34px;color:var(--cream);line-height:1}
.lr-agg-score small{color:#a68d5f;font-size:12px}
.lr-stars{color:#e3c878;letter-spacing:1px}
.lr-stars-off{color:#57452a}
.lr-facets{flex:1;min-width:210px;display:flex;flex-direction:column;gap:6px}
.lr-facet{display:flex;align-items:center;gap:10px;font-size:13px}
.lr-facet-label{width:64px;color:#c8b28a;flex:none}
.lr-bar{flex:1;height:6px;background:#3a2a16;border-radius:3px;overflow:hidden}
.lr-bar-fill{display:block;height:100%;background:linear-gradient(90deg,var(--brass-lo),var(--brass-hi));border-radius:3px}
.lr-facet-num{width:26px;text-align:right;color:var(--cream)}
.lr-cta{margin:10px 0 4px}
.lr-dir{display:flex;flex-direction:column;gap:8px}
.lr-dir-row{display:flex;justify-content:space-between;align-items:center;gap:12px;background:#251a10;border:1px solid #57451f;border-radius:10px;padding:12px 14px;text-decoration:none;color:var(--cream)}
.lr-dir-main{display:flex;flex-direction:column;gap:2px;min-width:0}
.lr-dir-name{font-weight:bold;overflow-wrap:anywhere}
.lr-dir-sub{font-size:12px;color:#a68d5f}
.lr-dir-score{flex:none;font-size:14px}
.lr-dir-score small{color:#a68d5f}
.lr-card{border:1px solid #57451f;border-radius:12px;padding:14px 16px;margin:0 0 12px;background:#20160d}
.lr-card-head{display:flex;justify-content:space-between;align-items:center;gap:10px}
.lr-card-user{display:flex;align-items:center;gap:9px;color:var(--cream);text-decoration:none;font-weight:bold}
.lr-badge{font-size:11px;letter-spacing:1px;color:#a68d5f;border:1px solid #57451f;border-radius:999px;padding:2px 9px;flex:none}
.lr-badge-verified{color:#241a10;background:#c9a24b;border-color:#c9a24b;font-weight:bold}
.lr-card-meta{margin-top:8px;font-size:14px;color:#c8b28a}
.lr-card-facets{display:flex;flex-wrap:wrap;gap:4px 16px;margin-top:6px;font-size:13px;color:#a68d5f}
.lr-card-facets strong{color:var(--cream)}
.lr-card-body{margin:10px 0 0;line-height:1.8;color:var(--cream)}
.lr-photos{display:grid;grid-template-columns:repeat(auto-fill,minmax(104px,1fr));gap:8px;margin-top:10px}
.lr-photos img{width:100%;height:96px;object-fit:cover;border-radius:8px;border:1px solid #57451f;display:block}
.lr-note{border:1px solid #6e5626;background:#251a10;border-radius:10px;padding:11px 14px;margin:0 0 14px;line-height:1.8}
.lr-form .form-row{margin-bottom:16px}
.lr-locked{padding:10px 12px;border:1px solid #57451f;border-radius:8px;background:#251a10}
.lr-rate-row{display:flex;align-items:center;gap:14px;padding:6px 0}
.lr-rate-label{width:64px;color:#c8b28a;font-size:14px;flex:none}
.lr-rate{position:relative;display:inline-flex;flex-direction:row-reverse;gap:2px}
.lr-rate input{position:absolute;opacity:0;pointer-events:none}
.lr-rate label{font-size:30px;color:#57452a;cursor:pointer;line-height:1;padding:2px}
.lr-rate input:checked ~ label{color:#e3c878}
.lr-rate label:hover,.lr-rate label:hover ~ label{color:#e3c878}
.lr-photo-edit{display:flex;flex-direction:column;gap:4px;font-size:12px;color:#c8b28a}
.lr-photo-edit img{height:96px}
.back-link{margin:0 0 6px;font-size:13px}
.back-link a{color:#a68d5f;text-decoration:none}
.pass-lr{position:relative;z-index:2;color:#8a6d2f;font-size:.82rem;font-weight:bold;text-decoration:none;white-space:nowrap;margin-left:8px}
.pass-request .pass-lr{color:#5f7161}
.lr-sort{font-size:13px;color:#a68d5f;margin:0 0 10px}
.lr-sort a{color:#a68d5f;text-decoration:none}
.lr-sort a.on{color:#e3c878;font-weight:bold}
.lr-helpful{margin-top:10px}
.lr-helpful .on{border-color:#c9a24b;color:#e3c878}
.lr-helpful-note{margin:10px 0 0;font-size:13px;color:#a68d5f}
.lr-rank-no{font-family:Georgia,serif;font-size:20px;color:#c9a24b;width:30px;flex:none;text-align:center}
.lr-wall{grid-template-columns:repeat(auto-fill,minmax(120px,1fr))}
.lr-wall img{height:110px}
a.admin-card{display:block;text-decoration:none;color:inherit}
.admin-nav{display:flex;flex-wrap:wrap;gap:8px}
.hub-banner{margin:0 0 12px}.hub-banner a{color:#c9a24b;text-decoration:none;font-size:.95rem}

/* ---- thanks wall + live stats (V2.44/2.45) ---- */
.tw-wall { display:grid; grid-template-columns:repeat(auto-fill,minmax(240px,1fr)); gap:12px; }
.tw-card { background:var(--panel2); border:1px solid var(--line); border-radius:14px; padding:14px 16px; }
.tw-line { font-size:1rem; margin-bottom:6px; }
.tw-meta { color:var(--tx-dim); font-size:.82rem; }
/* ---- verified membership (V2.43) ---- */
.mv-badge { display:inline-block; padding:1px 9px; border-radius:999px; background:linear-gradient(135deg,var(--brass-hi),var(--brass)); color:#241a08; font-size:.74rem; font-weight:700; vertical-align:middle; }
/* ---- round-trip block (V2.39) ---- */
.rt-block { border:1px dashed var(--line); border-radius:14px; padding:14px 16px; margin:0 0 16px; }

/* ---- pack 3 (V2.46–V2.53) ---- */
.live-chip { display:inline-block; padding:1px 9px; border-radius:999px; background:#7a2e22; color:#ffd9c9; font-size:.72rem; font-weight:700; letter-spacing:.06em; }
.sb-checks { display:flex; flex-direction:column; gap:6px; justify-content:flex-end; padding-bottom:4px; }
.my-stats { color:var(--tx-dim); font-size:.8rem; padding:6px 4px 0; }

/* ---- pack 4 (V2.54–V2.59) ---- */
.announce-bar { background:linear-gradient(90deg,var(--brass-lo),var(--brass),var(--brass-lo)); color:#241a08; text-align:center; padding:8px 14px; font-size:.9rem; font-weight:600; }
.crowd-box { margin:18px 0; }
.crowd-form { display:flex; flex-wrap:wrap; gap:10px; align-items:flex-end; margin-top:10px; }
.crowd-form label { display:flex; flex-direction:column; gap:4px; font-size:.82rem; color:var(--tx-dim); }
.badge-row { display:flex; flex-wrap:wrap; gap:8px; }
.ach-badge { display:inline-block; padding:3px 11px; border-radius:999px; border:1px solid var(--brass-lo); background:var(--panel2); color:var(--brass-hi); font-size:.8rem; }

/* ---- pack 5 (V2.60–V2.67) ---- */
.feed-list { max-width:640px; margin:0 auto; text-align:left; }
.feed-item { margin:0; padding:9px 4px; border-bottom:1px dashed var(--line); font-size:.92rem; }
.feed-tag { display:inline-block; min-width:74px; color:var(--brass-hi); font-weight:700; font-size:.8rem; }
.feed-item .tw-meta { float:right; }
.ss-save { display:flex; gap:8px; align-items:center; margin:10px 0 4px; flex-wrap:wrap; }
.ss-save input[type=text] { flex:1; min-width:160px; }
.thanks-form { display:flex; gap:8px; align-items:center; flex-wrap:wrap; }
.thanks-form input[type=text] { flex:1; min-width:170px; }
.tw-msg { color:var(--cream); margin-top:4px; font-size:.92rem; }
.trend-row { display:flex; align-items:center; gap:8px; margin:6px 0; font-size:.85rem; }
.trend-lab { width:44px; color:var(--tx-dim); }
.trend-bar { flex:1; height:10px; background:var(--panel2); border-radius:6px; overflow:hidden; }
.trend-bar i { display:block; height:100%; background:#7d8aa0; }
.trend-bar.gold i { background:var(--brass); }
.trend-n { width:26px; text-align:right; }

/* ---- feed wall, elevated (V2.67.3) ---- */
.feed-card { max-width:680px; margin:0 auto; background:linear-gradient(180deg, rgba(201,162,39,.08), rgba(201,162,39,0) 52%), var(--panel2); border:1px solid var(--line); border-radius:20px; padding:24px 20px 10px; box-shadow:0 18px 42px rgba(0,0,0,.38); }
.feed-kicker { text-align:center; color:var(--brass); letter-spacing:.34em; text-indent:.34em; font-size:.66rem; margin:0 0 8px; }
.feed-list { position:relative; margin-top:10px; max-width:none; }
.feed-list::before { content:""; position:absolute; left:22px; top:16px; bottom:16px; width:1px; background:linear-gradient(180deg, transparent, var(--brass-lo) 14%, var(--brass-lo) 86%, transparent); opacity:.5; }
.feed-item { display:flex; align-items:center; gap:12px; padding:11px 4px; position:relative; text-decoration:none; color:inherit; border-bottom:1px dashed rgba(201,162,39,.16); }
.feed-item:last-child { border-bottom:none; }
.feed-ic { flex:none; width:38px; height:38px; border-radius:50%; border:1px solid var(--brass-lo); background:var(--panel2); color:var(--brass-hi); display:flex; align-items:center; justify-content:center; font-size:.92rem; z-index:1; }
.feed-item:first-child .feed-ic { background:linear-gradient(135deg, var(--brass-hi), var(--brass-lo)); color:#241a08; border-color:transparent; box-shadow:0 0 0 4px rgba(201,162,39,.15); }
.feed-main { flex:1; min-width:0; display:flex; flex-direction:column; gap:2px; text-align:left; }
.feed-line1 { display:flex; align-items:center; gap:9px; }
.feed-tag { flex:none; min-width:0; font-size:.68rem; font-weight:700; letter-spacing:.08em; color:var(--brass-hi); border:1px solid var(--brass-lo); padding:2px 8px; border-radius:999px; background:rgba(201,162,39,.08); }
.feed-route { font-family:var(--serif); font-size:1.08rem; letter-spacing:.14em; color:var(--cream); }
.feed-item:hover .feed-route { color:var(--brass-hi); }
.feed-line2 { font-size:.8rem; color:var(--tx-dim); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.feed-time { flex:none; text-align:right; font-size:.72rem; color:var(--tx-dim); line-height:1.55; font-variant-numeric:tabular-nums; float:none; }

/* feed intro + full-detail lines (V2.67.4) */
.feed-intro { text-align:center; color:var(--tx-dim); font-size:.86rem; margin:2px auto 4px; max-width:520px; line-height:1.65; }
.feed-line2 { white-space:normal; overflow:visible; text-overflow:clip; line-height:1.55; }

/* feed, calmed (V2.67.5): no rail, no chips, no pills — type, place, one meta line */
.feed-list::before { display:none; }
.feed-item { display:block; padding:15px 2px 14px; border-bottom:1px solid rgba(201,162,39,.14); }
.feed-item:last-child { border-bottom:none; }
.feed-top { display:flex; align-items:baseline; gap:10px; }
.feed-tag { border:none; background:none; padding:0; border-radius:0; font-size:.74rem; font-weight:700; letter-spacing:.14em; color:var(--brass-hi); flex:none; }
.feed-route { font-size:1.05rem; letter-spacing:.1em; }
.feed-time { margin-left:auto; float:none; font-size:.72rem; color:var(--tx-dim); white-space:nowrap; }
.feed-line2 { display:block; margin-top:6px; font-size:.85rem; color:var(--tx-dim); line-height:1.6; }

/* feed intro: body text is left-aligned, titles may centre (V2.67.6) */
.feed-intro { text-align:left; margin-left:0; margin-right:0; }

/* V2.68.0: reply-rate chip, rules note, safety card, health rows, calmer match rows */
.rr-chip { display:inline-block; font-size:.72rem; letter-spacing:.06em; color:var(--brass-hi); border:1px solid rgba(201,162,39,.45); border-radius:999px; padding:1px 8px; vertical-align:1px; white-space:nowrap; }
.rules-note { font-size:.8rem; color:var(--tx-dim); border-left:2px solid var(--brass); padding-left:10px; line-height:1.6; }
.safety-card { margin-top:14px; }
.safety-list { margin:6px 0 2px; padding-left:18px; line-height:1.75; font-size:.88rem; color:var(--tx-dim); }
.safety-list li { margin:2px 0; }
.match-row { padding-top:13px; padding-bottom:13px; }
.health-row { display:flex; justify-content:space-between; gap:12px; padding:8px 0; border-bottom:1px solid rgba(201,162,39,.12); font-size:.88rem; }
.health-row:last-child { border-bottom:none; }
.health-act { color:var(--cream); }
.health-meta { color:var(--tx-dim); text-align:right; }

/* V2.69.0: for-you board section, flexible-time chip, onboarding checklist */
.foryou { margin:6px 0 20px; }
.foryou h2 { margin:0 0 2px; }
.foryou-sub { color:var(--tx-dim); font-size:.88rem; margin:0 0 12px; }
.pass-flex { color:var(--brass-hi); }
.ob-list { list-style:none; margin:8px 0 4px; padding:0; line-height:2; }
.ob-list li { color:var(--tx-dim); }
.ob-list li.done { color:var(--cream); }
.ob-list li .ob-mark { display:inline-block; width:22px; }

/* ---- admin-fix 2026-11-02：後台慣例（卡片可點按／子導覽 sticky／回饋） ---- */
.admin-card{position:relative;transition:border-color .18s ease,background .18s ease,transform .18s ease}
a.admin-card:hover{border-color:var(--brass);background:rgba(201,162,75,.08);text-decoration:none}
a.admin-card:active{transform:scale(.985)}
.admin-card-arrow{position:absolute;top:12px;right:14px;color:var(--brass);font-size:1rem;line-height:1;transition:transform .18s ease}
a.admin-card:hover .admin-card-arrow{transform:translateX(3px)}
.stat-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:14px;margin:20px 0}
.stat-card{position:relative;border:1px solid var(--hair-soft);border-radius:var(--r-md);padding:16px 18px;background:rgba(244,236,220,.02)}
.stat-num{font-family:var(--serif);font-size:1.7rem;color:var(--cream);line-height:1.15}
.stat-cap{color:var(--tx-mute);font-size:.85rem;margin-top:4px}
a.stat-card{display:block;text-decoration:none;color:inherit;transition:border-color .18s ease,background .18s ease,transform .18s ease}
a.stat-card:hover{border-color:var(--brass);background:rgba(201,162,75,.08);text-decoration:none}
a.stat-card:active{transform:scale(.985)}
.stat-card-arrow{position:absolute;top:12px;right:14px;color:var(--brass);font-size:1rem;line-height:1;transition:transform .18s ease}
a.stat-card:hover .stat-card-arrow{transform:translateX(3px)}
/* 後台子導覽：sticky 對齊固定頁首高度（頁首列高 72px，下方留 8px 間距，不被遮住） */
.admin-nav{position:sticky;top:80px;z-index:40;background:rgba(22,16,9,.92);backdrop-filter:blur(12px);border-radius:var(--r-md);padding:8px}

/* Meet-point photos (V2.75.0) */
.mp-box { margin:12px 0; }
.mp-title { font-size:.8rem; letter-spacing:.12em; color:var(--brass-hi); margin:0 0 6px; }
.mp-strip { display:flex; gap:8px; overflow-x:auto; padding-bottom:4px; }
.mp-strip a { flex:0 0 auto; }
.mp-strip img { width:132px; height:96px; object-fit:cover; border-radius:10px; border:1px solid var(--line); display:block; }
.mp-up { display:flex; flex-wrap:wrap; gap:8px; align-items:center; margin:10px 0; font-size:.85rem; }
.mp-up-label { color:var(--tx-dim); }
.mp-admin-grid { display:grid; grid-template-columns:repeat(auto-fill,minmax(170px,1fr)); gap:12px; }
.mp-admin-grid figure { margin:0; }
.mp-admin-grid img { width:100%; height:120px; object-fit:cover; border-radius:8px; display:block; }
.mp-admin-grid figcaption { font-size:.78rem; color:var(--tx-dim); margin:4px 0; }

/* Travel radar (V2.76.0) */
.radar-trip { font-size:.86rem; letter-spacing:.14em; color:var(--brass-hi); margin:18px 0 8px; font-weight:600; }

/* Split-flap flight board (V2.77.0) */
.fb-board { margin:14px 0; padding:14px 14px 10px; border-radius:14px; border:1px solid rgba(201,162,39,.35);
  background:linear-gradient(180deg,#1c150b,#120d06); box-shadow:inset 0 1px 0 rgba(243,227,187,.08), 0 10px 24px rgba(0,0,0,.35); }
.fb-head { display:flex; justify-content:space-between; align-items:center; margin-bottom:10px; }
.fb-title { font-size:.8rem; letter-spacing:.14em; color:var(--brass-hi); font-weight:600; }
.fb-status { font-size:.78rem; letter-spacing:.1em; padding:2px 10px; border-radius:999px; border:1px solid var(--line); color:var(--cream2); }
.fb-status.st-delayed { color:#e8a13a; border-color:rgba(232,161,58,.5); }
.fb-status.st-cancelled { color:#e05a4e; border-color:rgba(224,90,78,.5); }
.fb-status.st-enroute { color:#8fce8f; border-color:rgba(143,206,143,.45); }
.fb-status.st-landed { color:var(--brass-hi); border-color:rgba(201,162,39,.5); }
.fb-flight { margin-bottom:8px; }
.fb-leg { display:flex; align-items:center; gap:10px; flex-wrap:wrap; margin:6px 0; }
.fb-leglab { font-size:.78rem; letter-spacing:.2em; color:var(--tx-dim); width:2.4em; }
.fb-sched { font-size:.8rem; color:var(--tx-dim); letter-spacing:.06em; }
.fb-tiles { display:inline-flex; gap:2px; }
.fb-tile { display:inline-flex; align-items:center; justify-content:center; min-width:1.35em; padding:.14em .1em;
  font-family:ui-monospace,SFMono-Regular,Menlo,monospace; font-weight:700; font-size:.95rem; color:#f3e3bb;
  background:linear-gradient(180deg,#2d2315 49%,#171106 51%); border-radius:4px;
  box-shadow:inset 0 0 0 1px rgba(201,162,39,.22), inset 0 -6px 8px rgba(0,0,0,.45); }
.fb-tiles.big .fb-tile { font-size:1.45rem; min-width:1.3em; padding:.12em .08em; }
.fb-tiles.flip .fb-tile { animation:fbFlip .5s ease both; transform-origin:50% 50%; }
@keyframes fbFlip { from { transform:rotateX(88deg); opacity:.2; } to { transform:rotateX(0); opacity:1; } }
.fb-delayrow { margin:8px 0 2px; color:#e8a13a; font-size:.86rem; letter-spacing:.05em; }
.fb-none { color:var(--tx-dim); font-size:.88rem; margin:6px 0; }
.fb-foot { margin:8px 0 0; font-size:.74rem; color:var(--tx-dim); letter-spacing:.08em; text-align:right; }
@media (prefers-reduced-motion: reduce) { .fb-tiles.flip .fb-tile { animation:none; } }

/* Member wallet pass (V2.78.0) */
.wp-card { margin:14px 0; padding:20px; border-radius:18px; color:var(--cream);
  background:linear-gradient(135deg,#241a0e,#171106 60%,#1d1509); border:1px solid rgba(201,162,39,.45);
  box-shadow:0 18px 36px rgba(0,0,0,.4), inset 0 1px 0 rgba(243,227,187,.12); }
.wp-top { display:flex; align-items:center; gap:10px; }
.wp-logo { width:34px; height:34px; }
.wp-brand { font-family:var(--serif); letter-spacing:.18em; font-size:.86rem; line-height:1.35; }
.wp-brand small { color:var(--brass-hi); letter-spacing:.3em; font-size:.62rem; }
.wp-tier { margin-left:auto; font-family:var(--serif); color:var(--brass-hi); letter-spacing:.1em; }
.wp-name { font-family:var(--serif); font-size:1.9rem; margin:18px 0 8px; letter-spacing:.04em; }
.wp-rows { display:flex; gap:26px; flex-wrap:wrap; margin:10px 0; }
.wp-rows span { display:block; font-size:.68rem; letter-spacing:.22em; color:var(--brass-hi); margin-bottom:3px; }
.wp-rows strong { font-size:1.02rem; letter-spacing:.06em; }
.wp-chips { margin:12px 0 4px; display:flex; gap:6px; flex-wrap:wrap; align-items:center; }
.wp-profile { margin:8px 0 0; font-size:.8rem; word-break:break-all; }
.wp-profile a { color:var(--cream2); }
.wp-btns { display:flex; gap:10px; flex-wrap:wrap; }
.wp-off { opacity:.55; cursor:default; }

/* Smart flight autofill (V2.79.0) */
.fl-lookup { display:flex; align-items:center; gap:10px; flex-wrap:wrap; margin:-4px 0 14px; }
.fl-lookup .hint { flex:1; min-width:200px; }

/* Flight disruption response (V2.80.0) */
.disrupt-card { margin:14px 0; padding:16px; border-radius:14px; border:1px solid rgba(224,90,78,.55);
  background:linear-gradient(160deg, rgba(224,90,78,.10), rgba(201,162,39,.05)); }
.disrupt-card h3 { margin:0 0 6px; color:#e88a7d; letter-spacing:.04em; }
.disrupt-card .disrupt-detail { margin:0 0 10px; color:var(--cream2); }
.disrupt-agreed { display:inline-block; padding:4px 12px; border-radius:999px; border:1px solid rgba(143,206,143,.55);
  color:#8fce8f; font-weight:600; letter-spacing:.05em; margin:4px 0 10px; }
.disrupt-state { margin:4px 0 10px; font-size:.88rem; color:var(--tx-dim); }
.disrupt-actions { display:flex; gap:8px; flex-wrap:wrap; align-items:flex-end; }
.disrupt-actions form { display:inline-flex; gap:6px; align-items:flex-end; flex-wrap:wrap; }
.disrupt-actions .field { margin:0; }
.disrupt-actions input[type="time"] { max-width:130px; }

/* Resonance sort on the board (V2.81.0) */
.sort-bar { display:flex; gap:8px; align-items:center; flex-wrap:wrap; margin:10px 0 14px; }
.sort-bar .sort-label { font-size:.8rem; letter-spacing:.14em; color:var(--tx-dim); }
.sort-chip { padding:5px 14px; border-radius:999px; border:1px solid var(--line); color:var(--cream2);
  text-decoration:none; font-size:.86rem; }
.sort-chip.on { border-color:var(--brass); color:var(--brass-hi); background:rgba(201,162,39,.10); font-weight:600; }
.sort-note { margin:6px 0 12px; padding:10px 14px; border:1px dashed rgba(201,162,39,.4); border-radius:10px;
  color:var(--cream2); font-size:.9rem; }

/* Conversation quick phrases (V2.82.0) */
.phrase-bar { margin:10px 0 4px; }
.phrase-bar .phrase-label { font-size:.78rem; letter-spacing:.14em; color:var(--tx-dim); display:block; margin-bottom:6px; }
.phrase-row { display:flex; gap:6px; flex-wrap:wrap; }
.phrase-row form { display:inline; }
.phrase-btn { padding:6px 12px; border-radius:999px; border:1px solid var(--line); background:transparent;
  color:var(--cream2); font-size:.84rem; cursor:pointer; }
.phrase-btn:hover { border-color:var(--brass); color:var(--brass-hi); }

/* Airport best pick (V2.83.0) */
.bestpick { margin:16px 0; padding:16px 18px; border-radius:16px; position:relative; overflow:hidden;
  border:1px solid rgba(201,162,39,.5); background:linear-gradient(135deg, rgba(201,162,39,.14), rgba(201,162,39,.03) 60%); }
.bestpick .bp-kicker { font-size:.72rem; letter-spacing:.3em; color:var(--brass-hi); font-weight:700; }
.bestpick .bp-name { font-family:var(--serif); font-size:1.45rem; margin:6px 0 4px; color:var(--cream); }
.bestpick .bp-name a { color:inherit; text-decoration:none; }
.bestpick .bp-reasons { display:flex; gap:6px; flex-wrap:wrap; margin-top:8px; }
.bestpick .bp-reason { font-size:.8rem; padding:3px 10px; border-radius:999px; border:1px solid rgba(201,162,39,.4); color:var(--cream2); }
.bp-badge { font-size:.72rem; letter-spacing:.08em; color:#171106; background:linear-gradient(120deg,var(--brass-hi),var(--brass));
  border-radius:999px; padding:2px 9px; font-weight:700; vertical-align:middle; }

/* Meetup keepsake stub (V2.84.0) */
.keepsake { max-width:640px; margin:22px auto; border-radius:18px; overflow:hidden; color:var(--cream);
  background:linear-gradient(135deg,#241a0e,#171106 60%,#1d1509); border:1px solid rgba(201,162,39,.5);
  box-shadow:0 18px 36px rgba(0,0,0,.4); }
.keepsake .ks-head { display:flex; align-items:center; gap:10px; padding:16px 20px 0; }
.keepsake .ks-code { font-family:var(--serif); font-size:3.2rem; line-height:1; margin:10px 20px 0; }
.keepsake .ks-route { padding:0 20px; color:var(--brass-hi); letter-spacing:.08em; }
.keepsake .ks-rows { display:flex; gap:26px; flex-wrap:wrap; padding:12px 20px; }
.keepsake .ks-rows span { display:block; font-size:.66rem; letter-spacing:.22em; color:var(--brass-hi); margin-bottom:3px; }
.keepsake .ks-perf { border-top:2px dashed rgba(201,162,39,.45); padding:12px 20px 18px; display:flex;
  justify-content:space-between; align-items:center; gap:12px; flex-wrap:wrap; }
.keepsake .ks-stamp { transform:rotate(-8deg); border:2px solid #8fce8f; color:#8fce8f; border-radius:8px;
  padding:4px 12px; font-weight:700; letter-spacing:.2em; font-size:.85rem; }
@media print { .keepsake { box-shadow:none; } }

/* === Journal, postcard, wishlist, milestones, yearwrap (V2.85–V2.90) === */
.stats-4{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:18px}
.stats-4 div span{display:block;margin-top:2px;line-height:1.5}
@media (max-width:640px){.stats-4{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}}
.stamp-wall{display:flex;flex-wrap:wrap;gap:14px}
.stamp{width:158px;min-height:158px;border:2px solid var(--ink);border-radius:10px;color:var(--ink);background:var(--panel2);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;padding:12px 8px;text-align:center;transform:rotate(var(--rot,0deg));border-color:var(--ink);box-shadow:0 2px 8px rgba(0,0,0,.25);position:relative}
.stamp::after{content:'';position:absolute;inset:5px;border:1px dashed var(--ink);border-radius:7px;opacity:.55;pointer-events:none}
.stamp-code{font-family:var(--serif);font-size:1.9rem;font-weight:700;letter-spacing:2px;line-height:1}
.stamp-city{font-size:.85rem}
.stamp-date{font-size:.78rem;opacity:.85;letter-spacing:1px}
.stamp-with{font-size:.75rem;opacity:.75;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.jr-row{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:10px 0;border-bottom:1px solid var(--line)}
.jr-row:last-child{border-bottom:none}
.jr-row-main{display:flex;flex-direction:column;gap:1px;min-width:0}
.jr-row-actions{display:flex;gap:8px;flex-shrink:0}
@media (max-width:640px){.jr-row{flex-direction:column;align-items:flex-start}}
.rn-row{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:10px 0;border-bottom:1px solid var(--line)}
.rn-row:last-child{border-bottom:none}
.rn-main{display:flex;flex-direction:column;gap:1px;min-width:0}
.rn-actions{display:flex;gap:8px;flex-shrink:0}
@media (max-width:640px){.rn-row{flex-direction:column;align-items:flex-start}}
.wl-row{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:8px 0;border-bottom:1px solid var(--line)}
.wl-row:last-child{border-bottom:none}
.postcard{display:flex;border:1px solid var(--brass);border-radius:12px;overflow:hidden;background:#f7efdd;color:#2a2018;max-width:680px}
.pc-left{flex:0 0 40%;border-right:1px dashed #b49b5e;padding:22px 18px;display:flex;flex-direction:column;gap:8px;align-items:flex-start;position:relative}
.pc-code{font-family:var(--serif);font-size:2.6rem;font-weight:700;line-height:1;color:#2a2018}
.pc-city{font-size:1rem;color:#6b5836}
.pc-stamp{margin-top:auto;border:2px solid var(--ink);color:var(--ink);border-radius:6px;padding:8px 12px;font-family:var(--serif);font-weight:700;transform:rotate(var(--rot,0deg));letter-spacing:2px}
.pc-postmark{font-size:.75rem;color:#8d7c60;letter-spacing:1px}
.pc-right{flex:1;padding:22px 20px;display:flex;flex-direction:column}
.pc-msg{font-size:1.05rem;line-height:1.8;margin:0 0 16px;white-space:normal}
.pc-sign{margin-top:auto;color:#6b5836;font-size:.9rem;line-height:1.7}
.pc-h{margin:20px 0 10px}
@media (max-width:640px){.postcard{flex-direction:column}.pc-left{border-right:none;border-bottom:1px dashed #b49b5e}}
.ms-progress .ms-next-line{margin:4px 0 8px;font-size:1.02rem}
.ms-bar{height:8px;border-radius:99px;background:var(--panel2);border:1px solid var(--line);overflow:hidden}
.ms-bar span{display:block;height:100%;background:linear-gradient(90deg,var(--brass-lo),var(--brass-hi));border-radius:99px}
.ms-overlay{position:fixed;inset:0;background:rgba(10,6,3,.72);display:flex;align-items:center;justify-content:center;z-index:200;padding:20px}
.ms-card{background:var(--panel2);border:1px solid var(--brass);border-radius:16px;padding:34px 30px;text-align:center;max-width:340px;width:100%;box-shadow:0 18px 50px rgba(0,0,0,.5)}
.ms-seal{width:74px;height:74px;margin:0 auto 14px;border:2px solid var(--brass);border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:1.7rem;color:var(--brass-hi);transform:rotate(-8deg)}
.ms-big{font-family:var(--serif);font-size:1.5rem;margin:6px 0 20px;color:var(--cream)}
.yw-card{border:1px solid var(--brass);border-radius:16px;padding:26px 22px;background:var(--panel2)}
.yw-year{font-family:var(--serif);font-size:2.4rem;margin:0 0 6px;color:var(--brass-hi)}
.yw-stats{margin:8px 0 14px}
.yw-line{margin:6px 0;line-height:1.7}
.yw-top{font-family:var(--serif);font-size:1.3rem;color:var(--brass-hi)}
.yw-stamps{margin-top:14px}

/* === Buddies, countdown, seasonal stamps, dream board (V2.91–V2.96) === */
.bud-chips{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:8px}
.bud-chip{display:inline-flex;align-items:center;gap:7px;border:1px solid var(--line);border-radius:99px;padding:4px 12px 4px 5px;color:var(--cream);text-decoration:none;background:var(--panel2)}
.bud-chip:hover{border-color:var(--brass)}
.cd-card{text-align:left;margin:0 0 18px}
.cd-main{font-family:var(--serif);font-size:1.35rem;margin:4px 0 2px;color:var(--cream)}
.cd-sub{margin:0 0 10px;color:var(--tx-dim)}
.cd-timer{display:flex;align-items:baseline;gap:7px;margin:6px 0 14px;font-family:var(--serif)}
.cd-num{font-size:2rem;color:var(--brass-hi);min-width:1.6ch;text-align:center}
.cd-timer small{color:var(--tx-dim);margin-right:6px}
.stamp{overflow:hidden}
.stamp-season{position:absolute;top:7px;left:50%;transform:translateX(-50%);font-size:.62rem;letter-spacing:2px;padding:2px 8px;border:1px solid currentColor;border-radius:99px;white-space:nowrap}
.stamp-cny{background:linear-gradient(160deg,#3a1410,#241009);box-shadow:0 2px 10px rgba(208,85,69,.35)}
.stamp-xmas{background:linear-gradient(160deg,#2b2110,#1d150e);box-shadow:0 2px 10px rgba(227,200,120,.35)}
.stamp-moon{background:linear-gradient(160deg,#1d2440,#141020);box-shadow:0 2px 10px rgba(164,143,201,.35)}
.dream-board{border:1px solid var(--brass);border-radius:12px;padding:16px 18px;margin:0 0 20px;background:var(--panel2)}
.dream-row{display:flex;justify-content:space-between;gap:12px;padding:8px 0;border-bottom:1px solid var(--line);color:var(--cream);text-decoration:none}
.dream-row:last-child{border-bottom:none}
.dream-row b{color:var(--brass-hi);font-weight:600;font-size:.88rem;text-align:right}

/* === Homepage hook pack (V2.97–V2.102) === */
.hero-week{margin:14px 0 0;color:var(--brass-hi);font-size:.95rem}
.hero-chips{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:16px;max-width:520px}
.hero-chips-q{grid-column:1/-1;color:var(--tx-dim);font-size:.88rem;letter-spacing:.04em}
.ap-chip{display:flex;align-items:center;justify-content:space-between;gap:8px;border:1px solid var(--line);border-radius:12px;padding:10px 14px;color:var(--cream);text-decoration:none;background:var(--panel2);font-size:.92rem;transition:border-color .2s}
.ap-chip b{color:var(--brass-hi);font-size:1rem}
.ap-chip:hover{border-color:var(--brass)}
@media (min-width:900px){.hero-chips{grid-template-columns:1fr 1fr 1fr}}
.hero-rot{transition:opacity .33s ease,transform .33s ease}
.hero-rot.swap{opacity:0;transform:translateY(5px)}
.hero-slide{display:none}
.hero-slide.on{display:block}
.hero-dots{display:flex;gap:7px;justify-content:center;margin-top:12px}
.hero-dot{width:8px;height:8px;border-radius:99px;border:1px solid var(--brass);background:transparent;padding:0;cursor:pointer}
.hero-dot.on{background:var(--brass)}
.pulse{display:flex;align-items:center;justify-content:center;gap:10px;border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:11px 16px;margin:6px 0 4px;min-height:44px;text-align:center}
.pulse-dot{flex:0 0 auto;width:7px;height:7px;border-radius:99px;background:var(--brass-hi);box-shadow:0 0 0 0 rgba(227,200,120,.55);animation:pulse-ring 2.4s ease-out infinite}
@keyframes pulse-ring{0%{box-shadow:0 0 0 0 rgba(227,200,120,.55)}70%{box-shadow:0 0 0 8px rgba(227,200,120,0)}100%{box-shadow:0 0 0 0 rgba(227,200,120,0)}}
.pulse-text{color:var(--cream);font-size:.92rem;letter-spacing:.02em;transition:opacity .42s ease,transform .42s ease}
.pulse-text.pulse-out{opacity:0;transform:translateY(6px)}
.pick-row{display:flex;gap:14px;overflow-x:auto;scroll-snap-type:x mandatory;padding:6px 2px 14px;-webkit-overflow-scrolling:touch}
.pick-item{flex:0 0 min(350px,86vw);scroll-snap-align:start}
.pick-row::-webkit-scrollbar{height:6px}
.pick-row::-webkit-scrollbar-thumb{background:var(--line);border-radius:99px}
html.rv-on .rv{opacity:0;transform:translateY(18px);transition:opacity .7s ease,transform .7s ease}
html.rv-on .rv.rv-in{opacity:1;transform:none}
@media (prefers-reduced-motion: reduce){
  .pulse-dot{animation:none}
  .pulse-text{transition:none}
  .rv{opacity:1;transform:none;transition:none}
}

/* === Homepage round 2 (V2.105–V2.110) === */
.hero{position:relative;isolation:isolate}
.hero-bg{position:absolute;inset:-46px -30px auto;height:460px;z-index:-1;overflow:hidden;pointer-events:none}
.hero-bg svg{width:100%;height:100%}
.hero-bg .arc{fill:none;stroke:var(--brass);stroke-width:1.2;opacity:.14}
.hero-bg .arc2{opacity:.09}
.hero-bg .arc3{opacity:.07}
.hero-bg .arc1{stroke-dasharray:6 7;animation:arc-drift 26s linear infinite}
@keyframes arc-drift{from{stroke-dashoffset:0}to{stroke-dashoffset:-260}}
.hero-bg .arc-dot{fill:var(--brass-hi);opacity:.5}
.hero::before{content:"";position:absolute;top:-120px;right:-80px;width:420px;height:420px;border-radius:50%;background:radial-gradient(circle,rgba(227,200,120,.13),transparent 65%);z-index:-1;pointer-events:none}
.hero-greet{margin:0 0 10px;color:var(--brass-hi);font-size:.95rem;letter-spacing:.06em}
.live-now{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin:14px 0 2px}
.live-now-label{display:inline-flex;align-items:center;gap:8px;color:var(--brass-hi);font-size:.88rem;letter-spacing:.14em;margin-right:4px}
.live-chip{display:inline-flex;gap:6px;align-items:center;border:1px solid var(--brass);border-radius:99px;padding:7px 14px;color:var(--cream);text-decoration:none;background:var(--panel2);font-size:.9rem}
.live-chip b{color:var(--brass-hi);font-weight:600}
.hot-list{max-width:680px;margin:14px auto 0;text-align:left}
.hot-row{display:flex;align-items:center;gap:14px;padding:13px 6px;border-bottom:1px solid var(--line);color:var(--cream);text-decoration:none}
.hot-row:last-child{border-bottom:none}
.hot-rank{font-family:var(--serif);font-size:1.5rem;color:var(--brass);width:1.2em;text-align:center}
.hot-main{flex:1;display:flex;flex-direction:column}
.hot-main small{color:var(--tx-dim)}
.hot-why{color:var(--tx-dim);font-size:.85rem;text-align:right}
.quote-card{max-width:680px;margin:0 auto;text-align:center;border:1px solid var(--line);border-radius:14px;padding:26px 24px;background:var(--panel2);transition:opacity .42s ease,transform .42s ease}
.quote-card.quote-out{opacity:0;transform:translateY(6px)}
.quote-stars{color:var(--brass-hi);letter-spacing:4px}
.quote-text{font-family:var(--serif);font-size:1.25rem;line-height:1.7;margin:12px 0 10px;color:var(--cream)}
.quote-meta{color:var(--tx-dim);margin:0}
.quote-meta a{color:var(--brass-hi)}
.myair-row{display:flex;flex-wrap:wrap;gap:8px;justify-content:center;margin-top:12px}
.myair-chip{border-color:var(--line)}
.myair-code{color:var(--cream)}
@media (prefers-reduced-motion: reduce){.hero-bg .arc1{animation:none}.quote-card{transition:none}}

/* === Homepage round 3 (V2.111–V2.115) === */
.scenario-row{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin:22px 0 4px}
.scenario-card{display:flex;flex-direction:column;gap:3px;border:1px solid var(--line);border-radius:14px;padding:16px;background:var(--panel2);color:var(--cream);text-decoration:none;transition:border-color .2s,transform .2s}
.scenario-card:hover{border-color:var(--brass);transform:translateY(-2px)}
.scenario-card .sc-ic{color:var(--brass-hi);font-size:1.05rem}
.scenario-card .sc-live{color:#e2574c;font-size:.8rem}
.scenario-card b{font-size:1rem}
.scenario-card small{color:var(--tx-dim);line-height:1.5}
@media (max-width:640px){.scenario-row{grid-template-columns:1fr}}
.board{max-width:760px;margin:14px auto 0;text-align:left;border:1px solid var(--line);border-radius:14px;overflow:hidden;background:#17100a}
.board-row{display:flex;align-items:center;gap:12px;padding:12px 16px;border-bottom:1px solid rgba(201,164,92,.14);color:var(--cream);text-decoration:none}
.board-row:last-child{border-bottom:none}
.board-row:hover{background:rgba(227,200,120,.05)}
.board-time{font-family:ui-monospace,Menlo,monospace;font-size:1.12rem;color:var(--brass-hi);min-width:64px;display:flex;flex-direction:column;line-height:1.15}
.board-time small{font-size:.68rem;color:var(--tx-dim);letter-spacing:.08em}
.board-flight{font-family:ui-monospace,Menlo,monospace;color:var(--cream);min-width:58px}
.board-main{flex:1;display:flex;flex-direction:column;min-width:0}
.board-main small{color:var(--tx-dim);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.board-kind{font-size:.78rem;border:1px solid var(--line);border-radius:99px;padding:3px 10px;color:var(--tx-dim)}
.board-kind-offer{color:var(--brass-hi);border-color:var(--brass)}
.seat-badge{flex:0 0 auto;background:linear-gradient(120deg,var(--brass-hi),var(--brass));color:#241708;font-size:.74rem;font-weight:700;border-radius:99px;padding:3px 9px;letter-spacing:.04em}
.pick-item{position:relative}
.seat-badge-card{position:absolute;top:10px;right:12px;z-index:3;box-shadow:0 3px 10px rgba(0,0,0,.4)}
.trivia{display:flex;align-items:center;justify-content:center;gap:10px;padding:12px 16px;margin:0 auto 6px;max-width:760px;text-align:center}
.trivia-label{flex:0 0 auto;color:var(--brass-hi);font-size:.8rem;letter-spacing:.18em;border:1px solid var(--brass);border-radius:99px;padding:3px 10px}
.trivia-text{color:var(--cream);font-size:.94rem;transition:opacity .42s ease,transform .42s ease}
.trivia-text.pulse-out{opacity:0;transform:translateY(6px)}
@media (max-width:640px){
  .board-row{flex-wrap:wrap;row-gap:2px}
  .board-time{min-width:54px}
  .board-flight{min-width:0}
  .board-row .seat-badge{order:3;margin-left:auto}
  .board-kind{order:4}
  .board-main{order:5;flex-basis:100%}
  .board-main small{white-space:normal}
}

/* Card links never take the global hover underline (V2.115.3):
 * on touch devices :hover sticks after a tap and the whole card
 * renders underlined — Mars caught this on the scenario cards. */
.scenario-card:hover,.board-row:hover,.hot-row:hover,.live-chip:hover,.ap-chip:hover,
.hero-rot a:hover,.picks-row a:hover,.pass-list a:hover,.radar-sec a:hover,.cal-day:hover,
.scenario-card,.board-row,.hot-row{text-decoration:none}
.sc-ic{line-height:1}
.scenario-card{padding:14px 16px;gap:4px}

/* Scenario entries as compact rows (V2.115.4, Mars: 「那三行」):
 * icon left, title+sub stacked tight, arrow right — a menu of
 * three entries, not three tall cards. */
.scenario-card{flex-direction:row;align-items:center;gap:12px;padding:13px 16px}
.sc-text{flex:1;display:flex;flex-direction:column;gap:1px;min-width:0}
.sc-text b{font-size:1.02rem}
.sc-go{color:var(--brass);font-size:1.05rem;flex:0 0 auto}

/* Meet-completion strip (V2.116.0): the arrive/met actions also
 * live on the conversation page, under a plain heading, so nobody
 * has to hunt for how to complete a meetup. */
.meet-strip{display:flex;flex-wrap:wrap;align-items:center;gap:8px;background:var(--panel2);border:1px solid var(--line);border-radius:12px;padding:10px 14px;margin:0 0 14px}
.meet-strip b{font-family:var(--serif);color:var(--brass-hi)}
.meet-strip form{margin:0;display:inline-flex}
.meet-cap{font-family:var(--serif);color:var(--brass-hi);margin:10px 0 2px;font-size:1.02rem}

/* ================= 以下是翼起回家設計系統 v1.0（定版覆寫） ================= */
/* ============================================================
   翼起回家 Wings Together, Home Together — Design System v1.0
   ------------------------------------------------------------
   Compatibility base: Lounge Meetup assets/style.css class names
   (.wrap .topbar .brand .btn .pass .pass-stub .foil-seal .tabbar
    .searchbar .seg .chip .empty .card .field .hero .how-step …)
   are kept and upgraded in place; Wings additions are marked
   [WINGS]. Formal-site templates forked from Lounge can adopt
   this file without renaming classes. See DESIGN-NOTES.md §3.

   Brand (locked): deep-space blue #173A5E + warm amber #E8A13A,
   paw + flight-path mark. Dogs only. Homepage stays short.
   ============================================================ */

/* ---------- 1. Design tokens ---------- */
:root{
  /* colour — brand */
  --blue:#173A5E;            /* locked primary */
  --amber:#E8A13A;           /* locked accent */
  --amber-hi:#F5C168;
  --amber-lo:#B97A1E;
  --amber-deep:#3A2708;      /* text on amber */
  /* colour — ground & panels (deepened vs demo for depth) */
  --ground:#0A1E33;
  --ground2:#0E2A47;
  --panel:#173A5E;
  --panel2:#1E4A75;
  --panel3:#26598A;
  --sky:#7FB2DE;
  /* colour — paper (ticket stock) */
  --cream:#FFF6E3;
  --cream2:#F7EAD0;
  --cream3:#EFDCB4;
  --ink:#1C2F45;
  --ink-soft:#5F7186;
  --ink-faint:#8496AB;
  --paper-line:rgba(28,47,69,.16);
  --paper-line-strong:rgba(28,47,69,.34);
  /* colour — text on dark */
  --tx:#F2ECDC;
  --tx-dim:#C7D3E0;
  --tx-mute:#93A7BC;
  --hair:rgba(232,161,58,.30);
  --hair-soft:rgba(232,161,58,.15);
  --focus-ring:rgba(232,161,58,.38);
  /* colour — status system (badges & pass-status share these) */
  --st-open:#2E7D4F;         /* open / accepting */
  --st-matched:#4A5FA5;      /* matched */
  --st-confirmed:#173A5E;    /* confirmed */
  --st-completed:#8A6D1F;    /* completed (antique gold) */
  --st-urgent:#B3402A;       /* urgent */
  --st-pending:#B97A1E;      /* documents in progress */
  --st-personal:#5B4A8A;     /* individual poster */
  --st-new:#1F6E8C;          /* new organisation */
  /* Lounge variable aliases (templates referencing old names keep working) */
  --brass:var(--amber); --brass-hi:var(--amber-hi); --brass-lo:var(--amber-lo);
  --wine:#B3402A; --wine-deep:#8C2D1E; --sage:#7FA88C;
  --r-lg:18px; --r-md:12px;
  /* type */
  --serif:'Noto Serif TC','Songti TC',serif;
  --sans:'Noto Sans TC',system-ui,-apple-system,sans-serif;
  --fs-display:clamp(1.85rem,5.6vw,2.75rem);
  --fs-h2:clamp(1.32rem,3.2vw,1.75rem);
  --fs-h3:1.08rem;
  --fs-body:1rem;
  --fs-sm:.88rem;
  --fs-xs:.76rem;
  --lh-body:1.75;
  /* spacing (4pt grid) */
  --sp-1:4px; --sp-2:8px; --sp-3:12px; --sp-4:16px; --sp-5:20px;
  --sp-6:24px; --sp-8:32px; --sp-10:40px; --sp-12:48px; --sp-14:56px;
  /* radius */
  --r-sm:10px; --r-pill:999px; --r-xl:24px;
  /* shadow */
  --shadow-pass:0 1px 2px rgba(2,10,20,.4),0 16px 38px -14px rgba(2,10,20,.65);
  --shadow-lift:0 2px 4px rgba(2,10,20,.45),0 28px 54px -18px rgba(2,10,20,.8);
  --shadow-panel:0 12px 34px -18px rgba(2,10,20,.85);
  --shadow-glow:0 10px 26px -8px rgba(232,161,58,.65);
  --shadow-tab:0 -12px 34px -14px rgba(2,10,20,.8);
  /* motion */
  --ease:cubic-bezier(.22,.8,.26,1);
  --dur-1:.16s; --dur-2:.26s; --dur-3:.45s;
  --tabbar-h:64px;
  --notch:#0C2339;           /* ticket notch colour (≈ page ground beside cards) */
}
*{box-sizing:border-box}
[hidden]{display:none!important}
html{scroll-behavior:smooth;overflow-x:clip}
body{margin:0;overflow-x:clip;color:var(--tx);font-family:var(--sans);font-weight:300;
  line-height:var(--lh-body);letter-spacing:.01em;-webkit-font-smoothing:antialiased;
  background:
    radial-gradient(1050px 500px at 88% -10%,rgba(232,161,58,.14),transparent 60%),
    radial-gradient(860px 580px at -12% 24%,rgba(38,89,138,.5),transparent 55%),
    radial-gradient(700px 420px at 110% 62%,rgba(232,161,58,.05),transparent 60%),
    linear-gradient(180deg,var(--ground2),var(--ground) 360px,var(--ground))}
/* Layout rule (site-group lesson): .wrap supplies horizontal padding ONLY.
   Components that may combine with .wrap (.topbar-in, .hero, sections)
   must set vertical padding with longhand, never the padding shorthand,
   or they will wipe out the horizontal padding of .wrap. */
.wrap{max-width:1120px;margin:0 auto;padding-left:20px;padding-right:20px}
a{color:var(--amber-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);margin:0;text-align:left}
h1{font-size:var(--fs-display)}
h2{font-size:var(--fs-h2)}
h2::after{content:"";display:block;width:56px;height:1px;margin-top:12px;background:linear-gradient(90deg,var(--amber),transparent)}
p{margin:0;text-align:left}
small{color:var(--tx-mute)}
button{font:inherit}
:focus-visible{outline:2px solid var(--amber);outline-offset:2px;border-radius:4px}
.sr-only{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}
.num{font-variant-numeric:tabular-nums}

/* ---------- 2. Top bar & brand ---------- */
.topbar{position:sticky;top:0;z-index:50;background:rgba(10,28,46,.88);
  -webkit-backdrop-filter:blur(16px) saturate(1.3);backdrop-filter:blur(16px) saturate(1.3);
  border-bottom:1px solid var(--hair-soft)}
.topbar-in{display:flex;align-items:center;gap:14px;flex-wrap:wrap;
  padding-top:10px;padding-bottom:10px} /* longhand only — see .wrap rule above */
.brand{display:flex;align-items:center;gap:12px;color:var(--cream);min-height:44px}
.brand:hover{text-decoration:none}
.brand img{width:44px;height:44px;border-radius:12px;display:block;flex:none;
  box-shadow:0 4px 14px rgba(2,10,20,.5),inset 0 0 0 1px rgba(232,161,58,.35)}
.brand-mark{width:44px;height:44px;border-radius:12px;flex:none;display:grid;place-items:center;
  background:var(--blue);box-shadow:inset 0 0 0 1.5px rgba(232,161,58,.5),0 4px 14px rgba(2,10,20,.5)}
.brand-text strong{display:block;font-family:var(--serif);font-size:1.14rem;letter-spacing:.08em;line-height:1.15;white-space:nowrap}
.brand-text small{display:block;font-size:.56rem;letter-spacing:.3em;color:var(--amber);font-weight:500;margin-top:2px;white-space:nowrap}
.mainnav{margin-left:auto;display:flex;align-items:center;gap:24px;flex-wrap:wrap}
.mainnav a{color:var(--tx-dim);font-size:.92rem;letter-spacing:.06em;padding-top:10px;padding-bottom:10px}
.mainnav a:hover{color:var(--amber-hi);text-decoration:none}
.nav-cta{border:1px solid var(--amber);border-radius:var(--r-pill);padding-left:18px;padding-right:18px;color:var(--amber-hi)!important;transition:background var(--dur-1) var(--ease)}
.nav-cta:hover{background:rgba(232,161,58,.12)}
.head-actions{margin-left:auto;display:flex;gap:10px;flex-wrap:wrap}
.nav-badge{display:inline-block;min-width:20px;text-align:center;margin-left:7px;padding-left:6px;padding-right:6px;
  border-radius:var(--r-pill);background:linear-gradient(115deg,var(--amber-hi),var(--amber) 60%,var(--amber-lo));
  color:var(--amber-deep);font-size:.72rem;font-weight:700;line-height:1.6;vertical-align:2px;box-shadow:0 3px 8px -2px rgba(232,161,58,.7)}
.pm-badge{display:inline-block;min-width:22px;text-align:center;padding-left:7px;padding-right:7px;border-radius:var(--r-pill);
  background:linear-gradient(115deg,var(--amber-hi),var(--amber) 60%,var(--amber-lo));color:var(--amber-deep);
  font-size:.74rem;font-weight:700;line-height:1.6;vertical-align:1px}

/* ---------- 3. Buttons (press feedback is part of the spec) ---------- */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;border:0;cursor:pointer;
  border-radius:var(--r-pill);padding-top:12px;padding-bottom:12px;padding-left:28px;padding-right:28px;
  min-height:48px;font-size:.95rem;letter-spacing:.1em;font-weight:500;text-align:center;
  transition:transform var(--dur-1) var(--ease),box-shadow var(--dur-1) var(--ease),background var(--dur-1) var(--ease)}
.btn:hover{text-decoration:none;transform:translateY(-1px)}
.btn:active{transform:translateY(1px) scale(.99)}
.btn-gold{color:var(--amber-deep);background:linear-gradient(115deg,var(--amber-hi),var(--amber) 55%,#C07F22);
  box-shadow:var(--shadow-glow),inset 0 1px 0 rgba(255,250,230,.7)}
.btn-gold:hover{box-shadow:0 14px 30px -8px rgba(232,161,58,.8),inset 0 1px 0 rgba(255,250,230,.85)}
.btn-gold:active{box-shadow:0 4px 12px -6px rgba(232,161,58,.6),inset 0 2px 5px rgba(120,72,8,.35)}
.btn-ghost{background:transparent;color:var(--amber-hi);border:1px solid var(--hair)}
.btn-ghost:hover{background:rgba(232,161,58,.09)}
.btn-ghost:active{background:rgba(232,161,58,.16)}
.btn-paper{background:linear-gradient(180deg,var(--cream),var(--cream2));color:var(--ink);
  box-shadow:0 8px 20px -10px rgba(2,10,20,.7),inset 0 1px 0 #FFFDF6}
.btn-wine{background:linear-gradient(115deg,#C6503A,var(--wine-deep));color:#F9E9E2;box-shadow:0 8px 20px -8px rgba(179,64,42,.65)}
.btn-sm{padding-top:8px;padding-bottom:8px;padding-left:18px;padding-right:18px;min-height:44px;font-size:.86rem}
.btn-lg{padding-top:15px;padding-bottom:15px;padding-left:34px;padding-right:34px;font-size:1rem}
.btn-block{width:100%}
.btn[disabled]{opacity:.5;cursor:not-allowed;transform:none;box-shadow:none}
.linkbtn{background:none;border:0;color:var(--tx-dim);font:inherit;font-size:.92rem;cursor:pointer;padding:0;min-height:44px}
.linkbtn:hover{color:var(--amber-hi)}
.linkbtn:active{transform:translateY(1px)}
/* ticket-card action (Lounge: .pass-view family; Wings primary CTA on paper) */
.btn-match{margin-left:auto;background:linear-gradient(115deg,var(--amber-hi),var(--amber) 55%,#C07F22);color:var(--amber-deep);
  border:0;border-radius:var(--r-pill);padding-top:9px;padding-bottom:9px;padding-left:20px;padding-right:20px;
  min-height:44px;font-size:.9rem;letter-spacing:.08em;font-weight:600;cursor:pointer;white-space:nowrap;
  box-shadow:0 6px 16px -6px rgba(185,122,30,.6);transition:transform var(--dur-1) var(--ease),box-shadow var(--dur-1) var(--ease)}
.btn-match:hover{transform:translateY(-1px);box-shadow:0 10px 20px -6px rgba(185,122,30,.7)}
.btn-match:active{transform:translateY(1px) scale(.99);box-shadow:0 3px 8px -4px rgba(185,122,30,.6)}
.btn-match[disabled]{background:#D9CBA6;color:#7A6A45;box-shadow:none;cursor:default;transform:none}
.btn-ink{background:transparent;color:var(--ink);border:1px solid #C9B98F;border-radius:var(--r-pill);
  padding-top:10px;padding-bottom:10px;padding-left:22px;padding-right:22px;min-height:44px;cursor:pointer;letter-spacing:.08em;transition:background var(--dur-1) var(--ease),transform var(--dur-1) var(--ease)}
.btn-ink:hover{background:rgba(28,47,69,.05)}
.btn-ink:active{transform:translateY(1px)}

/* ---------- 4. Hero & trust numbers ---------- */
.hero{padding-top:38px;padding-bottom:8px} /* longhand — combines with .wrap */
.hero-kicker{font-size:.72rem;letter-spacing:.5em;color:var(--amber);font-weight:500;text-transform:uppercase}
.hero h1{margin-top:.35em;margin-bottom:.4em;max-width:15em}
.hero h1 em{font-style:normal;background:linear-gradient(100deg,var(--amber-hi),var(--amber) 60%,var(--amber-lo));-webkit-background-clip:text;background-clip:text;color:transparent}
.hero-sub{color:var(--tx-dim);font-size:1rem;max-width:44em}
.hero-actions{display:flex;gap:12px;flex-wrap:wrap;margin-top:24px}
.hero-stats{display:flex;gap:34px;flex-wrap:wrap;margin-top:26px}
.hero-stats>div{display:flex;flex-direction:column}
.hero-stats strong{font-family:var(--serif);font-size:1.65rem;color:var(--cream);line-height:1.1;font-variant-numeric:tabular-nums}
.hero-stats span{font-size:.76rem;letter-spacing:.18em;color:var(--tx-mute);margin-top:3px}
/* [WINGS] trust band — bordered panel, dividers, honest-zero friendly */
.trust-band{margin-top:34px;background:linear-gradient(180deg,rgba(255,246,227,.05),rgba(255,246,227,.015));
  border:1px solid var(--hair-soft);border-radius:var(--r-lg);box-shadow:var(--shadow-panel);
  padding-top:22px;padding-bottom:22px;padding-left:26px;padding-right:26px}
.trust-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:18px}
.trust-cell{text-align:left;min-width:0}
.trust-cell + .trust-cell{border-left:1px solid var(--hair-soft);padding-left:22px}
.trust-cell strong{display:block;font-family:var(--serif);font-size:1.9rem;line-height:1.1;color:var(--cream);font-variant-numeric:tabular-nums}
.trust-cell strong .unit{font-size:.95rem;color:var(--amber-hi);letter-spacing:.06em;margin-left:4px}
.trust-cell>span{display:block;font-size:.76rem;letter-spacing:.13em;color:var(--tx-mute);margin-top:5px;white-space:nowrap}
.trust-note{margin-top:16px;padding-top:12px;border-top:1px dashed var(--hair-soft);font-size:.82rem;color:var(--tx-mute)}

/* ---------- 5. Forms & search (16px on mobile: no iOS focus zoom) ---------- */
.searchbar{margin-top:28px;background:linear-gradient(180deg,rgba(255,246,227,.055),rgba(255,246,227,.02));
  border:1px solid var(--hair);border-radius:var(--r-lg);box-shadow:var(--shadow-panel);
  padding-top:20px;padding-bottom:20px;padding-left:20px;padding-right:20px;
  display:grid;grid-template-columns:1fr;gap:14px;align-items:end}
.searchbar label,.field label,.field-label{display:block;font-size:.76rem;letter-spacing:.22em;color:var(--amber);font-weight:500;margin-bottom:7px;text-transform:uppercase}
input,select,textarea{width:100%;max-width:100%;background:#0B1F33;border:1px solid rgba(232,161,58,.3);
  color:var(--cream);border-radius:var(--r-sm);padding-top:11px;padding-bottom:11px;padding-left:14px;padding-right:14px;
  font:inherit;font-size:16px;min-height:48px;transition:border-color var(--dur-1) var(--ease),box-shadow var(--dur-1) var(--ease)}
textarea{min-height:0;resize:vertical}
input::placeholder,textarea::placeholder{color:#7E93A8}
input:focus,select:focus,textarea:focus{outline:none;border-color:var(--amber);box-shadow:0 0 0 3px var(--focus-ring)}
input[type=date],input[type=time]{color-scheme:dark;min-width:0}
input[type=checkbox],input[type=radio]{width:auto;min-height:0;accent-color:var(--amber)}
.searchbar>*,.grid2>*,.grid3>*{min-width:0}
.search-note{font-size:.82rem;color:var(--tx-mute);margin-top:10px}
.card{background:linear-gradient(180deg,var(--panel2),var(--panel));border:1px solid var(--hair-soft);
  border-radius:var(--r-lg);box-shadow:var(--shadow-panel);
  padding-top:26px;padding-bottom:26px;padding-left:26px;padding-right:26px}
.form-card{max-width:760px}
.field{margin-bottom:18px}
.field small{display:block;margin-top:6px;color:var(--tx-mute);font-size:.8rem}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:16px}
.grid3{display:grid;grid-template-columns:1.2fr 1fr 1fr;gap:16px}
.conds{border:1px solid var(--hair-soft);border-radius:var(--r-md);padding-top:14px;padding-bottom:14px;padding-left:18px;padding-right:18px;margin-top:6px;margin-bottom:20px}
.conds legend{font-size:.76rem;letter-spacing:.22em;color:var(--amber);padding-left:8px;padding-right:8px}
.conds label{display:block;margin-top:7px;margin-bottom:7px;color:var(--tx-dim);font-size:.93rem;cursor:pointer;text-transform:none;letter-spacing:.02em}
/* segmented control */
.seg{display:flex;gap:8px}
.seg-opt{flex:1;position:relative;min-width:0}
.seg-opt input{position:absolute;opacity:0;inset:0;width:100%;height:100%;min-height:0;cursor:pointer}
.seg-opt span{display:flex;align-items:center;justify-content:center;min-height:48px;padding-top:10px;padding-bottom:10px;padding-left:6px;padding-right:6px;
  border:1px solid rgba(232,161,58,.3);border-radius:var(--r-md);letter-spacing:.06em;color:var(--tx-dim);font-size:.92rem;text-align:center;
  transition:background var(--dur-1) var(--ease),border-color var(--dur-1) var(--ease),color var(--dur-1) var(--ease)}
.seg-opt input:checked+span{background:linear-gradient(115deg,rgba(245,193,104,.22),rgba(232,161,58,.1));border-color:var(--amber);color:var(--amber-hi);box-shadow:inset 0 0 0 1px rgba(232,161,58,.35)}
.seg-opt input:focus-visible+span{outline:2px solid var(--amber);outline-offset:2px}
.seg-opt:active span{transform:scale(.98)}
/* destination quick chips */
.chips{margin-top:22px;display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.chips-q{font-size:.82rem;letter-spacing:.14em;color:var(--tx-mute);margin-right:2px}
.chip{display:inline-flex;align-items:center;min-height:44px;padding-top:8px;padding-bottom:8px;padding-left:16px;padding-right:16px;
  border-radius:var(--r-pill);border:1px solid var(--hair);background:rgba(23,58,94,.55);color:var(--tx-dim);cursor:pointer;
  font-size:.9rem;letter-spacing:.04em;transition:background var(--dur-1) var(--ease),color var(--dur-1) var(--ease),transform var(--dur-1) var(--ease)}
.chip b{color:var(--amber-hi);font-weight:500;margin-left:5px;font-variant-numeric:tabular-nums}
.chip:hover{border-color:var(--amber)}
.chip:active{transform:scale(.97)}
.chip.on{background:linear-gradient(115deg,var(--amber-hi),var(--amber));color:var(--amber-deep);border-color:transparent}
.chip.on b{color:var(--amber-deep)}
/* small pill used on dark panels (scores, reasons) */
.tag-pill{display:inline-block;padding-top:4px;padding-bottom:4px;padding-left:11px;padding-right:11px;
  border:1px solid rgba(232,161,58,.4);border-radius:var(--r-pill);font-size:.8rem;color:var(--cream);background:rgba(232,161,58,.07)}

/* ---------- 6. Badges & status system ---------- */
/* On paper (ticket cards): outline pills. Status colour = left dot + text. */
.badge{display:inline-flex;align-items:center;gap:6px;font-size:.72rem;letter-spacing:.08em;line-height:1.5;
  padding-top:2px;padding-bottom:2px;padding-left:10px;padding-right:10px;border-radius:var(--r-pill);
  border:1px solid var(--paper-line-strong);color:var(--ink-soft);vertical-align:1px;white-space:nowrap;background:rgba(255,255,255,.35)}
.badge::before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor;flex:none}
.badge-ok,.badge-verified{color:var(--st-open);border-color:rgba(46,125,79,.55);background:rgba(46,125,79,.07)}
.badge-wip,.badge-pending{color:var(--st-pending);border-color:rgba(185,122,30,.55);background:rgba(185,122,30,.07)}
.badge-done{color:var(--st-completed);border-color:rgba(138,109,31,.55);background:rgba(138,109,31,.08)}
.badge-personal{color:var(--st-personal);border-color:rgba(91,74,138,.55);background:rgba(91,74,138,.08)}
.badge-new{color:var(--st-new);border-color:rgba(31,110,140,.55);background:rgba(31,110,140,.08)}
.badge-urgent{color:#FFF3EC;border-color:transparent;background:linear-gradient(115deg,#C6503A,var(--st-urgent));font-weight:700}
.badge-urgent::before{background:#FFE1D6}
.badge-plain::before{display:none}
/* On dark (panels, profile headers): translucent fills */
.badge-dk{background:rgba(10,30,51,.35);border-color:rgba(242,236,220,.28);color:var(--tx-dim)}
.badge-dk.badge-ok,.badge-dk.badge-verified{color:#9AD6AE;border-color:rgba(154,214,174,.5);background:rgba(46,125,79,.18)}
.badge-dk.badge-wip,.badge-dk.badge-pending{color:var(--amber-hi);border-color:rgba(232,161,58,.5);background:rgba(232,161,58,.12)}
.badge-dk.badge-personal{color:#C4B5E8;border-color:rgba(196,181,232,.5);background:rgba(91,74,138,.25)}
.badge-dk.badge-new{color:#A8D4E6;border-color:rgba(168,212,230,.5);background:rgba(31,110,140,.25)}
/* pass status (card footer state word) — one class per state, colour-locked */
.pass-status,.st{font-size:.7rem;letter-spacing:.14em;line-height:1.5;padding-top:3px;padding-bottom:3px;padding-left:11px;padding-right:11px;
  border-radius:var(--r-pill);border:1px solid var(--paper-line-strong);color:var(--ink-soft);white-space:nowrap;
  transition:background var(--dur-2) var(--ease),color var(--dur-2) var(--ease),border-color var(--dur-2) var(--ease)}
.st-open{color:var(--st-open);border-color:rgba(46,125,79,.55)}
.st-matched{color:var(--st-matched);border-color:rgba(74,95,165,.55)}
.st-confirmed{color:var(--st-confirmed);border-color:rgba(23,58,94,.6);background:rgba(23,58,94,.07);font-weight:700}
.st-completed{color:var(--st-completed);border-color:rgba(138,109,31,.55);background:rgba(138,109,31,.09)}
.st-urgent{color:#FFF3EC;border-color:transparent;background:linear-gradient(115deg,#C6503A,var(--st-urgent));font-weight:700}
/* status pills on dark panels: paper colours above are for ticket stock;
   add .on-dark when a .pass-status sits on a dark panel or the ground */
.pass-status.on-dark.st-open{color:#9AD6AE;border-color:rgba(154,214,174,.55);background:rgba(46,125,79,.22)}
.pass-status.on-dark.st-matched{color:#B9C6EA;border-color:rgba(185,198,234,.55);background:rgba(74,95,165,.3)}
.pass-status.on-dark.st-confirmed{color:#A8D4E6;border-color:rgba(168,212,230,.55);background:rgba(31,110,140,.3)}
.pass-status.on-dark.st-completed{color:var(--amber-hi);border-color:rgba(245,193,104,.55);background:rgba(232,161,58,.14)}
/* gold trust seal (verified traveller / reviewed organisation) */
.trust-seal{display:inline-block;padding-top:2px;padding-bottom:2px;padding-left:10px;padding-right:10px;border-radius:var(--r-pill);
  background:linear-gradient(120deg,var(--amber-hi),var(--amber) 55%,var(--amber-lo));color:var(--amber-deep);
  font-size:.74rem;font-weight:700;letter-spacing:.06em;vertical-align:middle;box-shadow:0 2px 8px rgba(232,161,58,.35)}
.tier-badge{display:inline-block;padding-top:2px;padding-bottom:2px;padding-left:10px;padding-right:10px;border-radius:var(--r-pill);
  border:1px solid rgba(232,161,58,.55);color:var(--amber-hi);font-size:.74rem;font-weight:700;letter-spacing:.08em;vertical-align:middle}
.flash{border-radius:var(--r-sm);padding-top:12px;padding-bottom:12px;padding-left:18px;padding-right:18px;margin-top:18px;font-size:.93rem}
.flash-ok{background:rgba(127,168,140,.15);border:1px solid rgba(127,168,140,.5);color:#D8EBDC}
.flash-err{background:rgba(179,64,42,.16);border:1px solid rgba(197,80,58,.55);color:#F3CFC4}

/* ---------- 7. Ticket card — the signature (Lounge .pass, Wings livery) ----------
   Structure: .pass > .pass-main + .pass-stub, inner hairline frame,
   dashed perforation with punched notches, gold-foil seal on the stub.
   Two liveries: flight passes print on cream stock; dog passes use the
   same stock with a photo area ([WINGS]) and an amber kind line. */
.section{margin-top:48px;scroll-margin-top:84px}
.board-head{display:flex;align-items:flex-end;gap:16px;flex-wrap:wrap}
.board-head .count{color:var(--tx-mute);font-size:.88rem;margin-left:auto;font-variant-numeric:tabular-nums}
.pass-list,.tickets{display:grid;grid-template-columns:1fr;gap:22px;margin-top:20px}
.pass,.ticket{display:flex;background:linear-gradient(135deg,var(--cream) 0%,var(--cream2) 80%,var(--cream3) 100%);
  color:var(--ink);border-radius:14px;box-shadow:var(--shadow-pass);overflow:hidden;position:relative;
  transition:transform var(--dur-2) var(--ease),box-shadow var(--dur-2) var(--ease)}
.pass::before,.ticket::before{content:"";position:absolute;inset:7px;border:1px solid var(--paper-line);border-radius:9px;pointer-events:none;z-index:3}
@media (hover:hover){
  .pass:hover,.ticket:hover{transform:translateY(-3px) rotate(-.15deg);box-shadow:var(--shadow-lift)}
}
.pass:active,.ticket:active{transform:translateY(0) scale(.995)}
.pass-main,.t-main{flex:1;padding-top:20px;padding-bottom:20px;padding-left:22px;padding-right:22px;min-width:0}
.pass-topline,.t-topline{display:flex;justify-content:space-between;gap:10px;font-size:.66rem;letter-spacing:.24em;font-weight:700;text-transform:uppercase}
.pass-kind{white-space:nowrap}
.pass-offer .pass-kind,.t-flight .t-kind{color:var(--blue)}
.pass-request .pass-kind,.t-dog .t-kind{color:var(--amber-lo)}
.pass-no,.t-no{color:var(--ink-soft);white-space:nowrap;font-variant-numeric:tabular-nums}
.pass-route,.t-route{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap;margin-top:8px}
.pass-code,.t-code{font-family:var(--serif);font-weight:900;font-size:2rem;letter-spacing:.04em;line-height:1;color:var(--ink);white-space:nowrap}
.pass-arrow,.t-arrow{color:var(--amber-lo);font-weight:700}
.pass-route-arc{flex:none;align-self:center;color:var(--amber-lo)}
.pass-city,.t-city{color:var(--ink-soft);font-size:.88rem;letter-spacing:.06em;white-space:nowrap}
.pass-when,.t-when{display:flex;gap:6px 12px;flex-wrap:wrap;align-items:baseline;margin-top:9px;
  font-size:1.08rem;font-weight:700;color:var(--ink);line-height:1.35;font-variant-numeric:tabular-nums}
.pass-date{letter-spacing:.04em;white-space:nowrap}
.pass-time{color:var(--blue);white-space:nowrap}
.pass-flightno{font-size:.86rem;font-weight:600;color:var(--ink-soft);letter-spacing:.05em;white-space:nowrap}
.pass-meta,.t-meta{margin-top:7px;font-size:.88rem;color:var(--ink-soft);line-height:1.65}
.pass-meta b,.t-meta b{color:var(--ink);font-weight:600}
.pass-note,.t-note{border-top:1px dashed var(--paper-line);padding-top:9px;margin-top:11px;font-size:.88rem;color:#43536A;line-height:1.7}
.pass-foot,.t-foot{display:flex;align-items:center;gap:10px;margin-top:13px;flex-wrap:wrap}
.pass-host{display:flex;align-items:center;gap:10px;flex-wrap:wrap;font-size:.86rem}
.pass-host a{color:var(--blue);font-weight:500;position:relative;z-index:2}
.pass-cover{position:absolute;inset:0;z-index:1}
/* stub: perforation, punched notches, foil seal */
.pass-stub,.t-stub{width:96px;flex:none;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;
  padding-top:16px;padding-bottom:16px;padding-left:6px;padding-right:6px;text-align:center;
  border-left:2px dashed var(--paper-line-strong);position:relative;
  background:radial-gradient(circle at 50% 62%,rgba(232,161,58,.24),transparent 64%)}
.pass-stub::before,.pass-stub::after,.t-stub::before,.t-stub::after{content:"";position:absolute;left:-9px;width:16px;height:16px;border-radius:50%;background:var(--notch)}
.pass-stub::before,.t-stub::before{top:-8px}
.pass-stub::after,.t-stub::after{bottom:-8px}
.admit-label,.stub-label{font-size:.6rem;letter-spacing:.3em;color:var(--ink-soft);font-weight:700;white-space:nowrap}
.admit-num,.stub-big{font-family:var(--serif);font-weight:900;font-size:1.7rem;line-height:1;color:var(--ink);font-variant-numeric:tabular-nums}
.foil-seal,.stub-seal{width:38px;height:38px;border-radius:50%;display:grid;place-items:center;overflow:hidden;margin-top:5px;flex:none;
  color:var(--amber-deep);
  background:conic-gradient(from 210deg,#F9DC94,var(--amber) 30%,#C07F22 52%,var(--amber-hi) 74%,#F9DC94);
  box-shadow:inset 0 0 0 2px rgba(255,248,220,.65),inset 0 -3px 6px rgba(96,64,8,.45),0 3px 8px rgba(60,40,5,.3)}
.foil-seal img,.stub-seal img{width:100%;height:100%;display:block;object-fit:cover}
.stub-brand,.pass-view{font-size:.62rem;letter-spacing:.18em;color:var(--amber-lo);font-weight:700;white-space:nowrap}
/* [WINGS] dog photo area — fixed ratio, cover crop (never stretched),
   warm placeholder while a photo is absent, badges ride on the photo. */
.pass-photo{position:relative;border-radius:var(--r-md);overflow:hidden;aspect-ratio:16/9;margin-bottom:14px;
  background:
    radial-gradient(240px 150px at 82% 8%,rgba(232,161,58,.4),transparent 62%),
    radial-gradient(300px 200px at 8% 100%,rgba(127,178,222,.3),transparent 60%),
    linear-gradient(140deg,var(--panel3),var(--panel) 58%,var(--ground2))}
.pass-photo img{width:100%;height:100%;display:block;object-fit:cover}
.pass-photo .photo-paw{position:absolute;inset:0;display:grid;place-items:center;color:rgba(255,246,227,.85)}
.pass-photo .photo-paw svg{width:74px;height:74px;filter:drop-shadow(0 6px 14px rgba(2,10,20,.45))}
.pass-photo .photo-cap{position:absolute;left:10px;bottom:10px;font-size:.72rem;letter-spacing:.14em;color:var(--cream);
  background:rgba(10,28,46,.72);border:1px solid rgba(232,161,58,.4);border-radius:var(--r-pill);
  padding-top:3px;padding-bottom:3px;padding-left:11px;padding-right:11px;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}
.pass-photo .photo-badges{position:absolute;top:10px;right:10px;display:flex;gap:6px;flex-wrap:wrap;justify-content:flex-end}
.pass-photo .photo-badges .badge:not(.badge-urgent){background:rgba(255,251,240,.94)}
.pass-dogname,.t-name{font-family:var(--serif);font-size:1.5rem;font-weight:700;color:var(--ink);line-height:1.25}
.pass-dogname small,.t-name small{font-size:.9rem;color:var(--ink-soft);font-family:var(--sans);font-weight:400;letter-spacing:.04em}
.doc-row{display:flex;gap:6px;flex-wrap:wrap;align-items:center;margin-top:2px}
/* same-flight group progress (how many crates are still needed) */
.slot-line{display:flex;align-items:center;gap:8px;margin-top:9px;font-size:.84rem;color:var(--ink-soft)}
.slot-dots{display:inline-flex;gap:5px}
.slot-dot{width:11px;height:11px;border-radius:50%;border:1.5px solid rgba(28,47,69,.4);flex:none}
.slot-dot.filled{background:linear-gradient(135deg,var(--amber-hi),var(--amber-lo));border-color:transparent}
.slot-dot.open{background:transparent;border-style:dashed}

/* ---------- 8. How-it-works, rules, FAQ ---------- */
.how-steps,.steps{display:grid;grid-template-columns:1fr;gap:16px;margin-top:20px}
.how-step,.stepcard{background:linear-gradient(180deg,rgba(255,246,227,.045),rgba(255,246,227,.015));
  border:1px solid var(--hair-soft);border-radius:14px;
  padding-top:22px;padding-bottom:22px;padding-left:22px;padding-right:22px;
  transition:border-color var(--dur-2) var(--ease),transform var(--dur-2) var(--ease)}
.how-step:hover,.stepcard:hover{border-color:var(--hair)}
.how-step .num,.stepcard .num{font-family:var(--serif);font-size:1.55rem;font-weight:900;color:var(--amber);line-height:1}
.how-step h3,.stepcard h3{font-size:1.05rem;margin-top:9px;margin-bottom:6px}
.how-step p,.stepcard p{font-size:.9rem;color:var(--tx-dim);line-height:1.75}
.rules-grid{display:grid;grid-template-columns:1fr;gap:14px;margin-top:16px}
.rule-item{border:1px solid var(--hair-soft);border-radius:var(--r-md);
  padding-top:16px;padding-bottom:16px;padding-left:18px;padding-right:18px;background:rgba(255,246,227,.02)}
.rule-item .rule-ic{color:var(--amber);font-size:1.05rem}
.rule-item p{margin-top:6px;font-size:.9rem;color:var(--tx-dim)}
.faq-item{background:linear-gradient(180deg,rgba(255,246,227,.04),rgba(255,246,227,.015));border:1px solid var(--hair-soft);border-radius:14px;margin-top:12px}
.faq-item summary{cursor:pointer;min-height:44px;padding-top:14px;padding-bottom:14px;padding-left:18px;padding-right:18px;
  font-size:.98rem;color:var(--cream);letter-spacing:.03em;list-style:none;display:flex;align-items:center}
.faq-item summary::-webkit-details-marker{display:none}
.faq-item summary::after{content:"＋";margin-left:auto;color:var(--amber);flex:none;padding-left:12px}
.faq-item[open ] summary::after{content:"－"}
.faq-item p{padding-left:18px;padding-right:18px;padding-bottom:16px;font-size:.92rem;color:var(--tx-dim)}

/* ---------- 9. Empty state & loading skeleton ---------- */
.empty{border:1.5px dashed rgba(232,161,58,.4);border-radius:var(--r-lg);
  padding-top:36px;padding-bottom:36px;padding-left:24px;padding-right:24px;text-align:center;color:var(--tx-dim);margin-top:20px}
.empty .empty-seal{width:54px;height:54px;margin:0 auto 13px;border-radius:50%;display:grid;place-items:center;color:var(--amber-deep);
  background:conic-gradient(from 210deg,#F9DC94,var(--amber) 30%,#C07F22 52%,var(--amber-hi) 74%,#F9DC94);
  box-shadow:inset 0 0 0 2px rgba(255,248,220,.6),inset 0 -3px 6px rgba(96,64,8,.45),0 4px 12px rgba(2,10,20,.4)}
.empty .empty-seal svg{width:26px;height:26px}
.empty h3{font-size:1.08rem;margin-bottom:6px}
.empty p{text-align:center;margin-top:4px;margin-bottom:16px;font-size:.92rem;color:var(--tx-mute)}
.empty .btn{margin-top:2px}
/* [WINGS] skeleton — same silhouette as .pass so loading never jumps */
.skeleton{pointer-events:none}
.sk-pass{display:flex;background:linear-gradient(135deg,#12293F,#0D2136);border:1px solid var(--hair-soft);
  border-radius:14px;overflow:hidden;box-shadow:var(--shadow-panel)}
.sk-main{flex:1;padding-top:20px;padding-bottom:20px;padding-left:22px;padding-right:22px;min-width:0}
.sk-stub{width:96px;flex:none;border-left:2px dashed rgba(242,236,220,.14);
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;padding-top:16px;padding-bottom:16px}
.sk{border-radius:8px;background:linear-gradient(100deg,rgba(242,236,220,.07) 40%,rgba(242,236,220,.16) 50%,rgba(242,236,220,.07) 60%);
  background-size:200% 100%;animation:skShimmer 1.5s linear infinite}
.sk-line{height:13px;margin-bottom:11px}
.sk-line.w30{width:30%}.sk-line.w45{width:45%}.sk-line.w60{width:60%}.sk-line.w80{width:80%}.sk-line.w100{width:100%}
.sk-code{height:30px;width:58%;margin-top:4px;margin-bottom:13px;border-radius:10px}
.sk-photo{aspect-ratio:16/9;border-radius:var(--r-md);margin-bottom:13px}
.sk-seal{width:38px;height:38px;border-radius:50%}
@keyframes skShimmer{from{background-position:120% 0}to{background-position:-80% 0}}
.pager{display:flex;gap:8px;justify-content:center;align-items:center;flex-wrap:wrap;margin-top:26px;margin-bottom:26px}
.pager a,.pager span{border:1px solid var(--hair);border-radius:var(--r-pill);padding-top:7px;padding-bottom:7px;padding-left:13px;padding-right:13px;color:var(--tx-dim);white-space:nowrap;line-height:1.2;min-width:38px;text-align:center}
.pager a{min-height:44px;display:inline-flex;align-items:center;justify-content:center}
.pager .cur{background:rgba(232,161,58,.15);color:var(--amber-hi)}

/* ---------- 10. Match progress steps ---------- */
.panel{background:linear-gradient(180deg,var(--panel2),var(--panel));border:1px solid var(--hair-soft);
  border-radius:var(--r-lg);box-shadow:var(--shadow-panel);
  padding-top:24px;padding-bottom:24px;padding-left:24px;padding-right:24px}
.progress-match{font-size:.95rem;color:var(--tx-dim)}
.progress-match b{color:var(--cream)}
.pbar{height:8px;border-radius:99px;background:rgba(255,246,227,.14);margin-top:18px;overflow:hidden}
.pbar-fill{height:100%;width:0;border-radius:99px;background:linear-gradient(90deg,var(--amber-lo),var(--amber),var(--amber-hi));
  transition:width var(--dur-3) var(--ease)}
.psteps{display:flex;margin-top:18px;position:relative}
.psteps::before{content:"";position:absolute;top:18px;left:12%;right:12%;height:2px;border-radius:2px;
  background:linear-gradient(90deg,rgba(232,161,58,.55),rgba(255,246,227,.16))}
.pstep{flex:1;text-align:center;min-width:0;position:relative}
.pstep .dot{width:36px;height:36px;margin:0 auto;border-radius:50%;border:2px solid rgba(255,246,227,.3);
  display:flex;align-items:center;justify-content:center;font-size:.85rem;color:var(--tx-mute);background:var(--panel);
  font-variant-numeric:tabular-nums;transition:background var(--dur-2) var(--ease),border-color var(--dur-2) var(--ease),box-shadow var(--dur-2) var(--ease)}
.pstep.done .dot{background:linear-gradient(115deg,var(--amber-hi),var(--amber));border-color:transparent;color:var(--amber-deep);font-weight:700}
.pstep.now .dot{border-color:var(--amber);color:var(--amber-hi);box-shadow:0 0 0 5px rgba(232,161,58,.18);animation:nowPulse 2.2s ease-in-out infinite}
@keyframes nowPulse{0%,100%{box-shadow:0 0 0 4px rgba(232,161,58,.16)}50%{box-shadow:0 0 0 8px rgba(232,161,58,.05)}}
.pstep .lb{display:block;margin-top:8px;font-size:.8rem;letter-spacing:.05em;color:var(--tx-dim);line-height:1.45;padding-left:4px;padding-right:4px}
.pstep.done .lb,.pstep.now .lb{color:var(--cream)}
.progress-desc{margin-top:16px;color:var(--tx-dim);font-size:.93rem}
.progress-actions{margin-top:16px;display:flex;gap:10px;flex-wrap:wrap;align-items:center}
.progress-done{color:var(--amber-hi);font-size:.9rem;letter-spacing:.08em}

/* ---------- 11. Modal & toast ---------- */
.modal-backdrop{position:fixed;inset:0;z-index:80;background:rgba(4,12,22,.7);
  -webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);
  display:flex;align-items:flex-end;justify-content:center;padding:0;animation:fadeIn var(--dur-2) var(--ease)}
@keyframes fadeIn{from{opacity:0}to{opacity:1}}
.modal{background:#FFFBF0;color:var(--ink);width:100%;max-width:560px;max-height:92dvh;overflow:auto;
  border-radius:20px 20px 0 0;padding-top:26px;padding-bottom:30px;padding-left:24px;padding-right:24px;
  box-shadow:var(--shadow-lift);animation:sheetUp var(--dur-3) var(--ease)}
@keyframes sheetUp{from{transform:translateY(26px);opacity:.4}to{transform:none;opacity:1}}
.modal h3{color:var(--ink);font-size:1.28rem}
.modal h3::after{content:"";display:block;width:48px;height:1px;margin-top:10px;background:linear-gradient(90deg,var(--amber),transparent)}
.modal .target{margin-top:12px;font-size:.93rem;color:#43536A}
.modal .target b{color:var(--ink)}
.modal label{display:block;font-size:.78rem;letter-spacing:.18em;color:var(--amber-lo);font-weight:600;margin-top:16px;margin-bottom:7px}
.modal select,.modal textarea,.modal input{background:#FFFFFF;border:1px solid #D8C9A8;color:var(--ink)}
.modal .hint{font-size:.82rem;color:var(--ink-soft);margin-top:12px;line-height:1.7}
.modal-actions{display:flex;gap:10px;margin-top:20px;flex-wrap:wrap}
.toast{position:fixed;left:50%;transform:translateX(-50%);bottom:calc(var(--tabbar-h) + 34px + env(safe-area-inset-bottom));z-index:90;
  background:var(--cream);color:var(--ink);border-radius:var(--r-pill);
  padding-top:12px;padding-bottom:12px;padding-left:22px;padding-right:22px;
  font-size:.9rem;letter-spacing:.04em;box-shadow:0 16px 34px -12px rgba(2,10,20,.65);
  max-width:calc(100vw - 32px);text-align:center;animation:toastIn var(--dur-2) var(--ease)}
@keyframes toastIn{from{transform:translate(-50%,10px);opacity:0}to{transform:translate(-50%,0);opacity:1}}

/* ---------- 12. Footer ---------- */
.sitefoot,footer.sitefoot{border-top:1px solid var(--hair-soft);margin-top:60px;background:rgba(2,10,20,.28)}
.foot-in{padding-top:32px;padding-bottom:8px} /* longhand — combines with .wrap */
.foot-brand{display:flex;align-items:center;gap:14px}
.foot-brand img{height:52px;width:auto;display:block;max-width:100%}
.foot-note{margin-top:14px;font-size:.84rem;color:var(--tx-mute);max-width:52em;line-height:1.8}
.foot-line{margin-top:10px;font-size:.84rem;color:var(--tx-dim);letter-spacing:.1em}
.foot-links{display:flex;gap:8px 22px;flex-wrap:wrap;margin-top:16px}
.foot-links a{color:var(--tx-dim);font-size:.9rem;padding-top:10px;padding-bottom:10px}
.foot-fine{padding-top:12px;padding-bottom:26px;font-size:.74rem;letter-spacing:.05em;line-height:1.9;color:var(--tx-mute)}
.demo-strip{margin-top:16px;border:1px solid var(--hair);background:rgba(232,161,58,.1);border-radius:var(--r-md);
  padding-top:9px;padding-bottom:9px;padding-left:16px;padding-right:16px;text-align:center;font-size:.86rem;color:var(--amber-hi);letter-spacing:.06em}

/* ---------- 13. Bottom tab bar (Wings: primary navigation, always on mobile)
   Lounge shows .tabbar only in standalone mode; Wings planning §10 makes
   the five-slot frosted bar the main navigation, so it is always rendered
   at <=820px. Centre create button is raised; unread counts use .tab-badge. */
.tabbar{display:none}
@media (max-width:820px){
  body{padding-bottom:calc(var(--tabbar-h) + 22px + env(safe-area-inset-bottom))}
  .tabbar{display:flex;position:fixed;left:0;right:0;bottom:0;z-index:70;
    background:rgba(11,27,44,.9);-webkit-backdrop-filter:blur(18px) saturate(1.4);backdrop-filter:blur(18px) saturate(1.4);
    border-top:1px solid var(--hair-soft);box-shadow:var(--shadow-tab);
    padding-top:6px;padding-left:6px;padding-right:6px;padding-bottom:calc(6px + env(safe-area-inset-bottom))}
  .tabbar a{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;
    min-height:52px;font-size:.68rem;letter-spacing:.14em;color:var(--tx-mute);position:relative;border-radius:12px;
    padding-top:5px;padding-bottom:3px;transition:color var(--dur-1) var(--ease),background var(--dur-1) var(--ease)}
  .tabbar a:hover{text-decoration:none}
  .tabbar a:active{background:rgba(232,161,58,.1)}
  .tabbar a.on{color:var(--amber-hi)}
  .tabbar a .ic{display:flex;align-items:center;justify-content:center;height:24px}
  .tabbar a .ic svg{width:23px;height:23px}
  .tabbar .tab-create{justify-content:flex-start}
  .tab-plus{width:50px;height:50px;border-radius:50%;flex:none;
    background:linear-gradient(135deg,var(--amber-hi),var(--amber) 60%,#C07F22);color:var(--amber-deep);
    display:grid;place-items:center;margin-top:-24px;
    box-shadow:0 10px 24px rgba(2,10,20,.55),0 0 0 5px rgba(11,27,44,.92),inset 0 1px 0 rgba(255,250,230,.7);
    transition:transform var(--dur-1) var(--ease)}
  .tab-plus svg{width:24px;height:24px}
  .tab-create:active .tab-plus{transform:scale(.93)}
  .tab-badge{position:absolute;top:1px;right:calc(50% - 22px);background:linear-gradient(115deg,#C6503A,var(--st-urgent));color:#FFF3EC;
    font-size:.62rem;font-weight:700;min-width:18px;height:18px;border-radius:99px;display:grid;place-items:center;
    padding-left:5px;padding-right:5px;letter-spacing:0;box-shadow:0 3px 8px rgba(2,10,20,.45)}
  .toast{bottom:calc(var(--tabbar-h) + 30px + env(safe-area-inset-bottom))}
}
@media (display-mode:standalone){
  .to-top{bottom:calc(96px + env(safe-area-inset-bottom))}
}

/* ---------- 14. Shared content pieces (profile, messages, detail) ---------- */
.avatar{border-radius:50%;flex:none}
img.avatar{object-fit:cover}
.avatar-ph{display:inline-flex;align-items:center;justify-content:center;
  background:radial-gradient(circle at 32% 30%,var(--amber-hi),var(--amber) 55%,var(--amber-lo));color:var(--amber-deep);
  font-family:var(--serif);font-weight:900;box-shadow:inset 0 0 0 2px rgba(255,246,214,.45)}
.avatar-sm{width:46px;height:46px;font-size:1.2rem}
.avatar-md{width:66px;height:66px;font-size:1.5rem}
.kv{display:grid;grid-template-columns:110px 1fr;gap:7px 16px;font-size:.95rem}
.kv dt{color:var(--amber);font-size:.76rem;letter-spacing:.2em;text-transform:uppercase;padding-top:3px}
.kv dd{margin:0;color:var(--cream)}
.stat-line{display:flex;gap:22px;flex-wrap:wrap;color:var(--tx-dim);font-size:.9rem}
.stat-line b{color:var(--amber-hi);font-family:var(--serif);font-size:1.15rem;font-variant-numeric:tabular-nums}
.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-top:14px;padding-bottom:14px;padding-left:18px;padding-right:18px;
  background:rgba(255,246,227,.015);color:var(--tx);transition:border-color var(--dur-1) var(--ease),background var(--dur-1) var(--ease)}
.inbox-row:hover{border-color:var(--hair);background:rgba(255,246,227,.04);text-decoration:none}
.inbox-row.has-unread{border-color:rgba(232,161,58,.45);background:rgba(232,161,58,.05)}
.thread{display:flex;flex-direction:column;gap:10px;margin-top:14px;margin-bottom:14px}
.msg{max-width:78%;padding-top:10px;padding-bottom:10px;padding-left:15px;padding-right:15px;border-radius:14px;font-size:.93rem;line-height:1.6;overflow-wrap:anywhere}
.msg.me{align-self:flex-end;background:linear-gradient(120deg,rgba(245,193,104,.24),rgba(232,161,58,.13));border:1px solid rgba(232,161,58,.4)}
.msg.them{align-self:flex-start;background:rgba(255,246,227,.05);border:1px solid var(--hair-soft)}
.msg small{display:block;color:var(--tx-mute);font-size:.72rem;margin-top:3px}
.to-top{position:fixed;right:18px;bottom:calc(18px + env(safe-area-inset-bottom));z-index:60;width:52px;height:52px;border-radius:50%;
  background:linear-gradient(160deg,var(--panel2),var(--ground2));border:1px solid var(--amber);cursor:pointer;
  display:flex;align-items:center;justify-content:center;box-shadow:0 12px 30px rgba(2,10,20,.5);
  opacity:0;transform:translateY(14px);pointer-events:none;transition:opacity var(--dur-2) var(--ease),transform var(--dur-2) var(--ease)}
.to-top.show{opacity:1;transform:none;pointer-events:auto}
.to-top svg{width:24px;height:24px}
.to-top svg path{fill:var(--amber-hi)}

/* ---------- 15. Responsive ---------- */
@media (min-width:640px){
  .how-steps,.steps{grid-template-columns:1fr 1fr}
  .rules-grid{grid-template-columns:1fr 1fr}
  .modal-backdrop{align-items:center;padding:20px}
  .modal{border-radius:20px}
  .toast{bottom:36px}
}
@media (min-width:900px){
  .searchbar{grid-template-columns:1fr 1fr .85fr 1.3fr auto}
  .pass-list,.tickets{grid-template-columns:1fr 1fr}
  .how-steps,.steps{grid-template-columns:repeat(3,1fr)}
  .rules-grid{grid-template-columns:repeat(3,1fr)}
  .hero{padding-top:50px}
}
@media (max-width:820px){
  input,select,textarea{font-size:16px} /* iOS focus-zoom guard (also the base size) */
  .mainnav{display:none}
  .trust-grid{grid-template-columns:1fr 1fr;gap:20px 16px}
  .trust-cell + .trust-cell{border-left:0;padding-left:0}
  .trust-cell:nth-child(even){border-left:1px solid var(--hair-soft);padding-left:18px}
}
@media (max-width:640px){
  .wrap{padding-left:16px;padding-right:16px}
  .grid2,.grid3{grid-template-columns:1fr}
  .head-actions{display:none} /* posting lives on the centre tab + hero actions */
  .hero-actions{flex-direction:column}
  .hero-actions .btn{width:100%}
  .pass,.ticket{flex-direction:column}
  .pass-stub,.t-stub{width:auto;flex-direction:row;justify-content:flex-start;gap:12px;
    border-left:0;border-top:2px dashed var(--paper-line-strong);
    padding-top:10px;padding-bottom:10px;padding-left:20px;padding-right:20px}
  .pass-stub::before,.pass-stub::after,.t-stub::before,.t-stub::after{display:none}
  .admit-num,.stub-big{font-size:1.35rem}
  .foil-seal,.stub-seal{width:32px;height:32px;margin-top:0;margin-left:auto}
  .stub-brand{margin-left:2px}
  .pass-code,.t-code{font-size:1.8rem}
  .sk-pass{flex-direction:column}
  .sk-stub{width:auto;flex-direction:row;justify-content:flex-start;border-left:0;border-top:2px dashed rgba(242,236,220,.14)}
  .msg{max-width:92%}
  .card,.panel{padding-left:20px;padding-right:20px}
  .searchbar{padding-left:16px;padding-right:16px}
  .trust-band{padding-left:20px;padding-right:20px}
  .pstep .lb{font-size:.74rem}
}
/* ---------- 16. Reduced motion: every animation above is decorative ---------- */
@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  *,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}
  .pass:hover,.ticket:hover,.btn:hover{transform:none}
  .sk{animation:none}
}

/* ---------- 17. [WINGS-D] 前台改作補充元件 ---------- */
.hero-title{font-family:var(--serif);font-size:var(--fs-display);line-height:1.25;margin:10px 0 12px}
.section{margin:34px 0;scroll-margin-top:84px}
.dog-detail{border-top:1px dashed var(--hair-soft);padding-top:14px;margin-top:14px}
.dog-detail:first-of-type{border-top:0;padding-top:0;margin-top:0}
.pass-photo img{width:100%;height:100%;object-fit:cover;display:block}
fieldset.dog-block{border:1px solid var(--hair-soft);border-radius:var(--r-md);margin:14px 0}
fieldset.dog-block legend{padding:0 8px;font-weight:700}
.pager a.on{background:var(--amber);color:var(--amber-deep)}
.kv>div{display:flex;gap:12px;padding:4px 0}
.kv dt{flex:0 0 34%;color:var(--tx-mute)}
.kv dd{margin:0;min-width:0;overflow-wrap:anywhere}
.msg-form{align-items:flex-end}
.msg-form textarea{flex:1;min-width:0}
.msg-form .btn{flex:0 0 auto;white-space:nowrap}
button.seg-opt{display:flex;align-items:center;justify-content:center;min-height:48px;padding:10px 6px;
  border:1px solid rgba(232,161,58,.3);border-radius:var(--r-md);background:transparent;letter-spacing:.06em;
  color:var(--tx-dim);font-size:.92rem;font-family:inherit;cursor:pointer;text-align:center}
button.seg-opt.on{background:linear-gradient(115deg,rgba(245,193,104,.22),rgba(232,161,58,.1));
  border-color:var(--amber);color:var(--amber-hi);box-shadow:inset 0 0 0 1px rgba(232,161,58,.35)}
.health-row{align-items:flex-start}
.health-meta{text-align:left;flex:1;min-width:0}
.health-meta b{display:block;color:var(--cream);font-size:.95rem}
.health-meta span{font-size:.82rem}
.health-act{flex:0 0 auto;padding-top:2px}
.pass-city{display:flex;gap:8px;align-items:baseline}
.pass-city-arrow{color:var(--amber-deep);font-weight:700}
@media (max-width:600px){
  .kv>div{flex-direction:column;gap:1px}
  .kv dt{flex:none}
}

/* ---------- 18. [WINGS-QA 2026-11-05] 390px visual-pass fixes ----------
   (a) Homepage how-steps showed both the Lounge ::before counter ("01")
       and the Wings .flow-num circle ("1") — drop the inherited counter.
   (b) Page-level h1 sat flush against the sticky topbar on plain pages
       (board / inbox / listing form / chooser) — give direct-child h1 air.
   (c) Poster name link in the dark detail panel reused the paper-card
       colour (--blue) and was nearly invisible on the panel — lighten it
       only where .pass-host is a direct child of a dark .card.
   (d) Slot dots in the dark progress panel used the paper border colour
       and vanished — lighten only the direct-child .slot-line of a .card. */
.how-step::before{display:none}
main.wrap>h1{margin-top:20px}
.card>.pass-host a{color:var(--amber-hi)}
.card>.slot-line .slot-dot{border-color:rgba(242,236,220,.6)}
/* (e) Admin sub-nav panel kept the Lounge espresso-black background,
       clashing with the Wings deep-blue theme — re-skin to the tabbar blue.
   (f) Back-to-top button sat at bottom:18px, hidden behind the fixed
       mobile tab bar (only standalone/PWA mode had lifted it) — lift it
       above the tab bar on phone widths generally. */
.admin-nav{background:rgba(11,27,44,.94)}
@media (max-width:820px){
  .to-top{bottom:calc(var(--tabbar-h) + 28px + env(safe-area-inset-bottom))}
}
/* (g) Desktop stub route code ("TPE→SFO") at 1.7rem is ~134px wide and
       was clipped by the 96px stub — shrink + nowrap on wide screens.
   (h) No-photo placeholder paw is an emoji glyph (markup) while the CSS
       sized only an SVG — give the glyph the intended display size. */
@media (min-width:821px){
  .pass-stub .admit-num{font-size:1.02rem;white-space:nowrap}
}
.pass-photo .photo-paw{font-size:64px;line-height:1}
