/* 北屯鬧起來・全站共用樣式
   版面:黃 → 米白 → 深藍 → 墨黑的整塊色帶輪流出現,大字標題、斜貼跑馬燈,
   動態以「呼吸」為節奏:慢進慢出、輕微縮放、漂浮,換頁有黃色布幕。 */
:root{
  --yellow:#FFD22E;
  --yellow-deep:#E8B400;
  --navy:#0B2E6F;
  --navy-deep:#071C47;
  --ink:#111014;
  --paper:#FFFBEF;
  --white:#FFFFFF;
  --pumpkin:#FF6B1A;
  --line-green:#06C755;
  --line-green-deep:#049A42;
  --ink-soft:#4B4630;
  --lantern-deep:#D9480F; /* 舊頁面 script 內嵌的強調色 */
  --paper-soft:rgba(255,251,239,.74);
  --rule-dark:rgba(17,16,20,.14);
  --rule-light:rgba(255,251,239,.2);
  --f-display:"Noto Sans TC","PingFang TC","Microsoft JhengHei","Heiti TC",sans-serif;
  --f-num:"Anton","Impact","Haettenschweiler","Arial Narrow Bold",sans-serif;
  --f-body:"Noto Sans TC","PingFang TC","Microsoft JhengHei",system-ui,sans-serif;
  --gutter:clamp(16px,4.2vw,56px);
  --max:1360px;
  --ease:cubic-bezier(.2,.8,.2,1);
  --ease-soft:cubic-bezier(.45,0,.2,1);
  color-scheme:light;
}
*{box-sizing:border-box;margin:0;padding:0;}
html{-webkit-text-size-adjust:100%;touch-action:manipulation;} /* 連點不會觸發雙擊放大 */
html:not(.lenis){scroll-behavior:smooth;}
/* Lenis 平滑捲動需要的樣式 */
html.lenis,html.lenis body{height:auto;}
.lenis:not(.lenis-autoToggle).lenis-stopped{overflow:clip;}
.lenis [data-lenis-prevent]{overscroll-behavior:contain;}
.lenis.lenis-smooth iframe{pointer-events:none;}
body{font-family:var(--f-body);background:var(--paper);color:var(--ink);line-height:1.7;overflow-x:hidden;
  -webkit-font-smoothing:antialiased;}
img{max-width:100%;height:auto;display:block;}
[hidden]{display:none!important;}
a{color:inherit;}
p{text-wrap:pretty;}
.nb{display:inline-block;}
:focus-visible{outline:3px solid var(--pumpkin);outline-offset:3px;}
[id]{scroll-margin-top:calc(env(safe-area-inset-top,0px) + 90px);}
.wrap{max-width:var(--max);margin:0 auto;padding-inline:var(--gutter);}
.narrow{max-width:860px;margin:0 auto;padding-inline:var(--gutter);}
.kicker{display:flex;align-items:center;gap:.6em;font-family:var(--f-num);font-size:clamp(14px,1.3vw,17px);
  letter-spacing:.14em;text-transform:uppercase;}
.kicker::before{content:"";flex:none;width:.6em;height:.6em;border-radius:50%;background:var(--pumpkin);
  animation:dot 2.4s ease-in-out infinite;}
h2.big,.sec-head h2{font-family:var(--f-display);font-weight:900;font-size:clamp(40px,7vw,104px);line-height:1.04;
  letter-spacing:-.02em;text-wrap:balance;}

/* ---------- 換頁布幕與捲動進度 ---------- */
/* 布幕出現時擋住點擊(避免點到看不見的連結);收起後 visibility:hidden 不會擋 */
.curtain{position:fixed;inset:0;z-index:100;background:var(--yellow);display:grid;place-items:center;
  pointer-events:auto;transform:translateY(-101%);visibility:hidden;animation:curtainUp .7s cubic-bezier(.77,0,.18,1) .05s backwards;}
.curtain b{font-family:var(--f-display);font-weight:900;font-size:clamp(40px,9vw,120px);letter-spacing:-.03em;color:var(--ink);
  animation:curtainWord .7s var(--ease) .02s backwards;}
.curtain b small{display:block;text-align:center;font-family:var(--f-num);font-weight:400;font-size:.22em;letter-spacing:.3em;}
@keyframes curtainUp{from{transform:translateY(0);visibility:visible}to{transform:translateY(-101%);visibility:visible}}
@keyframes curtainWord{from{transform:translateY(0) scale(1)}to{transform:translateY(-30%) scale(.94);opacity:.4}}
.leaving .curtain{animation:curtainDown .4s cubic-bezier(.77,0,.18,1) forwards;}
.leaving .curtain b{animation:none;}
@keyframes curtainDown{from{transform:translateY(101%);visibility:visible}to{transform:translateY(0);visibility:visible}}
.progress{position:fixed;left:0;top:0;right:0;height:4px;z-index:70;pointer-events:none;}
.progress i{display:block;height:100%;background:var(--pumpkin);transform-origin:0 50%;transform:scaleX(0);}

/* ---------- 頂部列與選單 ---------- */
.top{position:fixed;inset:0 0 auto 0;z-index:60;padding-top:env(safe-area-inset-top,0px);pointer-events:none;}
.top-in{display:flex;align-items:center;gap:10px;justify-content:space-between;margin:10px auto 0;
  max-width:calc(var(--max) - 2*var(--gutter));width:calc(100% - 2*var(--gutter));padding:8px 8px 8px 16px;
  border-radius:999px;transition:background .4s var(--ease),box-shadow .4s var(--ease),transform .5s var(--ease);pointer-events:auto;}
.top.solid .top-in{background:var(--paper);box-shadow:0 10px 30px rgba(17,16,20,.16);}
.top.dark:not(.solid) .top-in{color:var(--paper);}
.top.dark:not(.solid) .pill{border-color:var(--paper);color:var(--paper);}
.top.dark:not(.solid) .pill.fill{background:var(--yellow);border-color:var(--yellow);color:var(--ink);}
.brand{text-decoration:none;display:flex;align-items:baseline;gap:8px;font-family:var(--f-display);font-weight:900;
  font-size:17px;letter-spacing:.02em;white-space:nowrap;}
.brand small{font-family:var(--f-num);font-weight:400;font-size:13px;letter-spacing:.12em;}
.brand-mark{width:30px;height:30px;flex:0 0 auto;align-self:center;margin:-4px 0;}
.top-act{display:flex;gap:6px;align-items:center;}
/* 網站公告(LINE 管理群「全全 網站公告 …」設定):頂部列下面一條,可以收起 */
.site-notice{display:flex;align-items:center;gap:8px;margin:8px auto 0;pointer-events:auto;
  max-width:calc(var(--max) - 2*var(--gutter));width:calc(100% - 2*var(--gutter));padding:9px 8px 9px 16px;
  border-radius:18px;background:var(--pumpkin);color:var(--ink);box-shadow:0 10px 30px rgba(17,16,20,.2);
  font-family:var(--f-body);font-weight:700;font-size:14.5px;line-height:1.55;animation:notice-in .6s var(--ease) both;}
.site-notice p{flex:1 1 auto;min-width:0;overflow-wrap:anywhere;}
.site-notice a{color:inherit;font-weight:900;text-decoration:underline;text-underline-offset:3px;}
.site-notice button{flex:0 0 auto;width:32px;height:32px;border-radius:999px;border:2px solid var(--ink);background:transparent;
  color:var(--ink);font:inherit;font-size:13px;font-weight:900;cursor:pointer;line-height:1;}
@keyframes notice-in{from{opacity:0;transform:translateY(-8px);}to{opacity:1;transform:none;}}
@media (prefers-reduced-motion: reduce){.site-notice{animation:none;}}
.pill{display:inline-flex;align-items:center;gap:8px;border:2px solid var(--ink);border-radius:999px;
  padding:7px 16px;font-weight:900;font-size:14px;text-decoration:none;background:transparent;color:var(--ink);
  font-family:var(--f-body);cursor:pointer;white-space:nowrap;line-height:1.5;}
.pill.fill{background:var(--ink);color:var(--yellow);}
.pill .bars{display:inline-grid;gap:4px;}
.pill .bars i{display:block;width:16px;height:2px;background:currentColor;transition:transform .3s var(--ease);}
.pill:hover .bars i:first-child{transform:translateX(3px);}
/* 很窄的手機(<375px):品牌字與按鈕縮小一點,「選單」按鈕才不會被擠出畫面 */
@media (max-width:374px){
  .top-in{padding-left:12px;gap:6px;}
  .brand{font-size:15px;gap:6px;}
  .brand-mark{width:26px;height:26px;}
  .top-act{gap:4px;}
  .top-act .pill{padding:6px 11px;font-size:13px;gap:6px;}
}
.menu{position:fixed;inset:0;z-index:80;background:var(--navy);color:var(--paper);overflow-y:auto;
  padding:calc(env(safe-area-inset-top,0px) + 18px) var(--gutter) calc(env(safe-area-inset-bottom,0px) + 28px);}
.menu-head{display:flex;justify-content:space-between;align-items:center;max-width:var(--max);margin:0 auto 18px;}
.menu-head .brand{color:var(--paper);}
.menu .pill{border-color:var(--paper);color:var(--paper);}
.menu nav{max-width:var(--max);margin:0 auto;display:grid;}
.menu nav a{display:flex;align-items:baseline;justify-content:space-between;gap:16px;text-decoration:none;
  font-family:var(--f-display);font-weight:900;font-size:clamp(28px,5.6vw,68px);line-height:1.2;
  padding:6px 0;border-bottom:1px solid var(--rule-light);transition:color .25s,padding .35s var(--ease);}
.menu nav a small{font-family:var(--f-num);font-weight:400;font-size:clamp(13px,1.4vw,18px);letter-spacing:.12em;
  color:var(--yellow);white-space:nowrap;}
.menu nav a:hover,.menu nav a[aria-current="page"]{color:var(--yellow);padding-left:14px;}
.menu nav a.line-item{font-size:clamp(22px,3.8vw,46px);margin-top:6px;}
.menu nav a.sub{font-size:clamp(21px,3.6vw,40px);padding-left:clamp(22px,3.4vw,48px);position:relative;}
.menu nav a.sub::before{content:"";position:absolute;left:clamp(6px,1.2vw,16px);top:50%;width:clamp(8px,1vw,12px);height:2px;background:var(--yellow);}
.menu nav a.sub:hover,.menu nav a.sub[aria-current="page"]{padding-left:calc(clamp(22px,3.4vw,48px) + 14px);}
.menu.open{animation:menuBg .5s var(--ease) both;}
.menu.open nav a{animation:menuIn .6s var(--ease) both;}
@keyframes menuBg{from{clip-path:inset(0 0 100% 0)}to{clip-path:inset(0)}}
@keyframes menuIn{from{transform:translateY(60%);opacity:0}to{transform:none;opacity:1}}

/* ---------- 按鈕 ---------- */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:10px;font-weight:900;font-size:clamp(15px,1.3vw,17px);
  font-family:var(--f-body);text-decoration:none;border-radius:999px;padding:14px 24px;border:2px solid var(--ink);
  white-space:nowrap;cursor:pointer;line-height:1.4;
  transition:background .25s,color .25s,border-color .25s,translate .5s var(--ease),transform .3s var(--ease);}
.btn .arr{display:inline-block;transition:transform .3s var(--ease);}
.btn:hover .arr{transform:translateX(6px);}
.btn:active{transform:scale(.97);}
.btn-ink{background:var(--ink);color:var(--yellow);}
.btn-ink:hover{background:var(--navy);border-color:var(--navy);color:var(--paper);}
.btn-ghost{background:transparent;color:var(--ink);}
.btn-ghost:hover{background:var(--ink);color:var(--yellow);}
.btn-yellow{background:var(--yellow);border-color:var(--yellow);color:var(--ink);}
.btn-yellow:hover{background:var(--paper);border-color:var(--paper);}
.btn-light{background:transparent;border-color:var(--paper);color:var(--paper);}
.btn-light:hover{background:var(--paper);color:var(--ink);}
.btn-green{background:var(--line-green);border-color:var(--line-green);color:#fff;}
.btn-green:hover{background:var(--line-green-deep);border-color:var(--line-green-deep);}
.btn-block{display:flex;width:100%;}
.btn-lg{font-size:clamp(17px,1.6vw,20px);padding:18px 30px;}
.btn small{display:block;font-size:12px;font-weight:700;opacity:.9;}
.btn-stack{flex-direction:column;gap:2px;white-space:normal;text-align:center;}

/* ---------- 頁首 hero ---------- */
.ph{background:var(--yellow);position:relative;overflow:hidden;isolation:isolate;
  padding-block:calc(env(safe-area-inset-top,0px) + 110px) clamp(48px,7vw,104px);}
.ph::before,.ph::after,.blobs::before,.blobs::after{content:"";position:absolute;z-index:-1;border-radius:50%;pointer-events:none;}
.ph::before{width:56vmax;height:56vmax;right:-18vmax;top:-22vmax;
  background:radial-gradient(circle at 50% 50%,rgba(255,251,239,.62),rgba(255,251,239,0) 66%);animation:blobA 13s ease-in-out infinite;}
.ph::after{width:44vmax;height:44vmax;left:-16vmax;bottom:-26vmax;
  background:radial-gradient(circle at 50% 50%,rgba(232,180,0,.55),rgba(232,180,0,0) 66%);animation:blobB 16s ease-in-out infinite;}
@keyframes blobA{0%,100%{transform:translate(0,0) scale(1)}50%{transform:translate(-6%,8%) scale(1.14)}}
@keyframes blobB{0%,100%{transform:translate(0,0) scale(1.1)}50%{transform:translate(8%,-6%) scale(.92)}}
.ph-grid{display:grid;grid-template-columns:minmax(0,1.3fr) minmax(0,.8fr);gap:clamp(24px,4vw,64px);align-items:end;}
.ph-title{font-family:var(--f-display);font-weight:900;font-size:clamp(56px,10.5vw,164px);line-height:.98;
  letter-spacing:-.04em;margin-top:clamp(10px,1.6vw,22px);text-wrap:balance;}
.ph-title .pop{color:var(--pumpkin);}
.ph-lede{max-width:34em;font-size:clamp(16px,1.6vw,20px);font-weight:500;margin-top:clamp(14px,2vw,24px);}
.chips{display:flex;flex-wrap:wrap;gap:8px;margin-top:18px;}
.chip{display:inline-flex;align-items:center;gap:6px;font-weight:900;font-size:14px;border-radius:999px;padding:6px 14px;
  background:var(--ink);color:var(--paper);white-space:nowrap;font-variant-numeric:tabular-nums;}
.chip.outline{background:transparent;color:inherit;box-shadow:inset 0 0 0 2px currentColor;}
.chip.hot{background:var(--pumpkin);color:var(--ink);}
.chip.ok{background:var(--line-green);color:#fff;}
.ph-cta{display:flex;flex-wrap:wrap;gap:10px;margin-top:24px;}
/* 報名頁頁首「✅ 繳費完成名單／⏳ 未繳費名單」:放在主按鈕下方另外一排、小一號,
   「我要報名」和「加入官方 LINE」維持在第一排(兩顆名單按鈕擠進同一排會把 LINE 按鈕擠到下一排) */
.ph-sub{flex:1 0 100%;display:flex;flex-wrap:wrap;gap:8px;}
.btn-sm{font-size:14px;padding:8px 16px;gap:6px;}
.ph-art{position:relative;}
.ph-art img{border-radius:14px;box-shadow:0 30px 60px rgba(17,16,20,.28);border:5px solid var(--paper);}

/* ---------- 跑馬燈 ---------- */
.tapes{position:relative;background:var(--paper);height:clamp(140px,14vw,200px);overflow:hidden;}
.tapes.on-navy{background:var(--navy);}
.tapes.single{height:clamp(84px,8vw,120px);}
.tape{position:absolute;left:-5%;width:110%;overflow:hidden;white-space:nowrap;padding:12px 0;
  font-family:var(--f-display);font-weight:900;font-size:clamp(20px,2.7vw,38px);line-height:1.2;}
.tape-a{top:16%;background:var(--ink);color:var(--yellow);transform:rotate(-3.2deg);z-index:2;animation:waveA 9s ease-in-out infinite;}
.tape-b{top:46%;background:var(--navy);color:var(--paper);transform:rotate(2.4deg);animation:waveB 11s ease-in-out infinite;}
.tapes.single .tape-a{top:22%;}
.tapes.on-navy .tape-b{background:var(--yellow);color:var(--ink);}
@keyframes waveA{0%,100%{transform:rotate(-3.2deg)}50%{transform:rotate(-1.6deg) translateY(4px)}}
@keyframes waveB{0%,100%{transform:rotate(2.4deg)}50%{transform:rotate(1.2deg) translateY(-4px)}}
.track{display:inline-flex;will-change:transform;}
.track>span{display:inline-block;white-space:nowrap;}
.track>span::after{content:"✱";color:var(--pumpkin);margin:0 .7em;font-size:.8em;}
.tape-b .track>span::after{color:var(--yellow);}
.tapes.on-navy .tape-b .track>span::after{color:var(--navy);}
.track .num{font-family:var(--f-num);font-weight:400;letter-spacing:.04em;}

/* ---------- 區塊 ---------- */
.sec{padding-block:clamp(72px,10vw,150px);position:relative;}
.sec-paper{background:var(--paper);color:var(--ink);}
.sec-white{background:var(--white);color:var(--ink);}
.sec-yellow{background:var(--yellow);color:var(--ink);}
.sec-navy{background:var(--navy);color:var(--paper);--sec-bg:var(--navy);}
.sec-ink{background:var(--ink);color:var(--paper);--sec-bg:var(--ink);}
.sec-head{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,.8fr);gap:14px clamp(20px,4vw,64px);
  align-items:end;margin-bottom:clamp(34px,5vw,72px);}
.sec-head .kicker{grid-column:1/-1;}
.sec-head .note{font-size:clamp(15px,1.4vw,18px);max-width:30em;font-weight:500;}
.sec-navy .note,.sec-ink .note{color:var(--paper-soft);}
.stack-gap{display:grid;gap:clamp(16px,2vw,24px);}

/* ---------- 卡片與內容 ---------- */
.panel{background:var(--white);color:var(--ink);border-radius:26px;padding:clamp(22px,3.4vw,44px);
  box-shadow:0 1px 0 rgba(17,16,20,.04),0 24px 60px -30px rgba(17,16,20,.35);}
.panel.on-paper{box-shadow:0 0 0 2px var(--rule-dark);}
.panel h3{font-family:var(--f-display);font-weight:900;font-size:clamp(24px,2.6vw,36px);line-height:1.2;}
.panel .sub{color:var(--ink-soft);font-weight:500;margin-top:6px;}
.panel-navy{background:var(--navy);color:var(--paper);}
.panel-yellow{background:var(--yellow);color:var(--ink);}
.ticks{list-style:none;margin-top:16px;}
.ticks li{position:relative;padding:12px 0 12px 34px;border-top:1px solid var(--rule-dark);font-size:15.5px;line-height:1.8;}
.ticks li:first-child{border-top:none;}
.ticks li::before{content:"";position:absolute;left:4px;top:19px;width:16px;height:16px;border-radius:50%;
  background:var(--yellow);box-shadow:inset 0 0 0 4px var(--ink);}
.ticks b{font-weight:900;}
.facts{display:grid;grid-template-columns:auto minmax(0,1fr);gap:0 20px;margin-top:16px;}
.facts dt,.facts dd{padding:12px 0;border-top:1px solid var(--rule-dark);}
.facts dt{font-weight:900;white-space:nowrap;}
.facts dt:first-of-type,.facts dt:first-of-type+dd{border-top:none;}
.callout{border-radius:18px;padding:16px 20px;background:var(--yellow);color:var(--ink);font-weight:500;line-height:1.85;}
.callout b{font-weight:900;}
.callout.hot{background:var(--pumpkin);color:var(--ink);font-weight:700;}
.callout.soft{background:var(--paper);box-shadow:inset 0 0 0 2px var(--rule-dark);}
.callout.navy{background:var(--navy);color:var(--paper);}
.big-num{font-family:var(--f-num);font-weight:400;line-height:.9;}
.media{border-radius:20px;overflow:hidden;background:var(--paper);}
.media img{width:100%;}
details.more{margin-top:14px;}
details.more summary{cursor:pointer;font-weight:900;list-style:none;display:inline-flex;align-items:center;gap:8px;
  border:2px solid currentColor;border-radius:999px;padding:6px 14px;font-size:14px;}
details.more summary::-webkit-details-marker{display:none;}
details.more summary::after{content:"+";font-family:var(--f-num);transition:transform .3s var(--ease);}
details.more[open] summary::after{transform:rotate(45deg);}
details.more img{margin-top:12px;border-radius:14px;width:100%;}
.navlink{display:inline-flex;align-items:center;gap:4px;font-weight:900;font-size:13px;text-decoration:none;
  border-radius:999px;padding:3px 11px;background:var(--ink);color:var(--paper);white-space:nowrap;vertical-align:1px;}
.navlink:hover{background:var(--navy);}

/* ---------- 表單 ---------- */
.form .field{margin-bottom:22px;}
.form .lbl{display:block;font-weight:900;font-size:16px;margin-bottom:8px;}
.form .lbl .req{color:var(--pumpkin);font-size:13px;margin-left:6px;}
.form .lbl .opt{color:var(--ink-soft);font-size:12.5px;font-weight:500;margin-left:6px;}
.form input[type=text],.form input[type=tel],.form input[type=email],.form input[type=date],.form input[type=search],
.form select,.form textarea{width:100%;font:inherit;font-size:17px;color:var(--ink);background:var(--paper);
  border:2px solid var(--rule-dark);border-radius:16px;padding:14px 16px;outline:none;
  transition:border-color .25s,box-shadow .35s var(--ease),background .25s;}
.form input:focus,.form select:focus,.form textarea:focus{border-color:var(--ink);background:var(--white);
  box-shadow:0 0 0 5px rgba(255,210,46,.6);}
.form textarea{resize:vertical;min-height:96px;line-height:1.7;}
.form ::placeholder{color:#9C9580;}
.form .hint{font-size:12.5px;color:var(--ink-soft);margin-top:6px;}
.choices{display:grid;gap:10px;}
.choices input{position:absolute;opacity:0;pointer-events:none;}
.choices label.choice{display:block;border:2px solid var(--rule-dark);border-radius:18px;padding:14px 16px;background:var(--paper);
  cursor:pointer;transition:border-color .25s,background .25s,transform .35s var(--ease),box-shadow .35s var(--ease);}
.choices label.choice:hover{transform:translateY(-2px);border-color:var(--ink);}
.choices input:checked + label.choice{border-color:var(--ink);background:var(--yellow);box-shadow:0 6px 0 var(--ink);}
.choices input:focus-visible + label.choice{outline:3px solid var(--pumpkin);outline-offset:2px;}
.choices input:disabled + label.choice{opacity:.45;cursor:not-allowed;transform:none;}
.choice .ct{display:flex;align-items:center;gap:8px;flex-wrap:wrap;}
.choice .cd{font-weight:900;font-size:14.5px;}
.choice .ctime{font-family:var(--f-num);font-size:17px;letter-spacing:.03em;font-variant-numeric:tabular-nums;}
.choice .cplace{font-size:12.5px;font-weight:900;color:var(--paper);background:var(--ink);border-radius:999px;padding:3px 10px;margin-left:auto;white-space:nowrap;}
.choice .cn{font-family:var(--f-display);font-weight:900;font-size:20px;margin-top:4px;}
.choice .cw{font-size:13.5px;color:var(--ink-soft);line-height:1.6;margin-top:2px;}
.seg{display:flex;gap:10px;}
.seg label{flex:1;display:flex;align-items:center;justify-content:center;gap:8px;background:var(--paper);
  border:2px solid var(--rule-dark);border-radius:16px;padding:13px;font-weight:900;cursor:pointer;transition:border-color .25s,background .25s;}
.seg label:has(input:checked){border-color:var(--ink);background:var(--yellow);}
.seg input{accent-color:var(--ink);width:18px;height:18px;}
.cond{display:none;border-radius:18px;padding:18px 16px 2px;margin-bottom:22px;background:var(--paper);box-shadow:inset 0 0 0 2px var(--rule-dark);}
.cond.show{display:block;animation:condIn .5s var(--ease);}
@keyframes condIn{from{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:none}}
.cond .cond-title,.group-title{font-weight:900;font-size:14px;margin-bottom:12px;}
.group{border-radius:18px;padding:18px 16px 2px;margin-bottom:22px;background:var(--paper);box-shadow:inset 0 0 0 2px var(--rule-dark);}
.line-check{display:flex;gap:12px;align-items:flex-start;margin-top:24px;background:#E7F8EE;border-radius:18px;
  padding:14px 16px;font-size:15px;font-weight:900;line-height:1.7;color:#0B5A2E;cursor:pointer;}
.line-check input{width:22px;height:22px;margin-top:2px;flex:none;accent-color:var(--line-green);}
.line-check small{display:block;font-weight:500;color:#2F6E49;}
.line-check a{color:#05843B;font-weight:900;}
.submit{display:block;width:100%;margin-top:26px;border:none;cursor:pointer;background:var(--ink);color:var(--yellow);
  font:inherit;font-family:var(--f-display);font-size:22px;font-weight:900;letter-spacing:.2em;text-indent:.2em;padding:19px;border-radius:999px;
  transition:background .25s,transform .3s var(--ease);}
.submit:hover{background:var(--navy);}
.submit:active{transform:scale(.98);}
.submit:disabled{opacity:.6;cursor:wait;animation:none;}
.resetbtn{display:block;width:100%;margin-top:10px;cursor:pointer;background:transparent;color:var(--ink-soft);font:inherit;
  font-size:15px;font-weight:900;letter-spacing:.1em;padding:12px;border-radius:999px;border:2px dashed var(--rule-dark);}
.resetbtn:hover{border-color:var(--ink);color:var(--ink);}
.privacy{margin-top:14px;text-align:center;font-size:12.5px;color:var(--ink-soft);line-height:1.8;}
/* 獎品搶先看(集章攻略、變裝大賽共用) */
.gifts-grid{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:clamp(10px,1.4vw,18px);}
.gifts-grid.folded > .gcard:nth-child(n+13){display:none;}
.gcard{background:var(--white);color:var(--ink);border-radius:20px;overflow:hidden;box-shadow:0 24px 50px -34px rgba(17,16,20,.5);transition:transform .6s var(--ease);}
.gcard:hover{transform:translateY(-5px);}
.gcard img{display:block;width:100%;aspect-ratio:1/1;object-fit:cover;background:#fff;}
.gcard .in{padding:10px 12px 14px;}
.gcard h3{font-family:var(--f-display);font-weight:900;font-size:clamp(14.5px,1.2vw,16.5px);line-height:1.35;}
.gcard .md{margin-top:4px;font-size:12px;color:var(--ink-soft);line-height:1.5;}
.gifts-more{text-align:center;margin-top:clamp(20px,3vw,32px);}
.gifts .fine{margin-top:14px;text-align:center;font-size:13px;color:var(--ink-soft);}
@media (max-width:1000px){ .gifts-grid{grid-template-columns:repeat(4,minmax(0,1fr));} }
@media (max-width:620px){ .gifts-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;} .gcard{border-radius:14px;}
  .gcard .in{padding:7px 8px 10px;} .gcard h3{font-size:12.5px;} .gcard .md{display:none;} }
/* 繳費完成名單、尚未繳費名單(變裝、手工皂、彩繪提袋頁共用,partials/paid-list.html;陀螺賽頁的參賽名單 partials/players-list.html 也沿用這些樣式):每個場次/梯次一張卡片,裡面是多欄的緊湊格子 */
/* 同一個 partial 每頁放兩段:不是這一段的標題先藏起來(script 會直接拿掉),沒有 JS 也不會顯示錯的標題 */
[data-paid-form]:not([data-paid-status="unpaid"]) [data-paid-for="unpaid"],[data-paid-status="unpaid"] [data-paid-for="paid"]{display:none;}
/* 尚未繳費名單緊接在繳費完成名單後面、同樣是紙色底:開頭加一條跟 .steps/.foot-links 一樣的 2px 墨線分開兩段(只動尚未繳費這段) */
.sec[data-paid-status="unpaid"]{padding-top:0;}
.sec[data-paid-status="unpaid"] > .wrap::before{content:"";display:block;border-top:2px solid var(--ink);margin-bottom:clamp(56px,8vw,120px);}
/* 兩段都有的「找得到自己的編號和姓名就代表報名成功」:標題下面整行跨滿的白底小框 */
.sec-head .paid-check{grid-column:1/-1;max-width:none;font-size:clamp(15px,1.3vw,17px);font-weight:700;line-height:1.75;
  background:var(--white);border-radius:16px;padding:12px 18px;box-shadow:inset 0 0 0 2px var(--rule-dark);}
.paid-meta{display:flex;flex-wrap:wrap;font-weight:900;font-size:14.5px;margin:-12px 0 16px;color:var(--ink-soft);}
.paid-meta .nb + .nb::before{content:"・";}
.paid-msg{border-radius:18px;padding:18px 20px;background:var(--white);box-shadow:inset 0 0 0 2px var(--rule-dark);font-weight:700;line-height:1.8;}
.paid-groups{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:clamp(14px,2vw,22px);align-items:start;}
.paid-groups.one{grid-template-columns:minmax(0,1fr);}
.paid-group{background:var(--white);color:var(--ink);border-radius:24px;padding:clamp(14px,2vw,24px);box-shadow:0 24px 50px -34px rgba(17,16,20,.5);}
.paid-gh{display:flex;align-items:baseline;justify-content:space-between;gap:12px;margin-bottom:12px;}
.paid-gh h3{flex:1 1 auto;min-width:0;font-family:var(--f-display);font-weight:900;font-size:clamp(17px,1.6vw,21px);line-height:1.35;}
.paid-cnt{flex:none;font-weight:900;font-size:13.5px;border-radius:999px;padding:3px 12px;background:var(--line-green);color:#fff;white-space:nowrap;}
.paid-cnt.unpaid{background:var(--pumpkin);color:var(--ink);} /* 尚未繳費:南瓜橘配深色字,跟已繳費的綠色分開 */
.paid-cnt.zero{background:var(--paper);color:var(--ink-soft);box-shadow:inset 0 0 0 2px var(--rule-dark);}
.paid-none{font-size:14px;color:var(--ink-soft);font-weight:700;}
.paid-grid{list-style:none;display:grid;grid-template-columns:repeat(auto-fill,minmax(102px,1fr));gap:6px;}
.paid-grid.wide{grid-template-columns:repeat(auto-fill,minmax(128px,1fr));}
/* 每格一律單行(編號和姓名不拆成兩行,整排格子一樣高)。遮罩後姓名最多 4 個字,「64 超OO下」約 96px 寬 */
.paid-grid li{display:flex;flex-wrap:nowrap;align-items:baseline;gap:6px;min-width:0;white-space:nowrap;background:var(--paper);border-radius:10px;padding:6px 8px;
  font-weight:700;font-size:14.5px;line-height:1.4;}
.paid-grid .no{flex:none;font-family:var(--f-num);font-weight:400;font-size:14px;letter-spacing:.03em;color:var(--navy);}
.paid-grid.wide .no{font-family:var(--f-body);font-weight:900;font-size:13px;}
.paid-grid .nm{min-width:0;overflow:hidden;text-overflow:clip;}
.paid-grid.folded > li.over{display:none;}
/* 尚未繳費名單:10/13 起報名(活動當天繳)那一段前面的分段標題,整行跨滿、不是格子 */
.paid-grid li.paid-sub{grid-column:1/-1;display:block;white-space:normal;background:none;padding:10px 2px 2px;font-weight:900;font-size:14px;color:var(--ink);}
.paid-more{text-align:center;margin-top:14px;}
.paid-more .btn{padding:10px 20px;font-size:15px;}
@media (max-width:1100px){ .paid-groups{grid-template-columns:minmax(0,1fr);} }
@media (max-width:620px){
  .paid-grid,.paid-grid.wide{grid-template-columns:repeat(3,minmax(0,1fr));gap:5px;}
  .paid-grid li{gap:5px;padding:5px 7px;font-size:13.5px;border-radius:8px;}
  .paid-grid .no{font-size:13px;}
  .paid-grid.wide .no{font-size:12px;}
}
/* 一般手機(420px 以下):變裝大賽「第12組 歐OO明」排 3 欄放不下,改 2 欄;其他活動維持 3 欄,很窄時字和留白再縮一點 */
@media (max-width:420px){ .paid-grid.wide{grid-template-columns:repeat(2,minmax(0,1fr));} }
@media (max-width:340px){ .paid-grid:not(.wide) li{gap:4px;padding:5px 5px;font-size:12.5px;} .paid-grid:not(.wide) .no{font-size:12px;} }
.cancel-link{text-align:center;margin-top:18px;font-weight:900;font-size:15px;}
.cancel-link a{color:inherit;text-underline-offset:4px;}
.err{display:none;margin-top:12px;background:#FFE1D1;color:#8A2A00;font-size:14px;font-weight:900;border-radius:14px;padding:12px 14px;}
.closed h2,.closed-card h2{font-family:var(--f-display);font-weight:900;font-size:clamp(28px,3vw,40px);}
.closed-card .sub{margin-top:8px;color:var(--ink-soft);}
/* 線上報名截止後「改為現場報名」的場次/梯次清單(四個報名頁共用):名稱、時間地點、剩餘名額;額滿的變淡 */
.onsite-list{list-style:none;display:grid;gap:10px;margin:16px 0 14px;}
.onsite-list li{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:2px 14px;align-items:center;background:var(--paper);border-radius:18px;padding:12px 16px;}
.onsite-list .os-name{font-weight:900;font-size:16px;}
.onsite-list .os-when{grid-column:1;font-size:14px;color:var(--ink-soft);line-height:1.6;}
.onsite-list .os-left{grid-column:2;grid-row:1/span 2;font-weight:900;font-size:14.5px;color:#1F7A33;white-space:nowrap;}
.onsite-list li.full{opacity:.55;}
.onsite-list li.full .os-left{color:#A32713;}
@media (max-width:420px){ .onsite-list li{grid-template-columns:minmax(0,1fr);} .onsite-list .os-left{grid-column:1;grid-row:auto;} }

/* ---------- 時刻表與步驟(首頁、集章攻略共用) ---------- */
.pre{display:flex;flex-wrap:wrap;gap:6px 18px;align-items:baseline;border:2px solid var(--yellow);border-radius:18px;
  padding:16px 20px;margin-bottom:clamp(28px,4vw,48px);}
.pre b{font-family:var(--f-num);font-weight:400;font-size:clamp(22px,2.4vw,32px);color:var(--yellow);line-height:1.1;}
.pre strong{font-family:var(--f-display);font-weight:900;font-size:clamp(17px,1.6vw,21px);}
.pre span{color:var(--paper-soft);font-size:14.5px;}
.days{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:clamp(28px,4vw,64px);}
.day-h{display:flex;align-items:baseline;gap:14px;border-bottom:2px solid var(--paper);padding-bottom:10px;
  position:sticky;top:calc(env(safe-area-inset-top,0px) + 72px);background:var(--sec-bg,var(--navy));z-index:2;}
.day-h b{font-family:var(--f-num);font-weight:400;font-size:clamp(56px,7vw,104px);line-height:.9;color:var(--yellow);}
.day-h small{font-family:var(--f-num);font-size:clamp(14px,1.4vw,18px);letter-spacing:.14em;}
.slots{list-style:none;}
.slot{display:grid;grid-template-columns:104px minmax(0,1fr) auto;gap:4px 16px;align-items:start;
  padding:18px 0;border-bottom:1px solid var(--rule-light);}
.slot time{font-family:var(--f-num);font-size:18px;letter-spacing:.03em;color:var(--yellow);line-height:1.35;font-variant-numeric:tabular-nums;}
.slot .what b{display:block;font-family:var(--f-display);font-weight:900;font-size:clamp(18px,1.7vw,22px);line-height:1.35;}
.slot .what>span{display:block;font-size:14px;color:var(--paper-soft);}
.slot .tag{display:inline-block;font-size:11.5px;font-weight:900;border-radius:4px;padding:1px 7px;margin-right:6px;
  vertical-align:3px;background:var(--yellow);color:var(--ink);}
.slot .tag.gift{background:var(--paper);}
.slot .tag.cut{background:var(--pumpkin);}
.slot-cta{align-self:center;font-weight:900;font-size:13.5px;text-decoration:none;border:2px solid var(--yellow);
  color:var(--yellow);border-radius:999px;padding:6px 14px;white-space:nowrap;text-align:center;transition:background .25s,color .25s;}
.slot-cta:hover{background:var(--yellow);color:var(--ink);}
.slot-cta small{display:block;font-size:11px;font-weight:700;line-height:1.2;}
.slot.cut b{color:var(--pumpkin);}

.steps ol{list-style:none;display:grid;grid-template-columns:repeat(5,minmax(0,1fr));border-top:2px solid var(--ink);}
.steps li{padding:22px clamp(10px,1.4vw,22px) 8px 0;border-right:2px solid var(--ink);margin-right:clamp(10px,1.4vw,22px);}
.steps li:last-child{border-right:none;margin-right:0;}
.steps li b{display:block;font-family:var(--f-num);font-weight:400;font-size:clamp(56px,6.4vw,96px);line-height:.9;}
.steps li strong{display:block;font-family:var(--f-display);font-weight:900;font-size:clamp(18px,1.7vw,22px);line-height:1.35;margin-top:12px;}
.steps li span{display:block;font-size:14.5px;color:var(--ink-soft);margin-top:6px;font-weight:500;}

/* ---------- 頁尾 ---------- */
.foot{background:var(--yellow);padding-block:clamp(64px,9vw,130px) calc(env(safe-area-inset-bottom,0px) + 90px);position:relative;overflow:hidden;isolation:isolate;}
.foot-big{font-family:var(--f-display);font-weight:900;font-size:min(15vw,200px);line-height:.95;letter-spacing:-.04em;}
.foot-big .num{font-family:var(--f-num);font-weight:400;letter-spacing:0;}
.foot.mini .foot-big{font-size:min(11vw,140px);}
.foot-row{display:flex;flex-wrap:wrap;gap:10px;margin-top:28px;}
.foot-head{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:24px 40px;}
.foot-logo{width:clamp(150px,18vw,230px);height:auto;flex:0 0 auto;}
.foot-links{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:0 24px;margin-top:clamp(40px,5vw,72px);border-top:2px solid var(--ink);}
.foot-links a{display:flex;justify-content:space-between;gap:10px;padding:14px 0;border-bottom:1px solid var(--rule-dark);
  font-weight:900;text-decoration:none;font-size:16px;transition:padding .35s var(--ease);}
.foot-links a:hover{padding-left:8px;}
.foot-fine{display:flex;flex-wrap:wrap;justify-content:space-between;gap:12px 32px;margin-top:32px;font-size:13px;color:var(--ink-soft);font-weight:500;}
.foot-fine a{color:var(--ink-soft);}
.credit{font-size:11.5px;line-height:1.7;color:var(--ink-soft);margin-top:18px;}

/* ---------- 呼吸感動態 ---------- */
@keyframes dot{0%,100%{transform:scale(1);opacity:1}50%{transform:scale(.55);opacity:.5}}
@keyframes breathe{0%,100%{transform:scale(1)}50%{transform:scale(1.045)}}
@keyframes ring{0%{box-shadow:0 0 0 0 var(--ring,rgba(17,16,20,.38))}75%,100%{box-shadow:0 0 0 18px rgba(17,16,20,0)}}
@keyframes floaty{0%,100%{translate:0 0;rotate:0deg}50%{translate:0 -16px;rotate:1.4deg}}
@keyframes floatyB{0%,100%{translate:0 0;rotate:0deg}50%{translate:0 12px;rotate:-1.6deg}}
@keyframes kb{from{scale:1}to{scale:1.09}}
@keyframes lineUp{from{transform:translateY(110%)}to{transform:none}}
.breathe{animation:breathe 4.8s ease-in-out infinite;}
.pulse{animation:ring 2.8s cubic-bezier(.3,.6,.4,1) infinite;}
.btn-green.pulse,.line-pulse{--ring:rgba(6,199,85,.55);}
.btn-yellow.pulse{--ring:rgba(255,210,46,.7);}
.float{animation:floaty 7s ease-in-out infinite;}
.float.b{animation-name:floatyB;animation-duration:8.5s;}
.float.c{animation-duration:9.5s;animation-delay:-3s;}
.kenburns{animation:kb 16s ease-in-out infinite alternate;}
.hover-lift{transition:transform .5s var(--ease),box-shadow .5s var(--ease);}
.hover-lift:hover{transform:translateY(-6px);}

/* 捲動連動:逐字亮起、速度傾斜 */
.js .w{opacity:.18;transition:opacity .45s ease;}
.js .w.on{opacity:1;}
.pimg,.ph-art img,.poster-art img{transform:skewY(var(--skew,0deg));}
/* 標題逐行浮現 */
.split .ln{display:block;overflow:hidden;padding-bottom:.06em;margin-bottom:-.06em;}
.split .ln>span{display:inline-block;}
.js .split.pending .ln>span{transform:translateY(110%);}
.js .split .ln>span{transition:transform 1.1s cubic-bezier(.16,.84,.24,1);transition-delay:calc(var(--d,0) * 110ms + var(--base,0ms));}
/* 區塊浮現 */
.js [data-reveal]{transition:opacity 1.2s var(--ease),transform 1.2s var(--ease),clip-path 1.3s var(--ease);}
.js [data-reveal].pending{opacity:0;transform:translateY(64px) scale(.97);}
.js [data-reveal="clip"].pending{opacity:1;transform:none;clip-path:inset(18% 0 18% 0 round 26px);}
.js [data-reveal="left"].pending{transform:translateX(-60px);}
.js [data-reveal="right"].pending{transform:translateX(60px);}
.js [data-reveal="zoom"].pending{transform:scale(.86);}

/* ---------- 響應式 ---------- */
@media (max-width:1080px){
  .foot-links{grid-template-columns:repeat(2,minmax(0,1fr));}
  .steps ol{grid-template-columns:repeat(2,minmax(0,1fr));}
  .steps li{border-right:none;margin-right:0;border-bottom:2px solid currentColor;padding-right:12px;}
}
@media (max-width:860px){
  .ph-grid{grid-template-columns:minmax(0,1fr);}
  .sec-head{grid-template-columns:minmax(0,1fr);}
  .ph-title{font-size:clamp(52px,15vw,120px);}
  .days{grid-template-columns:minmax(0,1fr);}
}
@media (max-width:560px){
  .brand small{display:none;}
  .foot-links{grid-template-columns:minmax(0,1fr);}
  .facts{grid-template-columns:minmax(0,1fr);}
  .facts dt{padding-bottom:0;}
  .facts dd{border-top:none;padding-top:2px;}
  .facts dt:first-of-type+dd{padding-top:2px;}
  .slot{grid-template-columns:86px minmax(0,1fr);}
  .slot-cta{grid-column:2;justify-self:start;margin-top:6px;}
  .slot time{font-size:16px;}
  .steps ol{grid-template-columns:minmax(0,1fr);}
}
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation:none!important;transition:none!important;}
  .js .w{opacity:1;}
  html{scroll-behavior:auto;}
  .curtain{display:none;}
}
