/* ── Reset ────────────────────────────────────────────────────── */
*{margin:0;padding:0;box-sizing:border-box;}
html,body{height:100%;overflow:hidden;}
body{font-family:-apple-system,BlinkMacSystemFont,'Pretendard','Segoe UI',sans-serif;color:#fff;}

/* ── Background ───────────────────────────────────────────────── */
#bg{position:fixed;inset:0;z-index:0;background:#1a2a4a;}
#bg-img{position:absolute;inset:0;background-size:cover;background-position:center;transition:opacity 1.4s;opacity:0;}
#bg-img.on{opacity:1;}
#bg-ov{position:absolute;inset:0;background:linear-gradient(135deg,rgba(8,15,40,.65),rgba(5,25,55,.5));}
#bg-credit{position:fixed;bottom:.75rem;right:.875rem;z-index:5;font-size:.68rem;color:rgba(255,255,255,.28);}
#bg-credit a{color:rgba(255,255,255,.35);text-decoration:none;}

/* ── Glass ────────────────────────────────────────────────────── */
.glass{background:rgba(255,255,255,.12);backdrop-filter:blur(22px);-webkit-backdrop-filter:blur(22px);border:1px solid rgba(255,255,255,.25);}
.glass-sm{background:rgba(255,255,255,.09);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);border:1px solid rgba(255,255,255,.18);}
.glass-dark{background:rgba(8,18,48,.5);backdrop-filter:blur(24px);-webkit-backdrop-filter:blur(24px);border:1px solid rgba(255,255,255,.12);}

/* ── Scrollbar ────────────────────────────────────────────────── */
::-webkit-scrollbar{width:3px;}
::-webkit-scrollbar-thumb{background:rgba(255,255,255,.18);border-radius:3px;}

/* ══════════════════════════════════════════════
   LOGO (흰배경 처리)
══════════════════════════════════════════════ */
.logo-wrap{background:#fff;border-radius:10px;padding:5px 10px;display:inline-flex;align-items:center;justify-content:center;}
.logo-wrap img{height:32px;width:auto;display:block;}

/* ══════════════════════════════════════════════
   LOGIN
══════════════════════════════════════════════ */
#page-login{position:relative;z-index:10;min-height:100vh;display:flex;align-items:center;justify-content:center;padding:1.5rem;overflow-y:auto;}
.login-box{width:100%;max-width:420px;border-radius:22px;padding:2.25rem;}

.login-header{text-align:center;margin-bottom:2rem;}
.login-logo-area{margin-bottom:1rem;}
.login-title{font-size:.9rem;color:rgba(255,255,255,.5);margin-top:.5rem;}

.form-group{margin-bottom:.875rem;}
.form-label{display:block;font-size:.68rem;font-weight:600;text-transform:uppercase;letter-spacing:.07em;color:rgba(255,255,255,.45);margin-bottom:.4rem;}
.form-input{width:100%;padding:.725rem .9rem;background:rgba(255,255,255,.08);border:1px solid rgba(255,255,255,.16);border-radius:9px;color:#fff;font-size:.9rem;outline:none;transition:border-color .18s,background .18s;}
.form-input::placeholder{color:rgba(255,255,255,.28);}
.form-input:focus{border-color:rgba(255,255,255,.45);background:rgba(255,255,255,.12);}

.btn-primary{width:100%;padding:.775rem;border:none;border-radius:9px;background:linear-gradient(135deg,#5ba3f5,#2563eb);color:#fff;font-size:.9rem;font-weight:600;cursor:pointer;display:flex;align-items:center;justify-content:center;gap:.5rem;margin-top:1.125rem;box-shadow:0 4px 18px rgba(37,99,235,.4);transition:opacity .18s,transform .12s;}
.btn-primary:hover{opacity:.9;transform:translateY(-1px);}
.btn-primary:disabled{opacity:.55;cursor:not-allowed;transform:none;}

#login-error{display:none;margin-bottom:.875rem;padding:.65rem .875rem;background:rgba(239,68,68,.16);border:1px solid rgba(239,68,68,.3);border-radius:7px;font-size:.83rem;color:#fca5a5;}
.login-hint{text-align:center;font-size:.75rem;color:rgba(255,255,255,.32);margin-top:1.25rem;padding-top:1.125rem;border-top:1px solid rgba(255,255,255,.09);}
.login-divider{display:flex;align-items:center;gap:.75rem;margin:.875rem 0 .625rem;color:rgba(255,255,255,.3);font-size:.78rem;}
.login-divider::before,.login-divider::after{content:'';flex:1;height:1px;background:rgba(255,255,255,.12);}
.btn-google{width:100%;padding:.7rem;border:1px solid rgba(255,255,255,.25);border-radius:9px;background:rgba(255,255,255,.92);color:#3c4043;font-size:.88rem;font-weight:600;cursor:pointer;display:flex;align-items:center;justify-content:center;gap:.6rem;transition:background .18s,box-shadow .18s;box-shadow:0 2px 8px rgba(0,0,0,.12);}
.btn-google:hover{background:#fff;box-shadow:0 4px 14px rgba(0,0,0,.18);}

@keyframes spin{to{transform:rotate(360deg)}}
.spinner{width:16px;height:16px;animation:spin .75s linear infinite;display:none;}

/* ══════════════════════════════════════════════
   DASHBOARD LAYOUT
══════════════════════════════════════════════ */
#page-dashboard{display:none;position:relative;z-index:10;height:100vh;}
.layout{display:flex;height:100vh;overflow:hidden;}

/* ── Overlay (mobile) ──────────────────────────────────────────── */
#sb-overlay{display:none;position:fixed;inset:0;z-index:39;background:rgba(0,0,0,.45);backdrop-filter:blur(2px);}

/* ── Sidebar ──────────────────────────────────────────────────── */
.sidebar{
  width:256px;flex-shrink:0;height:100vh;
  display:flex;flex-direction:column;
  border-right:1px solid rgba(255,255,255,.1);
  background:rgba(6,14,40,.58);
  backdrop-filter:blur(26px);-webkit-backdrop-filter:blur(26px);
  transition:transform .28s cubic-bezier(.4,0,.2,1);
  z-index:40;
}

.sb-header{
  padding:.75rem 1rem;
  border-bottom:1px solid rgba(255,255,255,.08);
  display:flex;align-items:center;justify-content:space-between;gap:.5rem;
  flex-shrink:0;
}
.sb-logo-area{flex:1;overflow:hidden;display:flex;align-items:center;}
.sb-logo-area img{
  width:80%;height:44px;
  display:block;object-fit:fill;
  filter:brightness(0) invert(1);
  opacity:.92;
}
.sb-close{display:none;background:none;border:none;cursor:pointer;color:rgba(255,255,255,.5);padding:.25rem;border-radius:5px;transition:color .15s;flex-shrink:0;}
.sb-close:hover{color:#fff;}

.sb-nav{flex:1;padding:.625rem .5rem;overflow-y:auto;}

/* ── Accordion Group ───────────────────────────────────────────── */
.acc-group{margin-bottom:2px;}
.acc-head{
  display:flex;align-items:center;justify-content:space-between;
  padding:.5rem .625rem;border-radius:8px;
  font-size:.68rem;font-weight:700;text-transform:uppercase;letter-spacing:.08em;
  color:rgba(255,255,255,.32);cursor:pointer;
  transition:color .15s,background .15s;user-select:none;
}
.acc-head:hover{color:rgba(255,255,255,.6);background:rgba(255,255,255,.05);}
.acc-head.has-active{color:rgba(255,255,255,.6);}
.acc-arrow{width:14px;height:14px;transition:transform .22s;flex-shrink:0;}
.acc-arrow path{stroke:currentColor;}
.acc-body{overflow:hidden;transition:max-height .28s cubic-bezier(.4,0,.2,1);max-height:0;}
.acc-body.open{max-height:600px;}

.nav-item{
  display:flex;align-items:center;gap:.65rem;
  padding:.525rem .75rem;border-radius:8px;
  font-size:.83rem;font-weight:500;color:rgba(255,255,255,.55);
  cursor:pointer;transition:all .14s;margin-bottom:1px;
  border:1px solid transparent;
}
.nav-item:hover{color:#fff;background:rgba(255,255,255,.09);}
.nav-item.active{color:#fff;font-weight:600;background:rgba(79,156,249,.22);border-color:rgba(79,156,249,.38);}
.nav-item svg{width:16px;height:16px;flex-shrink:0;opacity:.75;}
.nav-item.active svg{opacity:1;}

/* ── Sidebar Footer ────────────────────────────────────────────── */
.sb-footer{padding:.625rem .75rem;border-top:1px solid rgba(255,255,255,.07);flex-shrink:0;}
.user-card{display:flex;align-items:center;gap:.625rem;padding:.375rem .5rem;border-radius:8px;}
.u-avatar{width:30px;height:30px;border-radius:50%;background:linear-gradient(135deg,#5ba3f5,#7c3aed);display:flex;align-items:center;justify-content:center;font-size:.8rem;font-weight:700;flex-shrink:0;}
.u-info{flex:1;overflow:hidden;}
.u-name{font-size:.82rem;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.u-role{display:inline-block;font-size:.63rem;font-weight:600;padding:1px 5px;border-radius:4px;margin-top:2px;}
.r-admin{background:rgba(239,68,68,.25);color:#fca5a5;border:1px solid rgba(239,68,68,.3);}
.r-teacher{background:rgba(79,156,249,.25);color:#93c5fd;border:1px solid rgba(79,156,249,.3);}
.r-student{background:rgba(16,185,129,.25);color:#6ee7b7;border:1px solid rgba(16,185,129,.3);}
.r-parent{background:rgba(245,158,11,.25);color:#fcd34d;border:1px solid rgba(245,158,11,.3);}
.btn-logout{background:none;border:none;cursor:pointer;color:rgba(255,255,255,.3);padding:.25rem;border-radius:4px;flex-shrink:0;transition:color .15s;}
.btn-logout:hover{color:rgba(239,68,68,.8);}

/* ── Main ─────────────────────────────────────────────────────── */
.main{flex:1;display:flex;flex-direction:column;overflow:hidden;min-width:0;}

.topbar{
  padding:.75rem 1.25rem;
  border-bottom:1px solid rgba(255,255,255,.09);
  background:rgba(6,14,40,.38);
  backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);
  display:flex;align-items:center;justify-content:space-between;
  flex-shrink:0;gap:1rem;
}
.topbar-left{display:flex;align-items:center;gap:.875rem;min-width:0;}
.btn-hamburger{display:none;background:none;border:none;cursor:pointer;color:rgba(255,255,255,.7);padding:.25rem;border-radius:6px;flex-shrink:0;transition:color .15s;}
.btn-hamburger:hover{color:#fff;}
.topbar-title{font-size:1rem;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.topbar-sub{font-size:.72rem;color:rgba(255,255,255,.4);margin-top:1px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.topbar-right{display:flex;align-items:center;gap:.875rem;flex-shrink:0;}
.topbar-date{font-size:.78rem;color:rgba(255,255,255,.36);}
.btn-bell{position:relative;background:none;border:none;cursor:pointer;color:rgba(255,255,255,.45);transition:color .15s;}
.btn-bell:hover{color:#fff;}
.bell-dot{position:absolute;top:-2px;right:-2px;width:7px;height:7px;background:#ef4444;border-radius:50%;}

.content{flex:1;overflow-y:auto;padding:1.25rem;}

/* ── Dashboard ────────────────────────────────────────────────── */
.welcome-greet{font-size:1.3rem;font-weight:700;letter-spacing:-.02em;}
.welcome-sub{font-size:.82rem;color:rgba(255,255,255,.45);margin-top:.25rem;margin-bottom:1.25rem;}

.stats-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:.875rem;margin-bottom:1.25rem;}
.stat-card{border-radius:13px;padding:1.125rem;}
.stat-icon{width:40px;height:40px;border-radius:10px;display:flex;align-items:center;justify-content:center;margin-bottom:.75rem;}
.stat-icon svg{width:20px;height:20px;}
.stat-label{font-size:.72rem;color:rgba(255,255,255,.48);font-weight:500;}
.stat-value{font-size:1.65rem;font-weight:700;margin-top:.2rem;letter-spacing:-.03em;}
.stat-note{font-size:.68rem;margin-top:.15rem;color:rgba(255,255,255,.32);}

.section-label{font-size:.7rem;font-weight:700;text-transform:uppercase;letter-spacing:.07em;color:rgba(255,255,255,.38);margin:0 0 .625rem;}

.quick-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:.75rem;margin-bottom:1.25rem;}
.quick-card{border-radius:13px;padding:1.0625rem;cursor:pointer;transition:transform .16s,box-shadow .16s;text-align:left;border:1px solid rgba(255,255,255,.18);background:rgba(255,255,255,.08);}
.quick-card:hover{transform:translateY(-2px);box-shadow:0 10px 28px rgba(0,0,0,.28);background:rgba(255,255,255,.12);}
.quick-icon{width:36px;height:36px;border-radius:9px;display:flex;align-items:center;justify-content:center;margin-bottom:.625rem;}
.quick-icon svg{width:18px;height:18px;}
.quick-title{font-size:.83rem;font-weight:600;color:#fff;}
.quick-desc{font-size:.7rem;color:rgba(255,255,255,.42);margin-top:.15rem;}

.activity-card{border-radius:13px;padding:1.125rem;}
.activity-title{font-size:.83rem;font-weight:600;margin-bottom:.875rem;}
.activity-list{display:flex;flex-direction:column;gap:.625rem;}
.activity-row{display:flex;align-items:center;gap:.625rem;}
.act-dot{width:6px;height:6px;border-radius:50%;flex-shrink:0;}
.act-text{font-size:.8rem;color:rgba(255,255,255,.65);flex:1;}
.act-time{font-size:.68rem;color:rgba(255,255,255,.3);}

/* ── Coming Soon ──────────────────────────────────────────────── */
.coming-soon{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:55vh;text-align:center;}
.coming-icon{width:68px;height:68px;border-radius:18px;display:flex;align-items:center;justify-content:center;margin-bottom:1.125rem;background:rgba(255,255,255,.07);border:1px solid rgba(255,255,255,.13);}
.coming-icon svg{width:32px;height:32px;color:rgba(255,255,255,.35);}
.coming-title{font-size:1.1rem;font-weight:600;color:rgba(255,255,255,.65);}
.coming-desc{font-size:.83rem;color:rgba(255,255,255,.32);margin-top:.375rem;}
.coming-badge{margin-top:.875rem;display:inline-block;padding:.275rem .8rem;border-radius:20px;font-size:.72rem;font-weight:600;background:rgba(79,156,249,.18);border:1px solid rgba(79,156,249,.3);color:#93c5fd;}

/* ── Goodline Lab footer ───────────────────────────────────────── */
.powered-by{text-align:center;font-size:.68rem;color:rgba(255,255,255,.22);padding:.75rem 0 .25rem;flex-shrink:0;}
.powered-by span{color:rgba(255,255,255,.35);font-weight:600;}

/* ── 3단계 서브메뉴 ──────────────────────────────────────────── */
.sub-menu{overflow:hidden;max-height:0;transition:max-height .25s ease;}
.sub-menu.open{max-height:300px;}
.nav-sub{padding-left:2.2rem !important;font-size:.8rem !important;color:rgba(255,255,255,.6) !important;}
.nav-sub.active{color:#fff !important;background:rgba(79,156,249,.15) !important;}
.nav-item[onclick*="toggleSubMenu"]{cursor:pointer;display:flex;align-items:center;gap:.5rem;}

/* ── 달력 ─────────────────────────────────────────────────────── */
.cal-wrap{max-width:980px;margin:0 auto;}
.cal-nav{display:flex;align-items:center;justify-content:space-between;margin-bottom:1rem;}
.cal-nav-btn{background:rgba(255,255,255,.1);border:1px solid rgba(255,255,255,.15);border-radius:8px;color:#fff;padding:.4rem .9rem;cursor:pointer;font-size:.88rem;transition:background .15s;}
.cal-nav-btn:hover{background:rgba(255,255,255,.18);}
.cal-title{font-size:1.25rem;font-weight:700;}
.cal-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:4px;}
.cal-dow{text-align:center;font-size:.72rem;font-weight:700;color:rgba(255,255,255,.4);padding:.5rem 0;}
.cal-dow:first-child{color:#f87171;}
.cal-dow:last-child{color:#93c5fd;}
.cal-cell{min-height:90px;border-radius:8px;padding:.4rem .5rem;background:rgba(255,255,255,.05);border:1px solid rgba(255,255,255,.07);cursor:pointer;transition:background .15s;position:relative;}
.cal-cell:hover{background:rgba(255,255,255,.09);}
.cal-cell.today{border-color:rgba(79,156,249,.5);background:rgba(79,156,249,.08);}
.cal-cell.other-month{opacity:.35;}
.cal-cell.sun .cal-day{color:#f87171;}
.cal-cell.sat .cal-day{color:#93c5fd;}
.cal-day{font-size:.8rem;font-weight:700;margin-bottom:.25rem;}
.cal-event{font-size:.68rem;padding:.1rem .35rem;border-radius:4px;margin-bottom:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;cursor:pointer;}
.cal-event.school{background:rgba(59,130,246,.3);color:#93c5fd;}
.cal-event.shared{background:rgba(52,211,153,.25);color:#6ee7b7;}
.cal-event.personal{background:rgba(251,146,60,.25);color:#fdba74;}
.cal-event.meal{background:rgba(167,139,250,.2);color:#c4b5fd;font-size:.63rem;}
.cal-duty-badge{position:absolute;bottom:.3rem;right:.4rem;font-size:.6rem;background:rgba(239,68,68,.2);color:#fca5a5;padding:.05rem .3rem;border-radius:3px;}

/* ── 공지사항 ─────────────────────────────────────────────────── */
.notice-list{display:flex;flex-direction:column;gap:.5rem;}
.notice-item{background:rgba(255,255,255,.06);border:1px solid rgba(255,255,255,.1);border-radius:10px;padding:.875rem 1.125rem;cursor:pointer;transition:background .15s;}
.notice-item:hover{background:rgba(255,255,255,.1);}
.notice-priority{display:inline-block;padding:.1rem .5rem;border-radius:4px;font-size:.68rem;font-weight:700;margin-bottom:.35rem;}
.notice-priority.p3{background:rgba(239,68,68,.2);color:#fca5a5;}
.notice-priority.p2{background:rgba(251,146,60,.2);color:#fdba74;}
.notice-priority.p1{background:rgba(59,130,246,.2);color:#93c5fd;}
.notice-priority.p0{background:rgba(255,255,255,.08);color:rgba(255,255,255,.4);}
.notice-title{font-size:.92rem;font-weight:600;margin-bottom:.25rem;}
.notice-meta{font-size:.72rem;color:rgba(255,255,255,.35);}

/* ── 연락처 ─────────────────────────────────────────────────────── */
.contact-dept{font-size:.72rem;font-weight:700;text-transform:uppercase;letter-spacing:.07em;color:rgba(255,255,255,.35);margin:.875rem 0 .375rem;}
.contact-card{display:flex;align-items:center;gap:.875rem;background:rgba(255,255,255,.06);border:1px solid rgba(255,255,255,.1);border-radius:9px;padding:.7rem 1rem;margin-bottom:.35rem;transition:background .15s;}
.contact-card:hover{background:rgba(255,255,255,.1);}
.contact-avatar{width:36px;height:36px;border-radius:50%;background:rgba(79,156,249,.2);display:flex;align-items:center;justify-content:center;font-size:.85rem;font-weight:700;flex-shrink:0;}
.contact-name{font-size:.88rem;font-weight:600;}
.contact-pos{font-size:.72rem;color:rgba(255,255,255,.4);}
.contact-phone{font-size:.78rem;color:rgba(79,156,249,.8);margin-left:auto;}

/* ── 당직 그리드 ──────────────────────────────────────────────── */
.duty-grid-wrap{overflow-x:auto;border-radius:10px;border:1px solid rgba(255,255,255,.1);}
.duty-grid{border-collapse:collapse;width:100%;min-width:600px;font-size:.78rem;}
.duty-grid th{background:rgba(255,255,255,.09);padding:.5rem .625rem;text-align:center;font-weight:700;color:rgba(255,255,255,.55);border:1px solid rgba(255,255,255,.07);}
.duty-grid td{border:1px solid rgba(255,255,255,.06);padding:.35rem .5rem;text-align:center;vertical-align:middle;}
.duty-grid td input{width:100%;background:transparent;border:none;color:#fff;text-align:center;font-size:.78rem;outline:none;padding:.1rem 0;}
.duty-grid td input:focus{background:rgba(79,156,249,.12);border-radius:4px;}
.duty-grid tr:nth-child(even) td{background:rgba(255,255,255,.02);}
.duty-grid td.duty-weekend{color:rgba(255,255,255,.2);font-weight:700;cursor:not-allowed;font-size:.85rem;}

/* ── 통계 ─────────────────────────────────────────────────────── */
.stats-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:.875rem;margin-bottom:1.25rem;}
.stats-num{font-size:2rem;font-weight:800;}

/* ══════════════════════════════════════════════
   ADMIN IMPORT
══════════════════════════════════════════════ */
.import-tabs{display:flex;gap:.5rem;margin-bottom:1.25rem;}
.import-tab{padding:.5rem 1.25rem;border-radius:8px;font-size:.83rem;font-weight:600;cursor:pointer;border:1px solid rgba(255,255,255,.18);color:rgba(255,255,255,.5);background:rgba(255,255,255,.06);transition:all .15s;}
.import-tab.active{background:rgba(79,156,249,.25);border-color:rgba(79,156,249,.4);color:#fff;}
.drop-zone{border:2px dashed rgba(255,255,255,.2);border-radius:14px;padding:2.5rem 1.5rem;text-align:center;cursor:pointer;transition:all .2s;background:rgba(255,255,255,.04);}
.drop-zone:hover,.drop-zone.drag{border-color:rgba(79,156,249,.6);background:rgba(79,156,249,.08);}
.drop-zone svg{opacity:.35;margin:0 auto .75rem;}
.drop-zone-text{font-size:.9rem;color:rgba(255,255,255,.5);}
.drop-zone-hint{font-size:.75rem;color:rgba(255,255,255,.3);margin-top:.375rem;}
.preview-header{display:flex;align-items:center;justify-content:space-between;padding:.75rem 1rem;background:rgba(52,211,153,.1);border:1px solid rgba(52,211,153,.2);border-radius:10px 10px 0 0;}
.preview-title{font-size:.83rem;font-weight:600;color:#6ee7b7;}
.preview-table-wrap{max-height:240px;overflow-y:auto;border:1px solid rgba(255,255,255,.08);border-top:none;border-radius:0 0 10px 10px;}
.preview-table{width:100%;border-collapse:collapse;font-size:.78rem;}
.preview-table th{padding:.45rem .75rem;background:rgba(255,255,255,.07);color:rgba(255,255,255,.45);font-weight:600;text-align:left;}
.preview-table td{padding:.4rem .75rem;border-bottom:1px solid rgba(255,255,255,.05);color:rgba(255,255,255,.7);}
.btn-import{padding:.7rem 1.5rem;border:none;border-radius:9px;background:linear-gradient(135deg,#5ba3f5,#2563eb);color:#fff;font-size:.875rem;font-weight:600;cursor:pointer;margin-top:.875rem;}
.btn-import:disabled{opacity:.45;cursor:not-allowed;}
.import-result{padding:.75rem 1rem;border-radius:9px;font-size:.83rem;margin-top:.75rem;}
.import-result.ok{background:rgba(52,211,153,.12);border:1px solid rgba(52,211,153,.25);color:#6ee7b7;}
.import-result.err{background:rgba(239,68,68,.12);border:1px solid rgba(239,68,68,.25);color:#fca5a5;}
.students-summary{display:grid;grid-template-columns:repeat(3,1fr);gap:.75rem;margin-top:.875rem;}
.sum-card{border-radius:10px;padding:.875rem;background:rgba(255,255,255,.07);border:1px solid rgba(255,255,255,.1);text-align:center;}
.sum-grade{font-size:.72rem;color:rgba(255,255,255,.4);margin-bottom:.25rem;font-weight:600;}
.sum-count{font-size:1.5rem;font-weight:700;}
.sum-detail{font-size:.68rem;color:rgba(255,255,255,.3);margin-top:.2rem;}

/* ══════════════════════════════════════════════
   SUPERVISION SYSTEM
══════════════════════════════════════════════ */
.sv-wrap{max-width:920px;margin:0 auto;}
.sv-progress{display:flex;align-items:flex-start;margin-bottom:1.75rem;}
.sv-step-dot{display:flex;flex-direction:column;align-items:center;flex:1;position:relative;}
.sv-step-dot:not(:last-child)::after{content:'';position:absolute;top:14px;left:50%;width:100%;height:2px;background:rgba(255,255,255,.1);z-index:0;}
.sv-step-dot.done::after,.sv-step-dot.active::after{background:rgba(79,156,249,.4);}
.sv-step-circle{width:28px;height:28px;border-radius:50%;border:2px solid rgba(255,255,255,.12);display:flex;align-items:center;justify-content:center;font-size:.72rem;font-weight:700;z-index:1;transition:all .2s;background:rgba(10,20,50,.8);flex-shrink:0;}
.sv-step-dot.done .sv-step-circle{background:#2563eb;border-color:#2563eb;color:#fff;}
.sv-step-dot.active .sv-step-circle{background:rgba(79,156,249,.2);border-color:#4f9cf9;color:#93c5fd;}
.sv-step-label{font-size:.65rem;color:rgba(255,255,255,.3);margin-top:.35rem;text-align:center;}
.sv-step-dot.active .sv-step-label,.sv-step-dot.done .sv-step-label{color:rgba(255,255,255,.6);}
.sv-card{border-radius:12px;padding:1.125rem 1.25rem;margin-bottom:.875rem;background:rgba(255,255,255,.06);border:1px solid rgba(255,255,255,.1);}
.sv-card-title{font-size:.72rem;font-weight:700;color:rgba(255,255,255,.4);text-transform:uppercase;letter-spacing:.07em;margin-bottom:.875rem;}
.sv-form-row{display:grid;gap:.625rem;margin-bottom:.625rem;}
.sv-form-row.c2{grid-template-columns:1fr 1fr;}
.sv-form-row.c3{grid-template-columns:1fr 1fr 1fr;}
.sv-form-row.c4{grid-template-columns:1fr 1fr 1fr 1fr;}
.sv-label{display:block;font-size:.7rem;color:rgba(255,255,255,.4);margin-bottom:.3rem;font-weight:600;}
.sv-input,.sv-select{width:100%;padding:.575rem .8rem;background:rgba(255,255,255,.07);border:1px solid rgba(255,255,255,.13);border-radius:7px;color:#fff;font-size:.85rem;outline:none;box-sizing:border-box;transition:border-color .15s;}
.sv-input:focus,.sv-select:focus{border-color:rgba(79,156,249,.5);}
.sv-select{background:rgba(12,22,52,.9);cursor:pointer;}
.sv-teacher-list{display:flex;flex-direction:column;gap:.3rem;max-height:280px;overflow-y:auto;}
.sv-teacher-item{display:flex;align-items:center;gap:.625rem;padding:.45rem .75rem;border-radius:7px;background:rgba(255,255,255,.05);border:1px solid rgba(255,255,255,.07);}
.sv-teacher-name{flex:0 0 70px;font-size:.82rem;font-weight:600;}
.sv-teacher-subjects{flex:1;font-size:.7rem;color:rgba(255,255,255,.38);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.sv-teacher-actions{display:flex;gap:.375rem;flex-shrink:0;}
.sv-chip{font-size:.65rem;padding:2px 6px;border-radius:4px;cursor:pointer;border:1px solid;transition:all .15s;}
.sv-chip-hq{background:rgba(239,68,68,.12);color:#fca5a5;border-color:rgba(239,68,68,.25);}
.sv-chip-hq.on{background:rgba(239,68,68,.3);color:#fff;border-color:rgba(239,68,68,.5);}
.sv-chip-ex{background:rgba(251,191,36,.1);color:#fcd34d;border-color:rgba(251,191,36,.2);}
.sv-chip-ex.on{background:rgba(251,191,36,.3);border-color:rgba(251,191,36,.5);}
.sv-sched-wrap{overflow-x:auto;}
.sv-sched-table{border-collapse:collapse;min-width:500px;width:100%;}
.sv-sched-table th{padding:.45rem .5rem;font-size:.7rem;font-weight:600;color:rgba(255,255,255,.38);text-align:center;border-bottom:1px solid rgba(255,255,255,.08);}
.sv-sched-table td{padding:.25rem;}
.sv-cell{min-height:44px;border-radius:6px;padding:.3rem .5rem;cursor:pointer;background:rgba(255,255,255,.04);border:1px solid transparent;transition:all .15s;}
.sv-cell:hover{background:rgba(79,156,249,.12);border-color:rgba(79,156,249,.2);}
.sv-cell.filled{background:rgba(79,156,249,.1);border-color:rgba(79,156,249,.2);}
.sv-cell-g{font-size:.62rem;color:rgba(255,255,255,.3);}
.sv-cell-s{font-size:.72rem;color:rgba(255,255,255,.7);font-weight:500;margin-top:1px;}
.sv-score-row{display:flex;align-items:center;gap:.75rem;padding:.4rem 0;}
.sv-score-lbl{font-size:.8rem;color:rgba(255,255,255,.55);width:75px;flex-shrink:0;}
.sv-score-val{font-size:.875rem;font-weight:700;color:#93c5fd;width:32px;text-align:right;flex-shrink:0;}
input[type=range].sv-range{flex:1;accent-color:#4f9cf9;height:4px;}
.sv-progress-bar-wrap{background:rgba(255,255,255,.07);border-radius:6px;height:7px;overflow:hidden;margin:.75rem 0;}
.sv-progress-bar{height:100%;background:linear-gradient(90deg,#4f9cf9,#2563eb);transition:width .35s ease;border-radius:6px;}
.sv-progress-msg{font-size:.8rem;color:rgba(255,255,255,.45);text-align:center;}
.sv-result-tabs{display:flex;gap:.5rem;margin-bottom:.875rem;}
.sv-rtab{padding:.425rem .875rem;border-radius:7px;font-size:.8rem;font-weight:600;cursor:pointer;border:1px solid rgba(255,255,255,.1);color:rgba(255,255,255,.4);background:rgba(255,255,255,.04);transition:all .15s;}
.sv-rtab.active{background:rgba(79,156,249,.18);border-color:rgba(79,156,249,.35);color:#fff;}
.sv-result-table{width:100%;border-collapse:collapse;font-size:.78rem;}
.sv-result-table th{padding:.45rem .625rem;background:rgba(255,255,255,.07);color:rgba(255,255,255,.45);font-weight:600;text-align:center;border-bottom:1px solid rgba(255,255,255,.08);}
.sv-result-table td{padding:.425rem .625rem;border-bottom:1px solid rgba(255,255,255,.05);text-align:center;color:rgba(255,255,255,.7);}
.sv-result-table tr:hover td{background:rgba(255,255,255,.03);}
.sv-badge{display:inline-block;padding:1px 6px;border-radius:4px;font-size:.68rem;font-weight:600;}
.sv-badge-main{background:rgba(79,156,249,.18);color:#93c5fd;}
.sv-badge-sub{background:rgba(167,139,250,.18);color:#c4b5fd;}
.sv-badge-corridor{background:rgba(52,211,153,.18);color:#6ee7b7;}
.sv-badge-study{background:rgba(251,191,36,.18);color:#fcd34d;}
.sv-btn-row{display:flex;justify-content:space-between;align-items:center;margin-top:1.125rem;gap:.75rem;}
.sv-btn{padding:.625rem 1.375rem;border-radius:8px;font-size:.875rem;font-weight:600;cursor:pointer;border:none;transition:all .15s;}
.sv-btn-prev{background:rgba(255,255,255,.08);color:rgba(255,255,255,.65);border:1px solid rgba(255,255,255,.13);}
.sv-btn-prev:hover{background:rgba(255,255,255,.13);}
.sv-btn-next{background:linear-gradient(135deg,#5ba3f5,#2563eb);color:#fff;box-shadow:0 3px 10px rgba(37,99,235,.3);}
.sv-btn-next:hover{opacity:.92;transform:translateY(-1px);}
.sv-btn-run{background:linear-gradient(135deg,#10b981,#059669);color:#fff;padding:.65rem 1.75rem;box-shadow:0 3px 10px rgba(16,185,129,.3);}
.sv-modal-bg{position:fixed;inset:0;z-index:200;background:rgba(0,0,0,.55);display:flex;align-items:center;justify-content:center;backdrop-filter:blur(4px);}
.sv-modal{background:rgba(12,22,52,.97);border:1px solid rgba(255,255,255,.15);border-radius:14px;padding:1.375rem;width:90%;max-width:460px;}
.sv-modal-hd{display:flex;align-items:center;justify-content:space-between;margin-bottom:1rem;}
.sv-modal-hd h4{font-size:.9rem;font-weight:600;margin:0;}
.sv-modal-close{background:none;border:none;color:rgba(255,255,255,.4);cursor:pointer;font-size:1.2rem;padding:0;line-height:1;}
.sv-modal-close:hover{color:#fff;}
.dev-pos{color:#fca5a5;} .dev-neg{color:#6ee7b7;} .dev-zero{color:rgba(255,255,255,.4);}

@media(max-width:768px){
  .sv-form-row.c3,.sv-form-row.c4{grid-template-columns:1fr 1fr;}
  .sv-form-row.c2{grid-template-columns:1fr 1fr;}
}
@media(max-width:480px){
  .sv-form-row.c2,.sv-form-row.c3,.sv-form-row.c4{grid-template-columns:1fr;}
  .students-summary{grid-template-columns:1fr 1fr 1fr;}
}

/* ══════════════════════════════════════════════
   RESPONSIVE
══════════════════════════════════════════════ */
@media(max-width:768px){
  html,body{overflow:auto;}
  #page-dashboard{height:auto;}
  .layout{display:block;min-height:100vh;}

  .sidebar{
    position:fixed;top:0;left:0;height:100vh;
    transform:translateX(-100%);
    z-index:40;
  }
  .sidebar.open{transform:translateX(0);}
  #sb-overlay.show{display:block;}
  .sb-close{display:flex;align-items:center;justify-content:center;}

  .main{height:100vh;display:flex;flex-direction:column;}
  .btn-hamburger{display:flex;align-items:center;justify-content:center;}
  .topbar-date{display:none;}

  .stats-grid{grid-template-columns:repeat(2,1fr);gap:.625rem;}
  .quick-grid{grid-template-columns:repeat(2,1fr);gap:.625rem;}
  .content{padding:.875rem;}

  .welcome-greet{font-size:1.1rem;}
  .stat-value{font-size:1.4rem;}
}

@media(max-width:480px){
  .stats-grid{grid-template-columns:repeat(2,1fr);}
  .quick-grid{grid-template-columns:repeat(2,1fr);}
  .login-box{padding:1.75rem 1.25rem;}
}

/* ══════════════════════════════════════════════
   DASHBOARD MODE  (.is-dashboard on body)
   배경 이미지 그대로 유지, 카드만 glass 효과로 부유
   ※ showDashboard()에서 #bg/#bg-img/#bg-ov를 숨기는 코드 없음
══════════════════════════════════════════════ */

/* ── Sidebar ─────────────────────────────── */
body.is-dashboard .sidebar{
  background:rgba(10,14,30,.82);
  backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);
}

/* ── Topbar ──────────────────────────────── */
body.is-dashboard .topbar{
  background:rgba(255,255,255,.70);
  backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);
  border-bottom:1px solid rgba(0,0,0,.08);
}
body.is-dashboard .topbar-title{color:#1a1a2e;}
body.is-dashboard .topbar-sub{color:rgba(26,26,46,.5);}
body.is-dashboard .topbar-date{color:rgba(26,26,46,.5);}
body.is-dashboard .btn-hamburger{color:rgba(26,26,46,.6);}
body.is-dashboard .btn-hamburger:hover{color:#1a1a2e;}
body.is-dashboard .btn-bell{color:rgba(26,26,46,.4);}
body.is-dashboard .btn-bell:hover{color:#1a1a2e;}
body.is-dashboard #semester-badge{color:rgba(26,26,46,.65)!important;border-color:rgba(0,0,0,.12)!important;background:rgba(255,255,255,.4)!important;}

/* ── Content 래퍼 — 완전 투명, 배경 그대로 노출 ── */
body.is-dashboard .content{
  background:transparent!important;
  backdrop-filter:none;-webkit-backdrop-filter:none;
  color:#1a1a2e;
}

/* ── 카드/패널 — 반투명 glass 효과 ────────────
   배경이 카드를 통해 보이면서 텍스트 가독성 확보
   rgba(255,255,255,.76) + blur(18px) = frosted glass
──────────────────────────────────────────── */
body.is-dashboard .sv-card,
body.is-dashboard .stat-card,
body.is-dashboard .quick-card,
body.is-dashboard .activity-card,
body.is-dashboard .sum-card,
body.is-dashboard .drop-zone,
body.is-dashboard .preview-table-wrap,
body.is-dashboard .preview-header,
body.is-dashboard .import-result,
body.is-dashboard .notice-item,
body.is-dashboard .contact-card,
body.is-dashboard .duty-grid-wrap{
  background:rgba(255,255,255,.55)!important;
  backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);
  border:1px solid rgba(255,255,255,.45)!important;
  box-shadow:0 4px 24px rgba(0,0,0,.12);
  color:#1a1a2e!important;
}
body.is-dashboard .stat-label{color:#1a1a2e;font-weight:500;font-size:.85rem;}
body.is-dashboard .stat-value{color:#1a1a2e;font-size:2rem;font-weight:700;}
body.is-dashboard .stat-note{color:rgba(26,26,46,.5);font-size:.85rem;}
body.is-dashboard .quick-card:hover{
  background:rgba(255,255,255,.88)!important;
  box-shadow:0 8px 32px rgba(0,0,0,.2);
  transform:translateY(-2px);
}

/* 대시보드 홈 텍스트 */
body.is-dashboard .welcome-greet{color:#fff;text-shadow:0 1px 6px rgba(0,0,0,.5);}
body.is-dashboard .welcome-sub{color:rgba(255,255,255,.7);text-shadow:0 1px 4px rgba(0,0,0,.4);}
body.is-dashboard .section-label{color:rgba(255,255,255,.6);text-shadow:0 1px 4px rgba(0,0,0,.4);}
body.is-dashboard .stat-label{color:rgba(26,26,46,.6);}
body.is-dashboard .stat-value{color:#1a1a2e;}
body.is-dashboard .stat-note{color:rgba(26,26,46,.45);}
body.is-dashboard .quick-title{color:#1a1a2e;}
body.is-dashboard .quick-desc{color:rgba(26,26,46,.5);}
body.is-dashboard .activity-title{color:#1a1a2e;}
body.is-dashboard .act-text{color:rgba(26,26,46,.7);}
body.is-dashboard .act-time{color:rgba(26,26,46,.4);}

/* Coming soon — 카드 없이 배경 위에 직접 표시 */
body.is-dashboard .coming-soon{color:#fff;}
body.is-dashboard .coming-title{color:rgba(255,255,255,.85);text-shadow:0 1px 6px rgba(0,0,0,.5);}
body.is-dashboard .coming-desc{color:rgba(255,255,255,.6);text-shadow:0 1px 4px rgba(0,0,0,.4);}
body.is-dashboard .coming-icon{
  background:rgba(255,255,255,.2);
  border:1px solid rgba(255,255,255,.3);
  backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);
}
body.is-dashboard .coming-icon svg{color:rgba(255,255,255,.6);}
body.is-dashboard .coming-badge{background:rgba(79,156,249,.25);color:#93c5fd;border-color:rgba(79,156,249,.4);}

/* Admin import */
body.is-dashboard .import-tab{color:rgba(26,26,46,.65);background:rgba(255,255,255,.55)!important;border-color:rgba(255,255,255,.4)!important;backdrop-filter:blur(8px);}
body.is-dashboard .import-tab.active{background:rgba(79,156,249,.25)!important;border-color:rgba(79,156,249,.5)!important;color:#1a1a2e;}
body.is-dashboard .drop-zone-text{color:rgba(26,26,46,.55);}
body.is-dashboard .drop-zone-hint{color:rgba(26,26,46,.4);}
body.is-dashboard .drop-zone svg{opacity:.3;}
body.is-dashboard .drop-zone:hover,.drop-zone.drag{background:rgba(79,156,249,.12)!important;border-color:rgba(79,156,249,.5)!important;}
body.is-dashboard .preview-table th{background:rgba(0,0,0,.04);color:rgba(26,26,46,.55);}
body.is-dashboard .preview-table td{border-bottom-color:rgba(0,0,0,.06);color:rgba(26,26,46,.78);}
body.is-dashboard .sum-grade{color:rgba(26,26,46,.55);}
body.is-dashboard .sum-count{color:#1a1a2e;}
body.is-dashboard .preview-title{color:#059669;}

/* Supervision wizard 카드·입력 */
body.is-dashboard .sv-card-title{color:rgba(26,26,46,.5);}
body.is-dashboard .sv-label{color:rgba(26,26,46,.52);}
body.is-dashboard .sv-input{background:rgba(255,255,255,.9);border:1px solid rgba(0,0,0,.15);color:#1a1a2e;}
body.is-dashboard .sv-select{background:rgba(255,255,255,.9);border:1px solid rgba(0,0,0,.15);color:#1a1a2e;}
body.is-dashboard .sv-input::placeholder{color:rgba(26,26,46,.3);}
body.is-dashboard input[type=number],body.is-dashboard input[type=text],
body.is-dashboard input[type=date],body.is-dashboard input[type=email]{
  background:rgba(255,255,255,.9)!important;color:#1a1a2e!important;border:1px solid rgba(0,0,0,.15)!important;
}

/* Step 진행 바 */
body.is-dashboard .sv-step-circle{background:rgba(230,232,245,.9);border-color:rgba(0,0,0,.15);color:#1a1a2e;}
body.is-dashboard .sv-step-dot.done .sv-step-circle{background:#2563eb;border-color:#2563eb;color:#fff;}
body.is-dashboard .sv-step-dot.active .sv-step-circle{background:rgba(79,156,249,.2);border-color:#4f9cf9;color:#2563eb;}
body.is-dashboard .sv-step-label{color:rgba(26,26,46,.38);}
body.is-dashboard .sv-step-dot.active .sv-step-label,
body.is-dashboard .sv-step-dot.done .sv-step-label{color:rgba(26,26,46,.65);}
body.is-dashboard .sv-step-dot:not(:last-child)::after{background:rgba(0,0,0,.1);}

/* 교사 목록 */
body.is-dashboard .sv-teacher-item{background:rgba(0,0,0,.04);border-color:rgba(0,0,0,.08);}
body.is-dashboard .sv-teacher-name{color:#1a1a2e;}
body.is-dashboard .sv-teacher-subjects{color:rgba(26,26,46,.42);}

/* 시간표 셀 */
body.is-dashboard .sv-sched-table th{color:rgba(26,26,46,.5);border-bottom-color:rgba(0,0,0,.08);}
body.is-dashboard .sv-cell{background:rgba(0,0,0,.03);border-color:transparent;}
body.is-dashboard .sv-cell:hover{background:rgba(79,156,249,.1);border-color:rgba(79,156,249,.25);}
body.is-dashboard .sv-cell.filled{background:rgba(79,156,249,.12);border-color:rgba(79,156,249,.25);}
body.is-dashboard .sv-cell-g{color:rgba(26,26,46,.38);}
body.is-dashboard .sv-cell-s{color:#1a1a2e;}

/* 배점·진행 */
body.is-dashboard .sv-score-lbl{color:rgba(26,26,46,.55);}
body.is-dashboard .sv-progress-bar-wrap{background:rgba(0,0,0,.08);}
body.is-dashboard .sv-progress-msg{color:rgba(26,26,46,.5);}

/* 결과 탭 */
body.is-dashboard .sv-rtab{color:rgba(26,26,46,.45);background:rgba(255,255,255,.8)!important;border-color:rgba(0,0,0,.1)!important;}
body.is-dashboard .sv-rtab.active{background:rgba(79,156,249,.15)!important;border-color:rgba(79,156,249,.35)!important;color:#1a1a2e;}

/* 결과 테이블 */
body.is-dashboard .sv-result-table th{background:rgba(0,0,0,.05);color:rgba(26,26,46,.5);border-bottom-color:rgba(0,0,0,.08);}
body.is-dashboard .sv-result-table td{border-bottom-color:rgba(0,0,0,.05);color:rgba(26,26,46,.75);}
body.is-dashboard .sv-result-table tr:hover td{background:rgba(0,0,0,.03);}

/* 버튼 (이전) */
body.is-dashboard .sv-btn-prev{background:rgba(0,0,0,.06);color:rgba(26,26,46,.65);border-color:rgba(0,0,0,.12);}
body.is-dashboard .sv-btn-prev:hover{background:rgba(0,0,0,.1);}

/* 공지사항 */
body.is-dashboard .notice-item:hover{background:rgba(255,255,255,.75)!important;}
body.is-dashboard .notice-title{color:#1a1a2e;}
body.is-dashboard .notice-meta{color:rgba(26,26,46,.45);}

/* 연락처 */
body.is-dashboard .contact-dept{color:rgba(26,26,46,.42);font-weight:700;}
body.is-dashboard .contact-card:hover{background:rgba(255,255,255,.75)!important;}
body.is-dashboard .contact-name{color:#1a1a2e;}
body.is-dashboard .contact-pos{color:rgba(26,26,46,.45);}
body.is-dashboard .contact-phone{color:rgba(37,99,235,.85);}

/* 달력 내비 */
body.is-dashboard .cal-nav-btn{
  background:rgba(255,255,255,.55)!important;
  border-color:rgba(255,255,255,.45)!important;
  color:#1a1a2e;
  backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);
}
body.is-dashboard .cal-nav-btn:hover{background:rgba(255,255,255,.82)!important;}
body.is-dashboard .cal-title{color:#fff;text-shadow:0 1px 6px rgba(0,0,0,.45);}
body.is-dashboard .cal-dow{color:rgba(26,26,46,.42);}
body.is-dashboard .cal-dow:first-child{color:#dc2626;}
body.is-dashboard .cal-dow:last-child{color:#2563eb;}

/* 달력 셀 */
body.is-dashboard .cal-cell{
  background:rgba(255,255,255,.4)!important;
  backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);
  border:1px solid rgba(255,255,255,.38)!important;
}
body.is-dashboard .cal-cell:hover{background:rgba(255,255,255,.62)!important;}
body.is-dashboard .cal-cell.today{
  background:rgba(79,156,249,.2)!important;
  border-color:rgba(37,99,235,.42)!important;
}
body.is-dashboard .cal-day{color:#1a1a2e;}
body.is-dashboard .cal-cell.sun .cal-day{color:#dc2626;}
body.is-dashboard .cal-cell.sat .cal-day{color:#2563eb;}

/* 당직 그리드 */
body.is-dashboard .duty-grid th{
  background:rgba(0,0,0,.05)!important;
  color:rgba(26,26,46,.55)!important;
  border-color:rgba(0,0,0,.07)!important;
}
body.is-dashboard .duty-grid td{
  border-color:rgba(0,0,0,.05)!important;
  color:#1a1a2e;
}
body.is-dashboard .duty-grid td input{color:#1a1a2e!important;background:transparent!important;}
body.is-dashboard .duty-grid td input:focus{background:rgba(79,156,249,.1)!important;border-radius:4px;}
body.is-dashboard .duty-grid tr:nth-child(even) td{background:rgba(0,0,0,.02)!important;}
body.is-dashboard .duty-grid td.duty-weekend{color:rgba(26,26,46,.18)!important;}

/* ─── 흰색 텍스트 → 어두운색 강제 오버라이드 (inline style 포함) ─── */
body.is-dashboard .sv-card-title{color:rgba(26,26,46,.5)!important;}
body.is-dashboard .sv-label{color:rgba(26,26,46,.52)!important;}
body.is-dashboard .sv-input,body.is-dashboard .sv-select{color:#1a1a2e!important;}
body.is-dashboard .sv-teacher-subjects{color:rgba(26,26,46,.42)!important;}
body.is-dashboard .sv-sched-table th{color:rgba(26,26,46,.5)!important;}
body.is-dashboard .sv-cell-g{color:rgba(26,26,46,.38)!important;}
body.is-dashboard .sv-cell-s{color:#1a1a2e!important;}
body.is-dashboard .sv-score-lbl{color:rgba(26,26,46,.55)!important;}
body.is-dashboard .sv-score-val{color:#2563eb!important;}
body.is-dashboard .sv-progress-msg{color:rgba(26,26,46,.5)!important;}
body.is-dashboard .sv-step-label{color:rgba(26,26,46,.38)!important;}
body.is-dashboard .sv-step-dot.active .sv-step-label,
body.is-dashboard .sv-step-dot.done .sv-step-label{color:rgba(26,26,46,.65)!important;}
body.is-dashboard .sv-rtab{color:rgba(26,26,46,.45)!important;}
body.is-dashboard .sum-grade{color:rgba(26,26,46,.55)!important;}
body.is-dashboard .sum-detail{color:rgba(26,26,46,.4)!important;}
body.is-dashboard .preview-table th{color:rgba(26,26,46,.55)!important;}
body.is-dashboard .preview-table td{color:rgba(26,26,46,.78)!important;}
body.is-dashboard .drop-zone-text{color:rgba(26,26,46,.55)!important;}
body.is-dashboard .drop-zone-hint{color:rgba(26,26,46,.4)!important;}
body.is-dashboard .import-tab{color:rgba(26,26,46,.65)!important;}
/* 편차 셀 – 의도된 색상 유지 */
body.is-dashboard .dev-pos{color:#dc2626!important;}
body.is-dashboard .dev-neg{color:#16a34a!important;}
body.is-dashboard .dev-zero{color:rgba(26,26,46,.4)!important;}
/* td / th 캐치올 (편차 셀 제외) */
body.is-dashboard .sv-card td:not(.dev-pos):not(.dev-neg):not(.dev-zero),
body.is-dashboard .sv-card th{color:rgba(26,26,46,.75)!important;}
/* inline style 흰색 텍스트 캐치올 */
body.is-dashboard .sv-card [style*="color:rgba(255,255,255"]:not(button):not(.sv-btn):not(.sv-btn-next):not(.sv-btn-prev),
body.is-dashboard .notice-item [style*="color:rgba(255,255,255"]:not(button),
body.is-dashboard .contact-card [style*="color:rgba(255,255,255"]:not(button),
body.is-dashboard .cal-cell [style*="color:rgba(255,255,255"],
body.is-dashboard .duty-grid-wrap [style*="color:rgba(255,255,255"]:not(button),
body.is-dashboard .preview-table-wrap [style*="color:rgba(255,255,255"]:not(button),
body.is-dashboard .sum-card [style*="color:rgba(255,255,255"]{color:rgba(26,26,46,.65)!important;}
body.is-dashboard .sv-card [style*="color:#fff"]:not(button):not(.sv-btn):not(.sv-btn-next):not(.sv-btn-prev),
body.is-dashboard .notice-item [style*="color:#fff"]:not(button),
body.is-dashboard .contact-card [style*="color:#fff"]:not(button){color:#1a1a2e!important;}
