/* ═══════════════════════════════════════════════════════════════
   Manzoma Layout Styles
   Phase 2 split: application shell, sidebar, topbar, buttons, and page containers.
   Load order: tokens.css → base.css → layout.css → style.css.
═══════════════════════════════════════════════════════════════ */

/* ═══════════════════════════════════════════════════════════════
   PM VIEW — SHELL
═══════════════════════════════════════════════════════════════ */
#app{display:none;height:100vh;overflow:hidden;flex-direction:row}
#app.visible{display:flex;height:100vh;overflow:hidden}

/* ── Portfolio App — base layout ───────────────────────────── */
#portfolio-app{
  display:none;
  height:100vh;
  overflow:hidden;
  flex-direction:column;
  background:var(--bg);
  position:fixed;
  inset:0;
  z-index:100;
}.view-exit{opacity:0;transform:translateX(20px);transition:opacity .2s,transform .2s}
.view-enter{animation:viewIn .26s cubic-bezier(.22,.68,0,1.2)}
@keyframes viewIn{from{opacity:0;transform:translateX(-16px)}to{opacity:1;transform:none}}

/* ── Sidebar ─────────────────────────────────────────────────── */
.sidebar{
  width:236px;min-width:236px;
  background:linear-gradient(180deg,var(--g1) 0%,#0A2016 100%);
  display:flex;flex-direction:column;
  border-left:1px solid rgba(255,255,255,.05);
  height:100vh;
  flex-shrink:0;
}
.sb-brand{
  padding:20px 16px 18px;
  border-bottom:1px solid rgba(255,255,255,.06);
  display:flex;align-items:center;gap:11px;
}
.sb-logo{
  width:34px;height:34px;border-radius:8px;
  background:rgba(255,255,255,.1);
  border:1px solid rgba(255,255,255,.08);
  display:flex;align-items:center;justify-content:center;flex-shrink:0;
}
.sb-logo svg{width:20px;height:20px}
.sb-brand-text h1{font-size:14px;font-weight:800;color:#fff;letter-spacing:-.1px}
.sb-brand-text p{font-size:10px;color:rgba(255,255,255,.28);margin-top:1px;letter-spacing:2px;text-transform:uppercase}

.nav-section{padding:12px 8px;flex:1;overflow-y:auto;scrollbar-width:none}
.nav-section::-webkit-scrollbar{display:none}
.nav-label{
  font-size:10px;color:rgba(255,255,255,.22);
  letter-spacing:2px;text-transform:uppercase;
  padding:0 10px;margin-bottom:3px;margin-top:8px;display:block;
}
.nav-item{
  display:flex;align-items:center;gap:10px;
  padding:9px 12px;border-radius:var(--r3);
  cursor:pointer;color:rgba(255,255,255,.5);
  font-size:13px;font-weight:500;
  transition:background .14s,color .14s;margin-bottom:2px;
  position:relative;min-height:42px;
  border:1px solid transparent;
overflow:hidden;white-space:nowrap;}
.nav-item:hover{
  background:rgba(255,255,255,.07);
  color:rgba(255,255,255,.88);
  border-color:rgba(255,255,255,.04);
}
.nav-item.active{
  background:linear-gradient(90deg,var(--accent-soft),rgba(16,185,129,.04));
  color:#fff;font-weight:700;
  border-color:rgba(16,185,129,.20);
}
.nav-item.active::before{
  content:'';position:absolute;right:0;top:18%;bottom:18%;
  width:3px;background:var(--accent);border-radius:4px 0 0 3px;
  box-shadow:0 0 10px rgba(16,185,129,.6);
}
.nav-icon{
  width:28px;height:28px;border-radius:8px;
  display:flex;align-items:center;justify-content:center;
  font-size:14px;flex-shrink:0;
  background:rgba(255,255,255,.05);
  color:rgba(255,255,255,.38);
  transition:all .14s;border:1px solid rgba(255,255,255,.04);
}
.nav-item.active .nav-icon{
  background:rgba(16,185,129,.18);
  color:var(--accent);
  border-color:rgba(16,185,129,.24);
}
.nav-item:hover .nav-icon{color:rgba(255,255,255,.75);background:rgba(255,255,255,.08)}

.sb-user{
  padding:12px 14px;border-top:1px solid rgba(255,255,255,.06);
  display:flex;align-items:center;gap:9px;
}
.uav{
  width:32px;height:32px;border-radius:50%;
  background:rgba(255,255,255,.1);color:#fff;
  display:flex;align-items:center;justify-content:center;
  font-size:12px;font-weight:700;flex-shrink:0;
  border:1.5px solid rgba(255,255,255,.14);
}
.uinfo{flex:1;min-width:0}
.uname{font-size:12px;font-weight:700;color:#fff;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.urole{font-size:10px;color:rgba(255,255,255,.3);margin-top:1px;text-transform:uppercase;letter-spacing:.5px}
.logout-btn{
  background:none;color:rgba(255,255,255,.22);
  font-size:15px;padding:6px;border-radius:8px;
  transition:all .14s;flex-shrink:0;
}
.logout-btn:hover{color:#ff6b6b;background:rgba(220,50,50,.12)}

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

/* ── Topbar ──────────────────────────────────────────────────── */
.topbar{
  background:var(--s0);
  border-bottom:1px solid var(--b0);
  padding:13px 24px;
  display:flex;align-items:center;justify-content:space-between;
  position:sticky;top:0;z-index:20;
  box-shadow:0 1px 0 var(--b0),0 4px 16px rgba(0,0,0,.05);
  gap:12px;
}
.topbar-title{font-size:var(--fz-lg);font-weight:800;color:var(--t1);letter-spacing:-.3px;line-height:1.2}
.topbar-sub{
  font-size:11px;color:var(--t4);margin-top:3px;
  display:flex;align-items:center;gap:6px;
}
.dot{width:6px;height:6px;border-radius:50%;display:inline-block;flex-shrink:0;transition:background .3s}
.dot-green{background:#22C55E;animation:pulse-dot 2.5s infinite}
.dot-grey{background:var(--s4)}
.dot-red{background:var(--red);animation:pulse-dot 1.8s infinite}
.dot-loading{background:var(--amber);animation:pulse-dot 1s infinite}
@keyframes pulse-dot{0%,100%{opacity:1}50%{opacity:.28}}
.topbar-actions{display:flex;align-items:center;gap:7px;flex-shrink:0}

/* ── Buttons ─────────────────────────────────────────────────── */
.btn-primary{
  padding:9px 18px;background:var(--g3);color:#fff;
  border-radius:var(--r3);font-size:13px;font-weight:700;
  display:inline-flex;align-items:center;gap:6px;
  transition:background .14s,transform .1s,box-shadow .14s;
  box-shadow:0 2px 8px rgba(15,45,30,.25),0 1px 2px rgba(15,45,30,.15);
  letter-spacing:.1px;
}
.btn-primary:hover{background:var(--g4);transform:translateY(-1px);box-shadow:0 4px 14px rgba(15,45,30,.3)}
.btn-primary:active{transform:translateY(1px);background:var(--g2);box-shadow:none}
.btn-primary:disabled{opacity:.45;cursor:not-allowed;transform:none;box-shadow:none}
.btn-sec{
  padding:8px 14px;background:var(--s0);color:var(--t2);
  border-radius:var(--r3);font-size:13px;font-weight:600;
  border:1.5px solid var(--b1);
  display:inline-flex;align-items:center;gap:5px;
  transition:all .14s;
}
.btn-sec:hover{background:var(--g5);border-color:var(--g4);color:var(--g3)}
.btn-sec:disabled{opacity:.5;cursor:not-allowed}.btn-lbl{display:inline}
.spinning{animation:spin .7s linear infinite;display:inline-block}
@keyframes spin{to{transform:rotate(360deg)}}

/* ── Pages ───────────────────────────────────────────────────── */
.page{padding:var(--sp5) var(--sp5) var(--sp7);display:none;flex-direction:column;gap:var(--sp5)}
.page.active{display:flex;flex-direction:column;animation:pageIn .22s var(--ease)}
@keyframes pageIn{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
