* { box-sizing: border-box; }
body {
    margin: 0;
    font-family: "Microsoft JhengHei", "PingFang TC", "Heiti TC", sans-serif;
    background: linear-gradient(135deg, #1e3c72 0%, #2a5298 100%);
    color: #222;
    min-height: 100vh;
    display: flex;
    align-items: flex-start;
    justify-content: center;
    padding: 24px 12px;
}
.card {
    background: #fff;
    width: 100%;
    max-width: 560px;
    border-radius: 14px;
    box-shadow: 0 10px 30px rgba(0,0,0,.25);
    padding: 28px 26px;
    margin: auto;
}
.login-card { max-width: 400px; padding: 32px 28px; }
h1 {
    margin: 0 0 4px;
    font-size: 24px;
    color: #1e3c72;
    text-align: center;
}
h2 {
    margin: 22px 0 10px;
    font-size: 17px;
    color: #2a5298;
    border-left: 5px solid #2a5298;
    padding-left: 10px;
}
.sub { text-align: center; color: #889; margin: 0 0 24px; font-size: 14px; }
label {
    display: block;
    font-size: 14px;
    font-weight: 600;
    margin: 18px 0 6px;
    color: #334;
}
input[type=text], input[type=date], select {
    width: 100%;
    padding: 12px 14px;
    font-size: 16px;
    border: 1px solid #d0d7e3;
    border-radius: 10px;
    background: #f8f9fb;
    outline: none;
    transition: border-color .15s, background .15s, box-shadow .15s;
}
input[type=text]:focus, input[type=date]:focus, select:focus {
    border-color: #2a5298;
    background: #fff;
    box-shadow: 0 0 0 3px rgba(42,82,152,.12);
}
button[type=submit] {
    width: 100%;
    margin-top: 26px;
    padding: 14px;
    font-size: 17px;
    font-weight: 700;
    color: #fff;
    background: #2a5298;
    border: none;
    border-radius: 10px;
    cursor: pointer;
}
button[type=submit]:hover { background: #1e3c72; }
/* ===== 日期選擇器 ===== */
.date-field { position: relative; display: flex; gap: 8px; align-items: center; }
.date-field input[type=text] { flex: 1; padding-right: 12px; }
.cal-btn {
  flex: 0 0 44px !important;
  width: 44px !important; height: 44px !important;
  margin: 0 !important; padding: 0 !important;
  font-size: 20px !important;
  background: #fafbfc !important;
  border: 1px solid #ccd4e0 !important;
  border-radius: 8px !important;
  cursor: pointer !important;
  color: #334 !important;
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
}
.cal-btn:hover { background: #eef2f8 !important; }
/* ===== 日曆彈窗 ===== */
.cal-box {
  position: absolute; top: 52px; right: 0;
  z-index: 100; background: #fff;
  border: 1px solid #ccd4e0; border-radius: 10px;
  box-shadow: 0 4px 16px rgba(0,0,0,0.18);
  padding: 14px; width: 290px;
}
.cal-header {
  display: flex; justify-content: space-between; align-items: center;
  margin-bottom: 10px;
}
.cal-header button {
  flex: 0 0 34px !important;
  width: 34px !important; height: 34px !important;
  margin: 0 !important; padding: 0 !important;
  font-size: 18px !important; font-weight: 600 !important;
  background: #f0f4f8 !important;
  border: 1px solid #ccd4e0 !important;
  border-radius: 6px !important;
  cursor: pointer !important;
  color: #2a5298 !important;
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
}
.cal-header button:hover { background: #e0e8f0 !important; }
.cal-header span { font-size: 15px; font-weight: 600; color: #334; }
.cal-grid {
  display: grid !important;
  grid-template-columns: repeat(7, 1fr) !important;
  gap: 3px;
}
.cal-day, .cal-weekday {
  width: 100% !important; height: 34px !important;
  display: flex !important; align-items: center !important; justify-content: center !important;
  font-size: 13px !important; border-radius: 6px !important;
  cursor: pointer !important;
  margin: 0 !important; padding: 0 !important;
  background: none !important; border: none !important;
  color: #334 !important;
}
.cal-weekday { font-weight: 700 !important; color: #667 !important; cursor: default !important; font-size: 12px !important; }
.cal-day:hover { background: #eef2f8 !important; }
.cal-day.other-month { color: #b0b8c0 !important; }
.cal-day.today { background: #e0e8f0 !important; font-weight: 700 !important; }
.cal-day.selected { background: #2a5298 !important; color: #fff !important; font-weight: 700 !important; }
.err { color: #c62828; font-size: 14px; text-align: center; font-weight: 600; margin-bottom: 14px; }
table.info {
    width: 100%;
    border-collapse: collapse;
    margin: 14px 0;
}
table.info th, table.info td {
    border: 1px solid #e3e8ef;
    padding: 9px 10px;
    font-size: 14px;
    text-align: left;
}
table.info th { background: #eef3fb; width: 30%; color: #334; }
ol.choices { padding-left: 22px; line-height: 1.9; }
ol.choices li { font-size: 15px; }
.content {
    background: #f6f9ff;
    border: 1px solid #e3e8ef;
    border-radius: 8px;
    padding: 14px;
    font-size: 14px;
    line-height: 1.7;
    min-height: 20px;
}
.content-text { color: #222; }
.content-empty { color: #c62828; }
.notes { font-size: 13px; color: #666; line-height: 1.8; margin-top: 18px; }
.link {
    display: inline-block;
    margin-top: 18px;
    color: #2a5298;
    font-size: 14px;
    text-decoration: none;
}
.link:hover { text-decoration: underline; }
