:root{--bg:#f4f7fb;--panel:#fff;--ink:#172033;--muted:#718096;--line:#e5eaf1;--primary:#175cd3;--nav:#111b2e;--nav2:#17253d;--radius:16px;--shadow:0 8px 28px rgba(26,38,61,.07)}*{box-sizing:border-box}html,body{margin:0;min-height:100%;font-family:Tahoma,"Segoe UI",Arial,sans-serif;background:var(--bg);color:var(--ink)}a{color:var(--primary);text-decoration:none}button,input,select,textarea{font:inherit}.app-shell{display:grid;grid-template-columns:260px 1fr;min-height:100vh}.sidebar{background:linear-gradient(180deg,var(--nav),#0b1424);color:#dfe7f3;padding:22px 16px;position:sticky;top:0;height:100vh;display:flex;flex-direction:column;z-index:20}.brand{display:flex;gap:12px;align-items:center;padding:0 7px 22px;border-bottom:1px solid rgba(255,255,255,.08)}.brand-mark,.login-logo{width:44px;height:44px;border-radius:13px;display:grid;place-items:center;background:linear-gradient(135deg,#2e90fa,#175cd3);color:#fff;font-size:24px;font-weight:800}.brand strong{display:block;font-size:14px}.brand small{display:block;color:#8fa1b9;margin-top:4px;font-size:11px}.sidebar nav{padding:17px 0;display:grid;gap:4px;overflow:auto}.nav-link{color:#bec9d8;padding:10px 12px;border-radius:10px;font-size:14px}.nav-link:hover,.nav-link.active{background:var(--nav2);color:#fff}.sidebar-footer{margin-top:auto;border-top:1px solid rgba(255,255,255,.08);padding:14px 8px 0;display:grid;gap:8px;font-size:12px}.sidebar-footer a{color:#8fbaff}.main-content{padding:26px 30px 45px;min-width:0}.topbar{display:flex;align-items:center;gap:18px;margin-bottom:22px}.topbar h1{font-size:25px;margin:0 0 5px}.topbar p{color:var(--muted);margin:0;font-size:13px}.top-actions{margin-right:auto;display:flex;gap:9px}.menu-btn{display:none;border:0;background:#fff;border-radius:9px;padding:8px 11px;box-shadow:var(--shadow)}.btn{display:inline-flex;align-items:center;justify-content:center;border:1px solid transparent;border-radius:9px;padding:9px 14px;cursor:pointer;font-weight:700;font-size:13px;white-space:nowrap}.btn.primary{background:var(--primary);color:#fff}.btn.secondary{background:#eaf2ff;color:#164da1}.btn.dark{background:#22314c;color:#fff}.btn.ghost{background:#fff;border-color:var(--line);color:#44546a}.btn.full{width:100%}.flash-stack{display:grid;gap:8px;margin-bottom:16px}.flash{padding:11px 14px;border-radius:10px;background:#eef3f8}.flash.success{background:#e8f8ef;color:#18794e}.flash.danger{background:#feeeee;color:#b42318}.panel{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:19px;margin-bottom:18px}.panel-head{display:flex;align-items:center;justify-content:space-between;gap:15px;margin-bottom:17px}.panel-head h2{margin:0;font-size:17px}.panel-head p{margin:5px 0 0;color:var(--muted);font-size:12px}.kpi-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;margin-bottom:18px}.kpi-grid.compact{grid-template-columns:repeat(4,minmax(0,1fr))}.kpi-card{background:#fff;border:1px solid var(--line);border-radius:14px;padding:17px;box-shadow:var(--shadow);position:relative;overflow:hidden}.kpi-card:before{content:"";position:absolute;right:0;top:0;width:5px;height:100%;background:#718096}.kpi-card span{display:block;color:#667085;font-size:12px;margin-bottom:10px}.kpi-card strong{font-size:22px}.kpi-card small{font-size:11px;color:#718096}.kpi-card.blue:before{background:#2e90fa}.kpi-card.teal:before{background:#15b79e}.kpi-card.indigo:before{background:#6172f3}.kpi-card.green:before{background:#17b26a}.kpi-card.orange:before{background:#f79009}.kpi-card.red:before{background:#f04438}.kpi-card.purple:before{background:#7a5af8}.kpi-card.gray:before{background:#667085}.content-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px}.content-grid.two-thirds{grid-template-columns:1.55fr 1fr}.mini-chart{height:180px;border-bottom:1px solid var(--line);display:flex;align-items:end;gap:10px;padding:12px 8px 0;direction:ltr}.bar-group{flex:1;height:100%;display:flex;flex-direction:column;justify-content:end;align-items:center;gap:7px}.bar{width:min(30px,72%);min-height:4px;border-radius:6px 6px 0 0;background:linear-gradient(#4e8df6,#175cd3)}.bar-group small{color:var(--muted);font-size:10px}.compact-list{display:grid}.compact-list>a{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:11px 2px;border-bottom:1px solid var(--line);color:var(--ink)}.compact-list>a:last-child{border:0}.compact-list strong{font-size:12px}.compact-list small{display:block;color:var(--muted);margin-top:4px}.badge{display:inline-flex;padding:4px 8px;border-radius:999px;font-size:10px;font-weight:700;background:#eef2f6;color:#475467}.badge.danger{background:#fee4e2;color:#b42318}.badge.warning{background:#fef0c7;color:#b54708}.badge.neutral{background:#eef2f6}.badge.status{background:#eef4ff;color:#3538cd}.filter-bar{display:flex;align-items:end;gap:9px;margin-bottom:15px;flex-wrap:wrap}.filter-bar input,.filter-bar select{height:39px;border:1px solid var(--line);border-radius:9px;padding:0 11px;background:#fff;min-width:180px}.filter-bar>input{flex:1;min-width:260px}.filter-bar label{display:grid;gap:5px;color:#667085;font-size:12px}.table-wrap{overflow:auto;border:1px solid var(--line);border-radius:11px}table{width:100%;border-collapse:collapse;min-width:780px;background:#fff}th,td{padding:11px 10px;border-bottom:1px solid var(--line);text-align:right;font-size:12px;vertical-align:middle;white-space:nowrap}th{background:#f7f9fc;color:#475467;font-weight:800;position:sticky;top:0;z-index:1}tr:hover td{background:#fbfcfe}.num{font-variant-numeric:tabular-nums}.strong-link{font-weight:800}.actions-cell{display:flex;align-items:center;gap:5px}.actions-cell form{margin:0}.icon-btn{border:1px solid var(--line);background:#fff;color:#344054;width:30px;height:30px;border-radius:8px;display:inline-grid;place-items:center;cursor:pointer}.icon-btn.danger{color:#b42318}.record-count{color:var(--muted);font-size:11px;margin-top:11px}.empty{text-align:center;color:var(--muted);padding:28px}.form-panel{max-width:1050px}.data-form{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.form-field{display:grid;gap:7px}.form-field span{font-size:12px;font-weight:700}.form-field b{color:#d92d20}.form-field small{color:var(--muted);font-size:10px}.form-field.wide,.form-actions.wide{grid-column:1/-1}.form-field input,.form-field select,.form-field textarea,.settings-form input{width:100%;border:1px solid #d8dee8;border-radius:9px;padding:10px 11px;background:#fff;outline:none}.form-field input:focus,.form-field select:focus,.form-field textarea:focus,.settings-form input:focus{border-color:#84adff;box-shadow:0 0 0 3px #eef4ff}.form-field input[readonly]{background:#f3f5f8;color:#667085}.form-actions{display:flex;gap:9px;padding-top:4px}.project-meta{display:grid;grid-template-columns:repeat(5,1fr);gap:14px}.project-meta div{padding:8px}.project-meta span{display:block;color:var(--muted);font-size:11px;margin-bottom:6px}.project-meta strong{font-size:13px}.negative{color:#b42318;font-weight:700}.total-row td{font-weight:800;background:#f2f6fc}.settings-form{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:15px}.settings-form label{display:grid;gap:6px}.settings-form span{font-weight:700;font-size:12px}.settings-form small,.settings-form em{font-size:10px;color:var(--muted);font-style:normal}.notice p{line-height:1.9;color:#566176}.details-cell{max-width:480px;white-space:normal;direction:ltr;text-align:left}.login-page{min-height:100vh;display:grid;place-items:center;background:radial-gradient(circle at top right,#dceaff,transparent 34%),linear-gradient(135deg,#f6f9ff,#edf3fb);padding:20px}.login-card{width:min(410px,100%);background:#fff;border:1px solid var(--line);border-radius:22px;box-shadow:0 22px 70px rgba(18,35,63,.13);padding:34px}.login-logo{margin:auto;width:58px;height:58px;font-size:30px}.login-card h1{text-align:center;font-size:20px;margin:17px 0 6px}.login-card>p{text-align:center;color:var(--muted);margin:0 0 24px}.login-form{display:grid;gap:14px}.login-form label{display:grid;gap:7px;font-size:12px;font-weight:700}.login-form input{height:43px;border:1px solid var(--line);border-radius:9px;padding:0 12px}.login-hint{margin-top:18px;text-align:center;font-size:11px;color:var(--muted);background:#f6f8fb;border-radius:9px;padding:10px}@media(max-width:1180px){.kpi-grid{grid-template-columns:repeat(3,1fr)}.project-meta{grid-template-columns:repeat(3,1fr)}}@media(max-width:900px){.app-shell{grid-template-columns:1fr}.sidebar{position:fixed;right:-280px;width:260px;transition:.2s}.menu-open .sidebar{right:0}.main-content{padding:20px}.menu-btn{display:block}.kpi-grid,.kpi-grid.compact{grid-template-columns:repeat(2,1fr)}.content-grid,.content-grid.two-thirds{grid-template-columns:1fr}.topbar{align-items:flex-start}.top-actions{flex-wrap:wrap}.project-meta{grid-template-columns:repeat(2,1fr)}}@media(max-width:580px){.main-content{padding:15px}.topbar{flex-wrap:wrap}.top-actions{width:100%;margin:0}.kpi-grid,.kpi-grid.compact{grid-template-columns:1fr}.data-form,.settings-form{grid-template-columns:1fr}.form-field.wide,.form-actions.wide{grid-column:auto}.project-meta{grid-template-columns:1fr}.panel{padding:14px}.topbar h1{font-size:20px}}@media print{.sidebar,.topbar,.filter-bar,.btn{display:none!important}.app-shell{display:block}.main-content{padding:0}.panel{box-shadow:none;border:0}.table-wrap{overflow:visible}table{min-width:0}th,td{font-size:9px;padding:5px}}
.wizard-form{display:grid;gap:0}.client-check-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;max-height:360px;overflow:auto;padding:2px}.check-card{display:flex;align-items:flex-start;gap:10px;border:1px solid var(--line);border-radius:11px;padding:12px;background:#fff;cursor:pointer}.check-card:hover{border-color:#84adff;background:#f8fbff}.check-card input{margin-top:3px}.check-card strong{display:block;font-size:12px}.check-card small{display:block;color:var(--muted);font-size:10px;margin-top:4px;line-height:1.5}.phase-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}.phase-card{border:1px solid var(--line);border-radius:14px;padding:14px;background:#f8fafc;opacity:.62;transition:.15s}.phase-card.selected{background:#fff;border-color:#84adff;box-shadow:0 0 0 3px #eef4ff;opacity:1}.phase-toggle{display:flex;align-items:center;gap:8px;margin-bottom:13px}.phase-toggle strong{font-size:17px}.phase-toggle span{margin-right:auto;color:var(--muted);font-size:11px}.wizard-submit{display:flex;justify-content:space-between;align-items:center;gap:20px}.wizard-submit strong{display:block;font-size:13px}.wizard-submit small{display:block;color:var(--muted);margin-top:6px}.top-actions form{margin:0}.phase-card input:disabled{background:#eef1f5;color:#98a2b3}.print-only{display:none}@media(max-width:1100px){.client-check-grid{grid-template-columns:repeat(2,1fr)}.phase-grid{grid-template-columns:repeat(2,1fr)}}@media(max-width:620px){.client-check-grid,.phase-grid{grid-template-columns:1fr}.wizard-submit{align-items:stretch;flex-direction:column}.wizard-submit .btn{width:100%}}@media print{.print-only{display:block}.kpi-grid{grid-template-columns:repeat(4,1fr)!important}.panel{page-break-inside:avoid}}
.catalog-picker-panel{border-color:#c7d7fe;background:linear-gradient(180deg,#f8fbff,#fff)}.catalog-preview{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin-top:16px}.catalog-preview>div{border:1px solid var(--line);border-radius:11px;padding:12px;background:#fff}.catalog-preview span{display:block;color:var(--muted);font-size:10px;margin-bottom:6px}.catalog-preview strong{font-size:12px;white-space:normal}.student-selector-title{display:flex;justify-content:space-between;align-items:end;gap:12px;margin:20px 0 10px;padding-top:16px;border-top:1px solid var(--line)}.student-selector-title strong{font-size:13px}.student-selector-title b{color:#d92d20}.student-selector-title small{color:var(--muted);font-size:10px}.automation-result{padding:15px 19px}.automation-flow{display:flex;align-items:center;justify-content:center;gap:9px;flex-wrap:wrap;margin-bottom:14px;padding-bottom:14px;border-bottom:1px solid var(--line)}.automation-flow span{background:#eef4ff;color:#3538cd;border-radius:999px;padding:7px 11px;font-size:11px;font-weight:800}.automation-flow b{color:#98a2b3}.context-banner{padding:10px 13px;background:#eef4ff;color:#3538cd;border-radius:9px;margin-bottom:13px;font-size:12px}.btn.mini{padding:6px 9px;font-size:10px}.success-badge{background:#dcfae6!important;color:#067647!important}@media(max-width:850px){.catalog-preview{grid-template-columns:repeat(2,1fr)}}@media(max-width:520px){.catalog-preview{grid-template-columns:1fr}.student-selector-title{align-items:flex-start;flex-direction:column}}
/* Version 5: filtering, sorting, pagination, and specialization organization */
.filter-panel{display:grid;gap:12px;margin-bottom:15px;padding:14px;border:1px solid var(--line);border-radius:12px;background:#f9fbfd}.filter-search-row{display:flex;align-items:end;gap:10px;flex-wrap:wrap}.filter-field{display:grid;gap:5px;min-width:165px}.filter-field span{font-size:11px;font-weight:700;color:#667085}.filter-field input,.filter-field select{height:39px;border:1px solid var(--line);border-radius:9px;padding:0 10px;background:#fff;width:100%}.filter-field.search-field{flex:1;min-width:260px}.filter-field.primary-filter select{border-color:#84adff;background:#f8fbff;font-weight:700}.filter-field.compact-filter{min-width:110px}.filter-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.filter-summary{margin-right:auto;color:var(--muted);font-size:11px}.sort-link{display:flex;align-items:center;justify-content:space-between;gap:6px;color:inherit}.sort-link.active{color:#175cd3}.sort-muted{opacity:.35}.pagination{display:flex;align-items:center;justify-content:center;gap:12px;margin-top:15px}.page-btn{border:1px solid var(--line);background:#fff;border-radius:9px;padding:7px 13px;color:#344054;font-size:11px;font-weight:700}.page-btn.disabled{pointer-events:none;opacity:.4}.pagination span{font-size:11px;color:var(--muted)}.specialty-organizer{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:14px}.specialty-chip{display:inline-flex;align-items:center;gap:8px;border:1px solid var(--line);background:#fff;border-radius:999px;padding:8px 12px;color:#344054;font-size:11px;font-weight:700;box-shadow:var(--shadow)}.specialty-chip b{display:grid;place-items:center;min-width:22px;height:22px;padding:0 5px;border-radius:999px;background:#eef2f6;color:#475467}.specialty-chip.active{border-color:#84adff;background:#eef4ff;color:#3538cd}.specialty-chip.active b{background:#fff;color:#3538cd}@media(max-width:700px){.filter-field,.filter-field.search-field{min-width:100%;width:100%}.filter-summary{width:100%;margin:4px 0 0}.specialty-organizer{display:grid;grid-template-columns:1fr 1fr}.specialty-chip{justify-content:space-between}}
.inline-organizer{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-bottom:10px}.inline-organizer input,.inline-organizer select{height:38px;border:1px solid var(--line);border-radius:9px;padding:0 10px;background:#fff;min-width:220px}.inline-organizer input{flex:1}.filter-note{display:block;margin-top:6px;color:#b54708!important}.cascade-picker{align-items:end}@media(max-width:620px){.inline-organizer input,.inline-organizer select{width:100%;min-width:100%}}

/* Academic period / semester workspace (v5.2) */
.current-semester-box{margin:8px 10px 12px;padding:12px;border:1px solid rgba(255,255,255,.15);border-radius:12px;background:rgba(255,255,255,.06);display:flex;flex-direction:column;gap:3px}
.current-semester-box small{opacity:.72;font-size:11px}.current-semester-box strong{font-size:14px}.current-semester-box span{font-size:10px;opacity:.65;direction:ltr;text-align:right}
.topbar-period{margin-inline-start:auto}.topbar-period a{display:flex;flex-direction:column;text-decoration:none;padding:8px 12px;border:1px solid var(--border);border-radius:12px;background:#fff;color:var(--text);min-width:150px}.topbar-period small{font-size:10px;color:var(--muted)}.topbar-period strong{font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.semester-layout{align-items:start}.semester-card-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:14px}.semester-card{border:1px solid var(--border);border-radius:16px;padding:16px;background:#fff;box-shadow:0 4px 18px rgba(15,23,42,.04)}.semester-card.selected{outline:2px solid #2563eb;background:#f8fbff}.semester-card-head{display:flex;justify-content:space-between;align-items:flex-start;gap:10px}.semester-card-head>div{display:flex;flex-direction:column}.semester-card-head strong{font-size:17px}.semester-card-head small{color:var(--muted)}.semester-dates,.semester-stats{display:flex;flex-wrap:wrap;gap:8px;margin-top:13px}.semester-dates span,.semester-stats span{background:#f5f7fb;border-radius:9px;padding:7px 9px;font-size:12px}.semester-note{font-size:12px;color:var(--muted);margin:12px 0 0}.semester-actions{display:flex;gap:8px;margin-top:14px}.semester-actions form{margin:0}.semester-create-panel{position:sticky;top:18px}.single-column-form{grid-template-columns:1fr}.single-column-form .form-field{grid-column:1}.single-column-form button{width:100%;justify-content:center}
.semester-price-form .panel-head{position:sticky;top:0;z-index:3;background:#fff;padding-block:10px}.price-table{min-width:1050px}.price-table input{width:100%;min-width:90px}.price-table .price-input{font-variant-numeric:tabular-nums;text-align:center}.table-subtext{display:block;color:var(--muted);font-size:10px;margin-top:4px}.import-client-grid{max-height:58vh;overflow:auto;padding:4px}
@media(max-width:900px){.topbar-period{display:none}.semester-create-panel{position:static}.semester-layout{grid-template-columns:1fr}}

/* v5.2.1 — safe master-data archiving */
.master-data-note {
  margin: 0 0 16px;
  padding: 13px 16px;
  border: 1px solid #cbdcf5;
  border-radius: 14px;
  background: #eef5ff;
  color: #173f75;
  font-weight: 700;
  line-height: 1.7;
}
.icon-btn.archive { color: #9a5b00; background: #fff4dc; border-color: #f0d39b; }
.icon-btn.locked { cursor: help; opacity: .72; background: #f1f3f6; border-color: #d8dde5; }

/* v5.2.2 — course-as-project pricing */
.course-price-table .course-code-cell {font-size:1.05rem;letter-spacing:.02em;color:#0f2d5c}
.course-price-table .price-input {min-width:92px;text-align:center;font-weight:700}
.course-price-table td:first-child {background:#f7faff}

/* v5.2.4 — reliable student search, PD price transfer, and pricing-table organization */
.student-organizer .filter-summary{margin-right:0;white-space:nowrap}.student-search-empty{margin:8px 0 12px}.price-import-status{margin:0 0 14px;padding:11px 13px;border:1px solid #84adff;border-radius:10px;background:#eef4ff;color:#175cd3;font-size:11px;font-weight:700}.table-sort-button{appearance:none;border:0;background:transparent;color:inherit;font:inherit;font-weight:700;padding:0;cursor:pointer;width:100%;text-align:right}.table-sort-button:hover{color:#175cd3}.price-pagination{display:flex;align-items:center;justify-content:center;gap:12px;margin-top:14px}.price-pagination span{font-size:11px;color:var(--muted)}.course-price-table tbody tr[aria-hidden="true"]{display:none}.course-price-table .price-course-row{transition:background .12s}.course-price-table .price-course-row:hover{background:#f8fbff}@media(max-width:700px){.student-organizer .filter-summary{width:100%}.price-pagination{justify-content:space-between}}


/* v5.2.5 — professional UI refresh */

:root{
  --bg:#eef4fb;
  --panel:#ffffff;
  --ink:#0f172a;
  --muted:#64748b;
  --line:#dbe5f0;
  --primary:#1d4ed8;
  --primary-2:#3b82f6;
  --nav:#0f172a;
  --nav2:#16233b;
  --border:var(--line);
  --text:var(--ink);
  --radius:18px;
  --shadow:0 12px 32px rgba(15,23,42,.08);
  --shadow-soft:0 8px 20px rgba(15,23,42,.06);
}
html,body{background:radial-gradient(circle at top right,#f6faff,transparent 24%),linear-gradient(180deg,#f8fbff 0%,var(--bg) 100%)}
body{font-family:"Segoe UI",Tahoma,Arial,sans-serif;letter-spacing:.01em}
.app-shell{grid-template-columns:292px 1fr}
.sidebar{padding:20px 16px 16px;background:linear-gradient(180deg,#0b1220 0%,#101a2d 48%,#0f172a 100%);box-shadow:18px 0 40px rgba(2,6,23,.18)}
.brand{padding:4px 8px 22px;gap:14px}
.brand-mark,.login-logo{width:52px;height:52px;border-radius:16px;background:linear-gradient(135deg,#ffffff22,#ffffff08);border:1px solid rgba(255,255,255,.08);overflow:hidden;box-shadow:inset 0 1px 0 rgba(255,255,255,.07)}
.brand-mark img,.login-logo img{width:100%;height:100%;display:block}
.brand-copy strong{font-size:15px;line-height:1.5}
.brand-copy small{font-size:11px;color:#9fb0c7}
.sidebar nav{gap:6px;padding-top:14px}
.nav-link{display:flex;align-items:center;gap:12px;padding:11px 12px;border:1px solid transparent;border-radius:14px;font-weight:700;transition:.18s ease;color:#cfdae8}
.nav-link:hover{transform:translateX(-2px);border-color:rgba(255,255,255,.06);background:rgba(255,255,255,.05)}
.nav-link.active{background:linear-gradient(180deg,#172743,#13233b);border-color:rgba(97,166,255,.18);color:#fff;box-shadow:inset 0 1px 0 rgba(255,255,255,.05)}
.nav-icon{width:34px;height:34px;border-radius:12px;display:grid;place-items:center;background:rgba(255,255,255,.06);border:1px solid rgba(255,255,255,.06);flex:0 0 34px}
.nav-link.active .nav-icon{background:linear-gradient(135deg,#2E90FA,#175CD3);border-color:transparent;box-shadow:0 10px 18px rgba(23,92,211,.32)}
.nav-icon svg{width:18px;height:18px;display:block}
.nav-label{line-height:1.35}
.current-semester-box{margin:12px 8px 10px;padding:14px 14px 12px;border:1px solid rgba(93,166,255,.18);background:linear-gradient(180deg,rgba(46,144,250,.14),rgba(255,255,255,.05));border-radius:16px;box-shadow:var(--shadow-soft)}
.current-semester-box strong{font-size:15px}
.sidebar-footer{padding-top:16px;gap:10px}
.sidebar-footer span{color:#e2e8f0;font-weight:700}
.sidebar-footer a{display:block;padding:8px 10px;border-radius:10px;background:rgba(255,255,255,.03);color:#9fc5ff}
.main-content{padding:26px 30px 32px}
.topbar{position:sticky;top:0;z-index:5;background:rgba(248,251,255,.78);backdrop-filter:blur(14px);padding:14px 0 18px;margin:-8px 0 20px;border-bottom:1px solid rgba(219,229,240,.75)}
.topbar h1{font-size:30px;font-weight:800;letter-spacing:-.015em}
.topbar p{font-size:13px;color:#6b7280}
.topbar-period a{border:1px solid #d9e4f2;box-shadow:var(--shadow-soft);background:#fff}
.menu-btn{width:44px;height:44px;padding:0;display:none;align-items:center;justify-content:center;flex-direction:column;gap:4px;border:1px solid #d7e3f1;background:#fff;box-shadow:var(--shadow-soft)}
.menu-btn span{display:block;width:18px;height:2px;background:#22314c;border-radius:999px}
.btn{gap:8px;border-radius:12px;padding:10px 16px;box-shadow:var(--shadow-soft);transition:.18s ease;font-size:13px}
.btn:hover{transform:translateY(-1px)}
.btn.primary{background:linear-gradient(135deg,#2563eb,#1d4ed8)}
.btn.secondary{background:#eff6ff;color:#1d4ed8;border-color:#bfdbfe}
.btn.dark{background:linear-gradient(135deg,#1f2937,#111827)}
.btn.ghost{background:#fff}
.flash{border:1px solid transparent;box-shadow:var(--shadow-soft)}
.panel{border:none;border-radius:22px;padding:20px 20px 18px;box-shadow:var(--shadow)}
.panel-head{margin-bottom:18px}
.panel-head h2{font-size:18px}
.kpi-card{border:none;border-radius:18px;padding:18px 18px 16px;box-shadow:var(--shadow-soft)}
.kpi-card span{font-size:11px;text-transform:none}
.kpi-card strong{font-size:28px}
.filter-bar,.filter-panel{border:none;box-shadow:var(--shadow-soft);border-radius:18px;background:linear-gradient(180deg,#fbfdff,#f6f9fd)}
.filter-panel{padding:16px}
.filter-field input,.filter-field select,.filter-bar input,.filter-bar select,.form-field input,.form-field select,.form-field textarea,.settings-form input,.login-form input,.inline-organizer input,.inline-organizer select{border-radius:12px;border:1px solid #d8e2ee;background:#fff;min-height:42px;transition:border-color .15s, box-shadow .15s, background .15s}
.filter-field input:focus,.filter-field select:focus,.filter-bar input:focus,.filter-bar select:focus,.inline-organizer input:focus,.inline-organizer select:focus,.form-field input:focus,.form-field select:focus,.form-field textarea:focus,.settings-form input:focus,.login-form input:focus{border-color:#93c5fd;box-shadow:0 0 0 4px rgba(59,130,246,.10)}
.table-wrap{border:none;border-radius:18px;box-shadow:var(--shadow-soft);overflow:auto;background:#fff}
table{min-width:820px}
th,td{padding:13px 12px;font-size:12.5px;border-bottom:1px solid #edf2f7}
th{background:linear-gradient(180deg,#f9fbff,#f2f7fd);color:#334155;font-size:12px;letter-spacing:.01em}
tr:nth-child(even) td{background:#fcfdff}
tr:hover td{background:#f5f9ff}
.total-row td{background:#f0f6ff!important}
.badge{padding:5px 10px;font-size:10.5px;border-radius:999px}
.actions-cell{gap:7px}
.icon-btn{width:34px;height:34px;border-radius:10px;box-shadow:0 4px 10px rgba(15,23,42,.04)}
.icon-btn:hover{border-color:#93c5fd;color:#1d4ed8}
.record-count{margin-top:12px;font-size:11px}
.data-form,.settings-form{gap:18px}
.form-field span,.settings-form span{font-size:12px;color:#1f2937}
.form-field small,.settings-form small{font-size:10.5px}
.form-actions{padding-top:10px;gap:10px}
.login-page{background:radial-gradient(circle at top right,#dbeafe 0,transparent 30%),radial-gradient(circle at bottom left,#e0f2fe 0,transparent 26%),linear-gradient(180deg,#eff6ff,#f8fbff)}
.login-card{border:none;border-radius:28px;box-shadow:0 24px 70px rgba(15,23,42,.12);padding:36px;background:rgba(255,255,255,.94);backdrop-filter:blur(14px)}
.login-logo{width:68px;height:68px;margin:auto;box-shadow:0 14px 30px rgba(37,99,235,.20)}
.login-card h1{font-size:22px;font-weight:800}
.login-card>p{font-size:13px}
.login-hint{border:1px dashed #d9e4f2;background:#f8fbff;border-radius:12px}
.compact-list>a,.semester-card,.specialty-chip,.check-card,.phase-card,.catalog-preview>div,.semester-price-form .panel-head{box-shadow:var(--shadow-soft)}
.specialty-chip,.check-card,.phase-card,.catalog-preview>div{border-radius:14px}
.phase-card.selected,.check-card:hover{box-shadow:0 0 0 4px rgba(59,130,246,.08), var(--shadow-soft)}
.page-btn,.specialty-chip,.filter-actions .btn,.topbar-period a{transition:.18s ease}
.page-btn:hover,.specialty-chip:hover{transform:translateY(-1px)}
.table-sort-button{font-weight:800}
.price-import-status{border:none;background:#eff6ff;color:#1d4ed8;border-radius:14px}
@media(max-width:900px){
  .app-shell{grid-template-columns:1fr}
  .sidebar{right:-320px;width:292px}
  .main-content{padding:18px}
  .menu-btn{display:inline-flex}
  .topbar{padding-top:8px}
}
@media(max-width:580px){
  .panel{padding:16px}
  .topbar h1{font-size:23px}
  th,td{padding:11px 10px}
}

/* v5.3.0 — users, roles, permissions, and security administration */
.icon-sprite{position:absolute;width:0;height:0;overflow:hidden}
.nav-icon svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.signed-role{display:block;color:#94a3b8;font-size:10px;margin-top:4px;font-weight:500}
.permission-role-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
.role-choice{display:flex;align-items:flex-start;gap:10px;border:1px solid var(--line);border-radius:14px;padding:13px;background:#fff;cursor:pointer;transition:.15s}
.role-choice:hover{border-color:#93c5fd;background:#f8fbff}
.role-choice input{width:auto;min-height:auto;margin-top:3px}
.role-choice strong{display:block;font-size:12px}.role-choice small{display:block;font-size:10px;color:var(--muted);margin-top:5px;line-height:1.55}
.inline-reset-form{display:grid;grid-template-columns:1fr 1fr auto;gap:10px}
.inline-reset-form input{border:1px solid #d8e2ee;border-radius:12px;padding:10px 12px;min-height:42px}
.danger-zone{border:1px solid #fed7d7;background:linear-gradient(180deg,#fff,#fffafa)}
.role-card-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:16px}
.role-card{background:#fff;border:1px solid var(--line);border-radius:20px;padding:18px;box-shadow:var(--shadow-soft)}
.role-card-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}
.role-card-head strong{display:block;font-size:17px}.role-card-head small{display:block;color:var(--muted);font-family:Consolas,monospace;margin-top:5px}
.role-card p{color:var(--muted);font-size:12px;line-height:1.8;min-height:42px}
.role-stats{display:flex;gap:10px;margin:14px 0}.role-stats span{background:#f4f7fb;border-radius:11px;padding:9px 12px;font-size:11px}.role-stats b{font-size:16px;margin-left:4px;color:#1d4ed8}
.role-actions{display:flex;gap:8px;align-items:center}.role-actions form{margin:0}
.permission-toolbar{display:flex;gap:8px;flex-wrap:wrap}
.permission-groups{display:grid;gap:16px}
.permission-group{border:1px solid var(--line);border-radius:17px;overflow:hidden;background:#fbfdff}
.permission-group-head{display:flex;align-items:center;justify-content:space-between;padding:14px 16px;background:linear-gradient(180deg,#f8fbff,#f1f6fc);border-bottom:1px solid var(--line)}
.permission-group-head strong{display:block;font-size:14px}.permission-group-head small{display:block;color:var(--muted);font-size:10px;margin-top:3px}.permission-group-head label{font-size:11px;font-weight:700;color:#475569}
.permission-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:0}
.permission-item{display:flex;gap:10px;padding:13px 14px;border-left:1px solid #edf2f7;border-bottom:1px solid #edf2f7;background:#fff;cursor:pointer}
.permission-item:hover{background:#f8fbff}.permission-item input{margin-top:3px}.permission-item strong{display:block;font-size:11.5px}.permission-item small{display:block;color:#94a3b8;font-family:Consolas,monospace;font-size:9px;margin-top:4px;direction:ltr;text-align:right}
.access-denied{text-align:center;max-width:620px;margin:8vh auto;padding:45px}.access-denied-icon{width:76px;height:76px;border-radius:24px;background:#eff6ff;display:grid;place-items:center;font-size:34px;margin:0 auto 18px}.access-denied h2{font-size:23px}.access-denied p{color:var(--muted);line-height:1.8;margin-bottom:22px}
.audit-detail{white-space:normal;min-width:260px;max-width:520px;line-height:1.65}.audit-device{font-size:10px;color:var(--muted)}
@media(max-width:1050px){.permission-grid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:700px){.permission-role-grid,.permission-grid{grid-template-columns:1fr}.inline-reset-form{grid-template-columns:1fr}.role-card-grid{grid-template-columns:1fr}.permission-group-head{align-items:flex-start;flex-direction:column;gap:10px}}
.audit-lock-note{margin:0 0 14px;padding:11px 14px;border-radius:13px;background:#eff6ff;color:#1e40af;font-size:11px;font-weight:700}
.audit-detail details{margin-top:8px}.audit-detail summary{cursor:pointer;color:#1d4ed8;font-weight:700}.audit-json{margin-top:8px}.audit-json pre{direction:ltr;text-align:left;white-space:pre-wrap;word-break:break-word;background:#0f172a;color:#dbeafe;padding:10px;border-radius:10px;max-height:220px;overflow:auto;font-size:9px}
.restore-form{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.restore-form input[type=file]{flex:1;min-width:260px;border:1px dashed #f59e0b;border-radius:12px;padding:12px;background:#fffbeb}
.single-panel-grid{grid-template-columns:1fr}

/* v5.3.6 — legacy Excel import */
.excel-import-hero{background:linear-gradient(135deg,#f7fbff,#fff);border:1px solid #dbeafe}
.excel-upload-form{display:flex;align-items:center;gap:14px;flex-wrap:wrap}
.file-drop{flex:1;min-width:320px;display:grid;grid-template-columns:auto 1fr;column-gap:14px;align-items:center;border:1.5px dashed #93c5fd;border-radius:18px;padding:18px;background:#f8fbff;cursor:pointer;transition:.18s}
.file-drop:hover{border-color:#2563eb;background:#eff6ff}
.file-drop-icon{grid-row:1/3;display:grid;place-items:center;width:58px;height:58px;border-radius:16px;background:linear-gradient(135deg,#16a34a,#15803d);color:#fff;font-size:12px;font-weight:900;letter-spacing:.04em;box-shadow:0 10px 20px rgba(22,163,74,.18)}
.file-drop strong{font-size:14px}.file-drop small{color:var(--muted);font-size:11px;margin-top:4px}.file-drop input{grid-column:1/-1;margin-top:12px;width:100%;font-size:11px}
.excel-import-kpis{margin-top:4px}.excel-warning-panel{border-inline-start:5px solid #f59e0b}.import-warning-list{margin:0;padding:0 20px 0 0;display:grid;gap:8px;color:#92400e;font-size:12px;line-height:1.7}
.import-option-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.import-option-grid .check-card{min-height:88px}.import-option-grid input{width:18px;height:18px;accent-color:#2563eb}
.import-safety-note{margin:16px 0;padding:14px 16px;border-radius:14px;background:#ecfdf3;border:1px solid #a7f3d0;color:#166534;font-size:12px;line-height:1.7}
.import-confirm-form button:disabled{opacity:.45;cursor:not-allowed;transform:none}
@media(max-width:760px){.excel-upload-form{align-items:stretch;flex-direction:column}.file-drop{min-width:100%;width:100%}.excel-upload-form .btn{width:100%}.import-option-grid{grid-template-columns:1fr}}


/* v5.3.7 — responsive loading feedback */
.app-loading{position:fixed;inset:0;z-index:9999;display:grid;place-items:center;background:rgba(239,246,255,.72);backdrop-filter:blur(5px);opacity:0;visibility:hidden;transition:opacity .15s ease,visibility .15s ease}
.app-loading.show{opacity:1;visibility:visible}
.loading-card{min-width:220px;padding:24px 30px;border:1px solid rgba(148,163,184,.28);border-radius:20px;background:#fff;box-shadow:0 24px 70px rgba(15,23,42,.16);display:flex;flex-direction:column;align-items:center;gap:7px;color:#0f172a}
.loading-card strong{font-size:14px}.loading-card small{font-size:11px;color:#64748b}
.loading-spinner{width:36px;height:36px;margin-bottom:5px;border:4px solid #dbeafe;border-top-color:#2563eb;border-radius:50%;animation:eo-spin .75s linear infinite}
@keyframes eo-spin{to{transform:rotate(360deg)}}
@media(prefers-reduced-motion:reduce){.loading-spinner{animation-duration:1.5s}}


/* v5.4.0 — administrative task management */
.view-switcher{display:flex;align-items:center;padding:4px;border:1px solid var(--line);border-radius:13px;background:#fff;box-shadow:var(--shadow-soft)}
.view-switcher a{padding:7px 12px;border-radius:9px;color:#64748b;font-size:11px;font-weight:800}.view-switcher a.active{background:#1d4ed8;color:#fff;box-shadow:0 6px 15px rgba(29,78,216,.22)}
.task-kpis{grid-template-columns:repeat(5,minmax(0,1fr))}.task-filter{margin:0}.kanban-board{display:grid;grid-template-columns:repeat(6,minmax(265px,1fr));gap:14px;overflow-x:auto;padding:2px 2px 18px;direction:rtl}
.kanban-column{min-width:265px;background:#edf3fa;border:1px solid #dbe5f0;border-radius:18px;padding:10px;min-height:380px;transition:.18s}.kanban-column.drag-over{background:#dbeafe;border-color:#60a5fa;box-shadow:0 0 0 4px rgba(59,130,246,.10)}
.kanban-column>header{display:flex;align-items:center;gap:8px;padding:7px 5px 12px}.kanban-column>header strong{font-size:12px}.kanban-column>header b{margin-right:auto;display:grid;place-items:center;min-width:24px;height:24px;border-radius:999px;background:#fff;color:#475569;font-size:10px}
.status-dot{width:9px;height:9px;border-radius:50%;display:inline-block;flex:0 0 9px}.status-dot.slate,.task-status.slate{background:#e2e8f0;color:#475569}.status-dot.blue,.task-status.blue{background:#dbeafe;color:#1d4ed8}.status-dot.purple,.task-status.purple{background:#ede9fe;color:#6d28d9}.status-dot.orange,.task-status.orange{background:#ffedd5;color:#c2410c}.status-dot.green,.task-status.green{background:#dcfce7;color:#15803d}.status-dot.gray,.task-status.gray{background:#e5e7eb;color:#4b5563}
.kanban-cards{display:grid;gap:9px;align-content:start}.task-card{background:#fff;border:1px solid #e2e8f0;border-radius:15px;padding:12px;box-shadow:0 7px 16px rgba(15,23,42,.05);cursor:grab;transition:.16s}.task-card:hover{transform:translateY(-2px);box-shadow:0 12px 24px rgba(15,23,42,.09)}.task-card.dragging{opacity:.45;transform:rotate(2deg)}
.task-card-top,.task-card-meta,.task-card-foot,.task-hero-row{display:flex;align-items:center;gap:7px}.task-card-top small{margin-right:auto;color:#94a3b8;font-size:9px}.task-title{display:block;color:#0f172a;font-weight:800;font-size:12.5px;line-height:1.55;margin:10px 0 6px;white-space:normal}.task-project{display:block;color:#2563eb;font-size:10px;white-space:normal;margin-bottom:9px}
.priority-pill{display:inline-flex;padding:4px 8px;border-radius:999px;font-size:9.5px;font-weight:800}.priority-pill.red{background:#fee2e2;color:#b91c1c}.priority-pill.orange{background:#ffedd5;color:#c2410c}.priority-pill.blue{background:#dbeafe;color:#1d4ed8}.priority-pill.gray{background:#e5e7eb;color:#4b5563}
.task-progress{height:6px;background:#edf2f7;border-radius:999px;overflow:hidden;position:relative}.task-progress i,.inline-progress i{display:block;height:100%;background:linear-gradient(90deg,#2563eb,#38bdf8);border-radius:inherit}.task-progress.large{height:10px;margin-top:18px}.task-progress.large b{position:absolute;left:0;top:-22px;font-size:10px;color:#64748b}
.task-card-meta{justify-content:space-between;margin-top:9px;color:#64748b;font-size:9.5px}.task-card-meta .overdue{color:#dc2626;font-weight:800}.task-card-foot{border-top:1px solid #edf2f7;margin-top:10px;padding-top:9px;color:#94a3b8;font-size:9px}.task-card-foot b{margin-right:auto;color:#334155}.kanban-empty{text-align:center;padding:20px 5px;color:#94a3b8;font-size:10px;border:1px dashed #cbd5e1;border-radius:12px}
.inline-progress{min-width:120px;height:8px;background:#e5e7eb;border-radius:999px;position:relative;overflow:visible}.inline-progress span{position:absolute;left:0;top:11px;font-size:9px;color:#64748b}.task-list-table td{vertical-align:middle}
.task-calendar{padding:10px}.calendar-agenda{display:grid;gap:14px}.agenda-day{border:1px solid var(--line);border-radius:16px;overflow:hidden}.agenda-day>header{display:flex;justify-content:space-between;padding:12px 15px;background:#f5f9ff}.agenda-day>header span{font-size:10px;color:#64748b}.agenda-day>div{display:grid}.agenda-day a{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:10px;padding:12px 15px;border-top:1px solid #edf2f7;color:#0f172a}.agenda-day a small{color:#64748b;font-size:10px}
.task-form-panel{max-width:1120px}.task-general-toggle{display:flex!important;grid-template-columns:auto 1fr;align-items:center;background:#f8fbff;border:1px solid #dbeafe;border-radius:13px;padding:12px}.task-general-toggle input{width:auto;min-height:auto}.task-detail-grid{display:grid;grid-template-columns:minmax(0,1fr) 340px;gap:18px;align-items:start}.task-detail-grid>aside{position:sticky;top:100px}.task-hero p{white-space:pre-wrap;line-height:1.9;color:#475569}.task-tags{font-size:10px;color:#64748b;background:#f1f5f9;padding:5px 9px;border-radius:999px}
.checklist-list{display:grid;gap:7px}.checklist-row{display:flex;align-items:center;gap:10px;border:1px solid #edf2f7;border-radius:12px;padding:9px 10px}.checklist-row.done span{text-decoration:line-through;color:#94a3b8}.checklist-row form:last-child{margin-right:auto}.check-circle{width:26px;height:26px;border-radius:50%;border:1.5px solid #93c5fd;background:#fff;color:#16a34a;cursor:pointer;font-weight:900}.checklist-row.done .check-circle{background:#dcfce7;border-color:#22c55e}
.inline-task-form{display:flex;gap:9px;margin-top:13px}.inline-task-form input{flex:1;border:1px solid #d8e2ee;border-radius:12px;padding:10px 12px}.comment-form textarea{width:100%;border:1px solid #d8e2ee;border-radius:14px;padding:12px;margin-bottom:9px}.comment-list{display:grid;gap:10px;margin-top:16px}.comment-list article{border:1px solid #edf2f7;border-radius:14px;padding:12px;background:#fbfdff}.comment-list article>div{display:flex;justify-content:space-between}.comment-list time{font-size:9px;color:#94a3b8}.comment-list p{margin:8px 0 0;white-space:pre-wrap;line-height:1.7;color:#475569;font-size:12px}
.task-side-meta h2,.linked-record h2{font-size:15px;margin-top:0}.task-side-meta dl{display:grid;grid-template-columns:90px 1fr;gap:12px 8px;font-size:11px}.task-side-meta dt{color:#64748b}.task-side-meta dd{margin:0;font-weight:700}.quick-status-form{display:grid;gap:10px;margin-top:18px;padding-top:16px;border-top:1px solid #edf2f7}.quick-status-form label{display:grid;gap:5px;font-size:10px;color:#64748b}.quick-status-form select,.quick-status-form input{border:1px solid #d8e2ee;border-radius:10px;padding:9px}.linked-record a{display:block;padding:12px;border-radius:13px;background:#eff6ff}.linked-record small{display:block;margin-top:6px;color:#64748b}.attachment-form{display:grid;gap:9px}.attachment-form input{border:1px dashed #93c5fd;border-radius:12px;padding:10px;font-size:10px}.attachment-list{display:grid;gap:7px;margin-top:12px}.attachment-list a{display:flex;gap:9px;align-items:center;border:1px solid #edf2f7;border-radius:12px;padding:9px}.attachment-list strong{display:block;font-size:10px;max-width:220px;overflow:hidden;text-overflow:ellipsis}.attachment-list small{display:block;font-size:9px;color:#94a3b8;margin-top:3px}
.task-settings-grid{grid-template-columns:1fr 1fr}.workspace-card-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:13px}.workspace-card{position:relative;border:1px solid var(--line);border-radius:17px;padding:15px;background:#fff;box-shadow:var(--shadow-soft)}.workspace-card:before{content:"";position:absolute;right:0;top:0;width:5px;height:100%;background:var(--workspace-color);border-radius:0 17px 17px 0}.workspace-card>div{padding-right:6px}.workspace-card strong{display:block}.workspace-card small{display:block;color:#64748b;margin-top:5px;font-size:10px}.workspace-card p{font-size:11px}.workspace-card.inactive{opacity:.55}.list-color{display:inline-block;width:10px;height:10px;border-radius:50%;margin-left:7px}.panel-actions{display:flex;gap:8px}.panel-actions form{margin:0}
@media(max-width:1200px){.task-kpis{grid-template-columns:repeat(3,1fr)}.kanban-board{grid-template-columns:repeat(6,280px)}}
@media(max-width:900px){.task-detail-grid{grid-template-columns:1fr}.task-detail-grid>aside{position:static}.task-settings-grid{grid-template-columns:1fr}.task-kpis{grid-template-columns:repeat(2,1fr)}}
@media(max-width:580px){.task-kpis{grid-template-columns:1fr}.view-switcher{width:100%;justify-content:center}.inline-task-form{flex-direction:column}}

.dashboard-task-summary{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin-bottom:14px}.dashboard-task-summary a{display:flex;align-items:center;justify-content:space-between;border:1px solid #e2e8f0;background:#f8fbff;border-radius:13px;padding:11px 13px;color:#475569;font-size:10px}.dashboard-task-summary b{font-size:20px;color:#0f172a}.dashboard-task-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.dashboard-task-list>a{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:9px;border:1px solid #edf2f7;border-radius:13px;padding:10px;color:#0f172a}.dashboard-task-list strong{display:block;font-size:11px}.dashboard-task-list small{display:block;color:#64748b;font-size:9px;margin-top:3px}@media(max-width:760px){.dashboard-task-summary{grid-template-columns:repeat(2,1fr)}.dashboard-task-list{grid-template-columns:1fr}}
.status-dot.red{background:#ef4444}


/* v5.4.2 — project-number layout protection */
.strong-link{overflow-wrap:anywhere;word-break:break-word}
td a.strong-link{max-width:100%;display:inline-block}
