﻿:root{--p950:#29113f;--p900:#381855;--p800:#4d2470;--p700:#663494;--p600:#7d4aaa;--p500:#9664bf;--p200:#ddc9eb;--p100:#f0e6f7;--p050:#faf7fc;--ink:#271e2d;--muted:#786d80;--line:#e3d7e9;--green:#267a4e;--green-bg:#e8f6ee;--red:#ac2d3b;--red-bg:#fff0f1;--amber:#9b6a00;--amber-bg:#fff7df;--blue:#2e5d9f;--white:#fff}*{box-sizing:border-box}body{margin:0;font-family:"Noto Sans TC","Microsoft JhengHei",Arial,sans-serif;background:#f7f4f9;color:var(--ink)}a{color:inherit}.admin-shell{min-height:100vh;display:grid;grid-template-columns:245px 1fr}.sidebar{background:linear-gradient(180deg,var(--p950),#3b1d58);color:#fff;padding:22px 15px;position:sticky;top:0;height:100vh}.side-brand{display:flex;align-items:center;gap:10px;padding:0 8px 22px;border-bottom:1px solid #ffffff22}.side-brand img{width:45px;height:45px;border-radius:13px;background:#fff;padding:4px}.side-brand strong{display:block}.side-brand small{opacity:.72}.side-user{margin:16px 5px;padding:12px;background:#ffffff12;border-radius:12px}.side-user small{display:block;opacity:.7}.nav-label{font-size:12px;opacity:.55;padding:10px 10px 5px}.side-nav a{display:flex;align-items:center;gap:10px;text-decoration:none;padding:11px 12px;margin:3px 0;border-radius:10px}.side-nav a:hover{background:#ffffff12}.pending-pill{margin-left:auto;background:#fff;color:var(--p800);padding:2px 7px;border-radius:20px;font-size:12px;font-weight:800}.admin-main{min-width:0}.admin-top{height:72px;background:#fff;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:0 28px;position:sticky;top:0;z-index:5}.admin-top h1{font-size:21px;margin:0}.admin-content{padding:26px;max-width:1450px}.grid-stats{display:grid;grid-template-columns:repeat(4,1fr);gap:16px}.stat{background:#fff;border:1px solid var(--line);border-radius:17px;padding:20px;box-shadow:0 8px 26px #4c2c6410}.stat .num{font-size:36px;font-weight:900;color:var(--p800)}.stat small{color:var(--muted)}.panel{background:#fff;border:1px solid var(--line);border-radius:17px;padding:20px;margin-top:18px;box-shadow:0 8px 26px #4c2c6410}.panel-head{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:14px}.panel h2,.panel h3{margin:0;color:var(--p900)}.category-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}.category-card{border:1px solid var(--line);border-radius:14px;padding:16px;text-decoration:none;background:linear-gradient(180deg,#fff,var(--p050))}.category-card:hover{border-color:var(--p500)}.category-card strong{color:var(--p800);font-size:18px}.category-card span{display:block;color:var(--muted);margin-top:5px}.btn{border:0;border-radius:10px;padding:10px 14px;font-weight:800;cursor:pointer;text-decoration:none;display:inline-block;font-size:14px}.btn.primary{background:var(--p700);color:#fff}.btn.light{background:var(--p100);color:var(--p800)}.btn.success{background:var(--green);color:#fff}.btn.danger{background:var(--red);color:#fff}.btn.ghost{background:#fff;border:1px solid var(--line);color:var(--p800)}.btn.small{padding:7px 10px;font-size:13px}.notice{border-radius:12px;padding:13px 16px;margin-bottom:16px}.notice.ok{background:var(--green-bg);color:var(--green)}.notice.err{background:var(--red-bg);color:var(--red)}.notice.warn{background:var(--amber-bg);color:var(--amber)}.tabs{display:flex;gap:7px;flex-wrap:wrap;margin-bottom:16px}.tabs a{text-decoration:none;padding:8px 12px;border:1px solid var(--line);background:#fff;border-radius:10px}.tabs a.active{background:var(--p700);color:#fff;border-color:var(--p700)}.table-wrap{overflow:auto;border:1px solid var(--line);border-radius:13px}table{width:100%;border-collapse:collapse;min-width:950px}th,td{padding:12px 11px;text-align:left;border-bottom:1px solid var(--line);vertical-align:top}th{background:#f4eef8;color:var(--p900);font-size:13px;position:sticky;top:0}tr:last-child td{border-bottom:0}.title-cell strong{display:block}.muted{color:var(--muted);font-size:13px}.badge{display:inline-block;border-radius:999px;padding:5px 9px;font-weight:800;font-size:12px}.badge.pending{background:var(--amber-bg);color:var(--amber)}.badge.hold{background:#eef3ff;color:var(--blue)}.badge.live{background:var(--green-bg);color:var(--green)}.review-box{min-width:205px}.review-options{display:flex;gap:8px;flex-wrap:wrap}.review-options label{display:flex;align-items:center;gap:4px;font-size:13px;padding:5px 7px;border:1px solid var(--line);border-radius:8px;cursor:pointer}.review-note{width:100%;margin-top:6px;padding:7px;border:1px solid var(--line);border-radius:8px}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px}.field{display:flex;flex-direction:column;gap:6px}.field.full{grid-column:1/-1}.field label{font-weight:800;color:var(--p900)}input[type=text],input[type=date],input[type=password],select,textarea,input[type=file]{width:100%;padding:11px;border:1px solid #d7c9df;border-radius:10px;background:#fff;font:inherit}textarea{min-height:115px;resize:vertical}.help{font-size:13px;color:var(--muted)}.upload-zone{border:2px dashed #c8acd9;background:var(--p050);border-radius:15px;padding:20px}.review-footer{position:sticky;bottom:12px;background:#fff;border:1px solid var(--line);box-shadow:0 9px 30px #32184833;border-radius:14px;padding:14px;margin-top:14px;display:flex;justify-content:space-between;align-items:center;gap:12px}.login-page{min-height:100vh;display:grid;grid-template-columns:1.1fr .9fr}.login-photo{background:linear-gradient(90deg,#2a123fcc,#57307aaa),url('../images/campus_5.webp') center/cover;display:flex;align-items:flex-end;color:#fff;padding:50px}.login-photo h1{font-size:48px;margin:0}.login-panel{display:flex;align-items:center;justify-content:center;padding:35px}.login-card{width:min(440px,100%);background:#fff;border:1px solid var(--line);border-radius:22px;padding:30px;box-shadow:0 18px 60px #36184d1f}.login-logo{width:74px;height:74px;object-fit:contain}.detail-grid{display:grid;grid-template-columns:1.3fr .7fr;gap:18px}.file-list{display:grid;gap:8px}.file-row{border:1px solid var(--line);border-radius:10px;padding:12px;display:flex;justify-content:space-between;gap:10px}.system-ok{color:var(--green);font-weight:800}.system-bad{color:var(--red);font-weight:800}@media(max-width:1050px){.admin-shell{grid-template-columns:1fr}.sidebar{position:relative;height:auto}.grid-stats{grid-template-columns:1fr 1fr}.category-grid{grid-template-columns:1fr 1fr}.side-nav{display:flex;flex-wrap:wrap}.detail-grid{grid-template-columns:1fr}}@media(max-width:700px){.admin-content{padding:14px}.admin-top{padding:0 14px}.grid-stats,.category-grid,.form-grid{grid-template-columns:1fr}.login-page{grid-template-columns:1fr}.login-photo{display:none}.review-footer{align-items:stretch;flex-direction:column}}
/* V2.9 sidebar visibility fix: keep bottom actions visible while allowing menu scrolling */
.sidebar{
  display:flex;
  flex-direction:column;
  overflow:hidden;
}
.side-nav{
  flex:1 1 auto;
  min-height:0;
  display:flex;
  flex-direction:column;
}
.side-nav-scroll{
  flex:1 1 auto;
  min-height:0;
  overflow-y:auto;
  overflow-x:hidden;
  padding-right:4px;
  scrollbar-width:thin;
}
.side-nav-bottom{
  flex:0 0 auto;
  margin-top:10px;
  padding-top:8px;
  border-top:1px solid rgba(255,255,255,.12);
  background:linear-gradient(180deg,rgba(41,17,63,0),rgba(41,17,63,.25));
}
.side-nav-bottom .nav-label{
  padding-top:4px;
}
.side-nav-bottom a{
  background:rgba(255,255,255,.05);
}
.side-nav-bottom .logout-link{
  background:rgba(255,255,255,.10);
  font-weight:800;
}
.side-nav-bottom .logout-link:hover{
  background:rgba(255,255,255,.18);
}

@media(max-width:1050px){
  .sidebar{
    display:block;
    overflow:visible;
  }
  .side-nav{
    display:block;
  }
  .side-nav-scroll{
    overflow:visible;
    padding-right:0;
  }
  .side-nav-bottom{
    margin-top:8px;
  }
}

/* V2.10 persistent sidebar bottom actions (inline copy also exists in _header.asp to bypass cache) */
@media (min-width:1051px){
.sidebar{height:100vh;height:100dvh;min-height:0;overflow:hidden;display:flex;flex-direction:column}
.side-nav{position:relative;flex:1 1 auto;min-height:0;overflow:hidden;display:block;padding-bottom:126px}
.side-nav-scroll{height:100%;min-height:0;overflow-y:auto;overflow-x:hidden;padding-right:4px}
.side-nav-bottom{position:absolute;left:0;right:0;bottom:0;height:118px;display:block;margin:0;padding:7px 0 0;border-top:1px solid rgba(255,255,255,.16);background:#35174f;z-index:30}
.side-nav-bottom .nav-label{padding:0 10px 3px}
.side-nav-bottom a{display:flex;min-height:38px;margin:2px 0;padding:8px 12px;visibility:visible;opacity:1}
.side-nav-bottom .logout-link{background:rgba(255,255,255,.14);font-weight:900}
}


/* V2.11 組織架構垂直樹狀編輯器 */
.org-editor-toolbar,.org-submit-bar{display:flex;align-items:center;justify-content:space-between;gap:16px;margin:22px 0 14px}.org-submit-bar{margin-top:22px;padding-top:18px;border-top:1px solid #e7dff0}.org-editor-tree{border:1px solid #e0d6ea;border-radius:18px;background:#fbf9fd;padding:22px;overflow:auto}.org-edit-node{position:relative;margin:0 0 12px 0}.org-edit-card{display:flex;align-items:center;gap:12px;border:1px solid #d9cbe6;border-left:5px solid #6f36a0;border-radius:14px;background:#fff;padding:13px 14px;box-shadow:0 4px 15px #3f1b5a0b}.org-edit-grip{font-size:22px;color:#7747a1;font-weight:900}.org-edit-fields{display:grid;grid-template-columns:160px 220px minmax(220px,1fr);gap:10px;flex:1}.org-edit-fields label{font-size:12px;font-weight:700;color:#6a5d72}.org-edit-fields input{width:100%;margin-top:5px}.org-edit-actions{display:flex;gap:7px;flex-wrap:wrap}.org-edit-children{position:relative;margin-left:34px;padding-left:28px;padding-top:10px;border-left:2px solid #cbb6dc}.org-edit-children>.org-edit-node:before{content:"";position:absolute;left:-28px;top:28px;width:28px;border-top:2px solid #cbb6dc}.org-admin-current .org-public-wrap{box-shadow:none;border:0;padding:0}.org-admin-current .org-tree{min-width:640px}.org-review-panel{grid-column:1/-1}.org-review-panel .org-tree{min-width:680px;overflow:auto;padding:10px 0 22px}.org-review-panel .org-tree-branch{position:relative;display:flex;flex-direction:column;align-items:center}.org-review-panel .org-tree-card,.org-admin-current .org-tree-card{min-width:170px;text-align:center;background:#fff;border:2px solid #d8c5e7;border-radius:14px;padding:12px 15px}.org-review-panel .org-tree-role,.org-admin-current .org-tree-role{font-weight:900;color:#673399}.org-review-panel .org-tree-name,.org-admin-current .org-tree-name{font-size:19px;font-weight:800}.org-review-panel .org-tree-note,.org-admin-current .org-tree-note{font-size:12px;color:#786d80}.org-review-panel .org-tree-children,.org-admin-current .org-tree-children{position:relative;display:flex;gap:18px;justify-content:center;padding-top:30px}.org-review-panel .org-tree-children:before,.org-admin-current .org-tree-children:before{content:"";position:absolute;top:0;left:50%;height:18px;border-left:2px solid #bda4cf}.org-review-panel .org-tree-children>.org-tree-branch:before,.org-admin-current .org-tree-children>.org-tree-branch:before{content:"";position:absolute;top:-12px;left:50%;height:12px;border-left:2px solid #bda4cf}
@media(max-width:1000px){.org-edit-fields{grid-template-columns:1fr}.org-edit-card{align-items:flex-start;flex-direction:column}.org-edit-actions{width:100%}.org-submit-bar,.org-editor-toolbar{align-items:flex-start;flex-direction:column}}

/* ===== V2.15 會長的話專用後台 ===== */
.chair-admin-panel .chair-body-input{min-height:320px;line-height:1.8}.chair-submit-note{display:flex;align-items:center;justify-content:space-between;gap:18px;margin-top:22px;padding:17px 18px;border:1px solid #dfd1e8;border-radius:14px;background:linear-gradient(135deg,#faf6fc,#fff)}.chair-current-preview{overflow:hidden}.chair-current-preview .chair-message-card{border:1px solid #e2d4e9;border-radius:20px;background:linear-gradient(145deg,#fffdf8,#f7effa);padding:28px}.chair-current-preview .chair-message-inner{max-width:820px;margin:auto}.chair-current-preview .chair-message-kicker{font-size:11px;letter-spacing:.18em;color:#7b45ad;font-weight:900}.chair-current-preview .chair-message-card h3{font-family:"Noto Serif TC","PMingLiU",serif;color:#351553;font-size:30px;margin:6px 0}.chair-current-preview blockquote{border-left:4px solid #c5a25a;margin:20px 0;padding:12px 16px;background:#fff;color:#57445e}.chair-current-preview .chair-message-body{white-space:normal;font-family:"Noto Serif TC","PMingLiU",serif;line-height:1.95;color:#413644}.chair-current-preview .chair-message-signature{text-align:right;margin-top:22px;padding-top:15px;border-top:1px solid #e3d7e9}.chair-current-preview .chair-message-signature span,.chair-current-preview .chair-message-signature strong,.chair-current-preview .chair-message-signature small{display:block}.chair-current-preview .chair-message-signature strong{color:#673198;font-size:21px}.chair-review-meta{display:flex;gap:12px;flex-wrap:wrap;margin:18px 0;padding:12px 14px;background:#f7f2fa;border-radius:12px}.chair-review-meta span{font-size:13px;color:#5e5266}.chair-review-panel{grid-column:1/-1}.chair-review-preview{position:relative;overflow:hidden;margin-top:14px;padding:30px 34px;border:1px solid #ddcce7;border-radius:18px;background:radial-gradient(circle at 88% 12%,#7d4aaa18,transparent 28%),linear-gradient(145deg,#fffdf8,#f6eef9)}.chair-review-preview:before{content:"“";position:absolute;left:15px;top:-35px;font-family:Georgia,serif;font-size:120px;color:#6731980b}.chair-review-kicker{font-size:11px;letter-spacing:.18em;color:#7b45ad;font-weight:900}.chair-review-preview h2{font-family:"Noto Serif TC","PMingLiU",serif;font-size:30px;margin:6px 0 12px}.chair-review-preview blockquote{border-left:4px solid #c5a25a;background:#ffffffb8;padding:12px 16px;margin:18px 0}.chair-review-body{white-space:pre-wrap;font-family:"Noto Serif TC","PMingLiU",serif;line-height:1.95}.chair-review-sign{text-align:right;margin-top:22px}.chair-review-sign span,.chair-review-sign strong{display:block}.chair-review-sign strong{font-size:22px;color:#673198}@media(max-width:700px){.chair-submit-note{align-items:stretch;flex-direction:column}.chair-submit-note .btn{width:100%;text-align:center}}
.grid-stats{grid-template-columns:repeat(auto-fit,minmax(200px,1fr))}


/* ===== V2.16 關於家長會專用管理 ===== */
.nav-sub-label{margin-top:8px!important;padding-top:8px!important;border-top:1px solid rgba(255,255,255,.08)}.about-admin-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.about-admin-special .upload-zone{background:linear-gradient(135deg,#faf7fd,#fff)}.special-submit-row{display:flex;gap:10px;margin-top:20px}.special-upload-progress{display:none;margin-top:18px;padding:16px;border:1px solid #ded7ef;border-radius:12px;background:#faf8ff}.special-upload-progress.show{display:block}.progress-track{height:12px;background:#e9e5f3;border-radius:99px;overflow:hidden;margin:10px 0}.progress-bar{height:100%;width:0;background:#7452a8;transition:width .15s}.upload-status{white-space:pre-wrap;line-height:1.7}.file-preview{margin-top:8px;font-size:14px}.file-preview div{padding:4px 0;border-bottom:1px dashed #ddd}.admin-generated-preview{overflow:auto;max-height:780px;padding:4px}.admin-generated-preview .officer-card-grid,.admin-generated-preview .past-president-grid{display:grid;grid-template-columns:repeat(2,minmax(280px,1fr));gap:14px}.admin-generated-preview .officer-person-card,.admin-generated-preview .past-president-card{border:1px solid #e1d5e8;border-radius:14px;overflow:hidden;background:#fff}.admin-generated-preview .officer-person-card{display:grid;grid-template-columns:120px 1fr}.admin-generated-preview .officer-photo,.admin-generated-preview .past-photo{background:#eee4f4;min-height:170px}.admin-generated-preview img{width:100%;height:100%;object-fit:cover}.admin-generated-preview .officer-info,.admin-generated-preview .past-info{padding:14px}.admin-generated-preview .officer-role,.admin-generated-preview .past-year{font-size:12px;font-weight:900;color:#673399}.admin-generated-preview .officer-info h3,.admin-generated-preview .past-info h3{margin:5px 0 8px}.admin-generated-preview .about-pdf-frame{width:100%;height:500px;border:1px solid #ddd}.review-person-card{display:grid;grid-template-columns:220px 1fr;gap:22px;margin-top:14px}.review-person-photo{min-height:280px;background:#eee5f3;border-radius:15px;overflow:hidden}.review-person-photo img{width:100%;height:100%;object-fit:cover}.review-person-card h2{margin:8px 0 16px}.review-person-card h4{margin:16px 0 4px;color:#673399}.review-person-card p{line-height:1.7}.review-person-card ol{padding-left:22px;line-height:1.8}.review-pdf-frame{width:100%;height:650px;border:1px solid #ddd;border-radius:12px;margin-top:12px;background:#f3f3f3}.pdf-review-actions{display:flex;gap:8px;margin:10px 0}.special-review-panel{grid-column:1/-1}
@media(max-width:900px){.about-admin-grid{grid-template-columns:1fr 1fr}.review-person-card{grid-template-columns:160px 1fr}.review-pdf-frame{height:520px}}
@media(max-width:650px){.about-admin-grid{grid-template-columns:1fr}.special-submit-row{flex-direction:column}.review-person-card{grid-template-columns:1fr}.review-person-photo{height:320px}.review-pdf-frame{height:430px}.admin-generated-preview .officer-card-grid,.admin-generated-preview .past-president-grid{grid-template-columns:1fr}}

/* ===== V2.21 全站選單內容管理 ===== */
.menu-admin-hero{display:flex;align-items:center;justify-content:space-between;gap:20px;background:linear-gradient(135deg,#fff,#f7f0fb)}.menu-admin-hero h2{margin:3px 0 7px}.menu-admin-hero p{margin:0;max-width:850px;line-height:1.7}.eyebrow-admin{font-size:11px;font-weight:900;letter-spacing:.16em;color:#7440a0}.menu-admin-legend{display:flex;gap:10px;align-items:center;flex-wrap:wrap;padding:12px 14px;border-radius:12px;background:#f7f2fa;color:#654c73}.menu-admin-legend span{font-weight:800}.menu-admin-legend b{color:#a58aae}.menu-admin-group>.panel-head{border-bottom:1px solid #eadff0;padding-bottom:12px;margin-bottom:15px}.menu-admin-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}.menu-admin-card{border:1px solid #e4d7eb;border-radius:16px;padding:16px;background:#fff;display:flex;flex-direction:column;gap:13px}.menu-admin-card-head{display:flex;align-items:center;gap:11px}.menu-admin-icon{width:42px;height:42px;display:grid;place-items:center;border-radius:12px;background:#f1e6f7;font-size:21px}.menu-admin-card-head div{display:grid;gap:2px}.menu-admin-card-head small{color:#8d7c96}.menu-admin-card-head strong{font-size:17px;color:#3c1c55}.menu-admin-status{display:flex;gap:8px;flex-wrap:wrap}.menu-admin-status span{padding:5px 9px;border-radius:999px;font-size:12px}.menu-admin-status .pending{background:#fff0d9;color:#885b12}.menu-admin-status .published{background:#eaf6ef;color:#286a47}.menu-admin-actions{display:flex;gap:7px;flex-wrap:wrap;margin-top:auto}.content-route{display:flex;gap:10px;align-items:center;flex-wrap:wrap;padding:12px 14px;margin-bottom:16px;background:#f8f4fa;border:1px solid #e6dcec;border-radius:12px}.content-route>a{margin-left:auto}.review-filter-bar{display:flex;gap:12px;align-items:center;flex-wrap:wrap;margin:14px 0 18px;padding:12px;border:1px solid #e7ddec;background:#fbf9fc;border-radius:12px}.review-filter-bar form{flex:1;min-width:260px}.review-filter-bar label{display:flex;gap:10px;align-items:center}.review-filter-bar select{min-width:260px;max-width:100%;padding:8px 10px;border:1px solid #dccfe4;border-radius:9px;background:#fff}@media(max-width:1100px){.menu-admin-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:700px){.menu-admin-grid{grid-template-columns:1fr}.menu-admin-hero{align-items:flex-start;flex-direction:column}.review-filter-bar label{align-items:flex-start;flex-direction:column}.review-filter-bar select{width:100%;min-width:0}}
