/* ── 北歐風主題 ──
   暖紙感底 · 墨色字 · 陶土色點綴 · serif 標題 + grotesque 內文
   顏色與字體都集中在 :root,日後好調。 */
:root{
  --bg:#F3EFE8;        /* 暖米紙 */
  --surface:#FCFBF7;   /* 卡片白 */
  --ink:#23211C;       /* 近黑(暖) */
  --muted:#857E70;     /* 次要文字 */
  --line:#E4DCCD;      /* 暖邊框 */
  --accent:#9C6B4E;    /* 陶土 */
  --accent-soft:#F0E7DD;
  --err:#A6442E;
  --serif:"Fraunces","Noto Serif TC",Georgia,serif;
  --sans:"Hanken Grotesk","Noto Sans TC",-apple-system,sans-serif;
}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--bg);color:var(--ink);
     font-family:var(--sans);font-size:16px;line-height:1.65;
     -webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}
.wrap{max-width:540px;margin:0 auto;padding:40px 22px 72px}

/* 標題與前言 */
.badge{display:inline-block;font-size:.68rem;letter-spacing:.22em;text-transform:uppercase;
       color:var(--muted);border:1px solid var(--line);border-radius:2px;padding:6px 13px;margin-bottom:22px}
h1{font-family:var(--serif);font-weight:500;font-size:2rem;line-height:1.15;
   letter-spacing:-.01em;margin:6px 0 12px}
.intro{color:var(--muted);margin:0 0 22px;font-size:.95rem}
.paynote{background:var(--accent-soft);border:1px solid var(--line);border-radius:6px;
         padding:13px 15px;font-size:.84rem;color:#6f5b4a;margin:0 0 22px;line-height:1.55}

/* 可替換橫式 Banner */
.banner{height:180px;border-radius:6px;margin-bottom:22px;border:1px solid var(--line);overflow:hidden;
        background:linear-gradient(135deg,#EDE6DA,#E3D8C7);background-size:cover;background-position:center;
        display:flex;align-items:center;justify-content:center;text-align:center}
.banner span{font-family:var(--serif);font-size:1.15rem;font-weight:500;color:#9a8f7c;padding:0 24px;letter-spacing:.01em}

/* 表單 */
form{background:var(--surface);border:1px solid var(--line);border-radius:8px;padding:28px 26px}
.field{margin-bottom:20px}
label{display:block;font-size:.8rem;font-weight:500;color:var(--muted);margin-bottom:7px;letter-spacing:.01em}
.req{color:var(--accent)}
.sens{display:inline-block;font-size:.6rem;color:var(--err);border:1px solid var(--err);border-radius:3px;
      padding:1px 5px;margin-left:5px;letter-spacing:.04em;vertical-align:middle;text-transform:uppercase}
input,select,textarea{width:100%;padding:12px 13px;background:#fff;color:var(--ink);
      border:1px solid var(--line);border-radius:6px;font-size:1rem;appearance:none;outline:none;
      font-family:inherit;transition:border-color .15s,box-shadow .15s}
input::placeholder,textarea::placeholder{color:#b6ae9f}
input:focus,select:focus,textarea:focus{border-color:var(--accent);box-shadow:0 0 0 3px rgba(156,107,78,.12)}
textarea{resize:vertical;line-height:1.55}
select{background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='12' height='8'><path d='M1 1l5 5 5-5' stroke='%23857E70' fill='none' stroke-width='1.6'/></svg>");
       background-repeat:no-repeat;background-position:right 15px center}
.radios{display:flex;flex-wrap:wrap;gap:9px}
.radio{display:flex;align-items:center;gap:7px;background:#fff;border:1px solid var(--line);
       border-radius:6px;padding:10px 15px;font-size:.95rem;color:var(--ink);cursor:pointer;margin:0;transition:border-color .15s}
.radio:hover{border-color:#cfc6b4}
.radio:focus-within{border-color:var(--accent)}
.radio input{appearance:auto;-webkit-appearance:auto;width:16px;height:16px;padding:0;margin:0;border:0;border-radius:0;background:none;accent-color:var(--accent)}

button{width:100%;margin-top:22px;padding:15px;background:var(--ink);color:#F6F2EA;
       border:none;border-radius:6px;font-size:1rem;font-weight:600;letter-spacing:.02em;cursor:pointer;
       font-family:inherit;transition:background .2s}
button:hover{background:var(--accent)}
button:disabled{opacity:.45;cursor:default}
button:disabled:hover{background:var(--ink)}
/* 個資告知同意 */
.consent{margin-top:20px}
.consent .notice{max-height:150px;overflow-y:auto;background:#faf7f1;border:1px solid var(--line);
  border-radius:8px;padding:14px 16px;font-size:.76rem;line-height:1.6;color:var(--muted)}
.consent .notice strong{display:block;color:var(--ink);font-size:.84rem;margin:0 0 6px;letter-spacing:.02em}
.consent .notice p{margin:5px 0}
.consent .notice b{color:#5f574a;font-weight:600}
.consent-check{display:flex;align-items:flex-start;gap:9px;margin-top:12px;font-size:.85rem;color:var(--ink);cursor:pointer;line-height:1.4}
.consent-check input{appearance:auto;-webkit-appearance:auto;width:17px;height:17px;padding:0;margin:1px 0 0;border:0;border-radius:0;background:none;accent-color:var(--accent);flex:0 0 auto;cursor:pointer}
.ts-widget{margin-top:18px}

.hint{font-size:.72rem;color:var(--muted);margin-top:18px;text-align:center;line-height:1.5}
.msg{display:none;margin-top:18px;padding:13px 15px;border-radius:6px;font-size:.9rem}
.msg.err{display:block;background:rgba(166,68,46,.08);border:1px solid var(--err);color:var(--err)}
.done{text-align:center;padding:14px 0}
.done h2{font-family:var(--serif);font-weight:500;color:var(--ink);margin:0 0 10px;font-size:1.5rem}
.done p{color:var(--muted);margin:5px 0}

/* 總覽頁 */
.cards{display:flex;flex-direction:column;gap:14px;margin-top:10px}
.card{position:relative;display:block;background:var(--surface);border:1px solid var(--line);border-radius:8px;
      padding:22px;text-decoration:none;color:var(--ink);overflow:hidden;
      transition:border-color .15s,transform .15s,box-shadow .15s}
.card:hover{border-color:var(--accent);transform:translateY(-1px);box-shadow:0 8px 24px rgba(35,33,28,.10)}
.card-shade{display:none}
.card-body{position:relative;z-index:1}
.card-tags{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:12px}
.card .tag{display:inline-block;font-size:.66rem;letter-spacing:.14em;text-transform:uppercase;color:var(--accent);
           border:1px solid var(--line);border-radius:2px;padding:3px 10px;margin:0}
.card .tag-deadline{background:var(--accent);color:#fff;border-color:transparent;text-transform:none;letter-spacing:.02em}
.card .tag-store{color:var(--muted);border-color:var(--line);text-transform:none;letter-spacing:.02em}
.card .tag-closed{background:#6b6258;color:#fff;border-color:transparent;text-transform:none;letter-spacing:.02em}
.card.closed{opacity:.7}
.card h2{font-family:var(--serif);font-weight:500;font-size:1.2rem;margin:0;line-height:1.3}
.card .cap{display:inline-block;margin-top:10px;font-size:.74rem;color:var(--muted)}

/* 有照片背景的卡片 */
.card.has-cover{min-height:212px;padding:0;border-color:transparent;display:flex;align-items:flex-end;
                background-size:cover;background-position:center}
.card.has-cover .card-shade{display:block;position:absolute;inset:0;z-index:0;
       background:linear-gradient(180deg,rgba(20,18,14,0) 28%,rgba(20,18,14,.80) 100%)}
.card.has-cover .card-body{padding:22px;width:100%}
.card.has-cover h2{color:#fff}
.card.has-cover .cap{color:rgba(255,255,255,.85)}
.card.has-cover .tag{color:#fff;border-color:rgba(255,255,255,.5);background:rgba(0,0,0,.22)}
.card.has-cover .tag-deadline{background:var(--accent);border-color:transparent;color:#fff}
.card.has-cover .tag-store{color:#fff;border-color:rgba(255,255,255,.5);background:rgba(0,0,0,.22)}

/* 報名已截止(表單頁)*/
.closed-box{background:var(--surface);border:1px solid var(--line);border-radius:8px;padding:30px;text-align:center;margin-top:4px}
.closed-box h2{font-family:var(--serif);font-weight:500;color:var(--muted);margin:0 0 8px;font-size:1.4rem}
.closed-box p{color:var(--muted);margin:0;line-height:1.6}
