/* =====================================================================
   嗅覺島 SOULAND 2026 — 全站樣式
   品牌色票取自主視覺海報(靛藍 / 霧霾藍 / 金 / 米)
   ===================================================================== */
:root{
  --mist:#E7ECF1;
  --mist2:#D6E0EA;
  --powder:#B7C8D9;
  --slate:#7B93B2;
  --indigo:#284664;
  --indigo-deep:#1D3450;
  --ink:#1B2837;
  --cream:#EFE7D4;
  --paper:#F5F0E4;
  --gold:#B89A5C;
  --gold-soft:#D4BE8C;
  --line:rgba(40,70,100,.16);
  --line-soft:rgba(40,70,100,.09);
  --gold-line:linear-gradient(90deg,rgba(184,154,92,0) 0%,rgba(184,154,92,.55) 22%,rgba(184,154,92,.55) 78%,rgba(184,154,92,0) 100%);
  --maxw:1160px;
  --gutter:clamp(20px,4vw,48px);
  --sec-pad:clamp(72px,8vw,120px);
  /* elevation system — soft, layered, restrained */
  --sh-1:0 1px 2px rgba(28,40,55,.04),0 6px 18px -10px rgba(28,40,55,.14);
  --sh-2:0 2px 4px rgba(28,40,55,.05),0 18px 40px -18px rgba(28,40,55,.20);
  --sh-3:0 4px 8px rgba(28,40,55,.06),0 30px 60px -24px rgba(28,40,55,.26);
}
*{margin:0;padding:0;box-sizing:border-box}
html{scroll-behavior:smooth;font-size:18px}
body{
  background:var(--mist);
  color:var(--ink);
  font-family:'Noto Sans TC',sans-serif;
  font-size:1rem;
  line-height:1.8;letter-spacing:.02em;
  -webkit-font-smoothing:antialiased;
}
h1,h2,h3,.serif{font-family:'Noto Serif TC',serif}
.en{font-family:'Cormorant Garamond','Noto Serif TC',serif;letter-spacing:.16em}
img{max-width:100%;display:block}
a{color:inherit;text-decoration:none}
.wrap{max-width:var(--maxw);margin:0 auto;padding:0 var(--gutter)}

/* NAV */
.nav{position:sticky;top:0;z-index:60;background:rgba(231,236,241,.9);backdrop-filter:blur(9px);border-bottom:1px solid var(--line)}
.nav-in{max-width:var(--maxw);margin:0 auto;padding:14px var(--gutter);display:flex;align-items:center;gap:26px}
.logo{display:flex;align-items:center;gap:11px;cursor:pointer}
.logo img{width:38px;height:38px;flex:none;object-fit:contain}
.logo .lt b{font-family:'Noto Serif TC',serif;font-weight:700;font-size:1.18rem;letter-spacing:.22em;color:var(--indigo);display:block;line-height:1.1}
.logo .lt span{font-family:'Cormorant Garamond',serif;font-size:.72rem;letter-spacing:.32em;color:var(--slate)}
.nav-links{margin-left:auto;display:flex;gap:3px;align-items:center;flex-wrap:wrap}
.nav-links a,.nav-links button{background:none;border:none;cursor:pointer;font:inherit;font-size:.88rem;padding:7px 11px;border-radius:99px;color:var(--ink);letter-spacing:.04em;white-space:nowrap}
.nav-links a.on,.nav-links button.on{background:var(--indigo);color:var(--paper)}
.nav-links a:hover:not(.on),.nav-links button:hover:not(.on){background:rgba(40,70,100,.1)}
.nav-links a.cta{background:var(--gold);color:#fff}
.nav-links a.cta:hover{background:#a8873f}
.nav-soon{font-size:.68rem;color:var(--gold);border:1px solid var(--gold);border-radius:99px;padding:1px 8px;margin-left:4px;vertical-align:middle}
/* 行動版選單 */
.nav-toggle{display:none;background:none;border:1px solid var(--line);border-radius:8px;cursor:pointer;font-size:1.2rem;line-height:1;color:var(--indigo);margin-left:auto;padding:8px 12px}
@media(max-width:920px){
  .nav-toggle{display:block}
  .nav-links{margin-left:0;display:none;position:absolute;top:100%;left:0;right:0;flex-direction:column;align-items:stretch;gap:2px;
    background:rgba(231,236,241,.98);backdrop-filter:blur(9px);padding:10px 16px 18px;border-bottom:1px solid var(--line);box-shadow:0 16px 30px rgba(28,40,55,.12)}
  .nav.open .nav-links{display:flex}
  .nav-links a,.nav-links button{text-align:left;width:100%;padding:12px 14px;border-radius:8px;font-size:.98rem}
  .nav-links a.cta{text-align:center;margin-top:8px}
}

.page{display:none}
.page.show{display:block;animation:fade .45s ease}
@keyframes fade{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}

/* HERO */
.hero{position:relative;overflow:hidden;padding:clamp(84px,8vw,112px) 0 clamp(64px,6vw,92px);
  background:
    radial-gradient(120% 90% at 62% 46%, rgba(239,231,212,.7) 0%, rgba(239,231,212,0) 46%),
    linear-gradient(150deg,#E9EDF1 0%,#CDD9E5 58%,#9FB4CC 100%);
}
.hero-canvas{position:absolute;inset:0;pointer-events:none}
.hero-canvas svg{width:100%;height:100%}
.drift{animation:drift 30s ease-in-out infinite alternate;transform-origin:center}
@keyframes drift{from{transform:translate(-1.5%,-1%) rotate(-.6deg)}to{transform:translate(1.5%,1.5%) rotate(.6deg)}}
.moon{position:absolute;top:46px;right:9%;width:62px;height:62px;pointer-events:none}
@media (prefers-reduced-motion:reduce){.drift{animation:none}.page.show{animation:none}}
.hero-in{position:relative;max-width:var(--maxw);margin:0 auto;padding:0 var(--gutter)}
.eyebrow{display:inline-block;font-size:.74rem;letter-spacing:.36em;color:var(--gold);border-bottom:1px solid var(--gold);padding-bottom:6px;margin-bottom:26px;text-transform:uppercase}
.hero h1{font-size:clamp(2.7rem,6.4vw,4.6rem);font-weight:700;letter-spacing:.18em;color:var(--indigo);line-height:1.24}
.hero .h1-en{font-family:'Cormorant Garamond',serif;display:block;font-weight:500;font-size:clamp(1.1rem,2.4vw,1.7rem);letter-spacing:.5em;color:var(--slate);margin-top:10px}
.hero p.lead{max-width:720px;margin:28px 0 0;font-size:clamp(1.02rem,1.3vw,1.2rem);line-height:1.85;color:#3a4858}
.hero-meta{display:flex;gap:38px;flex-wrap:wrap;margin-top:38px}
.hero-meta div{border-left:1px solid var(--gold);padding-left:14px}
.hero-meta small{display:block;font-size:.7rem;letter-spacing:.26em;color:var(--slate)}
.hero-meta strong{font-family:'Noto Serif TC',serif;font-size:1.04rem;font-weight:600;color:var(--indigo)}
.cta-row{display:flex;gap:14px;margin-top:42px;flex-wrap:wrap}
.btn{display:inline-flex;align-items:center;gap:10px;cursor:pointer;border:none;font:inherit;padding:15px 32px;border-radius:2px;font-size:.95rem;letter-spacing:.18em;transition:transform .25s ease,background .25s ease,box-shadow .25s ease,color .25s ease}
.btn-primary{background:var(--indigo);color:var(--paper);box-shadow:0 10px 26px -14px rgba(40,70,100,.85)}
.btn-primary:hover{background:var(--indigo-deep);transform:translateY(-2px);box-shadow:0 16px 32px -14px rgba(40,70,100,.9)}
.btn-ghost{background:transparent;color:var(--indigo);border:1px solid var(--indigo)}
.btn-ghost:hover{background:rgba(40,70,100,.07)}
.btn[disabled]{opacity:.42;cursor:default}
.countdown{display:flex;gap:24px;margin-top:48px;align-items:center}
.cd{text-align:center}
.cd b{font-family:'Cormorant Garamond',serif;display:block;font-size:2.5rem;font-weight:600;color:var(--indigo);line-height:1}
.cd small{font-size:.68rem;letter-spacing:.3em;color:var(--slate)}
.cd-sep{font-family:'Cormorant Garamond',serif;font-size:1.6rem;color:var(--gold)}

/* HERO 海報視覺 */
.hero-poster{position:absolute;top:0;right:0;height:100%;width:46%;background-size:cover;background-position:center 14%;
  -webkit-mask-image:linear-gradient(90deg,transparent,#000 38%),linear-gradient(0deg,transparent 2%,#000 12%);
  -webkit-mask-composite:source-in;
  mask-image:linear-gradient(90deg,transparent,#000 38%),linear-gradient(0deg,transparent 2%,#000 12%);
  mask-composite:intersect;opacity:.9;pointer-events:none}
@media(max-width:900px){.hero-poster{display:none}}

/* STAT */
.stats{background:linear-gradient(180deg,var(--indigo),var(--indigo-deep));border-top:1px solid rgba(184,154,92,.45);position:relative}
.stats::before{content:"";position:absolute;left:0;top:0;width:100%;height:1px;background:var(--gold-line)}
.stats-in{max-width:var(--maxw);margin:0 auto;padding:42px var(--gutter);display:grid;grid-template-columns:repeat(4,1fr);gap:20px}
.stat{position:relative;padding-left:22px}
.stat::before{content:"";position:absolute;left:0;top:6px;bottom:6px;width:1px;background:rgba(184,154,92,.4)}
.stat:first-child{padding-left:0}
.stat:first-child::before{display:none}
.stat b{font-family:'Cormorant Garamond',serif;font-size:2.25rem;font-weight:600;display:block;line-height:1.2;color:var(--gold-soft)}
.stat small{font-size:.78rem;letter-spacing:.14em;color:rgba(245,240,228,.78)}
@media(max-width:760px){.stats-in{grid-template-columns:repeat(2,1fr);gap:26px 20px}.stat{padding-left:0}.stat::before{display:none}}

/* SEC */
.sec{padding:var(--sec-pad) 0}
.sec.alt{background:var(--paper)}
.sec.deep{background:var(--mist2)}
.sec-head{margin-bottom:54px}
.sec-head h2{font-size:clamp(1.8rem,3.4vw,2.7rem);font-weight:600;letter-spacing:.16em;color:var(--indigo)}
.sec-head .sub-en{font-family:'Cormorant Garamond',serif;letter-spacing:.34em;color:var(--gold);font-size:.85rem;text-transform:uppercase;display:inline-flex;align-items:center;gap:14px;margin-bottom:13px}
.sec-head .sub-en::after{content:"";width:clamp(36px,5vw,64px);height:1px;background:linear-gradient(90deg,var(--gold),rgba(184,154,92,0))}
.sec-head p{max-width:680px;margin-top:16px;font-size:clamp(1rem,1.1vw,1.12rem);color:#3f4d5d}

/* 五覺醒 */
.awaken{display:grid;grid-template-columns:repeat(5,1fr);gap:0;border-top:1px solid var(--line)}
.awaken div{padding:30px 18px 0;border-left:1px solid var(--line)}
.awaken div:first-child{border-left:none}
.awaken small{font-family:'Cormorant Garamond',serif;font-size:1rem;letter-spacing:.2em;color:var(--gold)}
.awaken h3{font-size:1.12rem;letter-spacing:.16em;margin:8px 0 10px;color:var(--indigo)}
.awaken p{font-size:.86rem;color:#54606e;line-height:1.75}
@media(max-width:860px){.awaken{grid-template-columns:1fr 1fr}.awaken div{border-left:none;border-top:1px solid var(--line);padding-top:22px}}
@media(max-width:520px){.awaken{grid-template-columns:1fr}}

/* 體驗卡 */
.cards{display:grid;grid-template-columns:repeat(2,1fr);gap:clamp(24px,2.4vw,34px)}
.card{position:relative;background:var(--paper);border:1px solid var(--line);border-radius:3px;padding:clamp(34px,3vw,46px) clamp(30px,2.6vw,42px);box-shadow:var(--sh-1);transition:transform .35s cubic-bezier(.2,.7,.2,1),box-shadow .35s ease,border-color .35s ease}
.card::before{content:"";position:absolute;left:0;top:0;width:100%;height:2px;background:var(--gold-line);transform:scaleX(0);transform-origin:left;transition:transform .4s cubic-bezier(.2,.7,.2,1);opacity:.85}
.sec.alt .card{background:#FBF7EC}
.card:hover{transform:translateY(-6px);box-shadow:var(--sh-2);border-color:rgba(184,154,92,.3)}
.card:hover::before{transform:scaleX(1)}
.card .tag{font-family:'Cormorant Garamond',serif;font-size:.8rem;letter-spacing:.3em;color:var(--gold);text-transform:uppercase}
.card h3{font-size:clamp(1.34rem,1.7vw,1.55rem);letter-spacing:.12em;margin:10px 0 6px;color:var(--indigo)}
.card h4{font-size:1rem;font-weight:500;color:var(--slate);margin-bottom:14px}
.card p{font-size:clamp(.92rem,1vw,1rem);color:#46535f}
/* 三欄榜單列（年度榜單獎）：讓「年度最值得收藏香水」置中且突顯 */
.cards.rank3{grid-template-columns:repeat(3,1fr);align-items:stretch}
.card.highlight{background:linear-gradient(160deg,#fffaf0,#f3e8cf);border:1px solid var(--gold);
  box-shadow:0 18px 44px -22px rgba(184,154,92,.7);transform:translateY(-10px);position:relative}
.card.highlight::before{content:'年度焦點';position:absolute;top:-12px;left:50%;transform:translateX(-50%);
  background:linear-gradient(120deg,var(--gold),#a8873f);color:#fff;font-size:.66rem;letter-spacing:.18em;
  padding:3px 14px;border-radius:99px;white-space:nowrap}
.card.highlight .tag{color:#a8873f}
.card.highlight:hover{transform:translateY(-14px)}
@media(max-width:760px){.cards{grid-template-columns:1fr}.cards.rank3{grid-template-columns:1fr}.card.highlight{transform:none}.card.highlight:hover{transform:translateY(-4px)}}

/* 大賞 */
.awards{display:grid;grid-template-columns:repeat(3,1fr);gap:26px}
.award{color:var(--paper);padding:38px 32px;border-top:2px solid var(--gold);box-shadow:var(--sh-2);transition:transform .35s cubic-bezier(.2,.7,.2,1),box-shadow .35s ease}
.award:hover{transform:translateY(-5px);box-shadow:var(--sh-3)}
.award:nth-child(1){background:linear-gradient(160deg,var(--indigo),var(--indigo-deep))}
.award:nth-child(2){background:linear-gradient(160deg,#8295b2,var(--slate))}
.award:nth-child(3){background:linear-gradient(160deg,#274564,var(--indigo-deep))}
.award small{font-family:'Cormorant Garamond',serif;letter-spacing:.28em;font-size:.78rem;color:var(--gold-soft);text-transform:uppercase}
.award h3{font-size:1.3rem;letter-spacing:.14em;margin:8px 0 14px}
.award p{font-size:.88rem;opacity:.94}
@media(max-width:760px){.awards{grid-template-columns:1fr}}

/* 時間表 */
.timeline{display:grid;grid-template-columns:repeat(3,1fr);gap:26px;border-top:2px solid var(--indigo);padding-top:34px}
.tday small{font-family:'Cormorant Garamond',serif;font-size:1rem;letter-spacing:.18em;color:var(--gold)}
.tday h3{font-size:1.25rem;letter-spacing:.16em;color:var(--indigo);margin:4px 0 12px}
.tday li{list-style:none;font-size:.9rem;color:#46535f;padding-left:16px;position:relative;margin-bottom:6px}
.tday li::before{content:"";position:absolute;left:0;top:.72em;width:6px;height:1px;background:var(--gold)}
@media(max-width:760px){.timeline{grid-template-columns:1fr}}

/* 展場分配 Booth Allocation（依品牌攤位編號分區，資料同 /api/brands → 未來 Sheet）*/
.alloc{display:grid;grid-template-columns:repeat(auto-fit,minmax(248px,1fr));gap:clamp(16px,1.6vw,24px);margin-top:6px}
.alloc-zone{background:linear-gradient(160deg,#fffdf8,#f4eedf);border:1px solid var(--line);border-radius:14px;padding:18px 18px 8px;box-shadow:var(--sh-1)}
.alloc-zone-h{display:flex;align-items:center;gap:11px;padding-bottom:12px;margin-bottom:4px;border-bottom:1px solid var(--line)}
.alloc-zone-h .zk{font-family:'Cormorant Garamond',serif;font-size:1.4rem;font-weight:600;color:#fff;background:var(--indigo);width:38px;height:38px;display:grid;place-items:center;border-radius:10px;flex:none}
.alloc-zone-h .zn{font-family:'Noto Serif TC',serif;letter-spacing:.05em;color:var(--indigo);font-size:1rem;flex:1}
.alloc-zone-h .zc{font-size:.74rem;color:var(--slate);letter-spacing:.08em;white-space:nowrap}
.alloc-item{display:flex;align-items:center;gap:12px;padding:9px 4px;border-bottom:1px dashed var(--line-soft);cursor:pointer;transition:.2s}
.alloc-item:last-child{border-bottom:none}
.alloc-item:hover{background:rgba(184,154,92,.09);padding-left:8px}
.alloc-item .ab{font-family:'Cormorant Garamond',serif;letter-spacing:.1em;color:var(--gold);font-size:.95rem;min-width:50px}
.alloc-item .anm{flex:1;color:var(--indigo);font-size:.95rem}
.alloc-item .aty{font-size:.74rem;color:var(--slate);white-space:nowrap}
.alloc-empty{color:var(--slate);padding:18px 0}

/* footer */
.footer{background:var(--indigo-deep);color:rgba(245,240,228,.85);padding:70px 0 50px}
.footer .wrap{display:flex;justify-content:space-between;gap:40px;flex-wrap:wrap}
.footer-brand{display:flex;align-items:center;gap:14px;margin-bottom:12px}
.footer-brand img{width:54px;height:54px;object-fit:contain}
.footer b{font-family:'Noto Serif TC',serif;letter-spacing:.18em;font-size:1.2rem;color:#fff;display:block}
.footer small{font-size:.82rem;letter-spacing:.06em;display:block;line-height:2}
.footer .en-mail{font-family:'Cormorant Garamond',serif;letter-spacing:.2em;font-size:1rem;color:var(--gold-soft)}
.footer-nav{max-width:var(--maxw);margin:0 auto 30px;padding:0 28px 28px;display:flex;flex-wrap:wrap;gap:10px 24px;border-bottom:1px solid rgba(245,240,228,.16)}
.footer-nav a{cursor:pointer;font-size:.86rem;letter-spacing:.08em;color:rgba(245,240,228,.7)}
.footer-nav a:hover{color:#fff}

/* EXHIBIT / VENDOR */
.ex-hero{background:var(--indigo);color:var(--paper);padding:96px 0 80px;position:relative;overflow:hidden}
.ex-hero .eyebrow{color:var(--gold-soft);border-color:var(--gold-soft)}
.ex-hero h1{font-size:clamp(2.1rem,4.6vw,3.3rem);letter-spacing:.16em;font-weight:700;line-height:1.3}
.ex-hero p{max-width:600px;margin-top:20px;opacity:.92}
.ex-hero .deadline{display:inline-block;margin-top:26px;border:1px solid rgba(245,240,228,.5);padding:8px 18px;font-size:.85rem;letter-spacing:.2em}
.ex-hero-logo{position:absolute;right:6%;top:50%;transform:translateY(-50%);width:160px;opacity:.5;pointer-events:none}
@media(max-width:760px){.ex-hero-logo{display:none}}

.benefits{display:grid;grid-template-columns:repeat(3,1fr);gap:26px}
.benefit{border-top:2px solid var(--gold);padding-top:22px}
.benefit small{font-family:'Cormorant Garamond',serif;font-size:1.5rem;color:var(--gold)}
.benefit h3{font-size:1.08rem;letter-spacing:.1em;color:var(--indigo);margin:6px 0 10px}
.benefit p{font-size:.88rem;color:#46535f}
@media(max-width:860px){.benefits{grid-template-columns:1fr 1fr}}
@media(max-width:560px){.benefits{grid-template-columns:1fr}}

/* 價目 */
.plans{display:grid;grid-template-columns:repeat(4,1fr);gap:clamp(18px,1.8vw,26px);margin-bottom:22px}
.plan{position:relative;background:linear-gradient(170deg,#FBF7EC,var(--paper));border:1px solid var(--line);border-radius:4px;padding:clamp(28px,2.4vw,38px) clamp(24px,2vw,32px);display:flex;flex-direction:column;box-shadow:var(--sh-1);transition:transform .35s cubic-bezier(.2,.7,.2,1),box-shadow .35s ease,border-color .35s ease}
.plan:hover{transform:translateY(-5px);box-shadow:var(--sh-2);border-color:rgba(184,154,92,.34)}
.plan.hot{outline:2px solid var(--indigo);outline-offset:-2px;box-shadow:var(--sh-2)}
.plan .pn{font-family:'Cormorant Garamond',serif;letter-spacing:.24em;font-size:.74rem;color:var(--gold);text-transform:uppercase}
.plan h3{font-size:1.18rem;letter-spacing:.08em;color:var(--indigo);margin:6px 0 2px}
.plan .size{font-size:.8rem;color:#5d6873}
.plan .price{font-family:'Cormorant Garamond',serif;font-size:2rem;font-weight:600;color:var(--indigo);margin:16px 0 4px}
.plan .price small{font-size:.85rem;letter-spacing:.06em;font-family:'Noto Sans TC',sans-serif;color:#5d6873}
.plan ul{margin-top:14px;flex:1}
.plan li{list-style:none;font-size:.84rem;color:#46535f;padding-left:15px;position:relative;margin-bottom:7px;line-height:1.6}
.plan li::before{content:"";position:absolute;left:0;top:.66em;width:6px;height:6px;border:1px solid var(--gold);border-radius:50%}
.plan .pick{margin-top:20px;text-align:center;border:1px solid var(--indigo);color:var(--indigo);padding:10px;font-size:.86rem;letter-spacing:.14em;cursor:pointer;background:none;font-family:inherit}
.plan .pick:hover{background:var(--indigo);color:var(--paper)}
@media(max-width:980px){.plans{grid-template-columns:1fr 1fr}}
@media(max-width:560px){.plans{grid-template-columns:1fr}}
.deposit-note{font-size:.84rem;color:#5d6873;border-left:2px solid var(--gold);padding-left:14px}

/* 流程 */
.steps{counter-reset:s;display:grid;grid-template-columns:repeat(3,1fr);gap:30px 40px}
.step{counter-increment:s;border-top:1px solid var(--line);padding-top:18px;position:relative}
.step::before{content:"0" counter(s);font-family:'Cormorant Garamond',serif;font-size:1.4rem;color:var(--gold)}
.step h3{font-size:1rem;letter-spacing:.1em;color:var(--indigo);margin:4px 0 6px}
.step p{font-size:.85rem;color:#54606e}
@media(max-width:760px){.steps{grid-template-columns:1fr}}

/* 表單 */
.form-grid{display:grid;grid-template-columns:1.4fr 1fr;gap:30px;align-items:start}
@media(max-width:860px){.form-grid{grid-template-columns:1fr}}
.formbox{background:linear-gradient(170deg,#FBF7EC,var(--paper));border:1px solid var(--line);border-radius:4px;padding:46px;box-shadow:var(--sh-2)}
.formbox h3{font-size:1.4rem;letter-spacing:.12em;color:var(--indigo);margin-bottom:6px}
.formbox .fnote{font-size:.85rem;color:#5d6873;margin-bottom:28px}
.frow{margin-bottom:20px}
.frow label{display:block;font-size:.8rem;letter-spacing:.2em;color:var(--indigo);margin-bottom:7px}
.frow label .req{color:#b1503f}
.frow input,.frow select,.frow textarea{width:100%;padding:12px 14px;border:1px solid var(--line);background:#fff;font:inherit;font-size:.94rem;color:var(--ink);border-radius:3px;transition:border-color .2s ease,box-shadow .2s ease}
.frow input:hover,.frow select:hover,.frow textarea:hover{border-color:var(--slate)}
.frow input:focus,.frow select:focus,.frow textarea:focus{outline:none;border-color:var(--gold);box-shadow:0 0 0 3px rgba(184,154,92,.16)}
.frow input.bad,.frow select.bad{border-color:#b1503f;background:#faf0ed}

/* 格數 stepper */
.stepper{display:flex;align-items:center;gap:0;border:1px solid var(--line);width:fit-content;background:var(--mist);border-radius:2px;overflow:hidden}
.stepper button{width:46px;height:46px;border:none;background:var(--indigo);color:var(--paper);font-size:1.3rem;cursor:pointer;line-height:1;display:flex;align-items:center;justify-content:center}
.stepper button:hover{background:var(--indigo-deep)}
.stepper button:disabled{background:var(--slate);opacity:.45;cursor:default}
.stepper .qty{width:64px;text-align:center;font-family:'Cormorant Garamond',serif;font-size:1.4rem;font-weight:600;color:var(--indigo)}
.qty-hint{font-size:.76rem;color:#5d6873;margin-top:8px;letter-spacing:.06em}

/* 試算 */
.calc{position:sticky;top:90px;background:linear-gradient(165deg,var(--indigo),var(--indigo-deep));color:var(--paper);padding:34px 30px;border-radius:4px;border-top:2px solid var(--gold);box-shadow:var(--sh-2)}
.calc h4{font-family:'Noto Serif TC',serif;font-weight:600;letter-spacing:.14em;font-size:1.05rem;margin-bottom:4px;color:#fff}
.calc .csub{font-size:.78rem;color:rgba(245,240,228,.6);letter-spacing:.1em;margin-bottom:22px}
.cline{display:flex;justify-content:space-between;align-items:baseline;padding:11px 0;border-bottom:1px solid rgba(245,240,228,.16);font-size:.9rem}
.cline span:first-child{color:rgba(245,240,228,.82)}
.cline .num{font-family:'Cormorant Garamond',serif;font-size:1.12rem;letter-spacing:.04em}
.cline.total{border-bottom:none;border-top:2px solid var(--gold);margin-top:8px;padding-top:16px}
.cline.total span:first-child{color:#fff;font-weight:500}
.cline.total .num{color:var(--gold-soft);font-size:1.5rem;font-weight:600}
.calc .cnote{font-size:.74rem;color:rgba(245,240,228,.55);margin-top:16px;line-height:1.7;letter-spacing:.04em}
.calc .pay-soon{margin-top:18px;border:1px dashed rgba(212,190,140,.5);padding:12px 14px;font-size:.76rem;color:rgba(245,240,228,.75);line-height:1.7}
@media(max-width:600px){.formbox{padding:30px 22px}}

/* BRANDS DIRECTORY (read-only) */
.brands-hero{padding:88px 0 30px;background:linear-gradient(160deg,#E9EDF1,#CFDAE5)}
.brands-hero .eyebrow{color:var(--gold);border-color:var(--gold)}
.brands-hero h1{font-size:clamp(2rem,4.4vw,3rem);letter-spacing:.18em;color:var(--indigo);font-weight:700}
.brands-hero p{max-width:580px;margin-top:14px;color:#3f4d5d}
.filterbar{display:flex;flex-wrap:wrap;gap:18px 26px;align-items:center;padding:26px 0 8px;border-bottom:1px solid var(--line)}
.fgroup{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.fgroup .flabel{font-size:.74rem;letter-spacing:.22em;color:var(--slate)}
.chip{background:rgba(245,240,228,.45);border:1px solid var(--line);color:var(--ink);font:inherit;font-size:.82rem;padding:6px 15px;border-radius:99px;cursor:pointer;letter-spacing:.06em;transition:border-color .25s ease,color .25s ease,background .25s ease}
.chip:hover{border-color:var(--gold);color:#a8873f;background:rgba(184,154,92,.08)}
.chip.on{background:var(--indigo);color:var(--paper);border-color:var(--indigo);box-shadow:0 6px 16px -10px rgba(40,70,100,.7)}
.chip.on:hover{color:var(--paper)}
.searchbox{margin-left:auto;display:flex;align-items:center;gap:8px;border:1px solid var(--line);padding:7px 14px;border-radius:99px;background:var(--paper);box-shadow:var(--sh-1);transition:border-color .25s ease}
.searchbox:focus-within{border-color:var(--gold)}
.searchbox input{border:none;background:none;font:inherit;font-size:.86rem;outline:none;width:150px;color:var(--ink)}
.bcount{font-size:.8rem;color:var(--slate);letter-spacing:.08em;padding:22px 0 4px}
.brandgrid{display:grid;grid-template-columns:repeat(3,1fr);gap:clamp(22px,2.2vw,32px);padding-bottom:20px}
@media(max-width:900px){.brandgrid{grid-template-columns:1fr 1fr}}
@media(max-width:560px){.brandgrid{grid-template-columns:1fr}}
.bcard{position:relative;background:linear-gradient(165deg,#FBF7EC 0%,var(--paper) 100%);border:1px solid var(--line);border-radius:4px;padding:32px 30px 26px;cursor:pointer;display:flex;flex-direction:column;min-height:264px;box-shadow:var(--sh-1);overflow:hidden;
  transition:transform .38s cubic-bezier(.2,.7,.2,1),box-shadow .38s ease,border-color .38s ease}
.bcard::before{content:"";position:absolute;left:0;top:0;width:100%;height:2px;background:var(--gold-line);transform:scaleX(0);transform-origin:left;transition:transform .45s cubic-bezier(.2,.7,.2,1)}
.bcard:hover{transform:translateY(-7px);box-shadow:var(--sh-3);border-color:rgba(184,154,92,.34)}
.bcard:hover::before{transform:scaleX(1)}
.blogo{width:72px;height:72px;border-radius:50%;background:radial-gradient(circle at 38% 32%,#fff,var(--mist2));border:1px solid rgba(184,154,92,.34);box-shadow:0 0 0 4px rgba(245,240,228,.6),0 6px 16px -8px rgba(28,40,55,.3);display:flex;align-items:center;justify-content:center;overflow:hidden;margin-bottom:20px;transition:border-color .38s ease,box-shadow .38s ease}
.bcard:hover .blogo{border-color:rgba(184,154,92,.6);box-shadow:0 0 0 4px rgba(245,240,228,.7),0 10px 22px -8px rgba(28,40,55,.34)}
.blogo img{width:100%;height:100%;object-fit:contain;background:#fff}
.blogo .mono{font-family:'Noto Serif TC',serif;font-size:1.78rem;font-weight:600;color:var(--indigo)}
.bcat{font-size:.72rem;letter-spacing:.16em;color:var(--paper);background:var(--slate);padding:3px 10px;border-radius:99px}
.bcard h3{font-size:1.34rem;letter-spacing:.1em;color:var(--indigo);margin-bottom:3px}
.ben{font-family:'Cormorant Garamond',serif;letter-spacing:.2em;color:var(--slate);font-size:.94rem;margin-bottom:14px}
.bdesc{font-size:.88rem;color:#54606e;flex:1;line-height:1.74;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
.bcard-foot{margin-top:18px;padding-top:15px;border-top:1px solid var(--line-soft);font-size:.76rem;color:var(--slate);letter-spacing:.08em;display:flex;justify-content:space-between;align-items:center}
.bcard-foot .arrow{color:var(--gold);font-family:'Cormorant Garamond',serif;letter-spacing:.14em;display:inline-flex;align-items:center;gap:7px;transition:gap .35s ease,color .35s ease}
.bcard:hover .bcard-foot .arrow{gap:12px;color:#a8873f}
.brand-empty{padding:80px 24px;text-align:center;color:var(--slate);background:linear-gradient(170deg,#FBF7EC,var(--paper));border:1px dashed rgba(184,154,92,.45);border-radius:4px;grid-column:1/-1;box-shadow:var(--sh-1)}
.brand-empty .big{font-family:'Noto Serif TC',serif;font-size:1.4rem;color:var(--indigo);letter-spacing:.16em;margin-bottom:10px}

/* BRAND DETAIL */
.bd-hero{background:var(--indigo);color:var(--paper);padding:70px 0 56px}
.bd-back{background:none;border:none;color:var(--gold-soft);font:inherit;cursor:pointer;letter-spacing:.1em;font-size:.86rem;margin-bottom:26px}
.bd-back:hover{color:#fff}
.bd-logo{width:84px;height:84px;border-radius:50%;background:rgba(245,240,228,.12);border:1px solid rgba(245,240,228,.35);display:flex;align-items:center;justify-content:center;overflow:hidden;margin-bottom:22px}
.bd-logo img{width:100%;height:100%;object-fit:contain;background:#fff}
.bd-logo span{font-family:'Noto Serif TC',serif;font-size:2rem;font-weight:600;color:var(--gold-soft)}
.bd-cat{font-size:.78rem;letter-spacing:.2em;color:var(--gold-soft)}
.bd-hero h1{font-size:clamp(2rem,4.6vw,3.2rem);letter-spacing:.14em;font-weight:700;margin:10px 0 2px}
.bd-en{font-family:'Cormorant Garamond',serif;letter-spacing:.24em;font-size:1.2rem;color:rgba(245,240,228,.7)}
.bd-booth{display:inline-block;margin-top:20px;border:1px solid rgba(245,240,228,.4);padding:6px 16px;font-size:.82rem;letter-spacing:.14em}
.bd-wrap{max-width:var(--maxw);margin:0 auto;padding:70px 28px;display:grid;grid-template-columns:1.5fr 1fr;gap:50px;align-items:start}
@media(max-width:820px){.bd-wrap{grid-template-columns:1fr;gap:36px}}
.bd-story h4,.bd-side h4{font-family:'Noto Serif TC',serif;font-weight:600;letter-spacing:.16em;color:var(--indigo);font-size:1.1rem;margin-bottom:14px;padding-bottom:10px;border-bottom:1px solid var(--line)}
.bd-story p{color:#3f4d5d;font-size:1rem;line-height:2;white-space:pre-line}
.bd-products{margin-top:44px}
.product{position:relative;background:linear-gradient(165deg,#FBF7EC,var(--paper));border:1px solid var(--line);border-left:2px solid rgba(184,154,92,.55);border-radius:3px;padding:22px 26px;margin-bottom:16px;box-shadow:var(--sh-1);transition:transform .3s ease,box-shadow .3s ease,border-left-color .3s ease}
.product:hover{transform:translateX(4px);box-shadow:var(--sh-2);border-left-color:var(--gold)}
.product .pname{font-family:'Noto Serif TC',serif;font-size:1.1rem;color:var(--indigo);letter-spacing:.08em}
.product .pnote{font-size:.78rem;color:var(--gold);letter-spacing:.14em;margin:3px 0 8px}
.product .pdesc{font-size:.88rem;color:#54606e}
.bd-side{background:linear-gradient(170deg,#FBF7EC,var(--paper));border:1px solid var(--line);border-radius:4px;padding:28px 26px;box-shadow:var(--sh-1)}
.bd-side .note-line{display:flex;justify-content:space-between;padding:11px 0;border-bottom:1px solid var(--line-soft);font-size:.92rem}
.bd-side .note-line:last-of-type{border-bottom:none}
.bd-side .note-line span:first-child{font-family:'Cormorant Garamond',serif;letter-spacing:.18em;color:var(--slate);font-size:.8rem;align-self:center}
.bd-side .note-line span:last-child{color:var(--indigo);text-align:right}
.bd-social{display:inline-block;margin-top:24px;color:var(--indigo);border-bottom:1px solid var(--gold);padding-bottom:3px;font-size:.9rem;letter-spacing:.1em}

/* SEASON AWARDS */
.season{display:grid;grid-template-columns:repeat(4,1fr);gap:18px;margin-bottom:50px}
@media(max-width:760px){.season{grid-template-columns:1fr 1fr}}
.scard{background:linear-gradient(160deg,var(--indigo),var(--indigo-deep));color:var(--paper);padding:28px 24px;border-top:2px solid var(--gold);box-shadow:var(--sh-1);transition:transform .35s cubic-bezier(.2,.7,.2,1),box-shadow .35s ease}
.scard:hover{transform:translateY(-5px);box-shadow:var(--sh-2)}
.scard h4{font-family:'Noto Serif TC',serif;letter-spacing:.12em;font-size:1.12rem;margin-bottom:2px}
.scard .sen{font-family:'Cormorant Garamond',serif;letter-spacing:.22em;font-size:.74rem;color:var(--gold-soft)}
.scard p{font-size:.84rem;opacity:.9;margin-top:10px}
.starline{display:flex;gap:8px;align-items:baseline}
.starline .star{color:var(--gold);font-size:.9rem}

/* THANK-YOU 報名完成頁 */
.ty-hero{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:60px 24px;
  background:radial-gradient(120% 90% at 50% 30%, rgba(239,231,212,.6) 0%, rgba(239,231,212,0) 50%),
    linear-gradient(160deg,#E9EDF1 0%,#CDD9E5 60%,#9FB4CC 100%)}
.ty-card{max-width:680px;width:100%;background:var(--paper);border:1px solid var(--line);padding:56px 52px;text-align:center;box-shadow:0 30px 80px rgba(28,40,55,.18)}
.ty-card img.mark{width:88px;margin:0 auto 22px}
.ty-tick{width:60px;height:60px;border-radius:50%;background:var(--indigo);color:#fff;display:flex;align-items:center;justify-content:center;font-size:1.7rem;margin:0 auto 22px}
.ty-card h1{font-size:clamp(1.7rem,4vw,2.4rem);letter-spacing:.14em;color:var(--indigo);margin-bottom:14px}
.ty-card .sub{color:#3f4d5d;margin-bottom:8px}
.ty-card .recap{background:var(--mist);border:1px solid var(--line);padding:16px 20px;margin:24px 0;font-size:.9rem;color:var(--indigo);letter-spacing:.04em}
.ty-next{text-align:left;border-top:1px solid var(--line);margin-top:28px;padding-top:24px}
.ty-next h4{font-family:'Noto Serif TC',serif;letter-spacing:.12em;color:var(--indigo);margin-bottom:14px}
.ty-step{display:flex;gap:14px;margin-bottom:14px;font-size:.9rem;color:#46535f}
.ty-step b{font-family:'Cormorant Garamond',serif;color:var(--gold);font-size:1.1rem;flex:none}
.ty-actions{display:flex;gap:14px;flex-wrap:wrap;justify-content:center;margin-top:30px}
.ty-pay{margin-top:24px;padding:16px 18px;border:1px dashed var(--gold);border-radius:3px;font-size:.82rem;color:#5d6873;background:rgba(184,154,92,.06);text-align:left;line-height:1.7}

/* TOAST */
.toast{position:fixed;bottom:28px;right:22px;z-index:110;background:var(--indigo);color:#fff;padding:12px 20px;font-size:.84rem;letter-spacing:.08em;border-radius:2px;opacity:0;transform:translateY(8px);transition:.3s;pointer-events:none}
.toast.show{opacity:1;transform:none}
.form-ok{display:none;background:var(--indigo);color:var(--paper);padding:22px 26px;margin-top:20px;font-size:.92rem;letter-spacing:.06em}

/* ---- 調香師專區 ---- */
.perfumergrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:28px;margin-top:10px}
.pf-card{background:#fff;border:1px solid rgba(40,70,100,.1);border-radius:16px;padding:28px 24px;text-align:center;
  transition:transform .32s cubic-bezier(.22,.61,.36,1),box-shadow .32s ease,border-color .32s ease}
.pf-card:hover{transform:translateY(-6px);border-color:var(--gold);box-shadow:0 20px 44px -24px rgba(40,70,100,.45)}
.pf-photo{width:128px;height:128px;border-radius:50%;overflow:hidden;margin:0 auto 18px;
  background:radial-gradient(circle at 38% 32%,#fff,var(--mist2));border:1px solid rgba(184,154,92,.35);
  display:flex;align-items:center;justify-content:center;box-shadow:0 6px 18px -10px rgba(28,40,55,.35)}
.pf-photo img{width:100%;height:100%;object-fit:cover}
.pf-init{font-family:'Cormorant Garamond',serif;font-size:2.6rem;color:var(--indigo)}
.pf-name{font-family:'Noto Serif TC',serif;font-size:1.26rem;letter-spacing:.08em;color:var(--indigo);margin-bottom:10px}
.pf-bio{font-size:.95rem;line-height:1.85;color:#46535f;margin-bottom:14px}
.pf-social{display:flex;flex-direction:column;gap:5px;align-items:center}
.pf-social a{font-size:.85rem;letter-spacing:.04em;color:var(--gold);text-decoration:none}
.pf-social a:hover{text-decoration:underline}
.pf-empty{grid-column:1/-1;text-align:center;color:#8a8170;padding:36px;font-size:.96rem}

/* ---- 協辦單位 logo 列 ---- */
.org-co-h{font-size:.78rem;letter-spacing:.26em;color:var(--slate);text-transform:uppercase;margin-bottom:16px}
.orglogos{display:flex;flex-wrap:wrap;gap:22px;align-items:stretch}
.orglogo{height:92px;min-width:190px;display:flex;align-items:center;justify-content:center;padding:14px 26px;background:#fff;border:1px solid rgba(40,70,100,.1);border-radius:14px}
.orglogo img{max-height:60px;max-width:230px;object-fit:contain;display:block}
.orglogo-text{font-family:'Noto Serif TC',serif;font-size:1.12rem;letter-spacing:.08em;color:var(--indigo)}
@media(max-width:560px){.orglogo{min-width:0;flex:1 1 100%}}
.foot-logos{display:flex;flex-wrap:wrap;gap:10px;align-items:center;margin-top:4px}
.foot-logo{display:inline-flex;align-items:center;background:#fff;border-radius:6px;padding:5px 11px;height:34px}
.foot-logo img{max-height:24px;max-width:130px;object-fit:contain;display:block}
.foot-issa{font-size:.82rem;color:var(--paper);opacity:.85;letter-spacing:.06em}
