
:root{
  --blue:#0b4f87;
  --blue-2:#126cae;
  --ink:#17324a;
  --muted:#6c7d8e;
  --line:#dfe7ee;
  --card:rgba(255,255,255,.94);
  --bg:#eef4f8;
  --ok:#17834b;
  --warn:#b66a00;
  --danger:#b73535;
  --shadow:0 10px 30px rgba(27,62,89,.11);
}
*{box-sizing:border-box}
html,body{margin:0;min-height:100%;font-family:"Microsoft JhengHei","PingFang TC",system-ui,sans-serif;color:var(--ink);background:var(--bg)}
body:before{
  content:"";position:fixed;inset:0;z-index:-2;
  background:
    linear-gradient(135deg,rgba(234,243,249,.74),rgba(245,248,250,.80)),
    var(--home-image, none);
  background-size:cover;background-position:center;
  background-attachment:fixed;
}
body:after{
  content:"";position:fixed;inset:0;z-index:-1;
  background:radial-gradient(circle at 85% 8%,rgba(18,108,174,.10),transparent 35%);
}
button,input,textarea{font:inherit}
button{cursor:pointer}
.boot{padding:48px;text-align:center;color:var(--muted)}
.shell{min-height:100vh}
.topbar{
  height:64px;display:flex;align-items:center;justify-content:space-between;
  padding:0 28px;background:rgba(255,255,255,.92);border-bottom:1px solid var(--line);
  backdrop-filter:blur(12px);position:sticky;top:0;z-index:20
}
.brand{font-size:21px;font-weight:800;letter-spacing:.04em;color:var(--blue)}
.userbox{display:flex;gap:10px;align-items:center;color:var(--muted);font-size:14px}
.avatar{width:34px;height:34px;border-radius:50%;object-fit:cover;background:#d7e5ef}
.container{max-width:1180px;margin:0 auto;padding:34px 24px 56px}
.hero{margin-bottom:24px}
.hero h1{font-size:34px;margin:0 0 8px;color:#123a5b}
.hero p{margin:0;color:var(--muted);line-height:1.7}
.grid{display:grid;grid-template-columns:repeat(4,1fr);gap:16px}
.card{
  background:var(--card);border:1px solid rgba(206,219,229,.9);border-radius:18px;
  padding:22px;box-shadow:var(--shadow);min-height:168px;display:flex;flex-direction:column
}
.card h3{margin:4px 0 8px;font-size:20px}
.card p{margin:0;color:var(--muted);line-height:1.55;font-size:14px}
.card .icon{font-size:30px}
.card .action{margin-top:auto;padding-top:18px}
.btn{
  border:0;border-radius:10px;padding:10px 14px;font-weight:700;
  background:var(--blue);color:white
}
.btn.secondary{background:#e8f1f7;color:var(--blue)}
.btn.ghost{background:white;color:var(--blue);border:1px solid #bfd1df}
.btn.danger{background:var(--danger)}
.btn:disabled{opacity:.45;cursor:not-allowed}
.section{
  margin-top:24px;background:var(--card);border:1px solid var(--line);border-radius:18px;
  box-shadow:var(--shadow);overflow:hidden
}
.section-head{display:flex;justify-content:space-between;gap:16px;align-items:center;padding:18px 22px;border-bottom:1px solid var(--line)}
.section-head h2{margin:0;font-size:20px}
.section-body{padding:20px 22px}
.toolbar{display:flex;flex-wrap:wrap;gap:10px;align-items:center}
.input,.textarea{
  width:100%;border:1px solid #c8d6e1;border-radius:10px;padding:11px 12px;background:white;color:var(--ink)
}
.textarea{min-height:92px;resize:vertical}
.form-grid{display:grid;grid-template-columns:1.3fr .8fr;gap:12px}
.form-grid .wide{grid-column:1/-1}
label{font-size:13px;font-weight:700;color:#496377;display:block;margin-bottom:6px}
.table-wrap{overflow:auto}
table{width:100%;border-collapse:collapse;min-width:760px}
th,td{padding:12px 10px;border-bottom:1px solid var(--line);text-align:left;vertical-align:top;font-size:14px}
th{color:#476075;background:#f7fafc;position:sticky;top:0}
.status{display:inline-flex;align-items:center;gap:6px;font-size:12px;font-weight:700;padding:4px 8px;border-radius:999px;background:#eaf6ef;color:var(--ok)}
.muted{color:var(--muted)}
.empty{padding:28px;text-align:center;color:var(--muted)}
.notice{padding:12px 14px;border-radius:10px;background:#edf6fb;color:#245777;margin-bottom:14px}
.notice.error{background:#fdeeee;color:#8a2f2f}
.modal-backdrop{position:fixed;inset:0;background:rgba(8,28,44,.45);display:flex;align-items:center;justify-content:center;padding:20px;z-index:50}
.modal{width:min(620px,100%);background:white;border-radius:18px;box-shadow:0 24px 70px rgba(0,0,0,.25);overflow:hidden}
.modal-head{padding:18px 22px;border-bottom:1px solid var(--line);font-weight:800}
.modal-body{padding:20px 22px}
.modal-foot{padding:16px 22px;border-top:1px solid var(--line);display:flex;justify-content:flex-end;gap:10px}
.hidden{display:none!important}
.small{font-size:12px}
@media(max-width:920px){.grid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:620px){
  .topbar{padding:0 16px}.brand{font-size:18px}
  .container{padding:24px 14px 40px}.hero h1{font-size:27px}
  .grid{grid-template-columns:1fr}
  .form-grid{grid-template-columns:1fr}.form-grid .wide{grid-column:auto}
  .card{min-height:145px}
}
