:root{
  --red:#E8192C; --orange:#F97316; --yellow:#FBBF24; --green:#22C55E;
  --blue:#0EA5E9; --indigo:#6366F1; --purple:#A855F7;
  --dark:#0F172A; --body:#334155; --muted:#64748B;
  --border:#E2E8F0; --white:#FFFFFF; --offwhite:#F8FAFC; --cream:#FFFBF0;
}
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth}

@view-transition {
  navigation: auto;
}

@keyframes pageEnter {
  from {
    opacity: 0;
  }
  to {
    opacity: 1;
  }
}

main {
  animation: pageEnter 0.4s cubic-bezier(0.16, 1, 0.3, 1);
}

/* nunito-regular - latin */
@font-face {
  font-display: swap; /* Check https://developer.mozilla.org/en-US/docs/Web/CSS/@font-face/font-display for other options. */
  font-family: 'Nunito';
  font-style: normal;
  font-weight: 400;
  src: url('../fonts/nunito-v32-latin-regular.woff2') format('woff2'); /* Chrome 36+, Opera 23+, Firefox 39+, Safari 12+, iOS 10+ */
}
/* nunito-600 - latin */
@font-face {
  font-display: swap; /* Check https://developer.mozilla.org/en-US/docs/Web/CSS/@font-face/font-display for other options. */
  font-family: 'Nunito';
  font-style: normal;
  font-weight: 600;
  src: url('../fonts/nunito-v32-latin-600.woff2') format('woff2'); /* Chrome 36+, Opera 23+, Firefox 39+, Safari 12+, iOS 10+ */
}
/* nunito-700 - latin */
@font-face {
  font-display: swap; /* Check https://developer.mozilla.org/en-US/docs/Web/CSS/@font-face/font-display for other options. */
  font-family: 'Nunito';
  font-style: normal;
  font-weight: 700;
  src: url('../fonts/nunito-v32-latin-700.woff2') format('woff2'); /* Chrome 36+, Opera 23+, Firefox 39+, Safari 12+, iOS 10+ */
}
/* nunito-800 - latin */
@font-face {
  font-display: swap; /* Check https://developer.mozilla.org/en-US/docs/Web/CSS/@font-face/font-display for other options. */
  font-family: 'Nunito';
  font-style: normal;
  font-weight: 800;
  src: url('../fonts/nunito-v32-latin-800.woff2') format('woff2'); /* Chrome 36+, Opera 23+, Firefox 39+, Safari 12+, iOS 10+ */
}
/* nunito-900 - latin */
@font-face {
  font-display: swap; /* Check https://developer.mozilla.org/en-US/docs/Web/CSS/@font-face/font-display for other options. */
  font-family: 'Nunito';
  font-style: normal;
  font-weight: 900;
  src: url('../fonts/nunito-v32-latin-900.woff2') format('woff2'); /* Chrome 36+, Opera 23+, Firefox 39+, Safari 12+, iOS 10+ */
}
/* noto-sans-tc-regular - latin */
@font-face {
  font-display: swap; /* Check https://developer.mozilla.org/en-US/docs/Web/CSS/@font-face/font-display for other options. */
  font-family: 'Noto Sans TC';
  font-style: normal;
  font-weight: 400;
  src: url('/fonts/noto-sans-tc-v39-latin-regular.woff2') format('woff2'); /* Chrome 36+, Opera 23+, Firefox 39+, Safari 12+, iOS 10+ */
}
/* noto-sans-tc-500 - latin */
@font-face {
  font-display: swap; /* Check https://developer.mozilla.org/en-US/docs/Web/CSS/@font-face/font-display for other options. */
  font-family: 'Noto Sans TC';
  font-style: normal;
  font-weight: 500;
  src: url('/fonts/noto-sans-tc-v39-latin-500.woff2') format('woff2'); /* Chrome 36+, Opera 23+, Firefox 39+, Safari 12+, iOS 10+ */
}
/* noto-sans-tc-700 - latin */
@font-face {
  font-display: swap; /* Check https://developer.mozilla.org/en-US/docs/Web/CSS/@font-face/font-display for other options. */
  font-family: 'Noto Sans TC';
  font-style: normal;
  font-weight: 700;
  src: url('/fonts/noto-sans-tc-v39-latin-700.woff2') format('woff2'); /* Chrome 36+, Opera 23+, Firefox 39+, Safari 12+, iOS 10+ */
}
/* noto-serif-tc-700 - latin */
@font-face {
  font-display: swap; /* Check https://developer.mozilla.org/en-US/docs/Web/CSS/@font-face/font-display for other options. */
  font-family: 'Noto Serif TC';
  font-style: normal;
  font-weight: 700;
  src: url('/fonts/noto-serif-tc-v36-latin-700.woff2') format('woff2'); /* Chrome 36+, Opera 23+, Firefox 39+, Safari 12+, iOS 10+ */
}
/* noto-serif-tc-900 - latin */
@font-face {
  font-display: swap; /* Check https://developer.mozilla.org/en-US/docs/Web/CSS/@font-face/font-display for other options. */
  font-family: 'Noto Serif TC';
  font-style: normal;
  font-weight: 900;
  src: url('/fonts/noto-serif-tc-v36-latin-900.woff2') format('woff2'); /* Chrome 36+, Opera 23+, Firefox 39+, Safari 12+, iOS 10+ */
}

body{
  display: flex;
  flex-direction: column;
  min-height: 100vh;
  margin: 0;
  font-family:'Nunito',sans-serif;
  background:var(--offwhite);
  color:var(--dark);
  overflow-x:hidden
}

/* ── NAV ── */
nav{
  position:fixed;
  top:0;
  left:0;
  right:0;
  z-index:999;
  background:rgba(255,255,255,.96);
  backdrop-filter:blur(16px);
  border-bottom:1px solid var(--border);
  display:flex;
  align-items:center;
  justify-content:space-between;
  padding:0 48px;
  height:64px;
}

@media (max-width: 768px) {
  nav {
    padding: 0 10px;
  }
}
.nav-logo{
  display: flex;
  align-items: center;
  gap: 12px;
  text-decoration: none;
}
.nl-mark{
  width:42px;height:42px;border-radius:12px;
  background:linear-gradient(135deg,var(--red),var(--orange));
  display:flex;align-items:center;justify-content:center;font-size:20px;line-height:1;
}
.nl-text{display:flex;flex-direction:column;line-height:1.2}
.nl-en{font-size:14px;font-weight:800;color:var(--dark)}
.nl-zh{font-size:10px;font-weight:600;color:var(--muted)}
.nav-back{text-decoration:none;font-size:13.5px;font-weight:700;color:var(--body);padding:8px 18px;border-radius:30px;border:1.5px solid var(--border);transition:all .18s}
.nav-back:hover{border-color:var(--dark);color:var(--dark)}

/* ── HEADER BAND ── */
main.reg-wrap {
  flex: 1;
}
.reg-head{
  margin-top:64px;padding:64px 24px 120px;text-align:center;position:relative;overflow:hidden;
  background:var(--dark);
}
.reg-head::before{
  content:'';position:absolute;inset:0;
  background-size:80px 80px,120px 120px,100px 100px,90px 90px,110px 110px;
  background-position:10px 10px,40px 60px,70px 20px,25px 80px,60px 45px;
  opacity:.14;pointer-events:none;
}
.reg-badge .dot{width:8px;height:8px;border-radius:50%;background:var(--green);animation:pulse 1.5s infinite}
@keyframes pulse{0%,100%{transform:scale(1);opacity:1}50%{transform:scale(1.4);opacity:.6}}
.reg-head h1{
  font-family:Arial,Helvetica,sans-serif;
  font-size:clamp(34px,10vw,56px);font-weight:900;line-height:1.05;letter-spacing:-.02em;
  color:white;position:relative;z-index:1;
}
.reg-head h1 .zh{
  display:block;font-family:'Noto Serif TC',serif;font-size:clamp(18px,4vw,28px);
  color:var(--yellow);margin-top:8px;
}
.reg-head .meta{
  display:flex;
  gap:1vw;
  justify-content:center;
  flex-wrap:wrap;
  margin-top:min(2vh, 1vw);
  position:relative;
  z-index:1;
  font-size: min(2vw, 1.067vh);
  font-weight:700;
  color:rgba(255,255,255,.7);
  font-family:'Noto Sans TC',sans-serif;
}
.reg-head .meta span{display:inline-flex;align-items:center;gap:6px}

/* ── FORM CARD ── */
.reg-wrap{
    max-width:640px;
    margin:-88px auto 80px;
    padding:0 24px;
    position:relative;
    z-index:2
}
.reg-card{
  background:white;
  border-radius:24px;
  border:1.5px solid var(--border);
  box-shadow:0 24px 60px rgba(15,23,42,.12);
  padding:44px 44px 40px;
}
.reg-intro{margin-bottom:28px}
.reg-intro h2{font-size:22px;font-weight:900;letter-spacing:-.01em;margin-bottom:4px}
.reg-intro p{font-size:13.5px;color:var(--muted);font-family:'Noto Sans TC',sans-serif;line-height:1.6}

.field{margin-bottom:22px}
.field label{display:block;font-size:13.5px;font-weight:800;color:var(--dark);margin-bottom:8px}
.field label .zh{font-family:'Noto Sans TC',sans-serif;font-weight:500;color:var(--muted);margin-left:4px}
.field label .req{color:var(--red);margin-left:3px}
.field .hint{font-size:12px;color:var(--muted);font-weight:500;margin-top:6px;font-family:'Noto Sans TC',sans-serif}

.control{
  width:100%;padding:13px 16px;border-radius:12px;
  border:1.5px solid var(--border);background:var(--offwhite);
  font-family:inherit;font-size:14.5px;font-weight:600;color:var(--dark);
  outline:none;transition:border .18s,background .18s;
}
.control::placeholder{color:#94A3B8;font-weight:500}
.control:focus{border-color:var(--blue);background:white;box-shadow:0 0 0 3px rgba(14,165,233,.12)}
select.control{appearance:none;cursor:pointer;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%2364748B' d='M6 8L1 3h10z'/%3E%3C/svg%3E");
  background-repeat:no-repeat;background-position:right 16px center;padding-right:40px}
.control.invalid{border-color:var(--red);background:#FEF2F2}
.control.invalid:focus{box-shadow:0 0 0 3px rgba(232,25,44,.12)}
.err-msg{display:none;font-size:12px;font-weight:700;color:var(--red);margin-top:6px}
.err-msg.show{display:block}

.two-col{display:grid;grid-template-columns:1fr 1fr;gap:18px}

.hp{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}

.privacy{
  display:flex;
  gap:10px;
  align-items:flex-start;
  padding:14px 16px;
  margin:6px 0 26px;
}
.privacy p{font-size:11px;color:var(--muted);line-height:1.6;font-family:'Noto Sans TC',sans-serif}

.submit-btn{
  width:100%;padding:16px;border-radius:40px;border:none;cursor:pointer;
  background:var(--yellow);color:rgb(83, 83, 83);font-family:inherit;font-size:16px;font-weight:800;
  letter-spacing:.01em;transition:all .2s;
}
.submit-btn:hover:not(:disabled){transform:translateY(-2px);box-shadow:0 10px 30px rgba(232,25,44,.35)}
.submit-btn:disabled{opacity:.6;cursor:not-allowed}

/* ── SUCCESS STATE ── */
.reg-success{
  display:none;
  text-align:center;
  margin-top: 20px;
  padding:10px 5px
}
.reg-success.show{display:block;animation:fadeUp .4s ease}
@keyframes fadeUp{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}
.reg-success .tick{
  width:76px;height:76px;border-radius:50%;margin:0 auto 20px;
  background:linear-gradient(135deg,var(--green),#16A34A);
  display:flex;align-items:center;justify-content:center;font-size:40px;color:white;
}
.reg-success h2{
  font-size:24px;
  font-weight:900;
  margin-bottom:8px
}
.reg-success p{
  font-size:14px;
  color:var(--muted);
  line-height:1.7;
  font-family:'Noto Sans TC',sans-serif;
  max-width:420px;
  margin:0 auto 24px
}
.reg-success .again{
  display:inline-block;text-decoration:none;font-size:14px;font-weight:700;
  padding:11px 26px;border-radius:30px;border:1.5px solid var(--border);color:var(--dark);cursor:pointer;transition:all .18s;
}
.reg-success .again:hover{border-color:var(--dark)}

/* ── FOOTER ── */
footer{background:var(--dark);color:rgba(255,255,255,.6);text-align:center;padding:32px 24px;font-size:12.5px;font-family:'Noto Sans TC',sans-serif}
footer a{color:rgba(255,255,255,.85);text-decoration:none}

@media(max-width:400px){
    .reg-card{padding:32px 22px}
    .two-col{
        grid-template-columns:1fr;
        gap: 0px;
    }
}