/* System fonts only to avoid render-blocking external font requests on slow networks */

/* =============================================
   WIROTAMAN THEME v2 – Purple / Pink Modern UI
   ============================================= */
/* Color tokens (dark default for OLED) */
:root{
	--bg:#0f0a17; /* deep violet/indigo */
	--safe-bottom: env(safe-area-inset-bottom,0px);
	--bg-alt:#151022;
	--fg:#f5f3f7;
	--fg-soft:#e2d9ee;
	--muted:#b5aac6;
	--primary:#8b5cf6; /* violet-500 */
	--primary-rgb:139,92,246;
	--primary-accent:#ec4899; /* pink-500 */
	--primary-accent-rgb:236,72,153;
	--primary-600:#7c3aed;
	--gradient:linear-gradient(100deg,#7c3aed 0%,#a855f7 35%,#ec4899 85%);
	--gradient-soft:linear-gradient(140deg,rgba(139,92,246,.18),rgba(236,72,153,.12));
	--card:#1d1530;
	--card-alt:#241a3b;
	--border:#2f214c;
	--danger:#ef4444;
	--warn:#f59e0b;
	--warning-rgb:245,158,11;
	--success:#10b981;
	--success-rgb:16,185,129;
	--muted-rgb:181,170,198;
	--focus:#c084fc;
	--shadow-color:240 50% 3%;
}
/* Standalone PWA tweaks: hilangkan footer landing agar tidak terlihat seperti splash tambahan */
body.is-standalone .admin-landing-footer{display:none;}
body.is-standalone #main{padding-bottom:calc(70px + var(--safe-bottom));}
body.is-standalone .ribbon-container{margin-bottom:32px;}
/* KAIH journal list extras */
.kaih-journal-card:hover{transform:translateY(-4px);box-shadow:0 8px 20px -10px rgba(0,0,0,.35),0 4px 10px -6px rgba(var(--primary-rgb),.45);}
.kaih-journal-card:active{transform:translateY(-1px);}
.pulse{animation:pulseGlow 1.2s ease-in-out 0s 2;}
@keyframes pulseGlow{0%{box-shadow:0 0 0 0 rgba(var(--primary-rgb),.65);}70%{box-shadow:0 0 0 12px rgba(var(--primary-rgb),0);}100%{box-shadow:0 0 0 0 rgba(var(--primary-rgb),0);}}
/* Mini footer */
.mini-footer{margin:40px 0 100px;font-size:.62rem;letter-spacing:.6px;color:var(--muted);text-align:center;opacity:.75}
.mini-footer a{color:var(--primary);text-decoration:none;font-weight:600}
.mini-footer a:hover{text-decoration:underline}
/* Bright Light Theme (Admin) */
.bright-theme{ /* override CSS vars for a fresh light, vibrant palette */
	--bg:#f5f7fb;
	--bg-alt:#ffffff;
	--fg:#1f2532;
	--fg-soft:#334155;
	--muted:#64748b;
	--primary:#6366f1; /* indigo-500 */
	--primary-rgb:99,102,241;
	--primary-600:#4f46e5;
	--primary-accent:#f59e0b; /* amber-500 */
	--primary-accent-rgb:245,158,11;
	--gradient:linear-gradient(115deg,#6366f1 0%,#8b5cf6 30%,#f59e0b 95%);
	--gradient-soft:linear-gradient(140deg,rgba(99,102,241,.18),rgba(245,158,11,.15));
	--card:#ffffff;
	--card-alt:#f1f5f9;
	--border:#e2e8f0;
	--focus:#818cf8;
	--shadow-color:220 25% 75%;
}
.bright-theme .card{background:linear-gradient(180deg,var(--card) 0%,var(--card-alt) 120%);box-shadow:0 4px 24px -6px rgba(99,102,241,.18),0 2px 6px -2px rgba(0,0,0,.06);} 
.bright-theme .glass{background:rgba(255,255,255,.72);backdrop-filter:blur(18px) saturate(160%);border:1px solid rgba(99,102,241,.25);} 
.bright-theme .login-bg{background:radial-gradient(circle at 25% 25%,rgba(99,102,241,.28),transparent 60%),radial-gradient(circle at 80% 70%,rgba(245,158,11,.28),transparent 65%),linear-gradient(130deg,#eef2ff,#fafaf9);} 
.bright-theme .logo-ring{background:linear-gradient(135deg,#6366f1,#f59e0b);} 
.bright-theme .benefits li{background:rgba(99,102,241,.10);border:1px solid rgba(99,102,241,.25);} 
.bright-theme .menu-card{background:var(--card-alt);border:1px solid var(--border);} 
.bright-theme .menu-card:hover{background:linear-gradient(140deg,rgba(99,102,241,.18),rgba(245,158,11,.18));}
.bright-theme .menu-card.active{background:linear-gradient(155deg,#6366f1 0%,#f59e0b 95%);}
.bright-theme .bottom-nav{background:rgba(241,245,249,.9);backdrop-filter:blur(14px);}
.bright-theme .input, .bright-theme textarea.input{background:#ffffff;border:1px solid var(--border);box-shadow:none}
.bright-theme .input:focus{box-shadow:0 0 0 3px rgba(99,102,241,.25);}
.bright-theme .mini-btn{background:var(--card-alt);border:1px solid var(--border);} 
.bright-theme .mini-btn:hover{background:rgba(99,102,241,.12);} 
.bright-theme .toast{box-shadow:0 8px 28px -8px rgba(99,102,241,.35);} 
.bright-theme .modal{background:linear-gradient(160deg,#ffffff,#f1f5f9);border-color:var(--border);} 
@media (prefers-color-scheme: light){
	:root{
		--bg:#faf7fc;--bg-alt:#f3eefe;--fg:#1e1230;--fg-soft:#3b2c55;--muted:#6b5a82;--primary:#7c3aed;--primary-rgb:124,58,237;--primary-accent:#db2777;--primary-accent-rgb:219,39,119;--primary-600:#6d28d9;--gradient:linear-gradient(100deg,#7c3aed 0%,#a855f7 40%,#db2777 90%);--gradient-soft:linear-gradient(140deg,rgba(124,58,237,.14),rgba(219,39,119,.10));--card:#ffffff;--card-alt:#f6f1fe;--border:#e3d9f5;--focus:#a855f7;--shadow-color:270 25% 85%;
	}
}
*{box-sizing:border-box}
html,body{height:100%}
body{margin:0;font-family:system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Ubuntu,"Helvetica Neue",Arial,sans-serif;background:var(--bg);color:var(--fg);-webkit-font-smoothing:antialiased;accent-color:var(--primary)}
/* Menu icon images (public + admin) */
.menu-icon-img, .icon-7kaih-img { width: 1.2rem; height: 1.2rem; object-fit: cover; display: inline-block; vertical-align: -2px; border-radius: 4px; }
.bottom-nav .icon img.menu-icon-img, .bottom-nav .icon .icon-7kaih-img { width: 1.2rem; height: 1.2rem; border-radius: 4px; }
.v2-menu-tree .menu-icon img.menu-icon-img { width: 1rem; height: 1rem; }
.modern-menu-card .card-icon img.menu-icon-img { width: 1.6rem; height: 1.6rem; border-radius: 6px; }

/* Generic modal styles (KAIH login) */
.modal-backdrop{position:fixed;inset:0;display:flex;align-items:center;justify-content:center;background:rgba(15,10,23,.72);backdrop-filter:blur(10px) saturate(160%);z-index:1000;padding:20px;animation:fadeIn .25s ease;}
.modal{max-width:380px;width:100%;background:linear-gradient(160deg,var(--card),var(--card-alt));border:1px solid var(--border);border-radius:24px;padding:24px 26px;box-shadow:0 22px 60px -18px rgba(0,0,0,.65),0 4px 18px -6px rgba(var(--primary-rgb),.45);position:relative;}
.modal h3{margin:0 0 12px;font-size:1.2rem;font-weight:700;letter-spacing:.5px;background:linear-gradient(90deg,var(--primary),var(--primary-accent));-webkit-background-clip:text;background-clip:text;color:transparent;}
.modal label{display:block;font-size:.65rem;font-weight:600;letter-spacing:.4px;margin:8px 0 4px;opacity:.85;text-transform:uppercase}
.modal .input{width:100%;}
.modal .btn{flex:1;}
@media (max-width:520px){
  .modal{padding:22px 20px;border-radius:20px;}
}
/* Org Chart (Struktur Organisasi) */
.org-chart{margin:10px 0 34px;display:flex;flex-direction:column;gap:34px;position:relative;}
.org-chart .org-top{display:flex;flex-wrap:wrap;justify-content:center;gap:20px;position:relative;}
.org-chart .org-level{display:flex;flex-direction:column;gap:12px;}
.org-chart .org-level h3{margin:0 0 4px;font-size:.85rem;letter-spacing:.5px;font-weight:700;background:linear-gradient(90deg,var(--primary),var(--primary-accent));-webkit-background-clip:text;background-clip:text;color:transparent;}
.org-chart .org-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:14px;}
.org-chart .org-node{background:linear-gradient(140deg,var(--card),var(--card-alt));border:1px solid var(--border);padding:10px 12px;border-radius:14px;position:relative;box-shadow:0 6px 18px -10px rgba(0,0,0,.55);display:flex;flex-direction:column;gap:4px;min-width:130px;}
.org-chart.light .org-node{background:linear-gradient(150deg,var(--card-alt),var(--card));}
.org-chart .org-node.top{min-width:160px;}
.org-chart .org-node .posisi{font-size:.65rem;font-weight:600;letter-spacing:.4px;text-transform:uppercase;color:var(--primary);}
.org-chart .org-node .nama{font-size:.75rem;font-weight:600;line-height:1.2;}
.org-chart .org-node .ket{font-size:.6rem;opacity:.7;line-height:1.2;}
.org-chart .org-node .badge-cat{position:absolute;top:-8px;right:-8px;background:linear-gradient(120deg,var(--primary),var(--primary-accent));color:#fff;font-size:.5rem;padding:3px 6px;border-radius:12px;letter-spacing:.4px;font-weight:600;box-shadow:0 4px 10px -4px rgba(0,0,0,.5);text-transform:uppercase;}
.org-chart .org-node .badge-cat.guru-kelas{background:linear-gradient(120deg,#6366f1,#8b5cf6);} 
.org-chart .org-node .badge-cat.guru-mapel{background:linear-gradient(120deg,#10b981,#3b82f6);} 
.org-chart .org-node .badge-cat.ptk{background:linear-gradient(120deg,#f59e0b,#ec4899);} 
.org-chart .org-node .badge-cat.kepala{background:linear-gradient(120deg,#8b5cf6,#ec4899);} 
.org-chart .org-node .badge-cat.komite{background:linear-gradient(120deg,#6366f1,#10b981);} 
.org-chart.tree-mode .org-level.combined h3{display:flex;align-items:center;gap:8px;}
.org-chart.tree-mode .org-level.combined h3:after{content:"";flex:1;height:2px;background:linear-gradient(90deg,var(--primary),transparent);border-radius:2px;opacity:.4;}
.org-chart .org-subgroups{display:flex;flex-wrap:wrap;gap:18px;align-items:stretch;margin-top:6px;}
.org-chart .org-subgroup{flex:1 1 260px;min-width:220px;background:linear-gradient(150deg,rgba(var(--primary-rgb),.07),rgba(var(--primary-rgb),.02));border:1px solid var(--border);border-radius:18px;padding:12px 14px 16px;position:relative;box-shadow:0 4px 16px -10px rgba(0,0,0,.5);display:flex;flex-direction:column;gap:10px;}
.org-chart.light .org-subgroup{background:linear-gradient(150deg,var(--card-alt),var(--card));}
.org-chart .org-subgroup:before{content:"";position:absolute;inset:0;border-radius:inherit;background:radial-gradient(circle at 28% 18%,rgba(var(--primary-rgb),.2),transparent 70%);opacity:.4;mix-blend-mode:overlay;pointer-events:none;}
.org-chart .org-subgroup .subgroup-title{font-size:.65rem;font-weight:700;letter-spacing:.5px;text-transform:uppercase;opacity:.85;background:linear-gradient(90deg,var(--primary),var(--primary-accent));-webkit-background-clip:text;background-clip:text;color:transparent;}
.org-chart .org-subgroup .org-grid{margin-top:4px;}
@media (max-width:720px){
  .org-chart .org-subgroups{flex-direction:column;}
  .org-chart .org-subgroup{flex:1 1 auto;}
}
/* Collapsible subgroup controls */
.org-chart .subgroup-toggle{all:unset;display:flex;align-items:center;gap:10px;cursor:pointer;padding:8px 10px;border:1px solid var(--border);border-radius:12px;background:linear-gradient(120deg,var(--card-alt),var(--card));font-size:.65rem;font-weight:600;letter-spacing:.5px;text-transform:uppercase;position:relative;}
.org-chart .subgroup-toggle:hover{background:var(--gradient-soft);}
.org-chart .subgroup-toggle .chev{font-size:.8rem;opacity:.8;transition:transform .25s;}
.org-chart .org-subgroup:not(.collapsed) .subgroup-toggle .chev{transform:rotate(90deg);}
.org-chart .subgroup-toggle .count{background:linear-gradient(120deg,var(--primary),var(--primary-accent));color:#fff;font-size:.55rem;padding:3px 6px;border-radius:10px;font-weight:700;letter-spacing:.5px;}
.org-chart .subgroup-grid.scrollable-x{overflow-x:auto;display:grid;grid-auto-flow:column;grid-auto-columns:minmax(140px,1fr);}
.org-chart .subgroup-grid.scrollable-x::-webkit-scrollbar{height:6px}
.org-chart .subgroup-grid.scrollable-x::-webkit-scrollbar-track{background:rgba(var(--primary-rgb),.15);border-radius:4px}
.org-chart .subgroup-grid.scrollable-x::-webkit-scrollbar-thumb{background:linear-gradient(120deg,var(--primary),var(--primary-accent));border-radius:4px}
/* Vertical connector from level 0 to combined level */
.org-chart.tree-mode .org-level.combined{position:relative;}
.org-chart.tree-mode .org-level.combined:before{content:"";position:absolute;top:-42px;left:50%;width:2px;height:42px;background:linear-gradient(var(--primary),var(--primary-accent));transform:translateX(-50%);opacity:.45;}
@media (max-width:640px){
  .org-chart.tree-mode .org-level.combined:before{left:32px;transform:none;}
}
.org-chart .org-node:before{content:"";position:absolute;inset:0;border-radius:inherit;background:radial-gradient(circle at 28% 22%,rgba(var(--primary-rgb),.25),transparent 70%);opacity:.35;pointer-events:none;mix-blend-mode:overlay;}
.org-chart .org-node:hover{transform:translateY(-4px);transition:.35s cubic-bezier(.4,.2,.2,1);box-shadow:0 10px 26px -12px rgba(var(--primary-rgb),.6),0 6px 16px -10px rgba(0,0,0,.6);}
/* Tree mode connectors */
.org-chart.tree-mode{position:relative;padding:10px 4px;}
.org-chart.tree-mode .org-level{position:relative;}
.org-chart.tree-mode .org-level[data-level]:not([data-level='0']):before{content:"";position:absolute;top:-18px;left:0;right:0;height:18px;background:repeating-linear-gradient(to right,transparent,transparent 14px,rgba(var(--primary-rgb),.18) 14px,rgba(var(--primary-rgb),.18) 15px);mask:linear-gradient(90deg,transparent 0 8px,#000 24px calc(100% - 24px),transparent calc(100% - 8px));opacity:.55;pointer-events:none}
.org-chart.tree-mode .org-level[data-level='0']{display:flex;justify-content:center;}
.org-chart.tree-mode .org-top{justify-content:center;}
.org-chart.tree-mode .org-top .org-node{box-shadow:0 10px 30px -12px rgba(var(--primary-rgb),.55);}
.org-chart.tree-mode .org-grid{position:relative;}
.org-chart.tree-mode .org-grid:before{content:"";position:absolute;top:-14px;left:50%;width:2px;height:14px;background:linear-gradient(var(--primary),var(--primary-accent));transform:translateX(-50%);opacity:.55;}
.org-chart.tree-mode .org-grid .org-node{position:relative;}
.org-chart.tree-mode .org-grid .org-node:after{content:"";position:absolute;top:-14px;left:50%;width:2px;height:14px;background:linear-gradient(var(--primary),var(--primary-accent));transform:translateX(-50%);opacity:.4;}
/* Spine layout (new) */
.org-chart.spine-layout{padding:4px 4px 24px;gap:18px;}
.org-chart.spine-layout .org-tree-layout{display:flex;align-items:flex-start;}
.org-chart.spine-layout .tree-spine{position:relative;display:flex;flex-direction:column;gap:10px;padding-left:14px;}
.org-chart.spine-layout .tree-spine:before{content:"";position:absolute;top:0;bottom:0;left:6px;width:2px;background:linear-gradient(var(--primary),var(--primary-accent));opacity:.5;border-radius:2px;}
.org-chart.spine-layout .spine-item{position:relative;padding-left:26px;}
.org-chart.spine-layout .spine-item:before{content:"";position:absolute;top:50%;left:6px;width:20px;height:2px;background:linear-gradient(90deg,var(--primary),var(--primary-accent));transform:translateY(-50%);opacity:.55;}
.org-chart.spine-layout .top-group{display:flex;flex-wrap:wrap;gap:14px;align-items:flex-start;}
.org-chart.spine-layout .node-card{background:linear-gradient(145deg,var(--card),var(--card-alt));border:1px solid var(--border);padding:10px 12px 10px 12px;border-radius:14px;min-width:150px;display:flex;flex-direction:column;gap:4px;position:relative;box-shadow:0 6px 18px -10px rgba(0,0,0,.55);}
.org-chart.light.spine-layout .node-card{background:linear-gradient(150deg,var(--card-alt),var(--card));}
.org-chart.spine-layout .node-card .posisi{font-size:.65rem;font-weight:600;text-transform:uppercase;letter-spacing:.4px;color:var(--primary);}
.org-chart.spine-layout .node-card .nama{font-size:.75rem;font-weight:600;line-height:1.2;}
.org-chart.spine-layout .node-card .ket{font-size:.6rem;opacity:.7;line-height:1.2;}
.org-chart.spine-layout .node-card .badge-cat{position:absolute;top:-8px;right:-8px;background:linear-gradient(120deg,var(--primary),var(--primary-accent));color:#fff;font-size:.5rem;padding:3px 6px;border-radius:12px;font-weight:600;letter-spacing:.4px;text-transform:uppercase;box-shadow:0 4px 10px -4px rgba(0,0,0,.5);}
.org-chart.spine-layout .node-card.top{min-width:170px;}
.org-chart.spine-layout .spine-branch{position:relative;padding:8px 0 8px 26px;display:flex;flex-direction:column;gap:6px;}
.org-chart.spine-layout .spine-branch:before{content:"";position:absolute;top:18px;left:6px;width:20px;height:2px;background:linear-gradient(90deg,var(--primary),var(--primary-accent));opacity:.5;}
.org-chart.spine-layout .spine-branch:after{content:"";position:absolute;top:0;left:6px;bottom:0;width:2px;background:linear-gradient(var(--primary),var(--primary-accent));opacity:.15;}
.org-chart.spine-layout .spine-branch:last-child:after{bottom:20px;}
.org-chart.spine-layout .branch-toggle{all:unset;cursor:pointer;display:flex;align-items:center;gap:10px;background:linear-gradient(120deg,var(--card-alt),var(--card));border:1px solid var(--border);padding:8px 12px;border-radius:12px;font-size:.65rem;font-weight:600;letter-spacing:.5px;text-transform:uppercase;position:relative;box-shadow:0 4px 12px -8px rgba(0,0,0,.4);}
.org-chart.spine-layout .branch-toggle:hover{background:var(--gradient-soft);}
.org-chart.spine-layout .branch-toggle .chev{font-size:.8rem;opacity:.8;transition:transform .25s;}
.org-chart.spine-layout .spine-branch:not(.collapsed) .branch-toggle .chev{transform:rotate(90deg);}
.org-chart.spine-layout .branch-toggle .count{background:linear-gradient(120deg,var(--primary),var(--primary-accent));color:#fff;font-size:.55rem;padding:3px 6px;border-radius:10px;font-weight:700;letter-spacing:.5px;}
.org-chart.spine-layout .branch-children{display:flex;flex-wrap:wrap;gap:14px;margin-left:4px;padding:6px 4px 4px 4px;position:relative;}
.org-chart.spine-layout .branch-children:before{content:"";position:absolute;top:0;left:-20px;width:20px;height:2px;background:linear-gradient(90deg,var(--primary),var(--primary-accent));opacity:.4;}
.org-chart.spine-layout .branch-children .node-card{min-width:140px;}
.org-chart.spine-layout .node-card:before{content:"";position:absolute;inset:0;border-radius:inherit;background:radial-gradient(circle at 28% 22%,rgba(var(--primary-rgb),.25),transparent 70%);opacity:.35;pointer-events:none;mix-blend-mode:overlay;}
.org-chart.spine-layout .node-card:hover{transform:translateY(-4px);transition:.35s cubic-bezier(.4,.2,.2,1);box-shadow:0 10px 26px -12px rgba(var(--primary-rgb),.6),0 6px 16px -10px rgba(0,0,0,.6);}
.org-chart.spine-layout .node-card .badge-cat.guru-kelas{background:linear-gradient(120deg,#6366f1,#8b5cf6);} 
.org-chart.spine-layout .node-card .badge-cat.guru-mapel{background:linear-gradient(120deg,#10b981,#3b82f6);} 
.org-chart.spine-layout .node-card .badge-cat.ptk{background:linear-gradient(120deg,#f59e0b,#ec4899);} 
.org-chart.spine-layout .node-card .badge-cat.kepala{background:linear-gradient(120deg,#8b5cf6,#ec4899);} 
.org-chart.spine-layout .node-card .badge-cat.komite{background:linear-gradient(120deg,#6366f1,#10b981);} 
@media (max-width:720px){
  .org-chart.spine-layout .branch-children{flex-direction:column;}
  .org-chart.spine-layout .node-card{min-width:unset;width:100%;}
  .org-chart.spine-layout .tree-spine:before{left:4px;}
  .org-chart.spine-layout .spine-item,.org-chart.spine-layout .spine-branch{padding-left:22px;}
  .org-chart.spine-layout .spine-item:before,.org-chart.spine-layout .spine-branch:before{left:4px;width:16px;}
  .org-chart.spine-layout .branch-children:before{left:-16px;width:16px;}
}
/* =============================================
   MODERN COLLECTION STYLES
   ============================================= */

/* Collection Container */
.collection-container {
  max-width: 1200px;
  margin: 0 auto;
  padding: 0 20px;
}

.collection-header {
  margin-bottom: 32px;
  text-align: center;
}

.collection-title-section {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 12px;
}

.collection-main-title {
  margin: 0;
  font-size: 2rem;
  font-weight: 700;
  background: var(--gradient);
  -webkit-background-clip: text;
  background-clip: text;
  color: transparent;
  letter-spacing: -0.5px;
}

.collection-stats {
  display: flex;
  align-items: center;
  gap: 16px;
  font-size: 0.9rem;
  color: var(--muted);
}

.item-count {
  font-weight: 600;
  color: var(--primary);
}

.page-indicator {
  background: var(--card-alt);
  padding: 4px 12px;
  border-radius: 12px;
  border: 1px solid var(--border);
  font-size: 0.8rem;
}

/* Collection Grid */
.collection-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(400px, 1fr));
  gap: 24px;
  margin-bottom: 32px;
}

@media (max-width: 768px) {
  .collection-grid {
    grid-template-columns: 1fr;
    gap: 20px;
  }
}

/* Collection Cards */
.collection-card {
  background: linear-gradient(145deg, var(--card), var(--card-alt));
  border: 1px solid var(--border);
  border-radius: 20px;
  overflow: hidden;
  box-shadow: 0 8px 25px -8px rgba(0,0,0,.3), 0 4px 12px -4px rgba(var(--primary-rgb),.15);
  transition: all 0.3s cubic-bezier(0.4, 0.2, 0.2, 1);
  position: relative;
}

.collection-card::before {
  content: '';
  position: absolute;
  inset: 0;
  background: radial-gradient(circle at 28% 22%, rgba(var(--primary-rgb),.12), transparent 70%);
  opacity: 0.6;
  pointer-events: none;
  mix-blend-mode: overlay;
}

.collection-card:hover {
  transform: translateY(-4px);
  box-shadow: 0 12px 35px -10px rgba(0,0,0,.4), 0 8px 20px -6px rgba(var(--primary-rgb),.25);
}

/* Card Header */
.collection-card-header {
  padding: 24px 24px 16px;
  cursor: pointer;
  display: flex;
  align-items: flex-start;
  gap: 16px;
  border-bottom: 1px solid var(--border);
  transition: background-color 0.2s ease;
}

.collection-card-header:hover {
  background: rgba(var(--primary-rgb),.08);
}

.collection-card-info {
  flex: 1;
}

.collection-card-title {
  margin: 0 0 8px;
  font-size: 1.1rem;
  font-weight: 700;
  line-height: 1.3;
  color: var(--fg);
}

.collection-card-meta {
  display: flex;
  align-items: center;
  gap: 12px;
  flex-wrap: wrap;
}

.collection-badge {
  font-size: 0.7rem;
  font-weight: 600;
  padding: 4px 8px;
  border-radius: 8px;
  letter-spacing: 0.3px;
  text-transform: uppercase;
}

.collection-badge.pdf {
  background: linear-gradient(120deg, #ef4444, #dc2626);
  color: white;
}

.collection-badge.audio {
  background: linear-gradient(120deg, #8b5cf6, #7c3aed);
  color: white;
}

.collection-date {
  font-size: 0.8rem;
  color: var(--muted);
  font-weight: 500;
}

.collection-card-toggle {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 32px;
  height: 32px;
  background: var(--gradient-soft);
  border: 1px solid var(--border);
  border-radius: 50%;
  transition: all 0.2s ease;
}

.collection-card-toggle:hover {
  background: var(--primary);
  transform: scale(1.1);
}

.expand-icon {
  font-size: 1.2rem;
  font-weight: 700;
  color: var(--primary);
  transition: all 0.3s ease;
}

.collection-card-toggle:hover .expand-icon {
  color: white;
}

.expand-icon.expanded {
  transform: rotate(180deg);
}

/* Card Summary */
.collection-card-summary {
  padding: 0 24px 16px;
  font-size: 0.9rem;
  line-height: 1.5;
  color: var(--fg-soft);
  border-bottom: 1px solid var(--border);
}

/* Cover image inside collection card */
.collection-cover-wrap {
  padding: 0 24px 16px;
  background: transparent;
}
.collection-cover {
  width: 100%;
  max-height: 220px;
  object-fit: cover;
  border-radius: 12px;
  border: 1px solid var(--border);
  box-shadow: 0 4px 16px -8px rgba(0,0,0,.25);
  background: #111;
}

/* Fit mode toggle via container class */
.content-main.fit-contain .collection-cover { object-fit: contain; background: var(--card); }
.content-main.fit-contain .item-cover { object-fit: contain; background: var(--card); }

/* Card Preview */
.collection-card-preview {
  max-height: 0;
  overflow: hidden;
  transition: all 0.4s cubic-bezier(0.4, 0.2, 0.2, 1);
}

.collection-card-preview.expanded {
  max-height: 400px;
  border-bottom: 1px solid var(--border);
}

.preview-content {
  padding: 20px 24px;
}

.preview-loading {
  display: flex;
  align-items: center;
  gap: 12px;
  color: var(--muted);
  font-size: 0.85rem;
}

.mini-spinner {
  width: 16px;
  height: 16px;
  border: 2px solid var(--border);
  border-top: 2px solid var(--primary);
  border-radius: 50%;
  animation: spin 1s linear infinite;
}

.preview-body {
  font-size: 0.9rem;
  line-height: 1.6;
  color: var(--fg-soft);
}

.preview-body p {
  margin: 0 0 12px;
}

.preview-body p:last-child {
  margin-bottom: 0;
}

.preview-truncated {
  margin-top: 8px;
  font-size: 0.8rem;
  color: var(--muted);
  font-style: italic;
}

.preview-content.error {
  color: var(--danger);
  font-size: 0.85rem;
  text-align: center;
}

/* Card Actions */
.collection-card-actions {
  padding: 20px 24px;
  display: flex;
  gap: 12px;
  background: var(--card-alt);
}

.btn-collection-toggle {
  padding: 10px 16px;
  border-radius: 12px;
  font-size: 0.9rem;
  font-weight: 700;
  border: 1px solid var(--border);
  cursor: pointer;
  transition: all 0.2s ease;
  text-decoration: none;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  background: var(--gradient);
  color: #fff;
  width: 100%;
}

.btn-collection-toggle:hover {
  transform: translateY(-1px);
  box-shadow: 0 6px 20px -6px rgba(var(--primary-rgb), .35);
}

.btn-collection-toggle:disabled,
.btn-collection-toggle[disabled] {
  opacity: .7;
  cursor: not-allowed;
  box-shadow: none;
}

.btn-collection-expand,
.btn-collection-detail {
  padding: 10px 16px;
  border-radius: 12px;
  font-size: 0.85rem;
  font-weight: 600;
  border: none;
  cursor: pointer;
  transition: all 0.2s ease;
  text-decoration: none;
  display: inline-flex;
  align-items: center;
  justify-content: center;
}

.btn-collection-expand {
  background: var(--card);
  color: var(--primary);
  border: 1px solid var(--border);
  flex: 1;
}

.btn-collection-expand:hover {
  background: var(--gradient-soft);
  transform: translateY(-1px);
}

.btn-collection-detail {
  background: var(--gradient);
  color: white;
  flex: 2;
  font-weight: 700;
}

.btn-collection-detail:hover {
  transform: translateY(-2px);
  box-shadow: 0 6px 20px -6px rgba(var(--primary-rgb),.4);
}

/* Empty State */
.collection-empty {
  text-align: center;
  padding: 60px 20px;
  color: var(--muted);
}

.empty-icon {
  font-size: 3rem;
  margin-bottom: 16px;
  opacity: 0.6;
}

.collection-empty h3 {
  margin: 0 0 8px;
  font-size: 1.2rem;
  color: var(--fg-soft);
}

.collection-empty p {
  margin: 0;
  font-size: 0.9rem;
}

/* Loading State */
.collection-loading {
  text-align: center;
  padding: 60px 20px;
}

.collection-loading h3 {
  margin: 16px 0 8px;
  font-size: 1.2rem;
  color: var(--fg);
}

.collection-loading p {
  margin: 0;
  color: var(--muted);
  font-size: 0.9rem;
}

/* Error State */
.collection-error {
  text-align: center;
  padding: 60px 20px;
}

.error-icon {
  font-size: 3rem;
  margin-bottom: 16px;
}

.collection-error h3 {
  margin: 0 0 8px;
  font-size: 1.2rem;
  color: var(--danger);
}

.collection-error p {
  margin: 0 0 20px;
  color: var(--muted);
  font-size: 0.9rem;
}

/* PDF iframe preview inside collection card */
.pdf-frame {
  width: 100%;
  min-height: 520px;
  border: 1px solid var(--border);
  border-radius: 12px;
  background: #111;
}

@media (max-width: 640px) {
  .pdf-frame { min-height: 420px; }
}

/* Pagination */
.collection-pager {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 20px;
  padding: 32px 0;
  margin-top: 20px;
  border-top: 1px solid var(--border);
}

.pager-info {
  display: flex;
  align-items: center;
  gap: 8px;
  font-size: 0.9rem;
  color: var(--muted);
}

.page-current {
  font-weight: 700;
  color: var(--primary);
  font-size: 1rem;
}

.page-separator {
  opacity: 0.6;
}

.page-total {
  font-weight: 600;
  color: var(--fg);
}

@media (max-width: 640px) {
  .collection-container {
    padding: 0 16px;
  }
  
  .collection-main-title {
    font-size: 1.6rem;
  }
  
  .collection-grid {
    grid-template-columns: 1fr;
    gap: 16px;
  }
  
  .collection-card-header {
    padding: 20px 20px 14px;
  }
  
  .collection-card-summary {
    padding: 0 20px 14px;
  }
  
  .collection-card-actions {
    padding: 16px 20px;
    flex-direction: column;
  }
  
  .collection-pager {
    flex-direction: column;
    gap: 16px;
  }
}

@keyframes spin {
  0% { transform: rotate(0deg); }
  100% { transform: rotate(360deg); }
}

/* =============================================
   COLLECTION ITEM DETAIL STYLES
   ============================================= */

.collection-item-container {
  max-width: 800px;
  margin: 0 auto;
  padding: 0 20px;
}

.collection-item-header {
  margin-bottom: 32px;
}

.item-navigation {
  margin-bottom: 24px;
}

.btn-back {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 12px 20px;
  background: var(--card);
  border: 1px solid var(--border);
  border-radius: 14px;
  color: var(--fg);
  text-decoration: none;
  font-size: 0.9rem;
  font-weight: 600;
  cursor: pointer;
  transition: all 0.2s ease;
}

.btn-back:hover {
  background: var(--gradient-soft);
  transform: translateY(-1px);
  box-shadow: 0 4px 12px -4px rgba(var(--primary-rgb),.3);
}

.back-icon {
  font-size: 1.1rem;
  font-weight: 700;
}

.item-title-section {
  text-align: center;
}

.item-title {
  margin: 0 0 16px;
  font-size: 2.2rem;
  font-weight: 800;
  line-height: 1.2;
  background: var(--gradient);
  -webkit-background-clip: text;
  background-clip: text;
  color: transparent;
  letter-spacing: -0.5px;
}

.item-meta {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 16px;
  flex-wrap: wrap;
}

.item-date {
  font-size: 0.9rem;
  color: var(--muted);
  font-weight: 500;
}

.item-badge {
  font-size: 0.7rem;
  font-weight: 600;
  padding: 6px 12px;
  border-radius: 12px;
  letter-spacing: 0.3px;
  text-transform: uppercase;
}

.item-badge.pdf {
  background: linear-gradient(120deg, #ef4444, #dc2626);
  color: white;
}

.item-badge.audio {
  background: linear-gradient(120deg, #8b5cf6, #7c3aed);
  color: white;
}

.collection-item-content {
  background: linear-gradient(145deg, var(--card), var(--card-alt));
  border: 1px solid var(--border);
  border-radius: 24px;
  overflow: hidden;
  box-shadow: 0 8px 25px -8px rgba(0,0,0,.3), 0 4px 12px -4px rgba(var(--primary-rgb),.15);
  position: relative;
}

.item-cover-wrap {
  padding: 24px 24px 0;
}
.item-cover {
  width: 100%;
  max-height: 360px;
  object-fit: cover;
  border-radius: 16px;
  border: 1px solid var(--border);
  box-shadow: 0 6px 24px -10px rgba(0,0,0,.3);
  background: #111;
}

.collection-item-content::before {
  content: '';
  position: absolute;
  inset: 0;
  background: radial-gradient(circle at 28% 22%, rgba(var(--primary-rgb),.08), transparent 70%);
  opacity: 0.6;
  pointer-events: none;
  mix-blend-mode: overlay;
}

.item-body {
  padding: 32px;
  position: relative;
  z-index: 1;
  font-size: 1rem;
  line-height: 1.7;
  color: var(--fg);
}

.item-body h1,
.item-body h2,
.item-body h3,
.item-body h4,
.item-body h5,
.item-body h6 {
  margin: 2em 0 1em;
  font-weight: 700;
  color: var(--fg);
}

.item-body h1:first-child,
.item-body h2:first-child,
.item-body h3:first-child {
  margin-top: 0;
}

.item-body p {
  margin: 0 0 1.5em;
}

.item-body p:last-child {
  margin-bottom: 0;
}

.item-body img {
  max-width: 100%;
  height: auto;
  border-radius: 12px;
  margin: 1.5em 0;
  box-shadow: 0 4px 16px -4px rgba(0,0,0,.3);
}

.item-body blockquote {
  margin: 2em 0;
  padding: 20px 24px;
  background: var(--gradient-soft);
  border-left: 4px solid var(--primary);
  border-radius: 0 12px 12px 0;
  font-style: italic;
}

.item-body ul,
.item-body ol {
  margin: 1.5em 0;
  padding-left: 2em;
}

.item-body li {
  margin: 0.5em 0;
}

.item-body table {
  width: 100%;
  margin: 2em 0;
  border-collapse: collapse;
  border-radius: 12px;
  overflow: hidden;
  box-shadow: 0 4px 16px -4px rgba(0,0,0,.2);
}

.item-body th,
.item-body td {
  padding: 12px 16px;
  text-align: left;
  border-bottom: 1px solid var(--border);
}

.item-body th {
  background: var(--gradient-soft);
  font-weight: 600;
  color: var(--fg);
}

.item-body tr:last-child td {
  border-bottom: none;
}

.item-attachments {
  padding: 24px 32px 32px;
  border-top: 1px solid var(--border);
  background: var(--card-alt);
  position: relative;
  z-index: 1;
}

.item-attachments h3 {
  margin: 0 0 16px;
  font-size: 1.1rem;
  font-weight: 700;
  color: var(--fg);
}

.attachment-link {
  display: flex;
  align-items: center;
  gap: 16px;
  padding: 16px 20px;
  background: var(--card);
  border: 1px solid var(--border);
  border-radius: 16px;
  text-decoration: none;
  color: var(--fg);
  transition: all 0.2s ease;
}

.attachment-link:hover {
  background: var(--gradient-soft);
  transform: translateY(-2px);
  box-shadow: 0 6px 20px -6px rgba(var(--primary-rgb),.3);
}

.attachment-icon {
  font-size: 1.5rem;
}

.attachment-info {
  flex: 1;
  display: flex;
  flex-direction: column;
  gap: 4px;
}

.attachment-name {
  font-weight: 600;
  font-size: 0.9rem;
}

.attachment-desc {
  font-size: 0.8rem;
  color: var(--muted);
}

.attachment-action {
  font-size: 1.2rem;
  font-weight: 700;
  color: var(--primary);
  opacity: 0.7;
  transition: all 0.2s ease;
}

.attachment-link:hover .attachment-action {
  opacity: 1;
  transform: translateX(4px);
}

/* Loading and Error States for Item Detail */
.collection-item-loading,
.collection-item-error {
  text-align: center;
  padding: 80px 20px;
  max-width: 500px;
  margin: 0 auto;
}

.collection-item-loading h3,
.collection-item-error h3 {
  margin: 16px 0 8px;
  font-size: 1.3rem;
}

.collection-item-loading p,
.collection-item-error p {
  margin: 0 0 24px;
  color: var(--muted);
  font-size: 0.95rem;
}

.collection-item-error h3 {
  color: var(--danger);
}

.collection-item-error .error-icon {
  font-size: 3.5rem;
  margin-bottom: 16px;
}

@media (max-width: 768px) {
  .collection-item-container {
    padding: 0 16px;
  }
  
  .item-title {
    font-size: 1.8rem;
  }
  
  .item-body {
    padding: 24px;
    font-size: 0.95rem;
  }
  
  .item-attachments {
    padding: 20px 24px 24px;
  }
  
  .attachment-link {
    padding: 14px 16px;
  }
}

/* ============================================= */
.org-chart.left-root{overflow-x:auto;overflow-y:visible;}
.org-chart.left-root .left-root-layout{flex-wrap:nowrap;min-width:max(780px,100%);}
.org-chart.left-root.cat-only .root-side{display:none;}
.org-chart.left-root.cat-only .left-root-layout{min-width:unset;}
/* Root with categories layout keeps head at left center */
.org-chart.left-root.root-with-cats .root-side{display:flex;}
.org-chart.left-root.root-with-cats .left-root-layout{min-width:max(640px,100%);}
/* Kepala Sekolah as toggle styling */
.org-chart.left-root.head-toggle-mode .root-side.as-toggle .spine-branch{padding-left:0;}
.org-chart.left-root.head-toggle-mode .root-side.as-toggle .spine-branch:before{display:none;}
.org-chart.left-root.head-toggle-mode .root-side.as-toggle{align-self:center;}
.org-chart.left-root.head-toggle-mode .root-side.as-toggle .branch-toggle{box-shadow:0 8px 20px -10px rgba(var(--primary-rgb),.55);}
.org-chart.left-root.only-categories .branches-wrapper{margin-left:0;}
.org-chart.left-root.only-categories .branches-wrapper:before{top:8px;}
/* Custom thin scrollbar for horizontal scroll */
.org-chart.left-root::-webkit-scrollbar{height:8px}
.org-chart.left-root::-webkit-scrollbar-track{background:rgba(var(--primary-rgb),.12);border-radius:4px}
.org-chart.left-root::-webkit-scrollbar-thumb{background:linear-gradient(120deg,var(--primary),var(--primary-accent));border-radius:4px}
.org-chart.left-root .left-root-layout{display:flex;align-items:flex-start;gap:38px;position:relative;}
.org-chart.left-root .root-side{position:relative;display:flex;flex-direction:column;gap:14px;padding-right:24px;margin-right:8px;align-self:center;}
.org-chart.left-root .root-side:after{content:"";position:absolute;top:50%;left:100%;width:40px;height:2px;background:linear-gradient(90deg,var(--primary),var(--primary-accent));transform:translateY(-50%);opacity:.6;pointer-events:none;}
.org-chart.left-root .root-side .node-card.root{min-width:180px;}
.org-chart.left-root .branches-side{flex:1;position:relative;}
.org-chart.left-root .branches-wrapper{position:relative;display:flex;flex-direction:column;gap:14px;padding-left:26px;}
.org-chart.left-root .branches-wrapper:before{content:"";position:absolute;top:0;bottom:0;left:6px;width:2px;background:linear-gradient(var(--primary),var(--primary-accent));opacity:.4;border-radius:2px;pointer-events:none;}
.org-chart.left-root .spine-branch{position:relative;padding:6px 0 6px 24px;}
.org-chart.left-root .spine-branch:before{content:"";position:absolute;top:18px;left:6px;width:18px;height:2px;background:linear-gradient(90deg,var(--primary),var(--primary-accent));opacity:.55;pointer-events:none;}
.org-chart.left-root .spine-branch:last-child:after{content:"";position:absolute;top:18px;left:6px;bottom:0;width:2px;background:linear-gradient(var(--primary),var(--primary-accent));opacity:.0;}
.org-chart.left-root .branch-toggle{all:unset;cursor:pointer;display:inline-flex;align-items:center;gap:10px;background:linear-gradient(120deg,var(--card-alt),var(--card));border:1px solid var(--border);padding:8px 12px;border-radius:12px;font-size:.65rem;font-weight:600;letter-spacing:.5px;text-transform:uppercase;position:relative;box-shadow:0 4px 12px -8px rgba(0,0,0,.4);user-select:none;z-index:2;}
.org-chart.left-root .branch-toggle:hover{background:var(--gradient-soft);}
.org-chart.left-root .branch-toggle .chev{font-size:.8rem;opacity:.8;transition:transform .25s;}
.org-chart.left-root .spine-branch:not(.collapsed) .branch-toggle .chev{transform:rotate(90deg);}
.org-chart.left-root .branch-toggle .count{background:linear-gradient(120deg,var(--primary),var(--primary-accent));color:#fff;font-size:.55rem;padding:3px 6px;border-radius:10px;font-weight:700;letter-spacing:.5px;}
.org-chart.left-root .branch-children{display:flex;flex-wrap:wrap;gap:14px;margin-left:4px;padding:8px 4px 4px 4px;position:relative;}
.org-chart.left-root .branch-children:before{content:"";position:absolute;top:0;left:-18px;width:18px;height:2px;background:linear-gradient(90deg,var(--primary),var(--primary-accent));opacity:.45;pointer-events:none;}
.org-chart.left-root .node-card{background:linear-gradient(145deg,var(--card),var(--card-alt));border:1px solid var(--border);padding:10px 12px;border-radius:14px;min-width:150px;display:flex;flex-direction:column;gap:4px;position:relative;box-shadow:0 6px 18px -10px rgba(0,0,0,.55);}
.org-chart.left-root .node-card.root{box-shadow:0 10px 26px -10px rgba(var(--primary-rgb),.6);}
.org-chart.light.left-root .node-card{background:linear-gradient(150deg,var(--card-alt),var(--card));}
.org-chart.left-root .node-card .posisi{font-size:.65rem;font-weight:600;text-transform:uppercase;letter-spacing:.4px;color:var(--primary);}
.org-chart.left-root .node-card .nama{font-size:.75rem;font-weight:600;line-height:1.2;}
.org-chart.left-root .node-card .ket{font-size:.6rem;opacity:.7;line-height:1.2;}
.org-chart.left-root .node-card .badge-cat{position:absolute;top:-8px;right:-8px;background:linear-gradient(120deg,var(--primary),var(--primary-accent));color:#fff;font-size:.5rem;padding:3px 6px;border-radius:12px;font-weight:600;letter-spacing:.4px;text-transform:uppercase;box-shadow:0 4px 10px -4px rgba(0,0,0,.5);}
.org-chart.left-root .node-card:before{content:"";position:absolute;inset:0;border-radius:inherit;background:radial-gradient(circle at 28% 22%,rgba(var(--primary-rgb),.25),transparent 70%);opacity:.35;pointer-events:none;mix-blend-mode:overlay;}
.org-chart.left-root .node-card:hover{transform:translateY(-4px);transition:.35s cubic-bezier(.4,.2,.2,1);box-shadow:0 10px 26px -12px rgba(var(--primary-rgb),.6),0 6px 16px -10px rgba(0,0,0,.6);}
.org-chart.left-root .node-card .badge-cat.guru-kelas{background:linear-gradient(120deg,#6366f1,#8b5cf6);} 
.org-chart.left-root .node-card .badge-cat.guru-mapel{background:linear-gradient(120deg,#10b981,#3b82f6);} 
.org-chart.left-root .node-card .badge-cat.ptk{background:linear-gradient(120deg,#f59e0b,#ec4899);} 
.org-chart.left-root .node-card .badge-cat.kepala{background:linear-gradient(120deg,#8b5cf6,#ec4899);} 
.org-chart.left-root .node-card .badge-cat.komite{background:linear-gradient(120deg,#6366f1,#10b981);} 
@media (max-width:760px){
  /* Keep original horizontal design; just allow scroll */
  .org-chart.left-root .left-root-layout{flex-direction:row;gap:38px;}
  .org-chart.left-root .root-side{padding-right:24px;margin-right:8px;}
  .org-chart.left-root .root-side:after{display:block;}
  .org-chart.left-root .branches-wrapper{padding-left:26px;}
  .org-chart.left-root .spine-branch{padding-left:24px;}
  .org-chart.left-root .branch-children{flex-direction:row;}
  .org-chart.left-root .node-card{min-width:150px;width:auto;}
}
.org-chart.tree-mode .org-level[data-level='0'] .org-node:after{display:none;}
.org-chart.tree-mode .org-level[data-level] h3{position:relative;padding-left:4px;}
.org-chart.tree-mode .org-level[data-level] h3:before{content:"";position:absolute;left:0;top:55%;width:22px;height:2px;background:linear-gradient(90deg,var(--primary),var(--primary-accent));border-radius:2px;transform:translateY(-50%);opacity:.6;}
.org-chart.tree-mode .org-level[data-level='0'] h3:before{display:none;}
@media (max-width:640px){
  .org-chart .org-grid{grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:10px;}
  .org-chart .org-node{padding:8px 10px;}
  .org-chart .org-node .nama{font-size:.7rem;}
  .org-chart .org-node .posisi{font-size:.58rem;}
}
/* Main content spacing to avoid overlap with fixed bottom nav */
#main{padding:16px 16px calc(110px + var(--safe-bottom));display:block;min-height:calc(100dvh - 120px);}
#main .card:last-child{margin-bottom:8px}
/* Admin content spacing */
#adminContent, .admin-section{padding-bottom:calc(110px + var(--safe-bottom)) !important;}
/* Provide extra bottom margin for any grid at end of page */
.grid:last-child{margin-bottom:40px}
/* Admin login specific */
.admin-login-body{min-height:100dvh;display:flex;align-items:stretch;}
.login-bg{position:fixed;inset:0;overflow:hidden;z-index:-1;background:radial-gradient(circle at 20% 20%,rgba(var(--primary-rgb),.25),transparent 60%),radial-gradient(circle at 80% 70%,rgba(var(--primary-accent-rgb),.25),transparent 65%),var(--bg);}
.login-bg .orb{position:absolute;filter:blur(60px);opacity:.55;mix-blend-mode:plus-lighter;animation:float 14s ease-in-out infinite;}
.login-bg .orb-1{width:480px;height:480px;background:linear-gradient(120deg,#7c3aed,#ec4899);top:-120px;left:-120px;animation-delay:-4s;}
.login-bg .orb-2{width:520px;height:520px;background:linear-gradient(160deg,#ec4899,#7c3aed);bottom:-160px;right:-160px;animation-delay:-8s;}
.noise-layer{position:absolute;inset:0;background:repeating-linear-gradient(45deg,rgba(255,255,255,.02) 0 2px,transparent 2px 4px);mix-blend-mode:overlay;opacity:.35;pointer-events:none}
@keyframes float{0%,100%{transform:translate3d(0,0,0) scale(1)}50%{transform:translate3d(40px,30px,0) scale(1.05)}}
.login-layout{width:100%;display:grid;grid-template-columns:repeat(auto-fit,minmax(340px,1fr));gap:40px;padding:48px clamp(20px,4vw,70px);align-items:center;}
.login-hero{color:var(--fg-soft);animation:fadeIn .6s ease;}
.login-hero h1{font-size:clamp(1.9rem,3vw,2.6rem);margin:0;font-weight:700;line-height:1.05;letter-spacing:.5px;}
.login-hero h1 span{background:linear-gradient(90deg,var(--primary),var(--primary-accent));-webkit-background-clip:text;background-clip:text;color:transparent;}
.brand-block{margin-bottom:18px;}
.logo-ring{width:74px;height:74px;border-radius:22px;background:linear-gradient(135deg,var(--primary) 0%,var(--primary-accent) 95%);display:flex;align-items:center;justify-content:center;font-size:2rem;font-weight:700;color:#fff;box-shadow:0 8px 30px -10px rgba(var(--primary-rgb),.75);margin-bottom:14px;position:relative;overflow:hidden}
.logo-ring:after{content:"";position:absolute;inset:0;background:radial-gradient(circle at 30% 20%,rgba(255,255,255,.35),transparent 65%);mix-blend-mode:overlay;}
.tagline{font-size:.95rem;line-height:1.5;margin:10px 0 18px;color:var(--muted);max-width:420px}
.benefits{list-style:none;margin:0 0 26px 0;padding:0;display:grid;gap:8px;font-size:.85rem;color:var(--fg-soft);max-width:360px}
.benefits li{background:rgba(var(--primary-rgb),.1);padding:10px 14px;border:1px solid rgba(var(--primary-rgb),.25);border-radius:14px;backdrop-filter:blur(6px) saturate(160%);}
.login-panel{max-width:420px;margin:0 auto;width:100%;animation:fadeIn .6s ease .05s backwards;}
.glass{background:linear-gradient(160deg,rgba(255,255,255,.08),rgba(255,255,255,.03));backdrop-filter:blur(22px) saturate(180%);border:1px solid rgba(255,255,255,.12);box-shadow:0 20px 60px -25px rgba(0,0,0,.65),0 0 0 1px rgba(255,255,255,.06);}
.login-title{margin:0 0 4px 0;font-size:1.55rem;font-weight:700;letter-spacing:.5px}
.login-form{margin-top:12px}
.field{margin-bottom:14px}
.input-wrap{position:relative;display:flex;align-items:center}
.input-wrap.icon-left .input{padding-left:46px}
.input-icon{position:absolute;left:14px;font-size:1.1rem;opacity:.75;pointer-events:none}
.with-toggle .toggle-pass{position:absolute;right:10px;top:50%;transform:translateY(-50%);background:rgba(var(--primary-rgb),.15);border:1px solid var(--border);color:var(--fg-soft);border-radius:10px;padding:6px 10px;font-size:.75rem;cursor:pointer;font-weight:600;letter-spacing:.5px}
.with-toggle .toggle-pass:hover{background:rgba(var(--primary-rgb),.25)}
.actions-row{margin-top:6px}
.btn .spinner{width:14px;height:14px;border:2px solid rgba(255,255,255,.55);border-top-color:#fff;border-radius:50%;display:none;animation:spin .8s linear infinite}
.btn.loading .spinner{display:inline-block}
@keyframes spin{to{transform:rotate(360deg)}}
.error-text{color:var(--danger);min-height:20px;margin-top:6px}
.muted{color:var(--muted)}
.foot-note{margin-top:10px;text-align:center;color:var(--muted)}
@media (max-width:880px){.login-layout{grid-template-columns:1fr;padding:40px 26px 90px}.login-hero{order:2;text-align:center}.benefits{grid-template-columns:repeat(auto-fit,minmax(150px,1fr));justify-content:center;margin:24px auto 0}.benefits li{background:rgba(var(--primary-rgb),.12)}.login-panel{order:1}}
.login-layout{padding-bottom:calc(48px + var(--safe-bottom));}
/* Mobile refinements */
@media (max-width:580px){
	.login-layout{gap:28px;padding:30px 18px 60px;}
	.login-hero{display:flex;flex-direction:column;align-items:center;}
	.logo-ring{width:60px;height:60px;font-size:1.6rem;margin-bottom:10px;}
	.tagline{font-size:.85rem;margin-bottom:14px;}
	.benefits{display:flex;gap:10px;overflow-x:auto;padding:4px 2px 6px 2px;scrollbar-width:none;-ms-overflow-style:none;width:100%;}
	.benefits::-webkit-scrollbar{display:none}
	.benefits li{flex:0 0 160px;min-height:68px;font-size:.78rem;padding:8px 10px;}
	.login-title{font-size:1.35rem;}
	.login-panel{background:rgba(20,15,32,.82);}
	.login-bg .orb-1{width:320px;height:320px;top:-90px;left:-140px;}
	.login-bg .orb-2{width:340px;height:340px;bottom:-140px;right:-160px;}
	/* Spacing tweaks (mobile): give breathing room between panel & footer */
	.login-panel{padding-top:30px;padding-bottom:28px;}
	.panel-brand .logo-ring{margin-top:4px;margin-bottom:14px !important;}
	.foot-note{margin-top:40px !important;}
}
@media (max-width:400px){
	.benefits{display:none;}
	.login-layout{padding:26px 16px 54px;}
}
.admin-shell-full{padding:18px 26px;}
.admin-menu-wrapper{margin-top:6px;margin-bottom:4px}
.admin-menu.menu-grid{grid-template-columns:repeat(auto-fill,minmax(170px,1fr));}
.admin-menu .menu-card{min-height:160px;padding:18px 14px;align-items:flex-start;justify-content:flex-start;text-align:left;}
.admin-menu .menu-card .title{font-size:.85rem;font-weight:600;letter-spacing:.4px}
.admin-menu .menu-card .desc{font-size:.65rem;line-height:1.25;color:var(--muted);}
.admin-menu .menu-card .svg-icon svg{display:block;width:40px;height:40px;stroke:currentColor}
.bright-theme .admin-menu .menu-card .svg-icon svg{color:var(--primary)}
.admin-menu .menu-card.active{box-shadow:0 12px 34px -14px rgba(var(--primary-rgb),.75);}
.admin-section{animation:fadeIn .35s ease;}
/* New colorful education icons */
.admin-menu .menu-card .edu-icon{width:62px;height:62px;border-radius:22px;display:flex;align-items:center;justify-content:center;margin-bottom:10px;position:relative;isolation:isolate;overflow:hidden;font-size:0;}
.admin-menu .menu-card .edu-icon:before,.admin-menu .menu-card .edu-icon:after{content:"";position:absolute;inset:0;z-index:0;opacity:.9}
.edu-icon svg{position:relative;z-index:1;filter:drop-shadow(0 4px 8px rgba(0,0,0,.25));}
/* Individual icon gradients */
.icon-infos:before{background:linear-gradient(135deg,#6366f1,#a855f7);}
.icon-gallery:before{background:linear-gradient(135deg,#ec4899,#f59e0b);}
.icon-ekskul:before{background:linear-gradient(135deg,#0ea5e9,#6366f1);}
.icon-event:before{background:linear-gradient(135deg,#10b981,#3b82f6);}
.icon-konkur:before{background:linear-gradient(135deg,#f59e0b,#ef4444);}
.icon-jurnal:before{background:linear-gradient(135deg,#6366f1,#10b981);}
/* Subtle animated sheen */
.admin-menu .menu-card .edu-icon:after{background:radial-gradient(circle at 30% 20%,rgba(255,255,255,.7),transparent 60%),radial-gradient(circle at 75% 80%,rgba(255,255,255,.25),transparent 65%);mix-blend-mode:overlay;}
.admin-menu .menu-card .edu-icon:hover{transform:translateY(-4px) rotate(-2deg);transition:.4s cubic-bezier(.4,.2,.2,1);box-shadow:0 10px 28px -10px rgba(0,0,0,.5),0 6px 14px -8px rgba(var(--primary-rgb),.5);}
.admin-menu .menu-card.active .edu-icon{outline:3px solid rgba(var(--primary-rgb),.35);outline-offset:3px;}
/* Admin hero brand (landing only) */
.admin-hero-brand{text-align:center;padding:10px 10px 4px;animation:fadeIn .5s ease}
.admin-hero-title{margin:10px 0 4px;font-size:1.9rem;letter-spacing:.5px;font-weight:800;background:linear-gradient(90deg,var(--primary),var(--primary-accent));-webkit-background-clip:text;background-clip:text;color:transparent}
.admin-hero-title span{font-weight:800}
.admin-hero-tagline{margin:0;font-size:.8rem;letter-spacing:.4px;color:var(--muted)}
.logo-ring.hero{width:86px;height:86px;font-size:2.2rem;margin:0 auto 6px;box-shadow:0 10px 30px -10px rgba(var(--primary-rgb),.6),0 0 0 1px rgba(255,255,255,.15)}
@media (max-width:620px){.admin-hero-title{font-size:1.55rem}.logo-ring.hero{width:72px;height:72px;font-size:2rem}}
/* Ensure hidden hero does not reserve space */
.login-hero.hidden{display:none!important}
/* Landing footer */
.admin-landing-footer{margin:34px auto 80px;text-align:center;font-size:.65rem;letter-spacing:.4px;color:var(--muted);opacity:.85;max-width:620px}
.admin-landing-footer strong{font-weight:700;color:var(--primary)}
/* Parent portal reuses admin visual system */
.admin-menu-wrapper{margin-top:10px}
.admin-menu .menu-card .title{font-size:.8rem;font-weight:600;margin-top:4px}
.admin-menu .menu-card .desc{display:none;font-size:.6rem;opacity:.7;margin-top:2px}
.admin-menu .menu-card{cursor:pointer;transition:.35s;background:linear-gradient(180deg,var(--card) 0%,var(--card-alt) 120%);border:1px solid var(--border);border-radius:20px;display:flex;flex-direction:column;align-items:flex-start;padding:18px 14px;position:relative;min-height:150px}
.admin-menu .menu-card:hover{transform:translateY(-4px);box-shadow:0 10px 28px -12px rgba(var(--primary-rgb),.55),0 6px 18px -10px rgba(0,0,0,.55)}
.admin-menu .menu-card:active{transform:translateY(1px)}
.admin-menu .menu-card .edu-icon{width:58px;height:58px;border-radius:20px;display:flex;align-items:center;justify-content:center;margin-bottom:8px;position:relative;overflow:hidden}
.admin-menu .menu-card .edu-icon:before{content:"";position:absolute;inset:0;opacity:.9}
.admin-menu .menu-card .edu-icon svg{position:relative;filter:drop-shadow(0 5px 12px rgba(0,0,0,.35));}
.admin-menu .menu-card .icon-infos:before{background:linear-gradient(135deg,#6366f1,#a855f7)}
.admin-menu .menu-card .icon-gallery:before{background:linear-gradient(135deg,#ec4899,#f59e0b)}
.admin-menu .menu-card .icon-ekskul:before{background:linear-gradient(135deg,#0ea5e9,#6366f1)}
.admin-menu .menu-card .icon-event:before{background:linear-gradient(135deg,#10b981,#3b82f6)}
.admin-menu .menu-card .icon-konkur:before{background:linear-gradient(135deg,#f59e0b,#ef4444)}
.admin-menu .menu-card .icon-jurnal:before{background:linear-gradient(135deg,#6366f1,#10b981)}
.admin-hero-brand .logo-ring.hero{background:linear-gradient(160deg,var(--primary),var(--primary-accent));color:#fff}
/* Footer bottom nav for admin sections - Hidden on desktop */
#adminFooterNav{position:fixed;bottom:0;left:0;right:0;z-index:120;pointer-events:none;padding:0 10px 10px;}
.bottom-nav{display:flex;gap:8px;background:linear-gradient(160deg,var(--card),var(--card-alt));border:1px solid var(--border);border-radius:24px;padding:8px 10px;box-shadow:0 18px 40px -18px rgba(0,0,0,.6),0 4px 14px -6px rgba(var(--primary-rgb),.35);backdrop-filter:blur(14px) saturate(160%);pointer-events:auto;overflow-x:auto;}
.bottom-nav .nav-item{flex:1;min-width:60px;background:transparent;border:0;color:var(--fg);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;font-size:.7rem;padding:6px 4px;border-radius:16px;cursor:pointer;font-weight:600;letter-spacing:.3px;position:relative;}
.bottom-nav .nav-item span{font-size:.6rem;opacity:.75;font-weight:500;}
.bottom-nav .nav-item.active{background:linear-gradient(140deg,var(--primary),var(--primary-accent));color:#fff;box-shadow:0 6px 20px -8px rgba(var(--primary-rgb),.65);}
.bottom-nav .nav-item.active span{opacity:1;color:#fff;}
.bottom-nav .nav-item:active{transform:translateY(2px)}
@media (min-width:900px){
  #adminFooterNav{display:none}
}
/* Jurnal table tweaks */
.table.small-table th,.table.small-table td{font-size:.68rem;padding:4px 6px;white-space:nowrap}
/* Larger readable size for generic data tables (exclude jurnal via more specific selector later if needed) */
.table-wrap{overflow:auto;max-width:100%}
/* Allow wrapping for new admin data tables (override small-table default) */
.data-table th,.data-table td{white-space:normal;word-break:break-word;line-height:1.45;font-size:.8rem;padding:8px 10px;}
/* Public students responsive tweaks */
table#publicStudentsTbl{width:100%;table-layout:auto;border-collapse:collapse;}
table#publicStudentsTbl th{ text-align:left; }
table#publicStudentsTbl th,table#publicStudentsTbl td{vertical-align:top;}
@media (max-width:899px){
  /* already using minimal columns in JS for standalone; ensure nowrap for compactness */
  table#publicStudentsTbl th,table#publicStudentsTbl td{white-space:nowrap;}
}
@media (min-width:900px) and (max-width:1200px){
  /* Slightly tighter on mid desktop widths */
  table#publicStudentsTbl th,table#publicStudentsTbl td{font-size:.75rem;padding:6px 8px;}
}
@media (max-width:500px){
  /* If future adds columns, hide overflow columns gracefully */
  table#publicStudentsTbl th:nth-child(1),
  table#publicStudentsTbl td:nth-child(1){position:sticky;left:0;background:var(--card);z-index:2;}
}

/* Modern student modal animations and enhancements */
@keyframes modalSlideUp {
  from { opacity: 0; transform: translateY(40px) scale(0.95); }
  to { opacity: 1; transform: translateY(0) scale(1); }
}
.close-btn:hover {
  background: linear-gradient(135deg,#dc2626,#b91c1c) !important;
  transform: scale(1.1);
  box-shadow: 0 8px 24px rgba(239,68,68,.5) !important;
}
.close-btn:active {
  transform: scale(0.9);
}
.close-btn {
  -webkit-tap-highlight-color: transparent;
  touch-action: manipulation;
  min-width: 48px !important;
  min-height: 48px !important;
}
.close-btn span{transition:transform .18s ease, box-shadow .25s ease;}
.close-btn:focus-visible span{outline:3px solid #fff;outline-offset:3px;}
.close-btn:hover span{transform:scale(1.07);}
.close-btn:active span{transform:scale(.9);}
.info-card {
  transition: transform 0.2s ease, box-shadow 0.2s ease;
}
.info-card:hover {
  transform: translateY(-2px);
  box-shadow: 0 8px 25px -8px rgba(0,0,0,.15);
}
.chip {
  border: none;
  border-radius: 20px;
  padding: 8px 16px;
  font-size: .75rem;
  font-weight: 500;
  cursor: pointer;
  transition: all 0.2s ease;
  background: linear-gradient(135deg, #f1f5f9, #e2e8f0);
  color: #475569;
}
.chip:hover {
  transform: translateY(-1px);
  box-shadow: 0 4px 12px rgba(0,0,0,.1);
}
.chip.active {
  background: linear-gradient(135deg, #3b82f6, #2563eb) !important;
  color: #fff !important;
  box-shadow: 0 4px 16px rgba(59,130,246,.4);
}
@media (min-width:1200px){
	.data-table th,.data-table td{font-size:.82rem;padding:9px 12px;}
}
.data-table td.nw,.data-table th.nw{white-space:nowrap;}
/* Force wrapping for long URLs / content */
.wrap-text{white-space:normal!important;word-break:break-word;overflow-wrap:anywhere;}
/* Ribbon Landing Menu - Modern Card Design with Full Width Desktop */
.ribbon-container{
  display:flex;
  flex-direction:column;
  gap:40px;
  margin:20px 0;
  animation:fadeIn .5s ease;
  max-width:100%;
  margin:0 auto;
  padding:0 20px;
  position:relative;
}

/* Decorative background elements */
.ribbon-container::before {
  content:'';
  position:absolute;
  top:-50px;
  left:50%;
  transform:translateX(-50%);
  width:300px;
  height:300px;
  background:radial-gradient(circle, rgba(99,102,241,.08) 0%, transparent 70%);
  border-radius:50%;
  z-index:-1;
  animation:pulseBackground 5s ease-in-out infinite;
}

@keyframes pulseBackground {
  0%, 100% { opacity:0.4; transform:translateX(-50%) scale(1); }
  50% { opacity:0.7; transform:translateX(-50%) scale(1.3); }
}

/* Desktop: Full width with elegant spacing */
@media (min-width:900px){
  .ribbon-container{
    max-width:95%;
    padding:0 40px;
    gap:50px;
    margin:40px auto
  }
}

@media (min-width:1200px){
  .ribbon-container{
    max-width:90%;
    padding:0 60px;
    gap:60px
  }
}

@media (min-width:1600px){
  .ribbon-container{
    max-width:85%;
    padding:0 80px
  }
}

.ribbon-header{
  display:flex;
  align-items:center;
  gap:24px;
  background:transparent;
  padding:32px 20px 48px;
  border-radius:0;
  box-shadow:none;
  border:none;
  position:relative;
  margin-bottom:20px;
}

/* Desktop: Enhanced header styling */
@media (min-width:900px){
  .ribbon-header{
    padding:40px 24px 60px;
    border-radius:0;
    gap:32px;
    background:transparent;
    box-shadow:none;
  }
}

@media (min-width:1200px){
  .ribbon-header{
    padding:50px 30px 70px;
    gap:40px;
  }
}

.ribbon-logo{
  position:relative;
  animation:floatingLogo 3s ease-in-out infinite;
  filter:drop-shadow(0 10px 20px rgba(0,0,0,.15));
}

@keyframes floatingLogo {
  0%, 100% { transform: translateY(0px); }
  50% { transform: translateY(-8px); }
}

.logo-circle{
  width:120px;
  height:120px;
  border-radius:30px;
  background:linear-gradient(135deg, #6366f1 0%, #8b5cf6 35%, #f59e0b 100%);
  display:flex;
  align-items:center;
  justify-content:center;
  box-shadow:0 20px 45px -12px rgba(99,102,241,.5), 0 12px 25px -8px rgba(139,92,246,.4);
  border:4px solid rgba(255,255,255,.9);
  position:relative;
  overflow:hidden;
}

.logo-circle::before {
  content:'';
  position:absolute;
  top:-50%;
  left:-50%;
  width:200%;
  height:200%;
  background:linear-gradient(45deg, transparent, rgba(255,255,255,.3), transparent);
  animation:shimmer 2.5s linear infinite;
}

@keyframes shimmer {
  0% { transform: translateX(-100%) translateY(-100%) rotate(45deg); }
  100% { transform: translateX(100%) translateY(100%) rotate(45deg); }
}

/* Desktop: Larger logo */
@media (min-width:900px){
  .logo-circle{
    width:150px;
    height:150px;
    border-radius:40px;
    box-shadow:0 25px 55px -15px rgba(99,102,241,.6), 0 15px 30px -10px rgba(139,92,246,.5);
    border:5px solid rgba(255,255,255,.9);
  }
}

@media (min-width:1200px){
  .logo-circle{
    width:180px;
    height:180px;
    border-radius:45px;
    box-shadow:0 30px 70px -20px rgba(99,102,241,.7), 0 18px 40px -12px rgba(139,92,246,.6);
    border:6px solid rgba(255,255,255,.9);
  }
}

.logo-letter{
  font-size:3.5rem;
  font-weight:900;
  color:#fff;
  filter:drop-shadow(0 4px 8px rgba(0,0,0,.4));
  position:relative;
  z-index:2;
  text-shadow:0 2px 4px rgba(0,0,0,.3);
  font-family:'Poppins', sans-serif;
}
/* New image-based logo support */
.logo-circle .logo-img{
  width:100%;
  height:100%;
  object-fit:cover;
  display:block;
  border-radius:inherit;
  box-shadow:0 0 0 2px rgba(255,255,255,.2) inset;
  position:relative;
  z-index:2;
}

/* Desktop: Larger letter */
@media (min-width:900px){
  .logo-letter{
    font-size:4.5rem;
  }
}

@media (min-width:1200px){
  .logo-letter{
    font-size:5.5rem;
  }
}

/* Standalone PWA: slightly larger ribbon logo */
body.is-standalone .ribbon-logo .logo-circle{
  width:136px;
  height:136px;
}
@media (min-width:900px){
  body.is-standalone .ribbon-logo .logo-circle{
    width:170px;
    height:170px;
  }
}
@media (min-width:1200px){
  body.is-standalone .ribbon-logo .logo-circle{
    width:200px;
    height:200px;
  }
}
/* Fallback letter size in standalone */
body.is-standalone .logo-letter{ font-size:3.9rem; }
@media (min-width:900px){ body.is-standalone .logo-letter{ font-size:5rem; } }
@media (min-width:1200px){ body.is-standalone .logo-letter{ font-size:6rem; } }

.ribbon-title{
  flex:1;
  animation:fadeInUp 1s ease-out 0.3s both;
  padding-right:12px;
  min-width:0;
}

@keyframes fadeInUp {
  0% {
    opacity:0;
    transform:translateY(20px);
  }
  100% {
    opacity:1;
    transform:translateY(0);
  }
}

.ribbon-school{
  margin:0 0 12px;
  font-size:3.2rem;
  line-height:1;
  font-weight:900;
  letter-spacing:1.2px;
  font-family:'Raleway', 'Poppins', sans-serif;
  background:linear-gradient(135deg, #6366f1 0%, #8b5cf6 25%, #ec4899 50%, #f59e0b 75%, #ef4444 100%);
  -webkit-background-clip:text;
  background-clip:text;
  color:transparent;
  filter:drop-shadow(0 6px 12px rgba(99,102,241,.4));
  text-shadow:none;
  position:relative;
  text-transform:uppercase;
  animation:titleGlow 3s ease-in-out infinite alternate;
}

@keyframes titleGlow {
  0% {
    filter:drop-shadow(0 6px 12px rgba(99,102,241,.4));
  }
  100% {
    filter:drop-shadow(0 8px 16px rgba(236,72,153,.5));
  }
}

/* Desktop: Larger title */
@media (min-width:900px){
  .ribbon-school{
    font-size:4.2rem;
    margin:0 0 16px;
    letter-spacing:1.5px;
  }
}

@media (min-width:1200px){
  .ribbon-school{
    font-size:5rem;
    margin:0 0 20px;
    letter-spacing:2px;
  }
}

.ribbon-tagline{
  font-size:1.1rem;
  letter-spacing:.3px;
  font-family:'Inter', 'Poppins', sans-serif;
  font-weight:600;
  background:linear-gradient(135deg, #64748b 0%, #475569 50%, #374151 100%);
  -webkit-background-clip:text;
  background-clip:text;
  color:transparent;
  opacity:0.95;
  filter:drop-shadow(0 3px 6px rgba(0,0,0,.25));
  position:relative;
  font-style:italic;
  text-transform:lowercase;
  animation:subtitleFade 4s ease-in-out infinite alternate;
  white-space:nowrap;
  padding-right:8px;
  word-spacing:-1px;
}

@keyframes subtitleFade {
  0% {
    opacity:0.85;
    filter:drop-shadow(0 3px 6px rgba(0,0,0,.25));
  }
  100% {
    opacity:1;
    filter:drop-shadow(0 4px 8px rgba(71,85,105,.4));
  }
}

/* Extra small mobile: Handle very long taglines */
@media (max-width:380px){
  .ribbon-tagline{
    font-size:1rem;
    letter-spacing:.2px;
    word-spacing:-2px;
  }
}

/* Desktop: Larger tagline */
@media (min-width:900px){
  .ribbon-tagline{
    font-size:1.4rem;
    letter-spacing:.5px;
    white-space:normal;
  }
}

@media (min-width:1200px){
  .ribbon-tagline{
    font-size:1.6rem;
    letter-spacing:.6px;
    white-space:normal;
  }
}

.ribbon-menu-grid{
  display:grid;
  grid-template-columns:repeat(auto-fit,minmax(280px,1fr));
  gap:20px;
  padding:0
}

/* Desktop: Enhanced grid layout */
@media (min-width:900px){
  .ribbon-menu-grid{
    grid-template-columns:repeat(auto-fit,minmax(320px,1fr));
    gap:24px
  }
}

@media (min-width:1200px){
  .ribbon-menu-grid{
    grid-template-columns:repeat(auto-fit,minmax(350px,1fr));
    gap:28px
  }
}

@media (min-width:1600px){
  .ribbon-menu-grid{
    grid-template-columns:repeat(3,1fr);
    gap:32px
  }
}

.modern-menu-card{
  position:relative;
  display:flex;
  align-items:center;
  gap:20px;
  padding:24px;
  border:none;
  border-radius:16px;
  color:#fff;
  font:inherit;
  text-align:left;
  cursor:pointer;
  transition:all .3s cubic-bezier(.4,.2,.2,1);
  box-shadow:0 8px 25px -8px rgba(0,0,0,.2);
  overflow:hidden;
  min-height:100px
}

/* Highlight for 7 KAIH main menu */
.modern-menu-card.highlight-seven {
  outline:3px solid rgba(var(--primary-rgb),.45);
  box-shadow:0 0 0 4px rgba(var(--primary-rgb),.18),0 10px 34px -12px rgba(var(--primary-rgb),.55);
  transform:translateY(-2px);
}
.modern-menu-card.highlight-seven .card-title:after{content:'★';margin-left:6px;font-size:.9rem;filter:drop-shadow(0 0 4px rgba(var(--primary-rgb),.6));}

/* 7 KAIH Monitor */
.kebiasaan-monitor{margin:18px 0 28px;padding:18px 20px 20px;border:1px solid var(--border);background:linear-gradient(140deg,var(--card),var(--card-alt));border-radius:20px;box-shadow:0 6px 20px -10px rgba(0,0,0,.4);} 
.kebiasaan-monitor .kaih-title{margin:0 0 14px;font-size:1.15rem;font-weight:700;letter-spacing:.4px;background:linear-gradient(90deg,var(--primary),var(--primary-accent));-webkit-background-clip:text;background-clip:text;color:transparent;}
.kaih-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:16px;margin-bottom:12px;}
.kaih-item{display:flex;flex-direction:column;gap:6px;background:linear-gradient(160deg,rgba(var(--primary-rgb),.08),rgba(var(--primary-rgb),.03));border:1px solid var(--border);padding:12px 12px 14px;border-radius:16px;position:relative;}
.kaih-item:hover{box-shadow:0 8px 24px -12px rgba(var(--primary-rgb),.6);}
.kaih-check{font-size:.75rem;letter-spacing:.4px;text-transform:uppercase;font-weight:700;display:flex;align-items:center;gap:8px;color:var(--primary);}
.kaih-item textarea{min-height:70px;font-size:.7rem;resize:vertical;}
.kaih-item .kaih-note{position:relative;z-index:5;pointer-events:auto;background:var(--bg-alt);}
.rich-content textarea.kaih-note{pointer-events:auto !important;user-select:text !important;}
.kaih-actions{display:flex;align-items:center;gap:14px;flex-wrap:wrap;}
.kaih-status{min-height:16px;}
@media (max-width:640px){
  .kaih-grid{grid-template-columns:1fr;}
  .kebiasaan-monitor{padding:16px 16px 18px;}
}

/* PDF viewer block (Rapor Pendidikan) */
.pdf-viewer-block{margin:10px 0 34px;display:flex;flex-direction:column;gap:10px;padding:18px 20px 22px;border:1px solid var(--border);border-radius:20px;background:linear-gradient(140deg,var(--card),var(--card-alt));box-shadow:0 6px 22px -10px rgba(0,0,0,.45);}
.pdf-viewer-block .pdf-header{display:flex;align-items:center;gap:14px;flex-wrap:wrap;font-size:.8rem;letter-spacing:.4px;}
.pdf-viewer-block .pdf-header strong{font-size:.85rem;letter-spacing:.5px;background:linear-gradient(90deg,var(--primary),var(--primary-accent));-webkit-background-clip:text;background-clip:text;color:transparent;}
.pdf-viewer-block .pdf-header .mini-open{font-size:.65rem;text-decoration:none;padding:6px 10px;border:1px solid var(--border);border-radius:40px;opacity:.85;}
.pdf-viewer-block .pdf-header .mini-open:hover{background:var(--card-alt);} 

/* Desktop: Enhanced card styling */
@media (min-width:900px){
  .modern-menu-card{
    padding:28px 32px;
    border-radius:20px;
    min-height:110px;
    gap:24px
  }
}

@media (min-width:1200px){
  .modern-menu-card{
    padding:32px 36px;
    min-height:120px;
    gap:28px
  }
}

.modern-menu-card:hover{
  transform:translateY(-4px) scale(1.02);
  box-shadow:0 12px 40px -12px rgba(0,0,0,.3)
}

.modern-menu-card:active{
  transform:translateY(-2px) scale(1.01)
}

.card-decorative-bg{position:absolute;top:-50%;right:-30%;width:120%;height:180%;background:radial-gradient(circle at center,rgba(255,255,255,.15) 0%,transparent 50%);transform:rotate(45deg);pointer-events:none}

.card-decorative-bg::before{content:'';position:absolute;top:20%;left:20%;width:40px;height:40px;background:rgba(255,255,255,.2);border-radius:50%;animation:float 6s ease-in-out infinite}

.card-decorative-bg::after{content:'';position:absolute;bottom:30%;right:30%;width:25px;height:25px;background:rgba(255,255,255,.15);border-radius:50%;animation:float 8s ease-in-out infinite reverse}

@keyframes float{
  0%,100%{transform:translateY(0px) rotate(0deg)}
  50%{transform:translateY(-10px) rotate(180deg)}
}

.card-icon{
  font-size:2.2rem;
  z-index:2;
  filter:drop-shadow(0 4px 8px rgba(0,0,0,.3));
  /* Enhanced icon prominence - Option 1: Glow effect */
  text-shadow: 0 0 20px rgba(255,255,255,.6), 0 0 40px rgba(255,255,255,.4);
  transform: scale(1.1);
  transition: all 0.3s ease;
}

.modern-menu-card:hover .card-icon {
  transform: scale(1.2);
  text-shadow: 0 0 25px rgba(255,255,255,.8), 0 0 50px rgba(255,255,255,.6);
}

/* 7 KAIH image icon styling */
.card-icon .icon-7kaih-img{width:58px;height:58px;border-radius:18px;object-fit:cover;box-shadow:0 6px 18px -6px rgba(0,0,0,.5),0 0 0 3px rgba(255,255,255,.25);background:#fff;display:block;}
@media (min-width:900px){ .card-icon .icon-7kaih-img{width:64px;height:64px;} }
@media (min-width:1200px){ .card-icon .icon-7kaih-img{width:70px;height:70px;} }
.icon-7kaih-fallback{display:inline-block;font-size:1.1rem;font-weight:700;letter-spacing:.5px;padding:6px 10px;border-radius:12px;background:rgba(255,255,255,.2);}

/* Desktop: Larger icons */
@media (min-width:900px){
  .card-icon{
    font-size:2.6rem
  }
}

@media (min-width:1200px){
  .card-icon{
    font-size:2.8rem
  }
}

.card-content{flex:1;z-index:2}

.card-title{
  font-size:1.15rem;
  font-weight:700;
  letter-spacing:.3px;
  margin-bottom:6px;
  color:#fff;
  /* Enhanced text prominence - Option 1: Strong shadow + outline */
  text-shadow: 
    0 2px 4px rgba(0,0,0,.7),
    0 0 0 1px rgba(0,0,0,.3),
    0 0 20px rgba(255,255,255,.3);
  transform: translateY(0);
  transition: all 0.3s ease;
}

.modern-menu-card:hover .card-title {
  transform: translateY(-2px);
  text-shadow: 
    0 4px 8px rgba(0,0,0,.8),
    0 0 0 1px rgba(0,0,0,.4),
    0 0 30px rgba(255,255,255,.5);
}

/* Desktop: Larger titles */
@media (min-width:900px){
  .card-title{
    font-size:1.25rem;
    margin-bottom:8px
  }
}

@media (min-width:1200px){
  .card-title{
    font-size:1.35rem;
    margin-bottom:10px
  }
}

.card-desc{
  font-size:.85rem;
  line-height:1.4;
  letter-spacing:.1px;
  color:rgba(255,255,255,.85);
  max-width:200px;
  /* Enhanced description readability */
  text-shadow: 0 1px 3px rgba(0,0,0,.6);
  font-weight: 500;
  transition: all 0.3s ease;
}

.modern-menu-card:hover .card-desc {
  color: rgba(255,255,255,.95);
  text-shadow: 0 2px 6px rgba(0,0,0,.7);
}

/* Desktop: Larger descriptions */
@media (min-width:900px){
  .card-desc{
    font-size:.9rem;
    max-width:250px
  }
}

@media (min-width:1200px){
  .card-desc{
    font-size:.95rem;
    max-width:300px
  }
}

.card-arrow{font-size:1.4rem;z-index:2;opacity:.8;transition:.3s;filter:drop-shadow(0 2px 4px rgba(0,0,0,.3))}

.modern-menu-card:hover .card-arrow{opacity:1;transform:translateX(4px)}

.ribbon-sub{position:relative;margin:10px 0 20px;animation:fadeIn .35s ease}
.ribbon-sub-inner{background:linear-gradient(135deg,var(--card-alt),var(--card));border:1px solid var(--border);padding:14px 16px;border-radius:14px;box-shadow:0 10px 24px -12px rgba(0,0,0,.55)}
.ribbon-sub-head{font-weight:700;font-size:.85rem;margin:0 0 10px;letter-spacing:.4px}
.ribbon-sub-list{list-style:none;margin:0;padding:0;display:grid;gap:6px;font-size:.7rem}
.ribbon-sub-list a{color:var(--fg);text-decoration:none;padding:6px 10px;border:1px solid var(--border);border-radius:10px;background:rgba(var(--primary-rgb),.07);display:block;transition:.3s}
.ribbon-sub-list a:hover{background:linear-gradient(120deg,rgba(var(--primary-rgb),.3),rgba(var(--primary-accent-rgb),.25))}

@media (max-width:880px){
	.ribbon-container{padding:0 15px}
	.ribbon-header{padding:24px 20px 40px;gap:20px}
	.logo-circle{
	  width:90px;
	  height:90px;
	  box-shadow:0 12px 25px -8px rgba(99,102,241,.4), 0 6px 15px -4px rgba(139,92,246,.3);
	}
	.logo-letter{font-size:2.5rem}
	.ribbon-school{font-size:2.5rem;letter-spacing:.8px}
	.ribbon-tagline{font-size:1.1rem;letter-spacing:.3px}
	.ribbon-menu-grid{grid-template-columns:1fr;gap:16px}
	.modern-menu-card{min-height:90px;padding:20px}
	.card-title{font-size:1.05rem}
	.card-desc{font-size:.8rem}
	.ribbon-sub{margin:6px 0 14px 0}
}

@media (max-width:600px){
	.ribbon-header{flex-direction:column;text-align:center;gap:16px}
	.ribbon-menu-grid{grid-template-columns:1fr}
	.modern-menu-card{flex-direction:column;text-align:center;gap:16px;min-height:120px}
}
.section-header{display:flex;align-items:center;gap:14px;margin:4px 0 14px}
.section-header h2,.section-title-active{margin:0;font-size:1.15rem;font-weight:700;letter-spacing:.5px;background:linear-gradient(90deg,var(--primary),var(--primary-accent));-webkit-background-clip:text;background-clip:text;color:transparent}
.back-menu{padding:10px 14px;font-size:.8rem}
.mini-btn{background:var(--gradient-soft);border:1px solid var(--border);color:var(--fg);padding:6px 10px;border-radius:10px;font-size:.65rem;font-weight:600;cursor:pointer;letter-spacing:.3px}
.mini-btn:hover{background:linear-gradient(140deg,rgba(var(--primary-rgb),.25),rgba(var(--primary-accent-rgb),.25))}
.mini-btn.danger{background:rgba(239,68,68,.15);border-color:#7f1d1d;color:#fca5a5}
.mini-btn.danger:hover{background:rgba(239,68,68,.3)}
.jurnal-table{table-layout:auto;width:100%;min-width:820px;border-collapse:collapse;}
.jurnal-table th.name-col,.jurnal-table td.name-col{width:180px;white-space:nowrap;}
.jurnal-table th.class-col,.jurnal-table td.class-col{width:60px;text-align:center;}
.jurnal-table th.hcol,.jurnal-table td.hcol{width:36px;text-align:center;padding:4px 4px;font-size:.7rem}
.jurnal-table .notes-head{min-width:160px;width:40%}
.jurnal-table .notes-cell{vertical-align:top;line-height:1.25;font-size:.65rem;word-wrap:break-word;white-space:normal;}
.jurnal-table .note-item{margin-bottom:2px}
.jurnal-table-wrap{max-width:100%;overflow-x:auto}
.admin-desktop-shell{display:grid;grid-template-columns:250px 1fr;min-height:100dvh;gap:0;animation:fadeIn .35s ease}
.admin-desktop-sidebar{background:linear-gradient(180deg,var(--card) 0%,var(--card-alt) 120%);border-right:1px solid var(--border);padding:22px 18px;display:flex;flex-direction:column;position:sticky;top:0;height:100dvh;box-shadow:4px 0 18px -8px rgba(0,0,0,.55)}
.sidebar-brand{display:flex;flex-direction:column;align-items:flex-start;gap:10px;margin-bottom:20px}
.sidebar-brand .logo-ring.small-ring{width:56px;height:56px;font-size:1.5rem;margin:0}
.sidebar-title{margin:0;font-size:1.15rem;font-weight:700;letter-spacing:.5px;line-height:1.1;background:linear-gradient(90deg,var(--primary),var(--primary-accent));-webkit-background-clip:text;background-clip:text;color:transparent}
.sidebar-title span{font-weight:800;margin-left:4px}
.sidebar-nav{flex:1;overflow-y:auto;margin:0 -4px 0 0;padding-right:4px}
.sidebar-nav-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:4px}
.side-nav-item{width:100%;background:transparent;border:1px solid var(--border);color:var(--fg);padding:10px 12px;border-radius:12px;display:flex;align-items:center;gap:10px;cursor:pointer;font-size:.8rem;font-weight:600;letter-spacing:.4px;transition:.3s}
.side-nav-item:hover{background:linear-gradient(150deg,rgba(var(--primary-rgb),.2),rgba(var(--primary-accent-rgb),.18))}
.side-nav-item.active{background:linear-gradient(140deg,var(--primary),var(--primary-accent));color:#fff;box-shadow:0 6px 18px -8px rgba(var(--primary-rgb),.65);border-color:transparent}
.side-nav-item span{flex:1;text-align:left}
.admin-desktop-main{padding:28px 34px 60px;max-width:100%;}
.admin-desktop-main .admin-hero-brand.desktop-landing{padding-top:10px}
.admin-desktop-main .landing-grid-wrapper{margin-top:20px}
.admin-desktop-main .admin-menu.menu-grid{grid-template-columns:repeat(auto-fill,minmax(160px,1fr));}
.sidebar-footer{margin-top:28px;display:flex;flex-direction:column;gap:12px;font-size:.65rem;letter-spacing:.4px}
.sidebar-footer .small-btn{padding:10px 12px;font-size:.75rem}
/* Desktop-only differentiators */
body.desktop-admin{--desktop-bg:linear-gradient(135deg,var(--bg) 0%,#1a1230 45%,#22163d 100%);background:var(--desktop-bg);}
body.desktop-admin .admin-desktop-main{background:linear-gradient(180deg,rgba(var(--primary-rgb),.05),transparent 160%);}
body.desktop-admin .desktop-toolbar{position:sticky;top:0;z-index:30;padding:14px 4px 18px;margin:-10px 0 6px;background:linear-gradient(140deg,var(--card) 0%,var(--card-alt) 120%);backdrop-filter:blur(14px) saturate(160%);border:1px solid var(--border);border-radius:22px;display:flex;align-items:center;gap:20px;box-shadow:0 10px 28px -12px rgba(0,0,0,.55),0 4px 10px -4px rgba(var(--primary-rgb),.4)}
body.desktop-admin .desktop-toolbar h2{margin:0;font-size:1.35rem;letter-spacing:.6px;background:linear-gradient(90deg,var(--primary),var(--primary-accent));-webkit-background-clip:text;background-clip:text;color:transparent;font-weight:800}
body.desktop-admin .desktop-toolbar .toolbar-actions{margin-left:auto;display:flex;align-items:center;gap:10px;flex-wrap:wrap}
body.desktop-admin .desktop-toolbar .jurnal-filters-bar{display:flex;align-items:center;gap:10px}
body.desktop-admin .desktop-toolbar .small-input{padding:8px 12px;font-size:.8rem;margin:0;width:130px}
body.desktop-admin .desktop-toolbar .small-btn{padding:10px 14px;font-size:.75rem}
body.desktop-admin .admin-desktop-sidebar{backdrop-filter:blur(18px) saturate(160%);}
body.desktop-admin .side-nav-item{font-size:.78rem}
body.desktop-admin .side-nav-item.active{box-shadow:0 8px 24px -10px rgba(var(--primary-rgb),.75)}
/* New topbar replacing old desktop-toolbar */
body.desktop-admin .admin-topbar{position:sticky;top:0;z-index:40;display:flex;align-items:center;gap:20px;padding:14px 18px;margin:-4px 0 18px;background:linear-gradient(140deg,var(--card) 0%,var(--card-alt) 120%);backdrop-filter:blur(14px) saturate(160%);border:1px solid var(--border);border-radius:26px;box-shadow:0 10px 28px -12px rgba(0,0,0,.55),0 4px 10px -4px rgba(var(--primary-rgb),.4)}
body.desktop-admin .admin-topbar .topbar-title{font-size:1.4rem;font-weight:800;letter-spacing:.6px;background:linear-gradient(90deg,var(--primary),var(--primary-accent));-webkit-background-clip:text;background-clip:text;color:transparent;white-space:nowrap}
body.desktop-admin .admin-topbar .topbar-right{margin-left:auto;display:flex;align-items:center;gap:12px;flex-wrap:wrap}
body.desktop-admin .admin-topbar .small-input{padding:8px 12px;font-size:.75rem;width:120px}
body.desktop-admin .admin-topbar .jurnal-filters-inline{display:flex;align-items:center;gap:8px}
@media (prefers-color-scheme: light){body.desktop-admin{--desktop-bg:linear-gradient(135deg,#f2f5fb,#eef2ff 55%,#e8ecf9 100%);} }
/* Desktop menu sizing adjustments */
body.desktop-admin .admin-menu.menu-grid{grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:26px;margin:20px 0 34px}
body.desktop-admin .admin-menu .menu-card{min-height:210px;padding:26px 20px;border-radius:26px;font-size:.9rem}
body.desktop-admin .admin-menu .menu-card .edu-icon{width:78px;height:78px;border-radius:26px;margin-bottom:14px}
body.desktop-admin .admin-menu .menu-card .title{font-size:.95rem;margin-top:6px}
body.desktop-admin .admin-menu .menu-card .desc{display:block;font-size:.7rem;line-height:1.35;margin-top:6px}
body.desktop-admin .admin-hero-brand.desktop-landing .admin-hero-title{font-size:2.4rem}
body.desktop-admin .admin-desktop-main .card.compact h3{font-size:1.05rem}
body.desktop-admin .admin-desktop-main .input,body.desktop-admin .admin-desktop-main textarea.input{font-size:.9rem;padding:14px 16px}
body.desktop-admin .admin-desktop-main .mini-btn{font-size:.7rem;padding:8px 12px}
body.desktop-admin .admin-desktop-main .badge{font-size:.6rem}
/* Dual column layout for non-info sections (desktop) */
body.desktop-admin .dual-col{display:grid;grid-template-columns:0.38fr 0.62fr;gap:30px;align-items:start}
body.desktop-admin .dual-col .grid{grid-template-columns:repeat(auto-fill,minmax(220px,1fr));}
/* Wide gallery single layout */
body.desktop-admin .gallery-wide-grid{grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:16px}
/* Jurnal table width optimization */
body.desktop-admin.full-width .jurnal-table{min-width:1000px}
body.desktop-admin .jurnal-table th.hcol,body.desktop-admin .jurnal-table td.hcol{width:48px}
@media (max-width:1400px){body.desktop-admin .dual-col{grid-template-columns:1fr}}
body.desktop-admin .dual-col .card.compact{margin:0}
body.desktop-admin .dual-col .card.compact + .card.compact{margin-top:0}
body.desktop-admin .dual-col ul.list li{padding:12px 0}
@media (max-width:1023px){.admin-desktop-shell{display:block}.admin-desktop-sidebar{display:none}.admin-desktop-main{padding:0}}
/* Full width toggle adjustments */
body.desktop-admin.full-width .admin-desktop-shell{grid-template-columns:220px 1fr;}
body.desktop-admin .admin-desktop-main{max-width:none;margin:0;}
body.desktop-admin.full-width .admin-desktop-main{max-width:none;}
body.desktop-admin:not(.full-width) .admin-desktop-main{max-width:none;}
/* Responsive horizontal padding so tidak ada ruang kosong besar */
body.desktop-admin .admin-desktop-main{padding-left:clamp(20px,2.2vw,50px);padding-right:clamp(20px,2.2vw,50px);} 
.row-actions{display:flex;gap:6px;margin-top:6px;flex-wrap:wrap}
.row-head{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.overlay-actions{position:absolute;top:8px;right:8px;display:flex;gap:6px;opacity:0;transition:.3s}
.gal-item:hover .overlay-actions{opacity:1}
.toast{position:fixed;bottom:18px;left:50%;transform:translate(-50%,40px);background:linear-gradient(120deg,var(--primary),var(--primary-accent));color:#fff;padding:12px 18px;border-radius:14px;font-size:.8rem;font-weight:600;letter-spacing:.4px;box-shadow:0 10px 30px -10px rgba(var(--primary-rgb),.65);opacity:0;pointer-events:none;transition:.4s cubic-bezier(.4,.2,.2,1);z-index:120}
.toast[data-type="error"]{background:linear-gradient(120deg,#b91c1c,#ef4444)}
.toast[data-type="warn"]{background:linear-gradient(120deg,#92400e,#f59e0b)}
.toast[data-type="success"]{background:linear-gradient(120deg,#065f46,#10b981)}
.toast.show{opacity:1;transform:translate(-50%,0);pointer-events:auto}
.modal-overlay{position:fixed;inset:0;background:rgba(10,6,18,.65);backdrop-filter:blur(10px) saturate(180%);display:flex;align-items:center;justify-content:center;z-index:130;opacity:0;pointer-events:none;transition:.3s}
.modal-overlay.open{opacity:1;pointer-events:auto}
.modal{background:linear-gradient(160deg,var(--card-alt),var(--card));border:1px solid var(--border);padding:24px 22px;border-radius:20px;max-width:380px;width:100%;box-shadow:0 20px 50px -18px rgba(0,0,0,.7)}
.modal h3{margin:0 0 8px;font-size:1.05rem}
.modal p{margin:0 0 18px;color:var(--muted);font-size:.85rem;line-height:1.4}
.modal .actions{display:flex;gap:10px;justify-content:flex-end}
body.modal-open{overflow:hidden}
@keyframes sheetUp{from{transform:translateY(32px);opacity:0}to{transform:translateY(0);opacity:1}}
@media (max-width:620px){
	.modal-overlay{align-items:flex-end;}
	.modal{max-width:100%;border-radius:26px 26px 0 0;padding:26px 22px 34px;animation:sheetUp .35s cubic-bezier(.4,.2,.2,1);box-shadow:0 -4px 40px -6px rgba(0,0,0,.55),0 10px 32px -14px rgba(var(--primary-rgb),.45)}
	.modal .actions{justify-content:space-between}
}
@media (max-width:760px){.admin-menu.menu-grid{grid-template-columns:repeat(auto-fill,minmax(140px,1fr));}.admin-menu .menu-card{min-height:140px;padding:16px 12px}.admin-menu .menu-card .desc{display:none}}
/* Smooth scroll + font rendering hints */
html{scroll-behavior:smooth}
/* Header */
.app-header{position:sticky;top:0;z-index:40;background:var(--gradient);color:white;padding:10px 16px 12px 16px;box-shadow:0 4px 20px -2px rgba(var(--primary-rgb),.45),0 2px 6px -1px rgba(0,0,0,.35);border-bottom:1px solid rgba(255,255,255,.08);backdrop-filter:saturate(180%) blur(14px);display:flex;align-items:center;gap:14px}
.app-header h1{margin:0;font-size:1rem;line-height:1.2;font-weight:600;letter-spacing:.3px;flex:1}
.app-header nav{margin-left:auto}
.app-header .brand{display:flex;align-items:center;gap:12px}
.app-header .actions .btn{padding:10px 14px;font-size:.8rem;line-height:1;border-radius:12px}
.app-header .btn.outline{color:#fff;border:1px solid rgba(255,255,255,.75);background:rgba(255,255,255,.12)}
.app-header .btn.outline:hover{background:rgba(255,255,255,.22);color:#fff}
.app-header .btn{box-shadow:none}
.brand-logo{width:42px;height:42px;border-radius:12px;box-shadow:0 4px 16px rgba(0,0,0,.35),0 0 0 1px rgba(255,255,255,.15);object-fit:cover}
.brand-text h1{font-size:1.1rem;line-height:1.2;margin:0}
.brand-text .subtitle{font-size:.72rem;letter-spacing:.5px;opacity:.85;text-transform:uppercase;font-weight:600}
.header-actions{display:flex;align-items:center;gap:8px}
main{
  padding:18px;
  max-width:100%;
  margin:0 auto;
  width:100%
}

/* Desktop: Full width layout */
@media (min-width:900px){
  main{
    max-width:95%;
    padding:20px 40px;
    margin:0 auto
  }
}

@media (min-width:1200px){
  main{
    max-width:90%;
    padding:24px 60px
  }
}

@media (min-width:1600px){
  main{
    max-width:85%;
    padding:28px 80px
  }
}
.card{background:linear-gradient(180deg,var(--card) 0%,var(--card-alt) 120%);border:1px solid var(--border);border-radius:18px;padding:20px;margin:16px 0;box-shadow:0 4px 22px -4px rgba(0,0,0,.5),0 0 0 1px rgba(255,255,255,.03);position:relative;overflow:hidden}
.card:before{content:"";position:absolute;inset:0;pointer-events:none;background:radial-gradient(circle at 85% -10%,rgba(var(--primary-rgb),.25),transparent 60%)}
.card.blur{backdrop-filter:blur(10px) saturate(160%)}
.muted-card{background:transparent;border:1px dashed var(--border);color:var(--muted)}
.btn{--btn-bg:var(--primary);--btn-bg-hover:var(--primary-600);background:linear-gradient(120deg,var(--btn-bg),var(--primary-accent));color:#fff;border:0;border-radius:14px;padding:12px 18px;font-size:.95rem;cursor:pointer;font-weight:600;letter-spacing:.3px;display:inline-flex;align-items:center;gap:6px;line-height:1;position:relative;transition:box-shadow .25s,transform .2s}
.btn:hover{box-shadow:0 6px 18px -6px rgba(var(--primary-rgb),.55),0 2px 6px -2px rgba(var(--primary-accent-rgb),.55)}
.btn:active{transform:translateY(2px)}
.btn.secondary{background:transparent;background:var(--gradient-soft);color:var(--fg);border:1px solid var(--border);box-shadow:none}
.btn.secondary:hover{background:linear-gradient(150deg,rgba(var(--primary-rgb),.22),rgba(var(--primary-accent-rgb),.20))}
.btn.outline{background:transparent;color:var(--primary);border:1px solid var(--primary);box-shadow:none}
.btn.outline:hover{background:rgba(var(--primary-rgb),.12)}
.btn#btnRefreshUI{border-style:dashed}
.chip{display:inline-flex;align-items:center;gap:4px;padding:6px 10px;border-radius:999px;font-size:.75rem;background:rgba(var(--primary-rgb),.15);color:var(--primary);font-weight:500}
.input, textarea.input{width:100%;padding:12px 14px;border:1px solid var(--border);border-radius:14px;margin:8px 0;background:var(--bg-alt);color:var(--fg);font-size:.95rem;box-shadow:0 2px 4px -2px rgba(0,0,0,.4) inset}
.input:focus, textarea.input:focus{outline:2px solid var(--focus);border-color:var(--focus);box-shadow:0 0 0 3px rgba(var(--primary-rgb),.25)}
.input::placeholder{color:var(--muted)}
label{display:block;margin-top:8px;font-weight:600}
.list{list-style:none;padding:0;margin:0}
.list li{padding:14px 0;border-bottom:1px solid var(--border);animation:fadeIn .25s ease}
.info-content{white-space:pre-wrap;word-wrap:break-word;overflow-wrap:break-word;line-height:1.4;margin:6px 0 4px;font-size:.9rem}
.truncated-info{position:relative;max-height:12.5em;overflow:hidden}
.truncated-info:after{content:"";position:absolute;left:0;right:0;bottom:0;height:3.2em;background:linear-gradient(to bottom,rgba(15,10,23,0),var(--bg));pointer-events:none}
.bright-theme .truncated-info:after{background:linear-gradient(to bottom,rgba(255,255,255,0),var(--bg))}
.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:14px}
.small{color:var(--muted);font-size:.9em}
.navbar{
  display:flex;
  align-items:center;
  gap:8px;
  padding:0 20px;
  margin-bottom:20px
}

/* Desktop navbar styling */
@media (min-width:900px){
  .navbar{
    padding:0 40px;
    margin-bottom:0
  }
}

@media (min-width:1200px){
  .navbar{
    padding:0 60px
  }
}

.navbar a{color:white;margin-right:8px;padding:8px 12px;text-decoration:none;font-weight:500;position:relative;transition:color .25s}
.navbar a:after{content:"";position:absolute;left:12px;right:12px;bottom:4px;height:3px;border-radius:3px;background:linear-gradient(90deg,var(--primary),var(--primary-accent));opacity:0;transform:translateY(4px);transition:.25s}
.navbar a:hover:after{opacity:1;transform:translateY(0)}
.navbar .actions{display:flex;align-items:center;gap:6px;margin-left:auto}
.desktop-menu{display:inline-flex;align-items:center;gap:10px}
.menu{position:relative;display:inline-block}
.menu > button{background:rgba(255,255,255,.12);border:1px solid rgba(255,255,255,.22);color:#fff;border-radius:14px;padding:8px 12px;cursor:pointer;font-weight:500;display:flex;align-items:center;gap:4px}
.menu > button:hover{background:rgba(255,255,255,.2)}
.submenu{position:absolute;top:110%;left:0;background:var(--card);border:1px solid var(--border);border-radius:16px;min-width:230px;box-shadow:0 16px 48px -12px rgba(0,0,0,.7),0 0 0 1px rgba(255,255,255,.05);display:none;z-index:70;padding:8px}
.submenu a, .submenu button{display:block;width:100%;text-align:left;background:transparent;color:var(--fg);border:none;padding:10px 12px;text-decoration:none;border-radius:10px;font-weight:500}
.submenu a:hover, .submenu button:hover{background:rgba(var(--primary-rgb),.15);color:var(--primary)}
.menu.open .submenu{display:block}
.badge{display:inline-block;background:linear-gradient(120deg,var(--primary),var(--primary-accent));color:white;padding:4px 10px;border-radius:999px;font-size:.65rem;letter-spacing:.5px;text-transform:uppercase;font-weight:600}
.tabs{display:flex;gap:8px;margin:4px 0 12px}
.tabs .tab{background:var(--bg-alt);border:1px solid var(--border);color:var(--fg);padding:10px 16px;border-radius:14px;cursor:pointer;font-weight:600;letter-spacing:.3px;flex:1;display:flex;justify-content:center;position:relative}
.tabs .tab.active{background:linear-gradient(110deg,var(--primary) 0%,var(--primary-accent) 95%);color:white;border-color:transparent;box-shadow:0 6px 18px -6px rgba(var(--primary-rgb),.65)}
.install-banner{position:fixed;bottom:80px;left:50%;transform:translateX(-50%);background:linear-gradient(130deg,var(--primary) 0%,var(--primary-accent));color:#fff;padding:14px 18px;border-radius:18px;box-shadow:0 16px 40px -12px rgba(var(--primary-rgb),.65),0 4px 12px -2px rgba(0,0,0,.45);display:flex;gap:14px;align-items:center;z-index:65;font-size:.9rem}
.install-banner button{background:#fff;color:var(--primary);border:none;border-radius:12px;padding:10px 14px;font-weight:600;cursor:pointer}
.section-title{display:flex;align-items:center;justify-content:space-between;gap:8px}
.kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:10px}
.kpi{background:linear-gradient(180deg,rgba(var(--primary-rgb),.18),rgba(var(--primary-accent-rgb),.08));border:1px solid var(--border);border-radius:16px;padding:14px;box-shadow:0 4px 20px -6px rgba(var(--primary-rgb),.35)}
/* subtle animation */
@keyframes fadeIn{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}
.card{animation:fadeIn .3s ease}

/* Offline overlay */
.offline-overlay{position:fixed;inset:0;z-index:1000;background:radial-gradient(circle at 30% 20%,rgba(var(--primary-rgb),.4),rgba(0,0,0,.8));backdrop-filter:blur(8px) saturate(160%);display:flex;align-items:center;justify-content:center;padding:24px}
.offline-box{background:linear-gradient(160deg,var(--card-alt),var(--card));border:1px solid var(--border);border-radius:22px;padding:28px 26px;max-width:540px;box-shadow:0 18px 60px -18px rgba(var(--primary-rgb),.55),0 4px 18px -4px rgba(0,0,0,.6);text-align:center}
.offline-box h2{margin:0 0 6px 0}
.offline-box p{color:var(--muted)}
.offline-actions{margin-top:12px}

/* Bottom navigation (mobile only) - Modern 5-button layout */
.bottom-nav{
  position:fixed;
  z-index:70;
  left:0;
  right:0;
  bottom:0;
  height:78px;
  background:linear-gradient(160deg, rgba(15,10,23,.95), rgba(29,21,48,.9));
  backdrop-filter:blur(20px) saturate(180%);
  display:flex;
  justify-content:space-around;
  align-items:flex-end;
  padding:8px 12px 12px;
  border-top:1px solid rgba(139,92,246,.2);
  box-shadow:0 -8px 32px -12px rgba(0,0,0,.8), 0 -2px 16px -4px rgba(139,92,246,.3);
  border-radius:24px 24px 0 0;
  overflow: visible;
}

.bottom-nav + *{margin-bottom:96px}

.bottom-nav button{
  background:transparent;
  border:none;
  color:var(--muted);
  display:flex;
  flex-direction:column;
  align-items:center;
  gap:4px;
  font-size:.65rem;
  font-weight:600;
  letter-spacing:.3px;
  cursor:pointer;
  padding:8px 6px;
  border-radius:16px;
  min-width:60px;
  flex:1;
  transition:all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
  position:relative;
}

.bottom-nav button .icon{
  font-size:1.3rem;
  line-height:1;
  transition:all 0.3s ease;
}

.bottom-nav button span:not(.icon){
  font-size:.6rem;
  opacity:.8;
  transition:all 0.3s ease;
  text-transform:uppercase;
}

/* 7KAIH Special button - Hero style */
.bottom-nav button.btn-7kaih{
  background:linear-gradient(135deg, #8b5cf6 0%, #ec4899 50%, #f59e0b 100%);
  color:#fff;
  border-radius:24px;
  padding:12px 8px 16px;
  transform:translateY(-12px);
  box-shadow:0 12px 32px -8px rgba(139,92,246,.6), 0 4px 16px -4px rgba(236,72,153,.4);
  border:3px solid rgba(255,255,255,.2);
  min-width:70px;
  position:relative;
  overflow:hidden;
}

.bottom-nav button.btn-7kaih::before{
  content:'';
  position:absolute;
  top:-50%;
  left:-50%;
  width:200%;
  height:200%;
  background:linear-gradient(45deg, transparent, rgba(255,255,255,.3), transparent);
  animation:heroShimmer 3s linear infinite;
}

@keyframes heroShimmer {
  0% { transform: translateX(-100%) translateY(-100%) rotate(45deg); }
  100% { transform: translateX(100%) translateY(100%) rotate(45deg); }
}

.bottom-nav button.btn-7kaih .icon{
  font-size:1.8rem;
  filter:drop-shadow(0 2px 4px rgba(0,0,0,.3));
  position:relative;
  z-index:2;
}
/* If the icon is an <img> from menu tree, scale it up inside hero button */
.bottom-nav button.btn-7kaih .icon img.menu-icon-img,
.bottom-nav button.btn-7kaih .icon .icon-7kaih-img{
  width: 1.6rem;
  height: 1.6rem;
  border-radius: 6px;
}

.bottom-nav button.btn-7kaih span:not(.icon){
  font-size:.7rem;
  opacity:1;
  font-weight:700;
  text-shadow:0 1px 2px rgba(0,0,0,.3);
  position:relative;
  z-index:2;
}

/* Regular button active states */
.bottom-nav button.active:not(.btn-7kaih){
  color:var(--primary);
  background:linear-gradient(140deg,rgba(var(--primary-rgb),.2),rgba(var(--primary-accent-rgb),.15));
  box-shadow:0 6px 20px -8px rgba(var(--primary-rgb),.5);
  transform:translateY(-2px);
}

.bottom-nav button.active:not(.btn-7kaih) .icon{
  transform:scale(1.1);
}

.bottom-nav button.active:not(.btn-7kaih) span:not(.icon){
  opacity:1;
}

/* Back button (rightmost) */
.bottom-nav button.btn-back{
  background:linear-gradient(135deg, rgba(239,68,68,.2), rgba(220,38,38,.1));
  border:1px solid rgba(239,68,68,.3);
  color:#ef4444;
  order:10;
}

.bottom-nav button.btn-back:active,
.bottom-nav button.btn-back.active{
  background:linear-gradient(135deg, rgba(239,68,68,.3), rgba(220,38,38,.2));
  box-shadow:0 6px 20px -8px rgba(239,68,68,.5);
  transform:translateY(-2px);
}

/* Press animations */
.bottom-nav button:active:not(.btn-7kaih){transform:translateY(1px)}
.bottom-nav button.btn-7kaih:active{transform:translateY(-8px) scale(0.95)}

/* Hover effects for touch devices */
@media (hover: hover) {
  .bottom-nav button:hover:not(.btn-7kaih){
    color:var(--primary);
    transform:translateY(-1px);
  }
  
  .bottom-nav button.btn-7kaih:hover{
    transform:translateY(-14px) scale(1.02);
    box-shadow:0 16px 40px -8px rgba(139,92,246,.7), 0 6px 20px -4px rgba(236,72,153,.5);
  }
}

/* Small screen optimizations */
@media (max-width: 380px) {
  .bottom-nav {
    padding:6px 8px 10px;
    height:72px;
  }
  
  .bottom-nav button {
    min-width:50px;
    padding:6px 4px;
  }
  
  .bottom-nav button .icon {
    font-size:1.1rem;
  }
  
  .bottom-nav button span:not(.icon) {
    font-size:.55rem;
  }
  
  .bottom-nav button.btn-7kaih {
    min-width:60px;
    transform:translateY(-9px);
  }
  
  .bottom-nav button.btn-7kaih .icon {
    font-size:1.6rem;
  }
  
  .bottom-nav button.btn-7kaih span:not(.icon) {
    font-size:.65rem;
  }
}

/* Very small screens */
@media (max-width: 320px) {
  .bottom-nav button span:not(.icon) {
    display:none;
  }
  
  .bottom-nav button.btn-7kaih span:not(.icon) {
    display:block;
    font-size:.6rem;
  }
}

/* PWA/Notch support */
@supports (padding: max(0px)) {
  .bottom-nav {
    padding-left: max(12px, env(safe-area-inset-left));
    padding-right: max(12px, env(safe-area-inset-right));
  }
}

/* Force hide all bottom nav on desktop */
@media (min-width: 900px) {
  .bottom-nav {
    display: none !important;
  }
  
  body {
    padding-bottom: 0 !important;
  }
}
/* Desktop Navigation */
.desktop-nav{
  display:flex;
  align-items:center;
  justify-content:space-between;
  background:linear-gradient(135deg,rgba(255,255,255,.95) 0%,rgba(248,250,252,.9) 100%);
  backdrop-filter:blur(20px) saturate(180%);
  border:1px solid rgba(0,0,0,.08);
  border-radius:16px;
  padding:12px 24px;
  box-shadow:0 8px 25px -8px rgba(0,0,0,.1);
  margin-bottom:20px
}

.nav-brand{
  display:flex;
  align-items:center;
  gap:16px
}

.nav-logo{
  width:48px;
  height:48px;
  border-radius:12px;
  background:linear-gradient(135deg,var(--primary),var(--primary-accent));
  display:flex;
  align-items:center;
  justify-content:center;
  box-shadow:0 6px 20px -8px rgba(var(--primary-rgb),.4)
}

.nav-logo-letter{
  font-size:1.4rem;
  font-weight:900;
  color:#fff;
  filter:drop-shadow(0 2px 4px rgba(0,0,0,.3))
}

.nav-title{
  font-size:1.2rem;
  font-weight:700;
  letter-spacing:.3px;
  color:#1e293b
}

.nav-menu{
  display:flex;
  gap:8px;
  align-items:center
}

.nav-btn{
  background:transparent;
  border:none;
  display:flex;
  align-items:center;
  gap:8px;
  padding:10px 16px;
  border-radius:12px;
  cursor:pointer;
  font:inherit;
  font-size:.9rem;
  font-weight:600;
  color:#64748b;
  transition:all .3s cubic-bezier(.4,.2,.2,1);
  position:relative;
  overflow:hidden
}

.nav-btn:hover{
  background:rgba(var(--primary-rgb),.1);
  color:var(--primary);
  transform:translateY(-1px)
}

.nav-btn.active{
  background:linear-gradient(135deg,var(--primary),var(--primary-accent));
  color:#fff;
  box-shadow:0 6px 20px -8px rgba(var(--primary-rgb),.5)
}

.nav-btn.active .nav-icon{
  filter:drop-shadow(0 2px 4px rgba(0,0,0,.3))
}

.nav-icon{
  font-size:1.1rem;
  line-height:1
}

.nav-text{
  letter-spacing:.2px
}

/* Hide desktop nav on mobile */
@media (max-width:898px){
  .desktop-nav{
    display:none
  }
}

@media (min-width: 769px){
	/* Desktop enhancements - bottom nav already hidden above */
	body{
	  background:linear-gradient(135deg,#f8fafc 0%,#f1f5f9 50%,#e2e8f0 100%);
	  min-height:100vh
	}
	
	/* Enhanced container styling for desktop */
	.container{
	  max-width:95%;
	  margin:0 auto;
	  padding:0 40px
	}
}

@media (max-width: 768px){
	body{padding-bottom:72px}
}

/* Utility */
.text-center{text-align:center}
.mt-2{margin-top:8px}
.mt-3{margin-top:12px}
.mt-4{margin-top:18px}
.flex{display:flex}
.gap-2{gap:8px}
.gap-3{gap:12px}
.items-center{align-items:center}
.justify-between{justify-content:space-between}
.w-full{width:100%}

/* Dashboard menu grid */
.menu-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(130px,1fr));gap:16px;margin:8px 0 20px}
.menu-card{background:var(--gradient-soft);border:1px solid var(--border);border-radius:20px;padding:18px 14px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;text-align:center;cursor:pointer;position:relative;min-height:140px;transition:.35s cubic-bezier(.4,.2,.2,1);overflow:hidden;font-weight:600;font-size:.85rem;letter-spacing:.3px;color:var(--fg)}
.menu-card:before{content:"";position:absolute;inset:0;background:radial-gradient(circle at 70% 20%,rgba(var(--primary-rgb),.35),transparent 65%);opacity:0;transition:.5s}
.menu-card .icon{font-size:2.15rem;line-height:1}
.menu-card:hover{background:linear-gradient(150deg,rgba(var(--primary-rgb),.32),rgba(var(--primary-accent-rgb),.25));box-shadow:0 10px 28px -10px rgba(var(--primary-rgb),.65),0 4px 14px -4px rgba(0,0,0,.55);transform:translateY(-6px)}
.menu-card:hover:before{opacity:1}
.menu-card.active{background:linear-gradient(160deg,var(--primary) 0%,var(--primary-accent) 95%);color:#fff;box-shadow:0 14px 36px -12px rgba(var(--primary-rgb),.75)}
.menu-card.active:before{opacity:.4}
.menu-section{animation:fadeIn .4s ease}

/* Scrollbar styling (webkit) */
::-webkit-scrollbar{width:10px}
::-webkit-scrollbar-track{background:var(--bg-alt)}
::-webkit-scrollbar-thumb{background:linear-gradient(var(--primary),var(--primary-accent));border-radius:8px}
::-webkit-scrollbar-thumb:hover{filter:brightness(1.1)}

/* ===========================
   V2 CONTENT SYSTEM STYLES
   =========================== */

.content-v2-container {
  display: grid;
  grid-template-columns: 300px 1fr;
  gap: 40px; /* lebih lega */
  max-width: 1600px; /* diperlebar */
  width: 100%;
  margin: 0 auto;
  padding: 0 32px; /* tambah horizontal padding */
  min-height: calc(100vh - 200px);
  overflow-x: hidden;
  -webkit-overflow-scrolling: touch;
}

@media (max-width: 768px) {
  .content-v2-container {
    grid-template-columns: 1fr;
    gap: 16px;
    padding: 0 16px;
    max-width: 100%;
  }
  
  .v2-sidebar {
    order: 2;
    max-height: 300px;
    overflow-y: auto;
    position: static;
  }
}

/* Tablet responsive */
@media (min-width: 769px) and (max-width: 1024px) {
  .content-v2-container {
    max-width: 100%;
    grid-template-columns: 250px 1fr;
    gap: 24px;
    padding: 0 24px;
  }
}

/* Desktop medium */
@media (min-width: 1025px) and (max-width: 1399px) {
  .content-v2-container {
    max-width: 1400px;
    padding: 0 28px;
  }
}

/* V2 Sidebar Navigation */
/* V2 Sidebar Navigation - Modern Design */
.v2-sidebar {
  background: linear-gradient(135deg, var(--card) 0%, var(--card-alt) 100%);
  border: 1px solid rgba(0,0,0,.08);
  border-radius: 24px;
  padding: 24px;
  height: fit-content;
  position: sticky;
  top: 20px;
  box-shadow: 0 8px 25px -8px rgba(0,0,0,.1);
  backdrop-filter: blur(20px) saturate(180%);
}

.sidebar-header {
  margin-bottom: 20px;
  padding-bottom: 16px;
  border-bottom: 1px solid var(--border);
}

.sidebar-header h3 {
  margin: 0;
  font-size: 1rem;
  font-weight: 700;
  color: var(--fg);
  letter-spacing: 0.3px;
  background: linear-gradient(90deg, var(--primary), var(--primary-accent));
  -webkit-background-clip: text;
  background-clip: text;
  color: transparent;
}

.v2-menu-tree {
  list-style: none;
  margin: 0;
  padding: 0;
}

.menu-node {
  margin: 4px 0;
}

.menu-item {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 12px 16px;
  border-radius: 16px;
  cursor: pointer;
  font-size: 0.85rem;
  font-weight: 600;
  transition: all 0.3s cubic-bezier(.4,.2,.2,1);
  color: var(--fg-soft);
  position: relative;
  overflow: hidden;
}

.menu-item::before {
  content: '';
  position: absolute;
  left: 0;
  top: 0;
  bottom: 0;
  width: 4px;
  background: linear-gradient(135deg, var(--primary), var(--primary-accent));
  transform: scaleY(0);
  transition: transform 0.3s ease;
  border-radius: 0 2px 2px 0;
}

.menu-item:hover {
  background: rgba(var(--primary-rgb), 0.1);
  color: var(--primary);
  transform: translateX(4px);
  box-shadow: 0 4px 12px -4px rgba(var(--primary-rgb), 0.3);
}

.menu-item:hover::before {
  transform: scaleY(1);
}

.menu-item.container {
  font-weight: 700;
  color: var(--primary);
  background: rgba(var(--primary-rgb), 0.08);
}

.menu-item.container:hover {
  background: rgba(var(--primary-rgb), 0.15);
  transform: translateX(6px);
}

.menu-item.leaf:hover {
  background: linear-gradient(120deg, rgba(var(--primary-rgb), 0.12), rgba(var(--primary-accent-rgb), 0.08));
}

.menu-icon {
  font-size: 1.1rem;
  line-height: 1;
  filter: drop-shadow(0 2px 4px rgba(0,0,0,0.1));
}

.menu-title {
  flex: 1;
  letter-spacing: 0.2px;
}

.expand-icon {
  font-size: 0.8rem;
  opacity: 0.6;
  transition: all 0.2s ease;
}

.menu-item:hover .expand-icon {
  opacity: 1;
  transform: translateX(2px);
}

/* Submenu dalam sidebar navigation */
.v2-menu-tree .submenu {
  list-style: none;
  margin: 4px 0;
  padding: 0;
  padding-left: 16px;
  position: relative;
}

.v2-menu-tree .submenu::before {
  content: '';
  position: absolute;
  left: 8px;
  top: 0;
  bottom: 0;
  width: 1px;
  background: linear-gradient(180deg, var(--border) 0%, transparent 100%);
}

.v2-menu-tree .submenu .menu-item {
  font-size: 0.8rem;
  padding: 8px 12px;
  margin-left: 8px;
  border-radius: 12px;
  position: relative;
}

.v2-menu-tree .submenu .menu-item::before {
  width: 2px;
  border-radius: 0 1px 1px 0;
}

.v2-menu-tree .submenu .menu-item:hover {
  transform: translateX(2px);
}

.expand-icon {
  font-size: 0.7rem;
  opacity: 0.6;
  transition: transform 0.2s;
}

.submenu {
  list-style: none;
  margin: 4px 0;
  padding: 0;
  border-left: 1px solid var(--border);
  margin-left: 12px;
}

/* Content Main Area */
.content-main {
  min-height: 400px;
}

.page-header {
  margin-bottom: 24px;
}

.page-header h1 {
  margin: 0 0 8px 0;
  font-size: 1.8rem;
  font-weight: 700;
  color: var(--fg);
  letter-spacing: 0.3px;
}

.page-subtitle {
  margin: 0;
  color: var(--muted);
  font-size: 0.95rem;
}

/* Submenu Grid - Enhanced untuk consistency dengan menu utama */
.submenu-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
  gap: 20px;
  margin-top: 24px;
  padding: 0;
}

/* Desktop: Enhanced submenu grid layout */
@media (min-width:900px){
  .submenu-grid{
    grid-template-columns: repeat(auto-fit, minmax(320px, 1fr));
    gap: 24px;
    margin-top: 32px;
  }
}

@media (min-width:1200px){
  .submenu-grid{
    grid-template-columns: repeat(auto-fit, minmax(350px, 1fr));
    gap: 28px;
  }
}

@media (min-width:1600px){
  .submenu-grid{
    grid-template-columns: repeat(3, 1fr);
    gap: 32px;
  }
}

/* Empty submenu state */
.empty-submenu-state {
  padding: 40px 20px;
  text-align: center;
}

.empty-submenu-state .card {
  max-width: 400px;
  margin: 0 auto;
  padding: 32px;
  background: linear-gradient(135deg, var(--card) 0%, var(--card-alt) 100%);
  border: 1px solid var(--border);
  border-radius: 20px;
  box-shadow: 0 8px 25px -8px rgba(0,0,0,.1);
}

.empty-submenu-state .card h3 {
  margin: 0 0 12px;
  color: var(--fg);
  font-size: 1.2rem;
}

.empty-submenu-state .card p {
  margin: 0;
  color: var(--muted);
  font-size: .9rem;
  line-height: 1.5;
}

/* Modern Menu Grid - Like the image design */
.modern-menu-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(320px, 1fr));
  gap: 24px;
  margin-top: 24px;
  padding: 0;
}

/* Modern Menu Card - Inspired by the image */
.modern-menu-card {
  border: none !important;
  border-radius: 20px !important;
  padding: 0 !important;
  cursor: pointer;
  transition: all 0.3s ease;
  position: relative;
  overflow: hidden;
  min-height: 140px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  color: white !important;
  box-shadow: 0 8px 32px rgba(0,0,0,0.15);
}

.modern-menu-card:hover {
  transform: translateY(-4px) scale(1.02);
  box-shadow: 0 16px 48px rgba(0,0,0,0.25);
}

.menu-card-content {
  padding: 24px;
  flex: 1;
  z-index: 2;
  position: relative;
}

.menu-card-icon {
  font-size: 2.5rem;
  margin-bottom: 12px;
}

.menu-card-title {
  margin: 0 0 8px 0;
  font-size: 1.3rem;
  font-weight: 700;
  color: white !important;
  text-shadow: 0 2px 4px rgba(0,0,0,0.2);
  line-height: 1.2;
}

.menu-card-desc {
  margin: 0 0 12px 0;
  font-size: 0.9rem;
  color: rgba(255,255,255,0.9) !important;
  line-height: 1.4;
  text-shadow: 0 1px 2px rgba(0,0,0,0.1);
}

.menu-card-badge {
  margin-top: auto;
}

.menu-card-badge .content-status {
  background: rgba(255,255,255,0.25) !important;
  color: white !important;
  border: 1px solid rgba(255,255,255,0.3) !important;
  font-size: 0.75rem;
  padding: 4px 12px;
  border-radius: 16px;
  backdrop-filter: blur(10px);
  font-weight: 600;
}

.menu-card-arrow {
  font-size: 1.5rem;
  color: rgba(255,255,255,0.7);
  margin-right: 20px;
  transition: transform 0.2s ease;
  z-index: 2;
  position: relative;
}

.modern-menu-card:hover .menu-card-arrow {
  transform: translateX(4px);
  color: white;
}

/* Decorative elements untuk meniru pattern di gambar */
.modern-menu-card::before {
  content: '';
  position: absolute;
  top: 0;
  right: 0;
  width: 100px;
  height: 100px;
  background: rgba(255,255,255,0.1);
  border-radius: 50%;
  transform: translate(30px, -30px);
  z-index: 1;
}

.modern-menu-card::after {
  content: '';
  position: absolute;
  bottom: 0;
  right: 0;
  width: 60px;
  height: 60px;
  background: rgba(0,0,0,0.1);
  border-radius: 50%;
  transform: translate(20px, 20px);
  z-index: 1;
}

/* Responsive untuk modern menu cards */
@media (max-width: 768px) {
  .modern-menu-grid {
    grid-template-columns: 1fr;
    gap: 16px;
    margin-top: 16px;
  }
  
  .modern-menu-card {
    min-height: 120px;
  }
  
  .menu-card-content {
    padding: 20px;
  }
  
  .menu-card-icon {
    font-size: 2rem;
    margin-bottom: 8px;
  }
  
  .menu-card-title {
    font-size: 1.15rem;
  }
  
  .menu-card-desc {
    font-size: 0.85rem;
  }
}

/* Content status untuk submenu dan konten */
.content-status {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  font-size: 0.75rem;
  padding: 2px 8px;
  background: rgba(var(--success-rgb, 34, 197, 94), 0.1);
  color: rgb(var(--success-rgb, 34, 197, 94));
  border-radius: 12px;
  font-weight: 500;
  border: 1px solid rgba(var(--success-rgb, 34, 197, 94), 0.2);
}

.content-status.draft {
  background: rgba(var(--warning-rgb, 245, 158, 11), 0.1);
  color: rgb(var(--warning-rgb, 245, 158, 11));
  border-color: rgba(var(--warning-rgb, 245, 158, 11), 0.2);
}

.content-status.unavailable {
  background: rgba(var(--muted-rgb, 100, 116, 139), 0.1);
  color: var(--muted);
  border-color: rgba(var(--muted-rgb, 100, 116, 139), 0.2);
}

/* Breadcrumb */
.breadcrumb {
  margin-bottom: 2px; /* reduced gap */
  display: flex;
  align-items: center;
  gap: 8px;
  flex-wrap: wrap;
  font-size: 0.8rem;
}

.breadcrumb-item {
  color: var(--primary);
  text-decoration: none;
  padding: 4px 8px;
  border-radius: 8px;
  transition: all 0.2s;
}

.breadcrumb-item:hover {
  background: rgba(var(--primary-rgb), 0.1);
}

.breadcrumb-item.current {
  color: var(--fg);
  font-weight: 600;
  background: var(--gradient-soft);
}

.breadcrumb-separator {
  color: var(--muted);
  font-size: 0.7rem;
}

/* Article Content */
.content-article {
  background: var(--card);
  border: 1px solid var(--border);
  border-radius: 20px;
  padding: 32px 40px 40px; /* top reduced */
  box-shadow: 0 4px 24px -6px rgba(var(--primary-rgb), 0.1);
  overflow-x: auto;
  -webkit-overflow-scrolling: touch;
  max-width: 100%;
  width: 100%;
}

.article-header {
  margin-bottom: 24px;
  padding-bottom: 16px;
  border-bottom: 1px solid var(--border);
}

/* Variant: no title/date */
.article-header.no-title-date {
  padding-bottom: 8px;
  border-bottom: none;
  margin-bottom: 12px;
}
/* Removed summary-specific adjustments */

.article-header h1 {
  margin: 0 0 12px 0;
  font-size: 1.7rem;
  font-weight: 700;
  color: var(--fg);
  line-height: 1.3;
}


.article-meta {
  display: flex;
  align-items: center;
  gap: 16px;
  font-size: 0.8rem;
  color: var(--muted);
}

.published-date {
  display: flex;
  align-items: center;
  gap: 4px;
}

/* Enhanced Article Styling */
.content-article.enhanced {
  max-width: 100%;
  width: 100%;
  margin: 0;
  background: rgba(255, 255, 255, 0.98);
  border-radius: 20px;
  box-shadow: 0 8px 32px rgba(0,0,0,0.06);
  overflow: hidden;
  backdrop-filter: blur(10px);
  border: 1px solid rgba(255, 255, 255, 0.18);
}

/* Wide full-bleed variant: hilangkan inner card feel, biarkan isi lebar mengikuti container */
.content-article.enhanced.wide {
  background: transparent;
  box-shadow: none;
  border: none;
  border-radius: 0;
  padding: 0;
}

.content-article.enhanced.wide .article-header {
  border-radius: 28px;
}

/* Full width body inside wide variant */
.content-article.enhanced.wide .article-body {
  padding: 2px 4px 10px; /* top reduced to match new breadcrumb spacing */
  max-width: 100%;
}

/* Constrain excessively wide images to container and allow responsive scaling */
.content-article.enhanced.wide .article-body img { 
  max-width: 100%;
  height: auto;
}

.article-header {
  background: linear-gradient(135deg, var(--primary) 0%, var(--accent) 100%);
  color: white;
  padding: 32px;
  position: relative;
  overflow: hidden;
}

.article-header::before {
  content: '';
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  background: url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100"><defs><pattern id="grain" width="100" height="100" patternUnits="userSpaceOnUse"><circle cx="25" cy="25" r="1" fill="rgba(255,255,255,0.1)"/><circle cx="75" cy="75" r="1" fill="rgba(255,255,255,0.05)"/></pattern></defs><rect width="100" height="100" fill="url(%23grain)"/></svg>');
  opacity: 0.3;
  pointer-events: none;
}

.article-header * {
  position: relative;
  z-index: 1;
}

.article-category {
  margin-bottom: 16px;
}

.category-badge {
  background: rgba(255, 255, 255, 0.25);
  color: white;
  padding: 6px 16px;
  border-radius: 25px;
  font-size: 11px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 1px;
  backdrop-filter: blur(10px);
  border: 1px solid rgba(255, 255, 255, 0.3);
}

.article-title {
  font-size: clamp(1.8rem, 5vw, 2.8rem);
  font-weight: 800;
  line-height: 1.1;
  margin: 0 0 20px 0;
  color: white;
  text-shadow: 0 2px 4px rgba(0,0,0,0.2);
}


.article-meta {
  display: flex;
  flex-wrap: wrap;
  gap: 16px;
  align-items: center;
  opacity: 0.9;
}

.meta-item {
  font-size: 0.85rem;
  display: flex;
  align-items: center;
  gap: 6px;
  background: rgba(255, 255, 255, 0.2);
  padding: 6px 12px;
  border-radius: 12px;
  backdrop-filter: blur(10px);
  border: 1px solid rgba(255, 255, 255, 0.2);
}

/* Content Actions (Tombol Kembali) */
.content-actions {
  margin-top: 32px;
  padding: 24px 0;
  border-top: 1px solid var(--border);
  text-align: center;
}

.btn-back {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  background: var(--card);
  color: var(--fg);
  border: 2px solid var(--border);
  padding: 12px 24px;
  border-radius: 12px;
  font-size: 0.95rem;
  font-weight: 600;
  cursor: pointer;
  transition: all 0.3s ease;
  text-decoration: none;
  box-shadow: 0 2px 8px rgba(0,0,0,0.1);
}

.btn-back:hover {
  background: var(--primary);
  color: white;
  border-color: var(--primary);
  transform: translateY(-2px);
  box-shadow: 0 4px 16px rgba(var(--primary-rgb), 0.3);
}

.btn-back .back-icon {
  font-size: 1.1rem;
  transition: transform 0.2s ease;
}

.btn-back:hover .back-icon {
  transform: translateX(-3px);
}

/* Dark mode adjustment for back button */
@media (prefers-color-scheme: dark) {
  .btn-back {
    background: var(--card);
    border-color: var(--border);
    color: var(--fg);
  }
  
  .btn-back:hover {
    background: var(--primary);
    color: var(--card);
  }
}

/* Focus states for accessibility */
.btn-back:focus {
  outline: 2px solid var(--primary);
  outline-offset: 2px;
}

.article-body.rich-content {
  padding: 32px 46px 46px; /* reduce top padding */
  line-height: 1.8;
  color: var(--fg);
  font-size: 1.05rem;
  font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, sans-serif;
  overflow-x: auto;
  max-width: 100%;
  word-wrap: break-word;
  -webkit-overflow-scrolling: touch;
}

/* Enhanced Content Elements */
.content-paragraph {
  margin-bottom: 24px;
  text-align: justify;
  hyphens: auto;
  line-height: 1.8;
  word-wrap: break-word;
  overflow-wrap: break-word;
}

/* Wide content elements that may need scrolling */
.rich-content pre,
.rich-content code,
.rich-content .code-block {
  overflow-x: auto;
  -webkit-overflow-scrolling: touch;
  white-space: pre;
  word-break: normal;
}

.rich-content img {
  max-width: 100%;
  height: auto;
  object-fit: contain;
}

/* Image alignment helpers injected by editor */
.rich-content img.img-left, .article-body img.img-left {float:left;margin:8px 20px 12px 0;}
.rich-content img.img-right, .article-body img.img-right {float:right;margin:8px 0 12px 20px;}
.rich-content img.img-center, .article-body img.img-center {display:block;margin:16px auto;float:none;}
.rich-content:after, .article-body:after {content:"";display:block;clear:both;}

.rich-content iframe,
.rich-content embed,
.rich-content video {
  max-width: 100%;
  overflow: hidden;
}

/* Responsive video wrapper */
.video-embed {position:relative;width:100%;margin:18px 0;}
.video-embed iframe {position:absolute;top:0;left:0;width:100%;height:100%;}
.video-embed.aspect-16x9 {padding-top:56.25%;}
.video-embed.aspect-4x3 {padding-top:75%;}
/* Avoid parent clipping (cards had overflow:hidden) */
.card .video-embed {overflow:visible;}
/* Fullscreen adjustments */
.video-embed:fullscreen, .video-embed iframe:fullscreen,
.video-embed:-webkit-full-screen, .video-embed iframe:-webkit-full-screen {
  width:100vw !important; height:100vh !important; max-width:none !important; margin:0 !important; padding:0 !important; border-radius:0 !important; background:#000;
}
body.fs-video {overflow:hidden;}
/* Pseudo fullscreen */
.video-embed.pseudo-fs {position:fixed !important; inset:0 !important; z-index:10000 !important; padding-top:0 !important; background:#000; width:100vw !important; height:100vh !important;}
.video-embed.pseudo-fs iframe {position:absolute; top:0; left:0; width:100% !important; height:100% !important;}
.video-embed .fs-toggle {position:absolute; right:8px; bottom:8px; background:rgba(0,0,0,.55); color:#fff; border:none; padding:6px 10px; border-radius:8px; font-size:.7rem; cursor:pointer; font-weight:600; letter-spacing:.5px; display:flex; gap:4px; align-items:center; z-index:2;}
.video-embed .fs-toggle:hover {background:rgba(0,0,0,.75);} 
.video-embed.pseudo-fs .fs-toggle {bottom:16px; right:16px;}

.content-paragraph:first-of-type {
  font-size: 1.1rem;
  font-weight: 500;
  color: var(--fg);
}

.content-heading {
  color: var(--primary);
  margin-top: 40px;
  margin-bottom: 20px;
  font-weight: 700;
  border-left: 5px solid var(--primary);
  padding-left: 20px;
  line-height: 1.3;
  position: relative;
}

.content-heading::before {
  content: '';
  position: absolute;
  left: -5px;
  top: 0;
  bottom: 0;
  width: 5px;
  background: linear-gradient(to bottom, var(--primary), var(--accent));
  border-radius: 0 3px 3px 0;
}

.content-heading:first-child {
  margin-top: 0;
}

.content-image.responsive {
  width: 100%;
  height: auto;
  border-radius: 16px;
  margin: 32px 0;
  box-shadow: 0 8px 32px rgba(0,0,0,0.12);
  transition: transform 0.4s ease, box-shadow 0.4s ease;
}

.content-image.responsive:hover {
  transform: scale(1.02);
  box-shadow: 0 12px 40px rgba(0,0,0,0.15);
  cursor: zoom-in;
}

.table-wrapper {
  overflow-x: auto;
  margin: 32px 0;
  border-radius: 12px;
  box-shadow: 0 4px 20px rgba(0,0,0,0.08);
  background: white;
  width: 100%;
  max-width: 100%;
  -webkit-overflow-scrolling: touch;
}

/* Rich content table handling */
.rich-content .table-wrapper {
  width: 100%;
  max-width: 100%;
  overflow-x: auto;
  margin: 20px 0;
}

.rich-content table {
  width: 100%;
  max-width: 100%;
  table-layout: auto;
  word-wrap: break-word;
}

/* Fallback for tables without wrapper */
.rich-content table:not(.content-table) {
  border-collapse: collapse;
  margin: 20px 0;
  font-size: 0.95rem;
  overflow-x: auto;
  display: block;
  white-space: nowrap;
}

.rich-content table:not(.content-table) th,
.rich-content table:not(.content-table) td {
  border: 1px solid var(--border);
  padding: 12px 16px;
  text-align: left;
}

.rich-content table:not(.content-table) thead {
  background: rgba(var(--primary-rgb), 0.03);
}

.content-table {
  width: 100%;
  border-collapse: collapse;
  font-size: 0.95rem;
  min-width: 100%;
}

.content-table th {
  background: linear-gradient(135deg, var(--primary), var(--accent));
  color: white;
  padding: 16px 20px;
  text-align: left;
  font-weight: 600;
  font-size: 0.9rem;
  text-transform: uppercase;
  letter-spacing: 0.5px;
}

.content-table td {
  padding: 16px 20px;
  border-bottom: 1px solid rgba(0,0,0,0.05);
  transition: background-color 0.2s ease;
}

.content-table tr:hover {
  background: rgba(var(--primary-rgb), 0.03);
}

.content-table tr:nth-child(even) {
  background: rgba(0,0,0,0.02);
}

.code-block {
  background: linear-gradient(135deg, #f8f9fa, #ffffff);
  border: 1px solid #e9ecef;
  border-left: 4px solid var(--primary);
  border-radius: 12px;
  padding: 24px;
  margin: 28px 0;
  overflow-x: auto;
  font-family: 'SF Mono', Monaco, 'Cascadia Code', 'Roboto Mono', Consolas, 'Courier New', monospace;
  font-size: 0.9rem;
  line-height: 1.6;
  box-shadow: 0 4px 16px rgba(0,0,0,0.05);
}

.inline-code {
  background: rgba(var(--primary-rgb), 0.1);
  color: var(--primary);
  padding: 3px 8px;
  border-radius: 6px;
  font-family: 'SF Mono', Monaco, 'Cascadia Code', 'Roboto Mono', Consolas, 'Courier New', monospace;
  font-size: 0.9em;
  font-weight: 600;
}

.content-quote {
  border-left: 5px solid var(--accent);
  background: linear-gradient(135deg, rgba(var(--accent-rgb), 0.05), rgba(var(--accent-rgb), 0.02));
  margin: 28px 0;
  padding: 24px 28px;
  border-radius: 0 12px 12px 0;
  font-style: italic;
  font-size: 1.05rem;
  line-height: 1.7;
  position: relative;
  box-shadow: 0 2px 12px rgba(0,0,0,0.05);
}

.content-quote::before {
  content: '"';
  font-size: 3em;
  color: var(--accent);
  line-height: 1;
  position: absolute;
  top: -5px;
  left: 15px;
  opacity: 0.3;
  font-family: Georgia, serif;
}

.no-content {
  text-align: center;
  color: var(--fg-soft);
  font-style: italic;
  padding: 40px 20px;
}

/* Responsive Content Styling */
@media (max-width: 768px) {
  .content-article.enhanced {
    margin: 0;
    border-radius: 0;
    box-shadow: none;
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
  }
  
  .content-article {
    padding: 24px 20px;
    margin: 0;
    border-radius: 16px;
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
    width: 100%;
  }
  
  .content-article.enhanced {
    margin: 0;
    border-radius: 16px;
    width: 100%;
  }
  
  .article-header {
    padding: 24px 20px;
  }
  
  .article-title {
    font-size: 1.8rem;
  }
  
  
  .article-body.rich-content {
    padding: 24px 20px;
    font-size: 1rem;
  }
  
  .content-actions {
    margin: 24px -16px 0 -16px;
    padding: 20px 16px;
    background: var(--bg-soft);
  }
  
  .btn-back {
    padding: 14px 20px;
    font-size: 0.9rem;
    border-radius: 10px;
  }
  
  .content-heading {
    font-size: 1.3rem;
    margin-top: 32px;
    padding-left: 16px;
  }
  
  .content-paragraph:first-of-type {
    font-size: 1.05rem;
  }
  
  .content-image.responsive {
    margin: 24px 0;
    border-radius: 12px;
  }
  
  .table-wrapper {
    margin: 20px -20px;
    border-radius: 0;
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
  }
  
  .content-table {
    min-width: 600px; /* Minimum width to prevent cramping */
    font-size: 0.85rem; /* Smaller text for mobile */
  }
  
  .content-table th,
  .content-table td {
    padding: 10px 12px; /* Reduce padding for mobile */
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    max-width: 150px;
  }
  
  /* Allow content cells to wrap */
  .content-table td.content-cell,
  .content-table td:last-child {
    white-space: normal;
    word-wrap: break-word;
    word-break: break-word;
    max-width: 200px;
  }
  
  .code-block {
    margin: 20px -20px;
    border-radius: 0;
    border-left: none;
    border-top: 4px solid var(--primary);
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
  }
  
  /* Wide content handling */
  .rich-content pre {
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
    white-space: pre;
    word-wrap: normal;
  }
  
  .rich-content .wide-content {
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
    margin: 16px 0;
  }
  
  .content-quote {
    margin: 20px -20px 20px 0;
    border-radius: 0;
    padding: 20px;
  }
}

.article-body {
  line-height: 1.7;
  color: var(--fg-soft);
}

.article-body h1, .article-body h2, .article-body h3 {
  color: var(--fg);
  margin-top: 24px;
  margin-bottom: 12px;
}

.article-body h1 { font-size: 1.4rem; }
.article-body h2 { font-size: 1.2rem; }
.article-body h3 { font-size: 1.1rem; }

.article-body p {
  margin-bottom: 16px;
}

.article-body img {
  max-width: 100%;
  height: auto;
  border-radius: 12px;
  margin: 16px 0;
}

/* Loading States */
.loading-state {
  text-align: center;
  padding: 40px 20px;
}

.loading-spinner {
  width: 32px;
  height: 32px;
  border: 3px solid rgba(var(--primary-rgb), 0.3);
  border-top: 3px solid var(--primary);
  border-radius: 50%;
  animation: spin 1s linear infinite;
  margin: 0 auto 16px;
}

@keyframes spin {
  0% { transform: rotate(0deg); }
  100% { transform: rotate(360deg); }
}

.error-state, .empty-state {
  text-align: center;
  padding: 40px 20px;
}

/* Print Styles */
@media print {
  .v2-sidebar,
  .bottom-nav-container,
  .breadcrumb-container .btn-back,
  .mobile-content-menu {
    display: none !important;
  }
  
  .content-article.enhanced {
    box-shadow: none;
    margin: 0;
  }
  
  .article-header {
    background: none !important;
    color: black !important;
  }
  
  .article-title,
  .category-badge {
    color: black !important;
  }
}

/* Admin Content Editor Enhancements */
.editor-toolbar {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin-bottom: 12px;
  padding: 12px;
  background: linear-gradient(135deg, #f8f9fa, #ffffff);
  border: 1px solid #e9ecef;
  border-radius: 8px;
  box-shadow: 0 2px 8px rgba(0,0,0,0.05);
}

.format-btn {
  background: white;
  border: 1px solid #ddd;
  border-radius: 6px;
  padding: 6px 12px;
  font-size: 13px;
  cursor: pointer;
  transition: all 0.2s ease;
  min-width: 32px;
  height: 32px;
  display: flex;
  align-items: center;
  justify-content: center;
  font-weight: 600;
}

.format-btn:hover {
  background: var(--primary);
  color: white;
  border-color: var(--primary);
  transform: translateY(-1px);
}

.format-btn:active {
  transform: translateY(0);
}

.format-btn.revert-btn {
  background: #f59e0b;
  color: white;
  border-color: #f59e0b;
}

.format-btn.revert-btn:hover {
  background: #d97706;
  border-color: #d97706;
}

.content-editor {
  font-family: 'Segoe UI', system-ui, -apple-system, sans-serif;
  font-size: 14px;
  line-height: 1.6;
  resize: vertical;
  min-height: 200px;
  padding: 16px;
  border-radius: 8px;
  border: 2px solid #e9ecef;
  transition: border-color 0.3s ease;
  white-space: pre-wrap;
  word-wrap: break-word;
}

.content-editor:focus {
  border-color: var(--primary);
  outline: none;
  box-shadow: 0 0 0 3px rgba(var(--primary-rgb), 0.1);
}

.content-editor::placeholder {
  color: #6c757d;
  font-style: italic;
}

.editor-preview-toggle {
  margin: 12px 0;
  text-align: right;
}

.preview-btn {
  background: var(--accent);
  color: white;
  border: none;
  padding: 8px 16px;
  border-radius: 6px;
  font-size: 13px;
  cursor: pointer;
  font-weight: 500;
  transition: background-color 0.2s ease;
}

.preview-btn:hover {
  background: var(--accent-dark, #4338ca);
}

.editor-preview {
  margin: 16px 0;
  border: 1px solid #e9ecef;
  border-radius: 8px;
  background: white;
  max-height: 400px;
  overflow-y: auto;
}

.preview-content {
  padding: 20px;
  font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, sans-serif;
}

.preview-content .content-paragraph {
  margin-bottom: 16px;
  line-height: 1.7;
}

.preview-content .content-heading {
  margin-top: 24px;
  margin-bottom: 12px;
  color: var(--primary);
  font-weight: 600;
}

.preview-content .content-heading:first-child {
  margin-top: 0;
}

.preview-content strong {
  font-weight: 600;
  color: #1f2937;
}

.preview-content em {
  font-style: italic;
  color: #374151;
}

.preview-content .content-image {
  max-width: 100%;
  height: auto;
  border-radius: 8px;
  margin: 16px 0;
}

/* Editor Responsive */
@media (max-width: 768px) {
  .editor-toolbar {
    gap: 6px;
    padding: 10px;
  }
  
  .format-btn {
    min-width: 28px;
    height: 28px;
    padding: 4px 8px;
    font-size: 12px;
  }
  
  .content-editor {
    font-size: 16px; /* Prevent zoom on iOS */
    padding: 12px;
  }
}

/* Admin Notification */
.admin-notification {
  animation: slideInRight 0.3s ease-out;
}

@keyframes slideInRight {
  from {
    transform: translateX(100%);
    opacity: 0;
  }
  to {
    transform: translateX(0);
    opacity: 1;
  }
}

.error-state h3, .empty-state h3 {
  margin: 0 0 12px 0;
  font-size: 1.2rem;
  color: var(--fg);
}

.error-state p, .empty-state p {
  margin: 0 0 20px 0;
  color: var(--muted);
}

/* Enhanced empty state styling */
.empty-state-icon {
  font-size: 3rem;
  margin-bottom: 16px;
  opacity: 0.6;
}

.empty-state-description {
  font-size: 1rem;
  line-height: 1.6;
  color: var(--muted);
  margin-bottom: 16px;
}

.empty-state-meta {
  margin: 16px 0;
  padding: 12px;
  background: rgba(var(--primary-rgb), 0.05);
  border: 1px solid rgba(var(--primary-rgb), 0.1);
  border-radius: 8px;
}

.empty-state-meta small {
  font-size: 0.9rem;
  color: var(--primary);
  font-weight: 500;
}

.empty-state-actions {
  margin-top: 24px;
  display: flex;
  gap: 12px;
  justify-content: center;
  flex-wrap: wrap;
}

.empty-state-actions .btn {
  font-size: 0.9rem;
  padding: 8px 16px;
}

/* Standalone app improvements */
body.is-standalone .empty-state {
  padding: 60px 20px;
}

body.is-standalone .empty-state-icon {
  font-size: 4rem;
}

body.is-standalone .empty-state h3 {
  font-size: 1.4rem;
}

/* Desktop mode empty state */
@media (min-width: 768px) {
  .empty-state {
    padding: 80px 40px;
    max-width: 500px;
    margin: 0 auto;
  }
  
  .empty-state-icon {
    font-size: 4rem;
  }
  
  .empty-state h3 {
    font-size: 1.5rem;
  }
  
  .empty-state-description {
    font-size: 1.1rem;
  }
}

/* Ribbon Menu Loading State */
.ribbon-right.loading-menu {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  min-height: 200px;
  gap: 16px;
  color: var(--muted);
}

.ribbon-right.loading-menu .loading-spinner {
  width: 24px;
  height: 24px;
  border: 2px solid rgba(var(--primary-rgb), 0.3);
  border-top: 2px solid var(--primary);
  border-radius: 50%;
  animation: spin 1s linear infinite;
}

.ribbon-right.loading-menu p {
  margin: 0;
  font-size: 0.9rem;
  font-weight: 500;
}

/* ===========================
   HABITS V2 ENHANCED STYLES  
   =========================== */

.habits-card {
  background: var(--card);
  border: 1px solid var(--border);
  border-radius: 20px;
  padding: 24px;
  box-shadow: 0 4px 24px -6px rgba(var(--primary-rgb), 0.1);
}

.habits-header {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin-bottom: 24px;
  padding-bottom: 16px;
  border-bottom: 1px solid var(--border);
}

.habits-header h2 {
  margin: 0;
  font-size: 1.4rem;
  font-weight: 700;
  color: var(--fg);
}

.habits-date {
  font-size: 0.85rem;
  color: var(--muted);
  font-weight: 500;
}

.habits-grid {
  display: grid;
  gap: 16px;
  margin-bottom: 24px;
}

.habit-row {
  display: grid;
  grid-template-columns: 1fr 200px;
  gap: 12px;
  align-items: center;
  padding: 12px 16px;
  background: var(--card-alt);
  border: 1px solid var(--border);
  border-radius: 12px;
  transition: all 0.2s ease;
}

.habit-row:hover {
  background: var(--gradient-soft);
}

.habit-label {
  display: flex;
  align-items: center;
  gap: 12px;
  cursor: pointer;
  margin: 0;
  font-weight: 500;
}

.habit-label input[type="checkbox"] {
  width: 18px;
  height: 18px;
  accent-color: var(--primary);
  cursor: pointer;
}

.habit-text {
  flex: 1;
  font-size: 0.95rem;
  color: var(--fg-soft);
}

.habit-note {
  font-size: 0.85rem;
  padding: 8px 12px;
  border-radius: 8px;
  border: 1px solid var(--border);
  background: var(--card);
}

.habit-note:focus {
  outline: none;
  border-color: var(--primary);
  box-shadow: 0 0 0 3px rgba(var(--primary-rgb), 0.2);
}

.habits-actions {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding-top: 16px;
  border-top: 1px solid var(--border);
}

.habits-count {
  font-size: 0.85rem;
  color: var(--muted);
  font-weight: 500;
}

.habits-count #completedCount {
  color: var(--primary);
  font-weight: 700;
  font-size: 1rem;
}

@media (max-width: 600px) {
  .habit-row {
    grid-template-columns: 1fr;
    gap: 8px;
  }
  
  .habits-actions {
    flex-direction: column;
    gap: 12px;
    align-items: stretch;
  }
}

/* Enhanced Mobile Navigation & Breadcrumb Styles */
.breadcrumb-container {
  display: flex;
  align-items: center;
  gap: 8px;
  margin-bottom: 6px;
  padding: 4px 0 2px;
}

.btn-back.mobile-optimized {
  background: var(--primary);
  color: white;
  border: none;
  padding: 8px 12px;
  border-radius: 6px;
  font-size: 14px;
  font-weight: 500;
  cursor: pointer;
  display: flex;
  align-items: center;
  gap: 4px;
  transition: all 0.2s ease;
  white-space: nowrap;
  min-width: fit-content;
}

.btn-back.mobile-optimized:hover {
  background: var(--primary-dark);
  transform: translateY(-1px);
}

.breadcrumb {
  display: flex;
  align-items: center;
  gap: 6px;
  font-size: 14px;
  overflow-x: auto;
  scrollbar-width: none;
  -ms-overflow-style: none;
  flex: 1;
}

.breadcrumb::-webkit-scrollbar {
  display: none;
}

.breadcrumb-item {
  color: var(--muted);
  text-decoration: none;
  white-space: nowrap;
  transition: color 0.2s ease;
}

.breadcrumb-item:hover {
  color: var(--primary);
}

.breadcrumb-item.current {
  color: var(--text-primary);
  font-weight: 500;
}

.breadcrumb-separator {
  color: var(--muted);
  user-select: none;
}

.page-header-with-back {
  display: flex;
  align-items: flex-start;
  gap: 12px;
  margin-bottom: 16px;
}

.page-header-with-back .page-header {
  flex: 1;
  margin: 0;
}

/* Enhanced Bottom Navigation - Mobile Only */
body {
  padding-bottom: 70px; /* Space for bottom nav */
}

/* Hide bottom nav and remove padding on desktop */
@media (min-width: 900px) {
  body {
    padding-bottom: 0 !important; /* Remove bottom padding on desktop */
  }
  
  .bottom-nav {
    display: none !important; /* Force hide on desktop */
  }
}

/* Standalone mode adjustments */
@media (display-mode: standalone) {
  .bottom-nav {
    padding-bottom: max(12px, calc(12px + env(safe-area-inset-bottom)));
    height: max(78px, calc(78px + env(safe-area-inset-bottom)));
  }
  
  body {
    padding-bottom: max(90px, calc(90px + env(safe-area-inset-bottom)));
  }
}

/* Mobile responsive adjustments */
@media (max-width: 768px) {
  .content-v2-container {
    margin-bottom: 70px;
  }
  
  .breadcrumb-container {
    margin-bottom: 12px;
  }
  
  .btn-back.mobile-optimized {
    font-size: 13px;
    padding: 6px 10px;
  }
  
  .breadcrumb {
    font-size: 13px;
  }
  
  .page-header h1 {
    font-size: 1.5rem;
    margin-bottom: 4px;
  }
  
  .page-subtitle {
    font-size: 14px;
  }
}

@media (max-width: 480px) {
  .breadcrumb-container {
    flex-direction: column;
    align-items: flex-start;
    gap: 8px;
  }
  
  .breadcrumb {
    width: 100%;
  }
  
  .page-header-with-back {
    flex-direction: column;
    gap: 8px;
  }
  
  .bottom-nav button {
    padding: 4px 2px;
    font-size: 10px;
  }
  
  .bottom-nav button .icon {
    font-size: 14px;
  }
  
  .bottom-nav button span:not(.icon) {
    font-size: 9px;
  }
}

/* V2 Content Layout - Large Screens */
@media (min-width: 1600px) {
  .content-v2-container {
    max-width: 1600px;
    grid-template-columns: 320px 1fr;
    gap: 40px;
    padding: 0 40px;
  }
  
  .content-article {
    padding: 50px 60px;
  }
  
  .article-body.rich-content {
    padding: 60px;
    font-size: 1.1rem;
  }
}

/* Ultra-wide screens */
@media (min-width: 1920px) {
  .content-v2-container {
    max-width: 1800px;
    grid-template-columns: 350px 1fr;
    gap: 50px;
    padding: 0 50px;
  }
  
  .content-article {
    padding: 60px 80px;
  }
  
  .article-body.rich-content {
    padding: 80px;
    font-size: 1.15rem;
    line-height: 1.9;
  }
}

.v2-sidebar.desktop-only {
  width: 100%;
  flex-shrink: 0;
  background: var(--card);
  border: 1px solid var(--border);
  border-radius: 20px;
  padding: 20px;
  height: fit-content;
  position: sticky;
  top: 20px;
  box-shadow: 0 4px 24px -6px rgba(var(--primary-rgb), 0.15);
}

.content-main {
  flex: 1;
  min-width: 0;
  width: 100%;
  max-width: 100%;
}

/* Mobile Content Menu */
.mobile-content-menu.mobile-only {
  display: none;
  margin-top: 32px;
  padding: 20px;
  background: var(--bg-secondary);
  border-radius: 12px;
  border: 1px solid var(--border);
}

.mobile-menu-header h3 {
  margin: 0 0 16px 0;
  font-size: 1.1rem;
  color: var(--primary);
  display: flex;
  align-items: center;
  gap: 8px;
}

.menu-section {
  margin-bottom: 24px;
}

.menu-section:last-child {
  margin-bottom: 0;
}

.menu-section h4 {
  margin: 0 0 12px 0;
  font-size: 0.9rem;
  color: var(--muted);
  font-weight: 600;
}

.menu-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(140px, 1fr));
  gap: 12px;
}

.menu-card-mini {
  background: var(--bg-primary);
  border: 1px solid var(--border);
  border-radius: 8px;
  padding: 12px;
  cursor: pointer;
  transition: all 0.2s ease;
  text-align: center;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 8px;
  min-height: 80px;
}

.menu-card-mini:hover {
  border-color: var(--primary);
  background: rgba(var(--primary-rgb), 0.05);
  transform: translateY(-2px);
}

.menu-card-mini .icon {
  font-size: 24px;
  line-height: 1;
}

.menu-card-mini .title {
  font-size: 12px;
  font-weight: 500;
  color: var(--text-primary);
  line-height: 1.3;
}

/* Mobile & Standalone Responsive Styles */
@media (max-width: 768px) {
  .content-v2-container {
    flex-direction: column;
    gap: 0;
    padding: 0 12px;
  }
  
  .v2-sidebar.desktop-only {
    display: none;
  }
  
  .mobile-content-menu.mobile-only {
    display: block;
  }
  
  .menu-grid {
    grid-template-columns: repeat(auto-fit, minmax(120px, 1fr));
    gap: 10px;
  }
  
  .menu-card-mini {
    padding: 10px;
    min-height: 70px;
  }
  
  .menu-card-mini .icon {
    font-size: 20px;
  }
  
  .menu-card-mini .title {
    font-size: 11px;
  }
}

@media (display-mode: standalone) {
  .content-v2-container {
    padding-bottom: max(32px, env(safe-area-inset-bottom));
  }
  
  .mobile-content-menu.mobile-only {
    margin-bottom: max(20px, env(safe-area-inset-bottom));
  }
  
  /* Content actions styling for standalone */
  .content-actions {
    padding-bottom: max(24px, env(safe-area-inset-bottom));
    margin-bottom: max(16px, env(safe-area-inset-bottom));
  }
  
  .btn-back {
    margin-bottom: max(8px, env(safe-area-inset-bottom));
  }
  
  /* Table responsive fixes for standalone mode */
  .table-wrapper {
    width: 100%;
    max-width: 100%;
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
    margin: 20px 0;
  }
  
  .content-table {
    min-width: 100%;
    table-layout: auto;
    word-wrap: break-word;
    word-break: break-word;
  }
  
  .content-table th,
  .content-table td {
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    max-width: 200px;
  }
  
  /* Allow text wrapping for content cells */
  .content-table td.content-cell {
    white-space: normal;
    word-wrap: break-word;
    word-break: break-word;
    max-width: 300px;
  }
  
  /* Adjust rich-content area for standalone */
  .rich-content {
    overflow-x: auto;
    max-width: 100%;
    -webkit-overflow-scrolling: touch;
  }
  
  /* Wide content handling in standalone */
  .wide-table-wrapper,
  .wide-code-wrapper,
  .wide-media-wrapper {
    margin: 16px -20px;
    border-radius: 0;
    border-left: none;
    border-right: none;
  }
  
  .content-overflow {
    margin: 16px -20px;
    padding: 0 20px;
  }
}

/* Additional mobile table responsive for very small screens */
@media (max-width: 480px) and (display-mode: standalone) {
  .table-wrapper {
    margin: 16px -16px;
    border-radius: 0;
    box-shadow: none;
    border: 1px solid var(--border);
  }
  
  .content-table {
    font-size: 0.8rem;
    min-width: 100%;
  }
  
  .content-table th,
  .content-table td {
    padding: 8px 10px;
    font-size: 0.8rem;
    max-width: 120px;
  }
  
  .content-table td.content-cell,
  .content-table td:last-child {
    max-width: 180px;
    min-width: 120px;
  }
  
  /* Force table to be scrollable */
  .rich-content {
    overflow: visible;
  }
}

/* V2 Sidebar Styles */
.sidebar-header h3 {
  margin: 0 0 16px 0;
  font-size: 1rem;
  color: var(--primary);
}

.v2-menu-tree {
  list-style: none;
  padding: 0;
  margin: 0;
}

.v2-menu-tree .menu-node {
  margin-bottom: 4px;
}

.v2-menu-tree .menu-item {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 8px 12px;
  border-radius: 6px;
  cursor: pointer;
  transition: all 0.2s ease;
  font-size: 14px;
}

.v2-menu-tree .menu-item:hover {
  background: rgba(var(--primary-rgb), 0.1);
  color: var(--primary);
}

.v2-menu-tree .menu-icon {
  font-size: 16px;
  line-height: 1;
  width: 20px;
  text-align: center;
}

.v2-menu-tree .menu-title {
  flex: 1;
  font-weight: 500;
}

.v2-menu-tree .expand-icon {
  font-size: 12px;
  color: var(--muted);
}

/* Utility Classes for Responsive Design */
.desktop-only {
  display: block;
}

.mobile-only {
  display: none;
}

/* Horizontal scroll utilities */
.scroll-horizontal {
  overflow-x: auto;
  overflow-y: hidden;
  -webkit-overflow-scrolling: touch;
  scrollbar-width: thin;
}

.scroll-horizontal::-webkit-scrollbar {
  height: 8px;
}

.scroll-horizontal::-webkit-scrollbar-track {
  background: var(--bg-soft);
  border-radius: 4px;
}

.scroll-horizontal::-webkit-scrollbar-thumb {
  background: var(--border);
  border-radius: 4px;
}

.scroll-horizontal::-webkit-scrollbar-thumb:hover {
  background: var(--muted);
}

/* Content that might overflow */
.content-overflow {
  max-width: 100%;
  overflow-x: auto;
  -webkit-overflow-scrolling: touch;
}

/* Specific wide content wrappers */
.wide-table-wrapper,
.wide-code-wrapper,
.wide-media-wrapper {
  width: 100%;
  overflow-x: auto;
  -webkit-overflow-scrolling: touch;
  margin: 16px 0;
  border: 1px solid var(--border);
  border-radius: 8px;
  background: var(--card);
}

.wide-table-wrapper table,
.wide-code-wrapper pre,
.wide-media-wrapper > * {
  margin: 0;
  width: max-content;
  min-width: 100%;
}

/* Scrollbar styling for content areas */
.content-overflow::-webkit-scrollbar,
.wide-table-wrapper::-webkit-scrollbar,
.wide-code-wrapper::-webkit-scrollbar {
  height: 6px;
}

.content-overflow::-webkit-scrollbar-track,
.wide-table-wrapper::-webkit-scrollbar-track,
.wide-code-wrapper::-webkit-scrollbar-track {
  background: var(--bg-soft);
  border-radius: 3px;
}

.content-overflow::-webkit-scrollbar-thumb,
.wide-table-wrapper::-webkit-scrollbar-thumb,
.wide-code-wrapper::-webkit-scrollbar-thumb {
  background: var(--border);
  border-radius: 3px;
}

.content-overflow::-webkit-scrollbar-thumb:hover,
.wide-table-wrapper::-webkit-scrollbar-thumb:hover,
.wide-code-wrapper::-webkit-scrollbar-thumb:hover {
  background: var(--muted);
}

@media (max-width: 768px) {
  .desktop-only {
    display: none !important;
  }
  
  .mobile-only {
    display: block !important;
  }
}

/* Hide admin-only elements in public view */
.resize-handle,
.handle-nw, .handle-n, .handle-ne,
.handle-w, .handle-e,
.handle-sw, .handle-s, .handle-se,
.image-toolbar,
.table-toolbar,
.admin-wrapper,
.admin-control {
  display: none !important;
}

/* Ensure contenteditable is disabled in public view */
[contenteditable="true"] {
  -webkit-user-modify: read-only !important;
  -moz-user-modify: read-only !important;
  user-select: none !important;
  pointer-events: none !important;
}

/* Re-enable text selection for reading */
.rich-content {
  user-select: text !important;
  pointer-events: auto !important;
}

.rich-content p,
.rich-content h1, .rich-content h2, .rich-content h3,
.rich-content h4, .rich-content h5, .rich-content h6,
.rich-content span, .rich-content div,
.rich-content li, .rich-content td, .rich-content th {
  user-select: text !important;
  pointer-events: auto !important;
}

/* Remove any admin-specific cursors */
.rich-content * {
  cursor: default !important;
}

.rich-content img,
.rich-content table {
  cursor: default !important;
  position: static !important;
}

/* --- Presensi (Attendance) Table Styles --- */
.presensi-section{margin:24px 0 34px;padding:16px 18px 22px;border:1px solid var(--border);border-radius:20px;background:linear-gradient(170deg,var(--card-alt),var(--card));box-shadow:0 6px 18px -8px rgba(0,0,0,.5);}
.bright-theme .presensi-section{background:linear-gradient(165deg,var(--card),var(--card-alt));}
.presensi-section h2{margin:0 0 12px;font-size:1.2rem;font-weight:600;letter-spacing:.5px;background:linear-gradient(90deg,var(--primary),var(--primary-accent));-webkit-background-clip:text;background-clip:text;color:transparent;}
.presensi-controls{display:flex;justify-content:flex-end;margin-bottom:10px;}
.presensi-table-wrap{overflow:auto;max-width:100%;width:100%;position:relative;min-height:60px;border:1px solid var(--border);border-radius:14px;}
.presensi-table-wrap.full-width-desktop{width:100%;}
.presensi-table-wrap.loading{opacity:.6;}
.presensi-table{border-collapse:collapse;width:100%;font-size:.72rem;background:var(--card);table-layout:auto;}
.presensi-table col:nth-child(2){width:100%;}
/* Paksa kolom 1 & 3 sekecil mungkin, kolom 2 otomatis melebar */
.presensi-table th:first-child,.presensi-table td:first-child{white-space:nowrap;width:1%;}
.presensi-table th:last-child,.presensi-table td:last-child{white-space:nowrap;width:1%;}
.presensi-table th:nth-child(2),.presensi-table td:nth-child(2){width:auto;}
@media (min-width:1400px){
  .presensi-section{width:100%;}
  .presensi-table th:nth-child(2),.presensi-table td:nth-child(2){max-width:9999px;}
}
.bright-theme .presensi-table{background:#fff;}
.presensi-table th,.presensi-table td{border:1px solid var(--border);padding:6px 8px;white-space:nowrap;}
.presensi-table thead th{background:linear-gradient(120deg,var(--primary),var(--primary-accent));color:#fff;position:sticky;top:0;z-index:2;font-weight:600;letter-spacing:.4px;}
.presensi-table tbody tr:nth-child(even){background:rgba(var(--primary-rgb),.05);}
.bright-theme .presensi-table tbody tr:nth-child(even){background:rgba(var(--primary-rgb),.08);}
.presensi-table tbody tr.late-presensi{background:linear-gradient(90deg,rgba(220,38,38,.18),rgba(220,38,38,.05));}
.bright-theme .presensi-table tbody tr.late-presensi{background:linear-gradient(90deg,rgba(254,202,202,.85),rgba(254,226,226,.6));}
.presensi-table tbody tr.late-presensi td:first-child{font-weight:600;color:#dc2626;}
.presensi-error{padding:12px;border:1px solid #f87171;background:#7f1d1d;color:#fecaca;border-radius:10px;font-size:.7rem;line-height:1.4;}
.bright-theme .presensi-error{background:#fef2f2;color:#991b1b;}
.loading-inline{font-size:.7rem;opacity:.8;display:flex;align-items:center;gap:8px;padding:12px;}
