:root{--bg:#f3f6fb;--card:#fff;--line:#dfe6ee;--text:#203040;--muted:#6b7b8c;--brand:#1f7a5a;--brand2:#2f8f6d;--danger:#b42318}
*{box-sizing:border-box} body{margin:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI","Noto Sans TC",sans-serif;background:var(--bg);color:var(--text)}
a{text-decoration:none;color:inherit} .container{max-width:760px;margin:0 auto;padding:16px}.card{background:var(--card);border-radius:18px;padding:18px;box-shadow:0 10px 24px rgba(22,34,51,.08);margin-bottom:16px}.title{font-size:26px;font-weight:800;margin:0 0 8px}.subtitle{color:var(--muted);margin:0 0 12px}.header{display:flex;flex-direction:column;gap:6px;margin-bottom:14px}.welcome{font-size:16px;font-weight:700}.grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.tile{background:linear-gradient(180deg,#ffffff,#f8fbff);border:1px solid var(--line);border-radius:18px;padding:18px;min-height:110px;display:flex;flex-direction:column;justify-content:center;gap:6px}.tile strong{font-size:18px}.tile span{color:var(--muted);font-size:14px}.field{margin-bottom:14px}.field label{display:block;font-size:14px;font-weight:700;margin-bottom:8px}.field input,.field select,.field textarea{width:100%;padding:12px 14px;border:1px solid #cdd7e1;border-radius:14px;font-size:16px;background:#fff}.field textarea{min-height:100px;resize:vertical}.btn{width:100%;padding:13px 16px;border:none;border-radius:14px;font-size:16px;font-weight:800;background:var(--brand);color:#fff}.btn.secondary{background:#e9eef4;color:#203040}.btn-row{display:grid;grid-template-columns:1fr 1fr;gap:10px}.muted{color:var(--muted);font-size:13px;line-height:1.7}.message{padding:12px 14px;border-radius:14px;background:#eef7f2;color:#1f5e49;font-size:14px;margin-bottom:12px;display:none}.message.error{background:#fef0f0;color:#912018}.list{display:flex;flex-direction:column;gap:10px}.item{border:1px solid var(--line);border-radius:14px;padding:12px 14px;background:#fff}.item .top{display:flex;justify-content:space-between;gap:10px;align-items:flex-start}.tag{display:inline-block;padding:4px 10px;border-radius:999px;background:#eef7f2;color:#16533f;font-size:12px;font-weight:700}.tag.pending{background:#fff6e5;color:#9a6700}.tag.rejected{background:#fef0f0;color:#b42318}.password-wrap{position:relative}.password-wrap input{padding-right:48px}.eye{position:absolute;right:12px;top:50%;transform:translateY(-50%);background:none;border:none;font-size:18px;cursor:pointer}.small-actions{display:flex;justify-content:space-between;align-items:center;gap:8px;font-size:14px}.navlink{color:var(--brand2);font-weight:700}.radio-row,.check-row{display:flex;flex-wrap:wrap;gap:12px}.radio-row label,.check-row label{display:flex;align-items:center;gap:6px;font-size:15px}.topbar{display:flex;justify-content:space-between;align-items:center;margin-bottom:14px}.timebox{font-size:28px;font-weight:800;text-align:center;padding:12px 0}.center{text-align:center}@media (max-width:560px){.grid,.btn-row{grid-template-columns:1fr}.title{font-size:24px}}

.quick-row{display:flex;flex-wrap:wrap;gap:8px}
.quick-chip{border:1px solid var(--line);background:#fff;border-radius:999px;padding:8px 12px;font-size:14px;cursor:pointer}
.quick-chip.active{background:var(--brand);color:#fff;border-color:var(--brand)}
.hidden{display:none !important}
.task-thumb{display:block;width:100%;max-width:180px;border-radius:12px;border:1px solid var(--line);margin-top:8px}
.attach-row{display:flex;gap:10px;flex-wrap:wrap}
.attach-badge{font-size:13px;color:var(--muted)}
.section-title{font-size:18px;font-weight:800;margin:0 0 10px}
.audio-box{border:1px dashed var(--line);border-radius:12px;padding:10px 12px}
.task-admin-nav{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:12px}
.task-admin-nav a{font-size:14px}

.rec-meter{display:flex;align-items:flex-end;gap:6px;min-height:58px;margin:12px 0 8px}
.rec-bar{display:block;width:10px;border-radius:999px;background:#cbd8e5;height:20px;transition:height .12s ease, background-color .12s ease}
.rec-bar.live{background:#4da97f}
.task-audio-box audio{width:100%;display:block}
.audio-open-btn{display:block;margin-top:10px;text-align:center}
.complete-action-box{margin-top:6px}
@media (max-width:560px){
  .task-audio-box{display:block}
  .audio-open-btn{width:100%;margin-top:10px}
}


.help-box{border:1px solid var(--line);background:#f8fbff;border-radius:14px;padding:12px 14px;margin-bottom:14px}
.help-title{font-size:16px;font-weight:800;margin-bottom:6px}
.local-message{margin-top:10px;margin-bottom:0}
.supplement-box{border:1px solid var(--line);border-radius:16px;padding:14px;background:#fbfcfe;margin-bottom:14px}
.field-error{font-size:13px;color:var(--danger);margin-top:6px;line-height:1.5;min-height:18px}
.field.invalid input,.field.invalid select,.field.invalid textarea{border-color:var(--danger);background:#fff7f7}
.btn-row-clock .btn{background:var(--brand);color:#fff}
.btn-row-clock .btn.hidden{display:none}
.clock-item .clock-line{margin-top:6px;line-height:1.6}
.item-actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:10px}
.mini-btn{width:auto;padding:10px 16px;border-radius:12px}
.modify-box{margin-top:12px;padding-top:12px;border-top:1px dashed var(--line)}


.login-card{max-width:520px;margin:20px auto}
.login-header .title,.login-header .subtitle{text-align:center}
.remember-row{margin:6px 0 14px}
.remember-label{display:flex;align-items:center;gap:8px;font-size:15px;font-weight:700;white-space:nowrap}
.login-actions-stack{display:flex;flex-direction:column;gap:10px}
.login-actions-stack .btn,.login-actions-stack .btn-link{display:flex;align-items:center;justify-content:center;min-height:48px}
.btn-link{width:100%;padding:13px 16px;border:none;border-radius:14px;font-size:16px;font-weight:800;background:var(--brand);color:#fff}


/* login page fixes */
.login-actions-stack{display:flex;flex-direction:column;gap:12px;margin-top:12px}
.login-actions-stack .btn,.login-actions-stack .btn-link{display:flex;align-items:center;justify-content:center;width:100%;min-height:56px;box-sizing:border-box}
.btn-link{display:flex;align-items:center;justify-content:center}
.remember-row{margin:2px 0 10px}
.remember-label{display:inline-flex;align-items:center;gap:8px;font-size:15px;font-weight:700;white-space:nowrap}
.remember-label input{width:20px;height:20px;accent-color:var(--brand)}
.item-actions{display:flex;flex-wrap:wrap;gap:10px;margin-top:12px}
.mini-btn{width:auto;padding:10px 14px;font-size:15px}
.hidden{display:none !important}
.help-title{font-size:16px;font-weight:800;margin-bottom:8px}
.field-error{color:#b42318;font-size:13px;margin-top:6px}
.field.invalid input,.field.invalid select,.field.invalid textarea{border-color:#d92d20;background:#fff7f7}
@media (max-width:560px){
  .login-actions-stack .btn,.login-actions-stack .btn-link{min-height:54px}
}


/* parttime checkbox text fix */
.parttime-half-row{display:block}
.parttime-half-label{display:inline-flex;align-items:center;gap:10px;white-space:nowrap;flex-wrap:nowrap;font-size:16px;font-weight:700}
.parttime-half-label span{display:inline-block;white-space:nowrap;word-break:keep-all}
.parttime-half-label input{width:22px;height:22px;flex:0 0 auto}

/* routine staff page simplify */
#staffBlock .section-title{margin-bottom:12px}

/* register page fix */
.birth-select-row{display:grid;grid-template-columns:1.5fr 1fr 1fr;gap:10px}
@media (max-width:560px){.birth-select-row{grid-template-columns:1fr}}


.btn.btn-progress{position:relative;overflow:hidden;isolation:isolate}
.btn.btn-progress .btn-progress-fill{position:absolute;inset:0 auto 0 0;width:0%;background:linear-gradient(90deg,rgba(255,255,255,.18),rgba(255,255,255,.30));border-radius:inherit;transition:width .22s ease;z-index:0}
.btn.btn-progress .btn-progress-label{position:relative;z-index:1;display:inline-flex;align-items:center;justify-content:center;width:100%}
.btn.btn-progress.is-loading{cursor:progress;opacity:1}
.btn.btn-progress.is-success .btn-progress-fill{background:linear-gradient(90deg,rgba(255,255,255,.10),rgba(255,255,255,.24))}
.btn.btn-progress.is-error .btn-progress-fill{background:linear-gradient(90deg,rgba(255,255,255,.12),rgba(255,255,255,.20))}
.btn.btn-progress:disabled{opacity:1}


.page-return-wrap{margin-bottom:16px}
.page-return-btn{display:block;width:100%;padding:16px 18px;text-align:center;text-decoration:none;border-radius:16px;font-size:20px;font-weight:800}


/* admin-wide-20260530a: 管理端電腦版寬版閱讀 */
@media (min-width: 900px) {
  body.admin-wide-page {
    --admin-wide-max: 1760px;
  }
  body.admin-wide-page .container,
  body.admin-wide-page main,
  body.admin-wide-page .page,
  body.admin-wide-page .wrap,
  body.admin-wide-page .content,
  body.admin-wide-page .admin-page,
  body.admin-wide-page .admin-wrap,
  body.admin-wide-page .dashboard-wrap,
  body.admin-wide-page .hub-wrap {
    width: min(98vw, var(--admin-wide-max)) !important;
    max-width: var(--admin-wide-max) !important;
    margin-left: auto !important;
    margin-right: auto !important;
  }
  body.admin-wide-page .container,
  body.admin-wide-page main,
  body.admin-wide-page .page {
    padding-left: 18px !important;
    padding-right: 18px !important;
  }
  body.admin-wide-page .card,
  body.admin-wide-page .admin-card,
  body.admin-wide-page .section,
  body.admin-wide-page .panel,
  body.admin-wide-page .page-card,
  body.admin-wide-page .notify-card,
  body.admin-wide-page .summary-card {
    width: 100%;
  }
  body.admin-wide-page .grid:not(.keep-grid),
  body.admin-wide-page .tiles:not(.keep-grid),
  body.admin-wide-page .hub-grid:not(.keep-grid),
  body.admin-wide-page .card-grid:not(.keep-grid) {
    width: 100%;
  }
  body.admin-wide-page .table-wrap,
  body.admin-wide-page .table-container,
  body.admin-wide-page .scroll-table,
  body.admin-wide-page .simple-time-table-wrap,
  body.admin-wide-page .records-wrap {
    max-width: 100% !important;
    overflow-x: auto;
  }
  body.admin-wide-page table {
    width: 100%;
  }
  body.admin-wide-page .page-return-wrap,
  body.admin-wide-page .page-return-btn {
    width: 100%;
  }
}
@media (max-width: 899px) {
  body.admin-wide-page .container,
  body.admin-wide-page main,
  body.admin-wide-page .page {
    max-width: 760px;
  }
}


/* admin-final-20260530b: 管理端寬版與區塊一致化 */
@media (min-width: 900px) {
  body.admin-wide-page { --admin-wide-max: 1880px; }
  body.admin-wide-page > .container,
  body.admin-wide-page .container,
  body.admin-wide-page main,
  body.admin-wide-page .page,
  body.admin-wide-page .admin-page,
  body.admin-wide-page .admin-wrap,
  body.admin-wide-page .hub-wrap,
  body.admin-wide-page .content,
  body.admin-wide-page .wrap {
    width: calc(100vw - 32px) !important;
    max-width: var(--admin-wide-max) !important;
    margin-left: auto !important;
    margin-right: auto !important;
  }
  body.admin-wide-page > .container,
  body.admin-wide-page .container,
  body.admin-wide-page main,
  body.admin-wide-page .page {
    padding-left: 16px !important;
    padding-right: 16px !important;
  }
  body.admin-wide-page .card,
  body.admin-wide-page .subcard,
  body.admin-wide-page .panel,
  body.admin-wide-page .section,
  body.admin-wide-page .page-card,
  body.admin-wide-page .admin-card {
    width: 100% !important;
  }
  body.admin-wide-page .topbar {
    gap: 16px;
    align-items: flex-start;
  }
  body.admin-wide-page .topbar > div:first-child {
    min-width: 0;
  }
  body.admin-wide-page .grid,
  body.admin-wide-page .hub-grid,
  body.admin-wide-page .card-grid,
  body.admin-wide-page .tiles {
    max-width: 100% !important;
  }
  body.admin-wide-page .table-wrap,
  body.admin-wide-page .table-container,
  body.admin-wide-page .scroll-table,
  body.admin-wide-page .records-wrap,
  body.admin-wide-page .preview-shell,
  body.admin-wide-page .sheet-scale-wrap {
    max-width: 100% !important;
    overflow-x: auto;
  }
  body.admin-wide-page table { width: 100%; }
  body.admin-wide-page.admin-quote-page .container {
    width: calc(100vw - 28px) !important;
    max-width: 1880px !important;
  }
  body.admin-wide-page.admin-quote-page .hub-wrap {
    max-width: 100% !important;
  }
  body.admin-wide-page.admin-quote-page .layout,
  body.admin-wide-page.admin-quote-page .gift-layout {
    grid-template-columns: minmax(420px, 0.72fr) minmax(720px, 1.28fr) !important;
    gap: 20px !important;
  }
  body.admin-wide-page.admin-quote-page .quote-preview,
  body.admin-wide-page.admin-quote-page .preview-shell {
    min-width: 0;
  }
  body.admin-wide-page.admin-quote-page .hub-grid {
    grid-template-columns: repeat(3, minmax(240px, 1fr)) !important;
  }
}
@media (max-width: 1180px) {
  body.admin-wide-page.admin-quote-page .layout,
  body.admin-wide-page.admin-quote-page .gift-layout,
  body.admin-wide-page.admin-quote-page .hub-grid {
    grid-template-columns: 1fr !important;
  }
}
body.admin-wide-page:not(.admin-home-page) .topbar button[onclick*="logout"] {
  display: none !important;
}
body.admin-wide-page .page-return-btn {
  background: var(--brand, #1f7a5a) !important;
  color: #fff !important;
}
body.admin-wide-page .card > .section-title,
body.admin-wide-page .subcard > .section-title,
body.admin-wide-page h2.section-title {
  color: #18314a;
}
body.admin-wide-page .message,
body.admin-wide-page .compact-note,
body.admin-wide-page .hint-box,
body.admin-wide-page .help-box {
  border: 1px solid #dce8f2;
}
body.admin-wide-page .section-note {
  border-left: 5px solid #f59e0b;
}
body.admin-wide-page .policy-card,
body.admin-wide-page .status-card {
  border-left: 5px solid var(--brand, #1f7a5a);
}
@media (min-width: 900px) {
  body.admin-wide-page .btn-row,
  body.admin-wide-page .mini-actions,
  body.admin-wide-page .item-actions {
    align-items: center;
  }
  body.admin-wide-page .mini-actions .btn,
  body.admin-wide-page .item-actions .btn,
  body.admin-wide-page .small-actions .btn {
    width: auto;
  }
}


/* yuzu-unified-theme-20260714: 登入入口改為全通路營運中心風格 */
body.yz-login-page{
  min-height:100vh;
  background:
    radial-gradient(circle at 12% 12%,rgba(22,132,95,.24),transparent 28%),
    radial-gradient(circle at 88% 18%,rgba(255,255,255,.10),transparent 24%),
    linear-gradient(150deg,#0f2537 0%,#173247 52%,#23465d 100%);
  color:#17252f;
  padding:28px 0;
}
body.yz-login-page .container{max-width:560px;padding:18px}
body.yz-login-page .login-card{
  max-width:540px;
  margin:0 auto;
  padding:0 24px 24px;
  overflow:hidden;
  border:1px solid rgba(255,255,255,.28);
  border-radius:24px;
  background:#fff;
  box-shadow:0 24px 70px rgba(4,20,31,.28);
}
.yz-login-brand{
  margin:0 -24px 22px;
  padding:24px;
  display:flex;
  align-items:center;
  justify-content:center;
  gap:13px;
  color:#fff;
  background:linear-gradient(135deg,#0f2537,#173247);
  border-bottom:4px solid #16845f;
}
.yz-login-mark{
  width:48px;
  height:48px;
  border-radius:14px;
  display:grid;
  place-items:center;
  background:#fff;
  color:#16845f;
  font-size:24px;
  font-weight:900;
  box-shadow:0 8px 20px rgba(0,0,0,.15);
}
body.yz-login-page .login-header{margin:0}
body.yz-login-page .login-header .title{color:#fff;margin:0;font-size:28px;letter-spacing:.04em}
body.yz-login-page .field label{color:#435762}
body.yz-login-page .field input{
  border:1px solid #cfdbe1;
  border-radius:12px;
  background:#fff;
}
body.yz-login-page .field input:focus{
  outline:none;
  border-color:#61aa8f;
  box-shadow:0 0 0 3px rgba(22,132,95,.10);
}
body.yz-login-page .login-main-btn,
body.yz-login-page .btn-link{background:#16845f;color:#fff;border-radius:12px}
body.yz-login-page .login-main-btn:hover,
body.yz-login-page .btn-link:hover{background:#0f6b4d}
body.yz-login-page .btn.secondary{
  background:#f7faf9;
  color:#173247;
  border:1px solid #dbe4e9;
  border-radius:12px;
}
body.yz-login-page .external-entry-zone{border-top-color:#dbe4e9}
body.yz-login-page .external-entry-title{color:#697a85}
body.yz-login-page .auth-note{background:#e8f5ef;color:#315e4c;border:1px solid #c9e4d7}
@media(max-width:560px){
  body.yz-login-page{padding:10px 0}
  body.yz-login-page .container{padding:10px}
  body.yz-login-page .login-card{padding:0 16px 18px;border-radius:20px}
  .yz-login-brand{margin:0 -16px 18px;padding:20px 16px}
  .yz-login-mark{width:43px;height:43px;border-radius:12px;font-size:21px}
  body.yz-login-page .login-header .title{font-size:24px}
  body.yz-login-page .auth-sub-actions{grid-template-columns:repeat(3,minmax(0,1fr))!important}
}


body.yz-portal-page{background:linear-gradient(180deg,#f4f7fb 0%,#edf3f5 100%) fixed}
