
:root{
  --purple:#5D1674;
  --purple2:#7C2496;
  --rose:#D88980;
  --bg:#FFF8FB;
  --panel:#FFFFFF;
  --ink:#291431;
  --muted:#756379;
  --line:rgba(93,22,116,.14);
  --green:#12805E;
  --red:#B42318;
  --gold:#9B6B12;
  --shadow:0 18px 50px rgba(53,16,66,.12);
  --sidebar:270px;
}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{
  margin:0;
  font-family:Cairo,Tajawal,system-ui,sans-serif;
  color:var(--ink);
  background:
    radial-gradient(circle at 0 0,rgba(216,137,128,.14),transparent 28%),
    radial-gradient(circle at 100% 0,rgba(93,22,116,.08),transparent 28%),
    linear-gradient(180deg,#fff,#fff7fb);
  min-height:100vh;
}
a{text-decoration:none;color:inherit}
button,input,select,textarea{font:inherit}
button{cursor:pointer}
img{max-width:100%;display:block}

body.rn-admin-app{
  padding-right:var(--sidebar);
}
.rn-app-sidebar{
  position:fixed;
  top:0;
  right:0;
  bottom:0;
  width:var(--sidebar);
  z-index:100;
  background:
    radial-gradient(circle at 20% 0,rgba(216,137,128,.20),transparent 30%),
    linear-gradient(180deg,#fff,#fff9fc);
  border-left:1px solid rgba(93,22,116,.11);
  box-shadow:-18px 0 44px rgba(53,16,66,.08);
  padding:18px 14px;
  display:flex;
  flex-direction:column;
  gap:16px;
}
.rn-side-brand{
  display:flex;
  align-items:center;
  gap:12px;
  padding:12px;
  border-radius:24px;
  background:#fff;
  border:1px solid var(--line);
  box-shadow:0 10px 28px rgba(93,22,116,.07);
}
.rn-side-logo{
  width:56px;
  height:56px;
  border-radius:19px;
  display:grid;
  place-items:center;
  background:#fff;
  padding:5px;
  border:1px solid rgba(216,137,128,.25);
  flex:0 0 auto;
}
.rn-side-logo img{width:100%;height:100%;object-fit:contain;border-radius:15px}
.rn-side-brand b{display:block;color:var(--purple);font-size:20px;font-weight:900;line-height:1.2}
.rn-side-brand small{display:block;color:var(--muted);font-size:12px;font-weight:800;margin-top:4px}
.rn-side-menu{
  overflow:auto;
  display:grid;
  gap:7px;
  padding:2px;
}
.rn-side-menu a{
  min-height:48px;
  display:flex;
  align-items:center;
  gap:10px;
  padding:11px 13px;
  border-radius:17px;
  color:var(--muted);
  font-weight:900;
  transition:.18s ease;
}
.rn-side-menu a svg{
  width:22px;
  height:22px;
  fill:none;
  stroke:currentColor;
  stroke-width:2.2;
  stroke-linecap:round;
  stroke-linejoin:round;
  flex:0 0 auto;
}
.rn-side-menu a:hover,
.rn-side-menu a.active{
  background:linear-gradient(135deg,var(--purple),var(--purple2));
  color:#fff;
  box-shadow:0 14px 30px rgba(93,22,116,.18);
}
.rn-side-menu a.danger{
  color:var(--red);
}
.rn-side-menu a.danger:hover,
.rn-side-menu a.danger.active{
  background:#fff0ef;
  color:var(--red);
  box-shadow:none;
}

.rn-mobile-topbar{
  display:none;
}
.rn-side-overlay{display:none}

.wrap{
  width:min(1180px,calc(100% - 32px));
  margin:22px auto 42px;
}
.top{
  display:flex;
  justify-content:space-between;
  align-items:center;
  gap:14px;
  margin-bottom:16px;
}
.brand{
  display:flex;
  gap:12px;
  align-items:center;
  min-width:0;
}
.logo{
  width:58px;
  height:58px;
  border-radius:18px;
  background:#fff;
  padding:5px;
  border:1px solid var(--line);
  box-shadow:var(--shadow);
  flex:0 0 auto;
}
.logo img{width:100%;height:100%;object-fit:contain}
.brand strong{display:block;color:var(--purple);font-size:23px;font-weight:900}
.brand span span{display:block;color:var(--muted);font-size:13px;font-weight:800;margin-top:3px}
.actions{
  display:flex;
  gap:8px;
  flex-wrap:wrap;
  justify-content:flex-end;
}
.btn{
  border:0;
  border-radius:15px;
  padding:11px 14px;
  min-height:44px;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:8px;
  font-weight:900;
  cursor:pointer;
  transition:.18s ease;
}
.btn:hover{transform:translateY(-2px)}
.main{
  background:linear-gradient(135deg,var(--purple),var(--purple2));
  color:#fff;
  box-shadow:0 12px 28px rgba(93,22,116,.18);
}
.soft{
  background:#fff;
  color:var(--purple);
  border:1px solid var(--line);
  box-shadow:0 8px 22px rgba(93,22,116,.08);
}
.danger{
  background:#fff0ef;
  color:var(--red);
  border:1px solid #ffd0cd;
}
.btn.small{min-height:36px;padding:8px 11px;border-radius:12px;font-size:12px}

.grid{display:grid;gap:12px}
.stats{grid-template-columns:repeat(4,1fr);margin-bottom:14px}
.stat,.kpi,.card,.chart-card{
  background:rgba(255,255,255,.92);
  border:1px solid var(--line);
  border-radius:24px;
  padding:16px;
  box-shadow:0 12px 32px rgba(93,22,116,.07);
  backdrop-filter:blur(12px);
}
.stat b,.kpi b{
  display:block;
  color:var(--purple);
  font-size:30px;
  line-height:1;
  font-weight:900;
}
.stat span,.kpi span{
  display:block;
  margin-top:7px;
  color:var(--muted);
  font-weight:800;
  font-size:13px;
}
.card{margin-bottom:14px}
.card h3,.chart-title h3{
  color:var(--purple);
  margin-top:0;
}
.kpi-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:14px}
.kpi{position:relative;overflow:hidden}
.kpi:before{content:"";position:absolute;left:-35px;top:-35px;width:120px;height:120px;border-radius:50%;background:rgba(216,137,128,.12)}
.kpi.good b{color:var(--green)}.kpi.bad b{color:var(--red)}.kpi.gold b{color:var(--gold)}

.filters{
  display:grid;
  grid-template-columns:1.4fr 1fr 1fr 1fr auto;
  gap:8px;
  margin-bottom:12px;
}
input,select,textarea{
  width:100%;
  border:1px solid var(--line);
  border-radius:15px;
  padding:11px 12px;
  outline:0;
  background:#fff;
  color:var(--ink);
}
textarea{min-height:110px;resize:vertical;line-height:1.8}
input:focus,select:focus,textarea:focus{
  box-shadow:0 0 0 4px rgba(124,36,150,.09);
  border-color:rgba(124,36,150,.55);
}
label{
  display:block;
  color:var(--purple);
  font-weight:900;
  font-size:13px;
  margin-bottom:10px;
}
.row2{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.row3{display:grid;grid-template-columns:1fr 1fr 1fr;gap:12px}
.table-wrap{overflow:auto;border-radius:18px}
.table{width:100%;min-width:980px;border-collapse:collapse}
.table th,.table td{
  padding:12px;
  border-bottom:1px solid rgba(93,22,116,.09);
  text-align:right;
  vertical-align:top;
  font-size:13px;
}
.table th{
  background:#fff8fb;
  color:var(--purple);
  font-weight:900;
  position:sticky;
  top:0;
}
.badge{
  display:inline-flex;
  align-items:center;
  padding:6px 10px;
  border-radius:999px;
  background:#f3e7f7;
  color:var(--purple);
  font-weight:900;
  font-size:12px;
}
.badge.green{background:#eafff6;color:var(--green)}
.badge.gold{background:#fff7e5;color:var(--gold)}
.badge.red{background:#fff0ef;color:var(--red)}
.muted{color:var(--muted)}
.note{border:1px solid var(--line);border-radius:18px;padding:12px;margin:8px 0;background:#fff8fb;line-height:1.7}
.error,.success,.archive-note{
  border-radius:16px;
  padding:12px 14px;
  margin:10px 0;
  font-weight:900;
  line-height:1.8;
}
.error{background:#fff0ef;border:1px solid #ffd0cd;color:var(--red)}
.success{background:#edfff7;border:1px solid #bfe8d8;color:var(--green)}
.archive-note{background:#fff7e8;border:1px solid #f3d7a3;color:#79530a}
.action-row{display:flex;gap:8px;flex-wrap:wrap}.action-row form{display:inline-flex}

.login{
  min-height:100vh;
  display:grid;
  place-items:center;
  padding:18px;
}
.login-card{
  width:min(430px,100%);
  background:#fff;
  border:1px solid var(--line);
  border-radius:28px;
  padding:22px;
  box-shadow:var(--shadow);
}
.login-card h1{text-align:center;color:var(--purple);font-size:27px;margin-bottom:6px}
.login-subtitle{text-align:center;color:var(--muted);font-weight:800;line-height:1.8;margin-top:0}

.charts{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.bars{display:grid;gap:9px}
.bar-row{display:grid;grid-template-columns:130px 1fr 42px;gap:8px;align-items:center;font-size:13px}
.bar{height:14px;background:#f3e8f7;border-radius:999px;overflow:hidden}
.bar i{display:block;height:100%;background:linear-gradient(90deg,var(--purple),var(--rose));border-radius:999px}
.chart-title{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-bottom:10px}
.line-chart{width:100%;height:240px;display:block}.axis-text{font-size:11px;fill:#756379;font-family:Cairo,Arial}.line-revenue{fill:none;stroke:#5D1674;stroke-width:4;stroke-linecap:round;stroke-linejoin:round}.line-cost{fill:none;stroke:#D88980;stroke-width:4;stroke-linecap:round;stroke-linejoin:round}.line-profit{fill:none;stroke:#12805E;stroke-width:4;stroke-linecap:round;stroke-linejoin:round}.legend{display:flex;flex-wrap:wrap;gap:10px;margin-top:8px}.legend span{display:inline-flex;align-items:center;gap:6px;color:var(--muted);font-weight:800;font-size:12px}.legend i{width:12px;height:12px;border-radius:50%;display:inline-block}
.progress-row{display:grid;grid-template-columns:150px 1fr 55px;gap:10px;align-items:center;margin:11px 0}.progress-row strong{font-size:13px;color:var(--ink)}.progress{height:18px;border-radius:999px;background:#f4e8f8;overflow:hidden}.progress i{display:block;height:100%;border-radius:999px;background:linear-gradient(90deg,var(--purple),var(--rose))}.money-pos{color:var(--green);font-weight:900}.money-neg{color:var(--red);font-weight:900}
.inline-check{display:flex!important;align-items:center;gap:6px;margin:0!important;color:var(--ink)!important}
.inline-check input{width:auto!important}
.table input,.table select{min-width:130px}
.table .btn{min-width:74px}

/* Make old top buttons less noisy because sidebar is primary */
body.rn-admin-app .top .actions{
  max-width:720px;
}
body.rn-admin-app .top .actions .btn.soft:not(:first-child):not([href="../index.html"]){
  display:none;
}

@media(max-width:1180px){
  .stats{grid-template-columns:repeat(3,1fr)}
  .kpi-grid{grid-template-columns:repeat(2,1fr)}
  .filters{grid-template-columns:1fr 1fr}
  .charts{grid-template-columns:1fr}
}
@media(max-width:920px){
  body.rn-admin-app{
    padding-right:0;
    padding-top:66px;
  }
  .rn-mobile-topbar{
    position:fixed;
    top:0;right:0;left:0;
    height:66px;
    z-index:120;
    display:flex;
    align-items:center;
    justify-content:space-between;
    gap:10px;
    padding:10px 14px;
    background:rgba(255,255,255,.92);
    border-bottom:1px solid var(--line);
    backdrop-filter:blur(16px);
    box-shadow:0 10px 28px rgba(93,22,116,.08);
  }
  .rn-mobile-topbar strong{color:var(--purple);font-weight:900}
  .rn-mobile-topbar a{
    min-height:38px;
    display:flex;
    align-items:center;
    padding:8px 12px;
    border-radius:14px;
    background:#fff;
    border:1px solid var(--line);
    color:var(--purple);
    font-weight:900;
    font-size:12px;
  }
  .rn-menu-toggle{
    width:44px;height:44px;border:0;border-radius:15px;
    background:linear-gradient(135deg,var(--purple),var(--purple2));
    display:grid;place-items:center;padding:10px;
  }
  .rn-menu-toggle span{
    display:block;width:20px;height:2px;background:#fff;border-radius:99px;margin:2px 0;
  }
  .rn-app-sidebar{
    transform:translateX(105%);
    transition:.25s ease;
    width:min(320px,86vw);
  }
  body.side-open .rn-app-sidebar{transform:translateX(0)}
  .rn-side-overlay{
    position:fixed;inset:0;z-index:90;background:rgba(41,20,49,.42);backdrop-filter:blur(3px);
    display:none;
  }
  body.side-open .rn-side-overlay{display:block}
  .wrap{width:min(100% - 22px,1180px);margin-top:16px}
  .top{display:block}
  .top .actions{margin-top:10px;justify-content:stretch}
  .top .actions .btn{flex:1}
  .brand strong{font-size:20px}
}
@media(max-width:650px){
  .wrap{width:min(100% - 16px,1180px)}
  .stats,.kpi-grid,.row2,.row3,.filters,.charts{grid-template-columns:1fr!important}
  .card,.stat,.kpi,.chart-card{border-radius:20px;padding:13px}
  .btn{width:100%}
  .actions .btn{width:auto}
  .brand .logo{display:none}
  .table{
    min-width:0;
    border-collapse:separate;
    border-spacing:0 10px;
  }
  .table thead{display:none}
  .table tbody tr{
    display:block;
    background:#fff;
    border:1px solid var(--line);
    border-radius:18px;
    padding:8px;
    box-shadow:0 10px 24px rgba(93,22,116,.06);
  }
  .table td{
    display:grid;
    grid-template-columns:110px 1fr;
    gap:8px;
    border:0;
    padding:8px;
    font-size:13px;
  }
  .table td:before{
    content:attr(data-label);
    color:var(--purple);
    font-weight:900;
  }
  .table input,.table select{min-width:0}
  .progress-row{grid-template-columns:1fr}
  .bar-row{grid-template-columns:1fr}
}


/* v6.5 PWA install */
.rn-install-app{
  position:fixed;
  left:18px;
  bottom:18px;
  z-index:140;
  min-height:48px;
  border:0;
  border-radius:999px;
  padding:10px 15px;
  display:flex;
  align-items:center;
  gap:8px;
  background:linear-gradient(135deg,var(--purple),var(--purple2));
  color:#fff;
  font-family:inherit;
  font-weight:900;
  box-shadow:0 18px 44px rgba(93,22,116,.24);
  cursor:pointer;
}
.rn-install-icon{
  width:26px;
  height:26px;
  border-radius:50%;
  display:grid;
  place-items:center;
  background:rgba(255,255,255,.18);
}
.rn-side-install{
  width:100%;
  min-height:44px;
  border:0;
  border-radius:16px;
  margin-bottom:8px;
  background:#fff;
  color:var(--purple);
  border:1px solid var(--line);
  font-family:inherit;
  font-weight:900;
  box-shadow:0 8px 20px rgba(93,22,116,.06);
}
.rn-install-help{
  position:fixed;
  inset:0;
  z-index:200;
  display:none;
  place-items:center;
  padding:18px;
  background:rgba(41,20,49,.45);
  backdrop-filter:blur(5px);
}
.rn-install-help.show{display:grid}
.rn-install-card{
  width:min(460px,100%);
  position:relative;
  background:#fff;
  border:1px solid var(--line);
  border-radius:28px;
  padding:22px;
  box-shadow:var(--shadow);
}
.rn-install-card strong{
  display:block;
  color:var(--purple);
  font-size:23px;
  font-weight:900;
  margin-bottom:10px;
}
.rn-install-card p{
  color:var(--muted);
  line-height:1.9;
  font-weight:800;
  margin:10px 0;
}
.rn-install-card b{color:var(--ink)}
.rn-install-close{
  position:absolute;
  left:14px;
  top:14px;
  width:36px;
  height:36px;
  border:0;
  border-radius:50%;
  background:#fff0ef;
  color:var(--red);
  font-size:24px;
  line-height:1;
}
@media(max-width:650px){
  .rn-install-app{
    right:12px;
    left:12px;
    bottom:12px;
    justify-content:center;
    border-radius:18px;
  }
}


/* v6.6: Login install notice + no credential hints */
.rn-login-install-note{
  margin-top:12px;
  padding:13px;
  border-radius:18px;
  background:#fff8fb;
  color:var(--muted);
  border:1px solid rgba(93,22,116,.14);
  font-weight:800;
  line-height:1.8;
}
.rn-login-install-note b{
  color:var(--purple);
}
.rn-login-install-note button{
  width:100%;
  min-height:42px;
  margin-top:10px;
  border:0;
  border-radius:15px;
  background:#fff;
  color:var(--purple);
  border:1px solid var(--line);
  font-family:inherit;
  font-weight:900;
  cursor:pointer;
}
.login-card .success{
  display:none !important;
}


/* v6.7 role-safe UI */
.rn-forbidden-card{
  max-width:620px;
  margin:80px auto;
}
body.login .rn-install-app{
  left:50%;
  right:auto;
  transform:translateX(-50%);
  bottom:18px;
}
body.login .rn-install-app:hover{
  transform:translateX(-50%) translateY(-2px);
}




/* v6.14 clean admin assets - no screenshots */
body{
  background:
    linear-gradient(rgba(255,255,255,.78), rgba(255,247,251,.86)),
    url("../assets/img/bg-admin-app.jpg?v=615") center top/cover fixed no-repeat !important;
}
.rn-app-sidebar{
  background:
    linear-gradient(rgba(255,255,255,.88), rgba(255,249,252,.94)),
    url("../assets/img/bg-admin-sidebar.jpg?v=615") center/cover no-repeat !important;
}
.rn-side-logo,
.logo{
  background:transparent !important;
  box-shadow:none !important;
}
.rn-side-logo img,
.logo img{
  object-fit:contain !important;
}
