/* 鯨魚島官網｜元件庫（改編自 Uiverse.io 社群元件，2026-11-01）
   使用規則見 design/元件庫_Uiverse.md。這裡只放「已改成品牌樣子」的版本，
   不要把 Uiverse 原檔整包貼進來（原檔多是漸層、紫色、粗字重，違反去 AI 味四原則）。

   改編原則：只用 site.css 的色票變數；間距 8 的倍數；線條 1.6px；不用漸層；
   動態都有「減少動態」退路；所有互動都能用鍵盤操作。

   來源（MIT 授權，作者與 Uiverse.io 署名如下）：
   - .wi-btn-sweep   ← Cornerstone-04 / chatty-eel-89（底色由左往右刷過）
   - .wi-btn-ink     ← SujitAdroja / strong-bullfrog-56（底色由中心暈開）
   - .wi-btn-trace   ← Cornerstone-04 / bitter-impala-54（線沿邊框描一圈）
   - .wi-btn-arrow   ← escannord / lovely-gecko-23（箭頭伸長）
   - .wi-card-trace  ← Cornerstone-04 / bitter-impala-54（同上手法用在卡片）
   - .wi-check-ink   ← LeonKohli / wise-puma-87（不規則圓框＋勾勾一筆畫出）
   - .wi-switch      ← AbanoubMagdy1 / Toggle-switches（基本開關結構）
   - .wi-load-dots   ← Cornerstone-04 / little-mouse-69（三點呼吸）
   - .wi-load-tide   ← mrhyddenn / angry-goat-2（圓內水位波浪）
   - 輸入框金線底線  ← elijahgummer / short-baboon-22（聚焦時底線）
   - 填錯輕晃        ← Galahhad / average-snail-50（錯誤時左右晃）
   - 通知            ← PriyanshuGupta28 / sour-rat-57（toast＋勾勾圖示）
   - 單選卡片        ← Yaya12085 / empty-badger-73（整張卡片當單選）
   - 滑動底塊        ← Pradeepsaranbishnoi / heavy-dragonfly-92（ui-kit.js）
   - 雲端連結框      ← Yaya12085 / tender-moose-95（虛線上傳框，只借外框，不收檔案）

   MIT License
   Copyright (c) 2023 Uiverse.io
   Permission is hereby granted, free of charge, to any person obtaining a copy of this software
   and associated documentation files (the "Software"), to deal in the Software without restriction,
   including without limitation the rights to use, copy, modify, merge, publish, distribute,
   sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
   furnished to do so, subject to the following conditions: The above copyright notice and this
   permission notice shall be included in all copies or substantial portions of the Software.
   THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED. */

:root {
  --wi-ease: cubic-bezier(.2, .7, .2, 1);
  --wi-line: 1.6px;
}

/* ---------- 按鈕：共用底 ---------- */
.wi-btn { position: relative; isolation: isolate; overflow: hidden; display: inline-flex; align-items: center; justify-content: center; gap: 8px;
  min-height: 48px; padding: 0 24px; border-radius: 999px; border: 0; cursor: pointer; text-decoration: none;
  font: 500 15px/1 var(--s-sans); letter-spacing: .02em; transition: color .3s var(--wi-ease); }
.wi-btn:focus-visible { outline: 2px solid var(--s-gold); outline-offset: 3px; }

/* A2 刷金：金底按鈕，滑過時珍珠白由左刷到右 */
.wi-btn-sweep { background: var(--s-gold); color: var(--s-ink); }
.wi-btn-sweep::after { content: ""; position: absolute; inset: 0; z-index: -1; background: var(--s-pearl);
  transform: scaleX(0); transform-origin: left; transition: transform .32s var(--wi-ease); }
.wi-btn-sweep:is(:hover, :focus-visible)::after { transform: scaleX(1); }

/* A3 墨暈：金底按鈕，滑過時珍珠白從中心暈開（像墨滴進水） */
.wi-btn-ink { background: var(--s-gold); color: var(--s-ink); }
.wi-btn-ink::after { content: ""; position: absolute; z-index: -1; left: 50%; top: 50%; width: 0; height: 0; border-radius: 50%;
  background: var(--s-pearl); transform: translate(-50%, -50%); transition: width .4s var(--wi-ease), height .4s var(--wi-ease); }
.wi-btn-ink:is(:hover, :focus-visible)::after { width: 120%; height: 300%; }

/* B2 金線描邊：透明按鈕，滑過時金線沿邊框畫一圈（呼應首頁金鯨畫線）
   用直角小圓角，描線的轉角才清楚 */
.wi-btn-trace { background: transparent; color: var(--s-pearl); border-radius: 8px; box-shadow: inset 0 0 0 1px var(--s-hair-2); }
.wi-btn-trace::before, .wi-btn-trace::after { content: ""; position: absolute; width: 0; height: 0; border: var(--wi-line) solid transparent; border-radius: 8px; box-sizing: border-box; }
.wi-btn-trace::before { top: 0; left: 0; }
.wi-btn-trace::after { bottom: 0; right: 0; }
.wi-btn-trace:is(:hover, :focus-visible) { color: var(--s-gold); }
.wi-btn-trace:is(:hover, :focus-visible)::before { width: 100%; height: 100%; border-top-color: var(--s-gold); border-right-color: var(--s-gold);
  transition: width .2s linear, height .2s linear .2s; }
.wi-btn-trace:is(:hover, :focus-visible)::after { width: 100%; height: 100%; border-bottom-color: var(--s-gold); border-left-color: var(--s-gold);
  transition: border-color 0s .4s, width .2s linear .4s, height .2s linear .6s; }

/* B3 箭頭伸長：透明按鈕，滑過時細線箭頭往右伸 */
.wi-btn-arrow { background: transparent; color: var(--s-pearl); box-shadow: inset 0 0 0 1px var(--s-hair-2); transition: color .3s, box-shadow .3s; }
.wi-btn-arrow .wi-ar { position: relative; width: 16px; height: 16px; transition: width .3s var(--wi-ease); }
.wi-btn-arrow .wi-ar::before { content: ""; position: absolute; left: 0; right: 1px; top: 50%; border-top: var(--wi-line) solid currentColor; translate: 0 -50%; }
.wi-btn-arrow .wi-ar::after { content: ""; position: absolute; right: 1px; top: 50%; width: 7px; height: 7px; border: solid currentColor; border-width: var(--wi-line) var(--wi-line) 0 0; translate: 0 -50%; rotate: 45deg; }
.wi-btn-arrow:is(:hover, :focus-visible) { color: var(--s-gold); box-shadow: inset 0 0 0 1px var(--s-gold); }
.wi-btn-arrow:is(:hover, :focus-visible) .wi-ar { width: 32px; }

/* ---------- 卡片 ---------- */
/* F2 金線繞框：玻璃卡片，滑過時金線沿邊框畫一圈（同 B2 手法） */
.wi-card-trace { position: relative; padding: 24px; border-radius: 16px; background: var(--s-l1); border: 1px solid var(--s-hair); box-shadow: var(--s-glass-edge); }
.wi-card-trace::before, .wi-card-trace::after { content: ""; position: absolute; inset: -1px auto auto -1px; width: 0; height: 0; border: 1px solid transparent; border-radius: 16px; box-sizing: border-box; pointer-events: none; }
.wi-card-trace::after { inset: auto -1px -1px auto; }
.wi-card-trace:is(:hover, :focus-within)::before { width: calc(100% + 2px); height: calc(100% + 2px); border-top-color: var(--s-gold); border-right-color: var(--s-gold); transition: width .3s linear, height .3s linear .3s; }
.wi-card-trace:is(:hover, :focus-within)::after { width: calc(100% + 2px); height: calc(100% + 2px); border-bottom-color: var(--s-gold); border-left-color: var(--s-gold); transition: border-color 0s .6s, width .3s linear .6s, height .3s linear .9s; }

/* F3 內發光：玻璃卡片，滑過時上緣亮起一條金色內光（不用漸層，用 inset 陰影） */
.wi-card-glow { padding: 24px; border-radius: 16px; background: var(--s-l1); border: 1px solid var(--s-hair); box-shadow: var(--s-glass-edge);
  transition: border-color .3s, box-shadow .3s, background-color .3s; }
.wi-card-glow:is(:hover, :focus-within) { border-color: color-mix(in srgb, var(--s-gold) 40%, transparent); background: var(--s-l2);
  box-shadow: inset 0 1px 0 color-mix(in srgb, var(--s-gold) 60%, transparent), inset 0 24px 32px -24px var(--s-glow-gold); }

/* ---------- 勾選框 ---------- */
/* C2 墨跡勾：不規則圓框（像毛筆點出來），勾選時框變形、勾勾一筆畫出 */
.wi-check-ink { display: inline-flex; align-items: center; gap: 8px; cursor: pointer; color: var(--s-pearl); font-size: 15px; }
.wi-check-ink input { position: absolute; opacity: 0; width: 1px; height: 1px; }
.wi-check-ink .wi-box { position: relative; flex: none; width: 24px; height: 24px; border: var(--wi-line) solid var(--s-mist);
  border-radius: 30% 70% 70% 30% / 30% 30% 70% 70%; transition: border-color .3s, border-radius .3s, background-color .3s; }
.wi-check-ink svg { position: absolute; inset: 2px; width: 18px; height: 18px; fill: none; stroke: var(--s-ink); stroke-width: 2.4; stroke-linecap: round; stroke-linejoin: round;
  stroke-dasharray: 24; stroke-dashoffset: 24; transition: stroke-dashoffset .4s var(--wi-ease) .08s; }
.wi-check-ink input:checked + .wi-box { border-color: var(--s-gold); background: var(--s-gold); border-radius: 70% 30% 30% 70% / 70% 70% 30% 30%; }
.wi-check-ink input:checked + .wi-box svg { stroke-dashoffset: 0; }
.wi-check-ink input:focus-visible + .wi-box { outline: 2px solid var(--s-gold); outline-offset: 3px; }

/* ---------- 開關（例：聲音開關） ---------- */
.wi-switch { display: inline-flex; align-items: center; gap: 8px; cursor: pointer; color: var(--s-mist); font-size: 14px; }
.wi-switch input { position: absolute; opacity: 0; width: 1px; height: 1px; }
.wi-switch .wi-track { position: relative; flex: none; width: 40px; height: 24px; border-radius: 999px; border: 1px solid var(--s-hair-2); background: var(--s-l1); transition: background-color .25s, border-color .25s; }
.wi-switch .wi-track::before { content: ""; position: absolute; left: 3px; top: 3px; width: 16px; height: 16px; border-radius: 50%; background: var(--s-mist); transition: translate .25s var(--wi-ease), background-color .25s; }
.wi-switch input:checked + .wi-track { border-color: var(--s-gold); background: color-mix(in srgb, var(--s-gold) 18%, transparent); }
.wi-switch input:checked + .wi-track::before { translate: 16px 0; background: var(--s-gold); }
.wi-switch input:checked ~ .wi-label { color: var(--s-pearl); }
.wi-switch input:focus-visible + .wi-track { outline: 2px solid var(--s-gold); outline-offset: 3px; }

/* ---------- 載入動效 ---------- */
/* E2 三點呼吸：送出中，三顆金點輪流放大 */
.wi-load-dots { display: inline-flex; gap: 8px; align-items: center; height: 16px; }
.wi-load-dots i { width: 6px; height: 6px; border-radius: 50%; background: currentColor; animation: wi-breathe .9s var(--wi-ease) infinite alternate; }
.wi-load-dots i:nth-child(2) { animation-delay: .15s; }
.wi-load-dots i:nth-child(3) { animation-delay: .3s; }
@keyframes wi-breathe { from { transform: scale(1.6); opacity: 1; } to { transform: scale(.8); opacity: .4; } }

/* E3 潮汐：圓內海水慢慢轉，像水位起伏（適合整頁載入、上傳中） */
.wi-load-tide { position: relative; width: 48px; height: 48px; border-radius: 50%; overflow: hidden; box-shadow: inset 0 0 0 1px var(--s-gold); background: var(--s-sea); }
.wi-load-tide::before, .wi-load-tide::after { content: ""; position: absolute; width: 200%; height: 200%; left: 50%; top: 0; translate: -50% -72%; background: var(--s-night); }
.wi-load-tide::before { border-radius: 45%; animation: wi-tide 5s linear infinite; }
.wi-load-tide::after { border-radius: 40%; background: color-mix(in srgb, var(--s-night) 55%, transparent); animation: wi-tide 9s linear infinite; }
@keyframes wi-tide { to { rotate: 360deg; } }

/* 減少動態：保留結果、拿掉過程 */
@media (prefers-reduced-motion: reduce) {
  .wi-btn::after, .wi-btn-trace::before, .wi-btn-trace::after, .wi-card-trace::before, .wi-card-trace::after,
  .wi-check-ink svg, .wi-check-ink .wi-box, .wi-switch .wi-track::before, .wi-btn-arrow .wi-ar { transition: none !important; }
  .wi-load-dots i { animation: none; opacity: .7; }
  .wi-load-tide::before, .wi-load-tide::after { animation-duration: 30s; }
}

/* =========================================================================
   套用到現有頁面（2026-11-02 使用者比稿選定）：
   A3 墨暈＝金色／紅色主按鈕；B3 箭頭伸長＝透明框「連結」按鈕（<a>，像「取消」「上一步」這類 <button> 不加箭頭）；
   F3 上緣內光＝卡片；C2 墨跡勾＝報名勾選（phase1.js 產生 .wi-box）；D2 金框開關＝聲音面板；E3 潮汐＝等待。
   直接掛在現有 class 上，頁面 HTML 不用改。
   ========================================================================= */

/* A3 墨暈 */
:is(.pg-btn.gold, .btn-primary, .btn-gold) { position: relative; isolation: isolate; overflow: hidden; }
:is(.pg-btn.gold, .btn-primary, .btn-gold)::after { content: ""; position: absolute; z-index: -1; left: 50%; top: 50%; width: 0; height: 0; border-radius: 50%;
  background: var(--s-pearl); transform: translate(-50%, -50%); transition: width .4s var(--wi-ease), height .4s var(--wi-ease); pointer-events: none; }
:is(.pg-btn.gold, .btn-primary, .btn-gold):not([disabled], [aria-disabled="true"], [aria-busy="true"]):is(:hover, :focus-visible)::after { width: 120%; height: 300%; }
:is(.pg-btn.gold, .btn-primary, .btn-gold):is(:hover, :focus-visible) { color: var(--s-ink); }
.pg-btn.gold:hover { background: var(--s-gold); } /* 原本瞬間變白，改由墨暈接手 */

/* B3 箭頭伸長：只加在 <a> 透明框按鈕；已經自帶 svg 箭頭的不重複加 */
a:is(.pg-btn.ghost, .btn-ghost, .btn-ghost-light):not(:has(svg))::after { content: ""; flex: none; width: 16px; height: 8px; margin-left: 0;
  background: currentColor; transition: width .3s var(--wi-ease);
  -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath d='M4.2 .6 7.6 4 4.2 7.4' fill='none' stroke='%23000' stroke-width='1.2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") right center / 8px 8px no-repeat,
    linear-gradient(#000 0 0) left center / calc(100% - 1px) 1.6px no-repeat;
  mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath d='M4.2 .6 7.6 4 4.2 7.4' fill='none' stroke='%23000' stroke-width='1.2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") right center / 8px 8px no-repeat,
    linear-gradient(#000 0 0) left center / calc(100% - 1px) 1.6px no-repeat; }
a:is(.pg-btn.ghost, .btn-ghost, .btn-ghost-light):not(:has(svg)):is(:hover, :focus-visible)::after { width: 28px; }

/* F3 上緣內光：首頁／關於卡片、第一期報名類別卡、第二期練習生卡 */
:is(.pg-card, .track-card, a.card) { transition: border-color .3s, box-shadow .3s, background-color .3s; }
:is(.pg-card, .track-card, a.card):is(:hover, :focus-within) { border-color: color-mix(in srgb, var(--s-gold) 40%, transparent);
  box-shadow: inset 0 1px 0 color-mix(in srgb, var(--s-gold) 60%, transparent), inset 0 24px 32px -24px var(--s-glow-gold); }

/* C2 墨跡勾：phase1 報名表 <label class="check"><input><span class="wi-box">…</span><span>文字</span></label> */
.check:has(.wi-box) { position: relative; display: flex; gap: 8px; align-items: center; }
/* 原生勾選框蓋滿整個 label 但透明：點哪裡都能勾、讀屏與自動測試照樣找得到 */
.check:has(.wi-box) input { position: absolute; inset: 0; width: 100%; height: 100%; margin: 0; opacity: 0; cursor: pointer; z-index: 1; }
.check .wi-box { position: relative; display: block; flex: none; width: 24px; height: 24px; border: var(--wi-line) solid var(--s-mist);
  border-radius: 30% 70% 70% 30% / 30% 30% 70% 70%; transition: border-color .3s, border-radius .3s, background-color .3s; }
.check .wi-box svg { position: absolute; inset: 2px; width: 18px; height: 18px; fill: none; stroke: var(--s-ink); stroke-width: 2.4; stroke-linecap: round; stroke-linejoin: round;
  stroke-dasharray: 24; stroke-dashoffset: 24; transition: stroke-dashoffset .4s var(--wi-ease) .08s; }
.check input:checked + .wi-box { border-color: var(--s-gold); background: var(--s-gold); border-radius: 70% 30% 30% 70% / 70% 70% 30% 30%; }
.check input:checked + .wi-box svg { stroke-dashoffset: 0; }
.check input:focus-visible + .wi-box { outline: 2px solid var(--s-gold); outline-offset: 3px; }
.field.has-err .check .wi-box { border-color: #e5484d; }

/* E3 潮汐：小尺寸放按鈕裡（送出中、查詢中） */
.wi-load-tide.sm { width: 20px; height: 20px; flex: none; }

/* =========================================================================
   第二輪（2026-11-02 使用者比稿選定）：G3 金線底線、J2 紅框＋輕晃、I2 玻璃通知（底部置中、2.5 秒）。
   第一期欄位是 .field .input；第二期欄位是 input.field / textarea.field（兩頁 class 名稱不同）。
   ========================================================================= */

/* G3 金線底線：框不變，聚焦時底部由中間往兩側畫出金線（用單色背景條畫線，不是漸層色） */
:is(.field .input, input.field, textarea.field, select.input) {
  background-image: linear-gradient(var(--s-gold), var(--s-gold)); background-repeat: no-repeat;
  background-position: center calc(100% - 1px); background-size: 0% 1.6px;
  transition: background-size .35s var(--wi-ease), border-color .2s; }
:is(.field .input, input.field, textarea.field, select.input):focus { outline: none; box-shadow: none; border-color: var(--field-line, var(--night-3, #23252a)); background-size: calc(100% - 16px) 1.6px; }
:is(.field .input, input.field, textarea.field, select.input):focus-visible { outline: none; }

/* J2 紅框＋輕晃：第一期出錯欄位重畫時晃一下；第二期由 phase2.js 加 .wi-shake */
@keyframes wi-shake { 25% { translate: 6px 0; } 50% { translate: -6px 0; } 75% { translate: 4px 0; } }
.field.has-err .input, .wi-shake { animation: wi-shake .32s var(--wi-ease); }
:is(input.field, textarea.field).is-err { border-color: #e5484d; }
.field.has-err .input { background-image: linear-gradient(#e5484d, #e5484d) !important; background-repeat: no-repeat !important; background-position: center calc(100% - 1px) !important; background-size: 0% 1.6px !important; }
.field.has-err .input:focus { border-color: #e5484d; background-size: calc(100% - 16px) 1.6px !important; }

/* I2 玻璃＋金勾＋倒數線：位置、時間沿用原本（底部置中、2.5 秒） */
.toast { display: flex; align-items: center; gap: 8px; overflow: hidden; text-align: left;
  background: rgba(17, 18, 20, .92) !important; color: var(--s-pearl) !important; border: 1px solid var(--s-hair-2); border-radius: 12px !important;
  box-shadow: inset 0 1px 0 rgba(246, 239, 226, .08), 0 8px 30px rgba(0, 0, 0, .4) !important; font-weight: 400 !important; padding: 12px 16px !important;
  -webkit-backdrop-filter: blur(16px) saturate(120%); backdrop-filter: blur(16px) saturate(120%); }
.toast::before { content: ""; flex: none; width: 20px; height: 20px; background: var(--s-gold);
  -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M5 12.5 10 17.5 19 7' fill='none' stroke='%23000' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center / contain no-repeat;
  mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M5 12.5 10 17.5 19 7' fill='none' stroke='%23000' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center / contain no-repeat; }
.toast::after { content: ""; position: absolute; left: 0; bottom: 0; width: 100%; height: 1.6px; background: var(--s-gold); transform-origin: left; transform: scaleX(0); }
#toast.show::after, body > .toast:not(#toast)::after { animation: wi-count 2.5s linear forwards; }
@keyframes wi-count { from { transform: scaleX(1); } to { transform: scaleX(0); } }

/* =========================================================================
   第三輪（2026-11-02 使用者比稿選定）：L3 單選卡片上緣內光、K2 金色細箭頭下拉、M2 滑動底塊（跟隊色）。
   ========================================================================= */

/* L3 單選卡片：選中時亮上緣金光（同卡片滑過的 F3），取代紅框淡紅底 */
.choice input:checked + .box { border-color: color-mix(in srgb, var(--s-gold) 55%, transparent) !important; background: rgba(246, 239, 226, .07) !important;
  box-shadow: inset 0 1px 0 color-mix(in srgb, var(--s-gold) 70%, transparent), inset 0 24px 32px -24px var(--s-glow-gold) !important; }
.choice .box { transition: border-color .25s, box-shadow .25s, background-color .25s; }
.choice input:focus-visible + .box { outline: 2px solid var(--s-gold); outline-offset: 3px; }

/* K2 下拉：統一 1.6px 金色細箭頭；打開仍是手機原生選單 */
.field select.input { -webkit-appearance: none; appearance: none; padding-right: 48px;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M6 9.5 12 15.5 18 9.5' fill='none' stroke='%23e8c57e' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E"), linear-gradient(var(--s-gold), var(--s-gold));
  background-repeat: no-repeat, no-repeat; background-position: right 16px center, center calc(100% - 1px); background-size: 16px 16px, 0% 1.6px; }
.field select.input:focus { background-size: 16px 16px, calc(100% - 16px) 1.6px; }
.field.has-err select.input { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M6 9.5 12 15.5 18 9.5' fill='none' stroke='%23e8c57e' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E"), linear-gradient(#e5484d, #e5484d) !important;
  background-repeat: no-repeat !important; background-position: right 16px center, center calc(100% - 1px) !important; background-size: 16px 16px, 0% 1.6px !important; }
.field.has-err select.input:focus { background-size: 16px 16px, calc(100% - 16px) 1.6px !important; }

/* M2 滑動底塊：第二期 .chips（戰隊切換）與 .tabs（個人頁段落），底塊位置由 ui-kit.js 算 */
.wi-glider { position: relative; isolation: isolate; }
.wi-glide { position: absolute; z-index: -1; border-radius: 999px; pointer-events: none; opacity: 0;
  --wi-cc: var(--wi-c, var(--team, var(--s-gold)));
  background: color-mix(in srgb, var(--wi-cc) 22%, transparent); box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--wi-cc) 60%, transparent);
  transition: left .3s var(--wi-ease), top .3s var(--wi-ease), width .3s var(--wi-ease), height .3s var(--wi-ease), background-color .3s, box-shadow .3s, opacity .2s; }
.wi-glider .chip[aria-pressed="true"] { color: var(--s-pearl) !important; background: transparent !important; border-color: transparent !important; }
.wi-glider .chip { background: transparent; }
.wi-glider.tabs a { border-bottom-color: transparent !important; border-radius: 999px; }
.wi-glider.tabs { padding-block: 4px; }

/* =========================================================================
   第四輪（2026-11-03 使用者比稿選定）：N3 虛線雲朵框（貼上當下辨識）、P3 圓點連線進度（做完用五隊色）。
   ========================================================================= */

/* N3 雲端連結框（phase1.js cloudField） */
.wi-drop { display: grid; gap: 8px; justify-items: center; padding: 24px 16px; border: 1.6px dashed color-mix(in srgb, var(--s-gold) 45%, transparent);
  border-radius: 16px; background: rgba(246, 239, 226, .04); text-align: center; transition: border-color .25s, background-color .25s; }
.wi-drop:focus-within { border-color: var(--s-gold); background: rgba(232, 197, 126, .06); }
.wi-drop-ico { width: 32px; height: 32px; fill: none; stroke: var(--s-gold); stroke-width: 1.6; stroke-linecap: round; stroke-linejoin: round; }
.wi-drop b { font-weight: 500; font-size: 15px; }
.wi-drop small { color: var(--s-mist); font-size: 13px; line-height: 1.6; max-width: 36em; }
.wi-drop .input { text-align: left; }
.field.has-err .wi-drop { border-color: #e5484d; }
.wi-link-st { min-height: 0; font-size: 13px; line-height: 1.6; }
.wi-link-st:not(:empty) { margin-top: 8px; }
.wi-link-st span { display: inline-flex; gap: 8px; align-items: flex-start; }
.wi-link-st svg { flex: none; width: 16px; height: 16px; margin-top: 2px; fill: none; stroke: currentColor; stroke-width: 1.6; stroke-linecap: round; stroke-linejoin: round; }
.wi-link-st .ok { color: var(--s-gold); }
.wi-link-st .bad { color: #ff8a8d; }

/* P3 圓點連線：報名表 .stepper 與查詢頁 .progress。做完的點沿用五隊色輪流，目前這步是金色墨跡點 */
.stepper { position: relative; display: flex !important; justify-content: space-between; align-items: center; gap: 0 !important; height: 24px; margin: 16px 0 8px; }
.stepper::before, .stepper::after { content: ""; position: absolute; left: 6px; top: 50%; height: 1px; translate: 0 -50%; }
.stepper::before { right: 6px; background: var(--s-night-3, #23252a); }
.stepper::after { width: calc((100% - 12px) * var(--p, 0)); height: 1.6px; background: var(--s-gold); transition: width .5s var(--wi-ease); }
.stepper span { position: relative; z-index: 1; flex: none !important; width: 12px !important; height: 12px !important; border-radius: 50% !important;
  background: var(--s-night-2, #111214); box-shadow: inset 0 0 0 1.6px #3a3d44; transition: all .3s var(--wi-ease); }
.stepper span.done { box-shadow: none; }
.stepper span.cur { width: 20px !important; height: 20px !important; background: var(--s-gold) !important; box-shadow: none;
  border-radius: 30% 70% 70% 30% / 30% 30% 70% 70% !important; }

.progress { position: relative; }
.progress li { position: relative; }
.progress li::before { width: 12px !important; height: 12px !important; margin: 4px auto 8px !important; border-radius: 50% !important; position: relative; z-index: 1;
  background: var(--s-night-2, #111214) !important; box-shadow: inset 0 0 0 1.6px #3a3d44; }
.progress li:not(:first-child)::after { content: ""; position: absolute; top: 10px; right: calc(50% + 6px); width: calc(100% - 12px + 4px); height: 1px; background: var(--s-night-3, #23252a); }
.progress li.done::after, .progress li.cur::after { height: 1.6px; background: var(--s-gold); }
.progress li.done:nth-child(5n+1)::before { background: var(--t-black) !important; box-shadow: inset 0 0 0 1.6px var(--s-gold); }
.progress li.done:nth-child(5n+2)::before { background: var(--t-blue) !important; box-shadow: none; }
.progress li.done:nth-child(5n+3)::before { background: var(--t-beige) !important; box-shadow: none; }
.progress li.done:nth-child(5n+4)::before { background: var(--t-silver) !important; box-shadow: none; }
.progress li.done:nth-child(5n+5)::before { background: var(--t-purple) !important; box-shadow: none; }
.progress li.cur::before { width: 20px !important; height: 20px !important; margin: 0 auto 4px !important; background: var(--s-gold) !important; box-shadow: none;
  border-radius: 30% 70% 70% 30% / 30% 30% 70% 70% !important; }
.stepper span.done:nth-child(5n+1) { box-shadow: inset 0 0 0 1.6px var(--s-gold); }

@media (prefers-reduced-motion: reduce) {
  .stepper::after, .stepper span, .wi-drop { transition: none; }
  .wi-glide { transition: none; }
  .field.has-err .input, .wi-shake { animation: none; }
  #toast.show::after, body > .toast:not(#toast)::after { animation: none; }
  :is(.field .input, input.field, textarea.field, select.input) { transition: none; }
  :is(.pg-btn.gold, .btn-primary, .btn-gold)::after, a:is(.pg-btn.ghost, .btn-ghost, .btn-ghost-light)::after, .check .wi-box, .check .wi-box svg { transition: none !important; }
}
