*{box-sizing:border-box}html{font-family:Tahoma,Arial,sans-serif}body{margin:0;background:#f5f7fb;color:#172033}a{text-decoration:none;color:inherit}.container{width:min(1120px,92%);margin:auto}.site-header{background:#0b1020;color:#fff;padding:18px 0}.header-inner{display:flex;justify-content:space-between;align-items:center;gap:20px}.logo{font-size:24px;font-weight:900;letter-spacing:3px}.site-header nav{display:flex;gap:18px}.hero{padding:100px 0;background:radial-gradient(circle at 20% 20%,#30478f,#10172e 55%,#080b13);color:#fff}.hero span{color:#7ddfff}.hero h1{font-size:clamp(48px,8vw,92px);line-height:1;margin:18px 0}.hero p{color:#c1c9db;max-width:620px;line-height:1.9}.btn,button{display:inline-block;border:0;border-radius:12px;background:#5b50e6;color:#fff;padding:12px 18px;font-weight:700;cursor:pointer}.section{padding:70px 0}.section.alt{background:#eef1f7}.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:20px}.service-card{background:#fff;border-radius:18px;padding:22px;box-shadow:0 14px 35px rgba(23,32,51,.08)}.service-card img{width:100%;height:170px;object-fit:cover;border-radius:12px}.service-card p{color:#657087;line-height:1.8}.service-card a{color:#5b50e6;font-weight:700}footer{padding:25px 0;background:#0b1020;color:#cbd5e1}.detail-page{padding:60px 0}.detail-image{max-width:650px;width:100%;border-radius:20px}.login-page{min-height:100vh;display:grid;place-items:center;background:#080b13}.login-card{width:min(420px,92%);background:#fff;padding:30px;border-radius:22px}.login-card input,.admin-form input,.admin-form textarea{width:100%;padding:12px 14px;border:1px solid #dfe4ee;border-radius:10px;margin:8px 0 16px}.alert{background:#fff1f1;color:#a12626;padding:12px;border-radius:10px;margin-bottom:15px}.success{background:#edf9f0;color:#217d3d;padding:12px;border-radius:10px;margin-bottom:15px}.admin-layout{min-height:100vh;display:grid;grid-template-columns:250px 1fr}.sidebar{background:#0b1020;color:#fff;padding:24px;display:flex;flex-direction:column;gap:10px}.sidebar h2{margin:0 0 20px}.sidebar a{padding:12px;border-radius:10px;color:#cbd5e1}.sidebar a:hover{background:#18213d;color:#fff}.admin-content{padding:28px}.admin-topbar{display:flex;justify-content:space-between;align-items:center;margin-bottom:25px}.stats{display:grid;grid-template-columns:repeat(3,1fr);gap:18px}.stat{background:#fff;padding:24px;border-radius:18px;box-shadow:0 12px 32px rgba(23,32,51,.07)}.stat strong{font-size:34px;display:block}.stat span{color:#738096}.page-actions{margin-bottom:18px}.table-wrap{overflow:auto;background:#fff;border-radius:16px;padding:10px}table{width:100%;border-collapse:collapse}th,td{padding:13px;border-bottom:1px solid #edf0f5;text-align:right}.inline-form{display:inline}.link-button{padding:0;background:none;color:#b42318}.checkbox{display:flex;gap:8px;align-items:center}.checkbox input{width:auto;margin:0}.admin-form{max-width:760px;background:#fff;padding:24px;border-radius:18px}@media(max-width:800px){.site-header nav{display:none}.admin-layout{grid-template-columns:1fr}.sidebar{position:relative}.stats{grid-template-columns:1fr}.admin-content{padding:18px}}
select{width:100%;padding:12px 14px;border:1px solid #dfe4ee;border-radius:10px;margin:8px 0 16px;background:#fff}
.media-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:18px;margin-top:24px}
.media-card{background:#fff;padding:14px;border-radius:16px;box-shadow:0 10px 28px rgba(23,32,51,.07)}
.media-card img{width:100%;height:150px;object-fit:cover;border-radius:12px}
.danger{background:#b42318}
.article-page{max-width:850px}
.article-content{line-height:2;color:#374151;font-size:18px}
.media-upload{margin-bottom:24px}


/* Stage4 Infinite Canvas */
.viewport{cursor:grab}
.viewport:active{cursor:grabbing}
.node{
transition:transform .2s, box-shadow .2s;
}
.node:hover{
transform:scale(1.04);
box-shadow:0 18px 40px rgba(0,0,0,.35);
}
.toolbar{
position:fixed;
top:15px;
left:15px;
background:#111827;
color:#fff;
padding:10px 14px;
border-radius:12px;
display:flex;
gap:10px;
z-index:1000;
}
.toolbar button{
background:#2563eb;
border:none;
padding:8px 12px;
border-radius:8px;
color:#fff;
cursor:pointer;
}

.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}
.sidebar-toggle{display:none;position:fixed;top:14px;right:14px;z-index:1200;width:44px;height:44px;padding:0;font-size:22px}
small{color:#7a8497}
@media(max-width:800px){
 .sidebar-toggle{display:block}
 .sidebar{position:fixed;inset:0 0 0 auto;width:min(290px,86vw);z-index:1100;transform:translateX(110%);transition:transform .25s ease;box-shadow:-20px 0 50px rgba(0,0,0,.22)}
 .sidebar-open .sidebar{transform:translateX(0)}
 .admin-topbar{padding-right:54px}
 .form-grid{grid-template-columns:1fr}
}
.app-card{position:relative;overflow:hidden}.app-type{display:inline-flex;background:#eef0ff;color:#4e46c7;padding:6px 10px;border-radius:999px;font-size:12px;font-weight:700;margin:10px 0}.coming-soon{display:inline-flex;background:#fff4dc;color:#9a6500;padding:7px 11px;border-radius:999px;font-weight:700}
.progress{width:120px;height:9px;background:#e8ebf2;border-radius:999px;overflow:hidden;margin-bottom:5px}.progress span{display:block;height:100%;background:#5b50e6;border-radius:999px}.admin-form label{font-weight:700;color:#334155}.table-wrap td{vertical-align:middle}

.invoice-box{max-width:850px;background:#fff;padding:32px;border-radius:18px;box-shadow:0 12px 32px rgba(23,32,51,.07)}
.invoice-head{display:flex;justify-content:space-between;align-items:flex-start;gap:20px}.invoice-head h2{margin:0;letter-spacing:3px}
@media print{.sidebar,.sidebar-toggle,.admin-topbar,.invoice-box button{display:none!important}.admin-layout{display:block}.admin-content{padding:0}.invoice-box{box-shadow:none;max-width:none}}

/* Stage 6: reports and system tools */
.report-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px;margin-top:22px}
.report-card{background:#fff;border-radius:18px;padding:22px;box-shadow:0 12px 32px rgba(23,32,51,.07)}
.report-card h3{margin-top:0}.report-wide{grid-column:1/-1}
.metric-row{display:flex;justify-content:space-between;gap:16px;padding:11px 0;border-bottom:1px solid #edf0f5}
.metric-row:last-child{border-bottom:0}.muted{color:#738096}
.bar-chart{height:245px;display:flex;align-items:flex-end;gap:14px;overflow-x:auto;padding:20px 5px 0}
.bar-item{min-width:72px;height:220px;display:flex;flex-direction:column;justify-content:flex-end;align-items:center;gap:7px}
.bar{width:42px;background:linear-gradient(180deg,#7c72f2,#5b50e6);border-radius:10px 10px 3px 3px}
.bar-value{font-size:11px;white-space:nowrap;color:#475569}
.health-summary{display:flex;align-items:center;gap:15px;background:#fff;padding:22px;border-radius:18px;margin-bottom:20px}
.health-summary strong{font-size:30px}.health-good{border-right:5px solid #16803c}.health-warning{border-right:5px solid #d97706}
.status-pill{display:inline-flex;padding:5px 10px;border-radius:999px;font-size:12px;font-weight:700}.status-pill.ok{background:#eaf8ef;color:#17723a}.status-pill.bad{background:#fff0f0;color:#a12626}
.admin-form hr{border:0;border-top:1px solid #e5e7eb;margin:24px 0}
@media(max-width:800px){.report-grid{grid-template-columns:1fr}.report-wide{grid-column:auto}}

/* Stage 7: Customer portal */
.portal-body{background:#f4f6fb;min-height:100vh}.portal-header{background:#0b1020;color:#fff;position:sticky;top:0;z-index:100}.portal-head{display:flex;align-items:center;justify-content:space-between;min-height:72px}.portal-nav{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.portal-nav a{padding:10px 12px;border-radius:10px;color:#dbe3f2}.portal-nav a:hover{background:#19223c;color:#fff}.portal-main{padding-top:28px;padding-bottom:60px}.portal-title{display:flex;justify-content:space-between;align-items:center;gap:20px;margin-bottom:24px}.portal-title h1{margin:0}.portal-title span{color:#738096}.portal-menu-toggle{display:none}.portal-stats{grid-template-columns:repeat(4,1fr);margin-bottom:22px}.portal-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(270px,1fr));gap:18px}.portal-card{display:block;background:#fff;border:1px solid #e7eaf1;border-radius:18px;padding:22px;box-shadow:0 10px 28px rgba(23,32,51,.06);transition:.2s}.portal-card:hover{transform:translateY(-3px);box-shadow:0 16px 36px rgba(23,32,51,.1)}.progress.wide{width:100%;margin:14px 0 7px}.progress.large{height:15px}.portal-progress-number{font-size:54px;font-weight:900;margin:25px 0}.ticket-thread{display:grid;gap:14px;margin:20px 0}.ticket-message{max-width:820px;padding:18px;border-radius:18px;background:#fff;box-shadow:0 8px 24px rgba(23,32,51,.06)}.ticket-message.from-customer{margin-right:auto;background:#eeeefe}.ticket-message.from-admin{margin-left:auto;border-right:4px solid #5b50e6}.ticket-message strong,.ticket-message small{display:block}.ticket-message p{line-height:1.9;margin-bottom:0}
@media(max-width:900px){.portal-stats{grid-template-columns:repeat(2,1fr)}.portal-menu-toggle{display:block}.portal-nav{display:none;position:absolute;top:72px;right:4%;left:4%;background:#111831;padding:12px;border-radius:0 0 16px 16px}.portal-menu-open .portal-nav{display:grid}.portal-title{align-items:flex-start;flex-direction:column}.portal-head{position:relative}}
@media(max-width:520px){.portal-stats{grid-template-columns:1fr}.portal-main{padding-top:18px}.portal-card{padding:18px}}
.app-card .app-icon{width:64px;height:64px;object-fit:cover;border-radius:16px;margin-bottom:12px}.app-card .btn{display:inline-block;margin-top:14px}

/* Stage 9: Qlamo Core modules */
.core-hero{display:flex;justify-content:space-between;align-items:center;gap:25px;background:linear-gradient(135deg,#0b1020,#283a78);color:#fff;padding:30px;border-radius:22px;margin-bottom:22px;overflow:hidden}.core-hero h2{font-size:32px;margin:8px 0}.core-hero p{color:#d7def0;margin:0;line-height:1.8}.core-hero small{letter-spacing:2px;color:#8edcf4}.core-number{font-size:72px;font-weight:900;opacity:.85}.module-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(310px,1fr));gap:18px}.module-card{background:#fff;border:1px solid #e5e9f2;border-radius:20px;padding:22px;box-shadow:0 10px 30px rgba(23,32,51,.06)}.module-card-head{display:flex;justify-content:space-between;align-items:flex-start;gap:15px}.module-card h3{margin:0 0 6px;font-size:21px}.module-card p{color:#657087;line-height:1.8;min-height:58px}.module-icon{font-size:34px;margin-bottom:14px}.module-meta{display:flex;justify-content:space-between;gap:12px;border-top:1px solid #edf0f5;border-bottom:1px solid #edf0f5;padding:12px 0;margin:15px 0;color:#738096;font-size:13px}.module-actions{display:flex;gap:9px;align-items:flex-end;flex-wrap:wrap}.module-actions form{display:flex;gap:7px;align-items:center;flex-wrap:wrap}.secondary-btn{background:#e9ecf4;color:#28344f}.mini-check{font-size:11px;color:#7a8497;display:flex;align-items:center;gap:4px}.module-banner{display:flex;justify-content:space-between;align-items:center;background:#fff;border-right:5px solid #5b50e6;border-radius:18px;padding:22px;margin-bottom:20px}.module-banner span{font-size:44px}.module-banner p{margin-bottom:0;color:#657087}code{background:#eef0f5;padding:3px 7px;border-radius:7px;direction:ltr;display:inline-block}
@media(max-width:600px){.core-hero{align-items:flex-start}.core-number{font-size:46px}.module-card-head{flex-direction:column}.module-grid{grid-template-columns:1fr}}

/* =========================================================
   Qlamo Admin Sidebar — refined dark navigation
   This block intentionally overrides the earlier sidebar rules only.
   ========================================================= */
:root{
 --ql-sidebar-w:282px;
 --ql-sidebar-bg-1:#111c2d;
 --ql-sidebar-bg-2:#17263a;
 --ql-sidebar-bg-3:#0d1726;
 --ql-sidebar-text:#dbe5ef;
 --ql-sidebar-muted:#7f90a5;
 --ql-sidebar-line:rgba(255,255,255,.07);
 --ql-accent:#19d6a2;
 --ql-accent-2:#0eb889;
 --ql-danger:#ff4d5e;
}
.admin-layout{grid-template-columns:var(--ql-sidebar-w) minmax(0,1fr)}
.sidebar{
 position:sticky;
 top:0;
 height:100vh;
 width:var(--ql-sidebar-w);
 overflow:hidden;
 padding:0;
 gap:0;
 color:var(--ql-sidebar-text);
 background:
  radial-gradient(circle at 15% 0%,rgba(31,211,163,.10),transparent 24%),
  linear-gradient(165deg,var(--ql-sidebar-bg-1) 0%,var(--ql-sidebar-bg-2) 52%,var(--ql-sidebar-bg-3) 100%);
 border-left:1px solid rgba(255,255,255,.05);
 box-shadow:-10px 0 35px rgba(2,8,23,.08),inset -1px 0 rgba(255,255,255,.03);
}
.sidebar::before{
 content:"";
 position:absolute;
 inset:0;
 pointer-events:none;
 background:linear-gradient(90deg,transparent 0%,rgba(255,255,255,.018) 48%,transparent 100%);
}
.sidebar-brand{
 position:relative;
 z-index:1;
 min-height:94px;
 padding:21px 21px 18px;
 display:flex;
 align-items:center;
 gap:13px;
 border-bottom:1px solid var(--ql-sidebar-line);
}
.brand-mark{
 width:43px;
 height:43px;
 position:relative;
 flex:0 0 43px;
 filter:drop-shadow(0 9px 18px rgba(20,210,157,.20));
}
.brand-mark i{
 position:absolute;
 left:50%;
 width:31px;
 height:14px;
 border-radius:4px;
 transform:translateX(-50%) rotate(45deg) skew(-5deg,-5deg);
 background:linear-gradient(135deg,#58efd0,#11b78c);
 box-shadow:0 3px 8px rgba(0,0,0,.18);
}
.brand-mark i:nth-child(1){top:3px;opacity:.98}
.brand-mark i:nth-child(2){top:14px;opacity:.82;transform:translateX(-50%) rotate(45deg) skew(-5deg,-5deg) scale(.92)}
.brand-mark i:nth-child(3){top:25px;opacity:.58;transform:translateX(-50%) rotate(45deg) skew(-5deg,-5deg) scale(.82)}
.brand-copy{display:flex;min-width:0;flex-direction:column;line-height:1.25}
.brand-copy strong{font-size:18px;color:#fff;font-weight:900;letter-spacing:.2px}
.brand-copy small{margin-top:5px;color:#91a1b4;font-size:11px}
.sidebar-nav{
 position:relative;
 z-index:1;
 flex:1;
 overflow-y:auto;
 overflow-x:hidden;
 padding:16px 13px 24px;
 scrollbar-width:thin;
 scrollbar-color:rgba(255,255,255,.16) transparent;
}
.sidebar-nav::-webkit-scrollbar{width:5px}
.sidebar-nav::-webkit-scrollbar-track{background:transparent}
.sidebar-nav::-webkit-scrollbar-thumb{background:rgba(255,255,255,.14);border-radius:999px}
.sidebar-section{padding:0 0 13px;margin-bottom:8px;border-bottom:1px solid var(--ql-sidebar-line)}
.sidebar-section-last{border-bottom:0;margin-bottom:0}
.sidebar-section-title{
 padding:7px 14px 8px;
 color:var(--ql-sidebar-muted);
 font-size:10.5px;
 font-weight:700;
 letter-spacing:.2px;
}
.sidebar a.sidebar-link{
 min-height:43px;
 margin:3px 0;
 padding:10px 12px;
 display:grid;
 grid-template-columns:22px minmax(0,1fr) 14px;
 align-items:center;
 gap:10px;
 border:1px solid transparent;
 border-radius:11px;
 color:#c8d4e2;
 font-size:13px;
 font-weight:500;
 line-height:1.2;
 transition:background .18s ease,color .18s ease,border-color .18s ease,transform .18s ease,box-shadow .18s ease;
}
.sidebar a.sidebar-link:hover{
 color:#fff;
 background:rgba(255,255,255,.055);
 border-color:rgba(255,255,255,.055);
 transform:translateX(-2px);
}
.sidebar a.sidebar-link.is-active{
 color:#fff;
 background:linear-gradient(90deg,rgba(34,211,163,.16),rgba(21,45,64,.74));
 border-color:rgba(36,220,169,.12);
 box-shadow:inset -3px 0 0 var(--ql-accent),0 8px 18px rgba(2,12,27,.16);
}
.sidebar a.sidebar-link.is-active .sidebar-link-icon{color:var(--ql-accent)}
.sidebar-link-icon{width:20px;height:20px;display:grid;place-items:center;color:#a7b7c9;transition:color .18s ease}
.sidebar-link-icon svg{width:18px;height:18px;display:block}
.dynamic-module-icon{font-size:15px;color:#8fe7cf}
.sidebar-link-label{min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.sidebar-link-arrow{width:13px;height:13px;color:#65768a;opacity:.9;transform:rotate(180deg)}
.sidebar-link-arrow svg{width:13px;height:13px;display:block}
.sidebar a.sidebar-logout{color:#ff6b78;margin-top:3px}
.sidebar a.sidebar-logout:hover{color:#fff;background:rgba(255,77,94,.13);border-color:rgba(255,77,94,.16)}
.sidebar a.sidebar-logout .sidebar-link-icon{color:var(--ql-danger)}
.sidebar-user{
 position:relative;
 z-index:1;
 padding:15px 18px;
 display:flex;
 align-items:center;
 gap:11px;
 border-top:1px solid var(--ql-sidebar-line);
 background:rgba(2,10,22,.17);
}
.sidebar-avatar{
 width:35px;
 height:35px;
 flex:0 0 35px;
 border-radius:11px;
 display:grid;
 place-items:center;
 color:#05251d;
 background:linear-gradient(135deg,#67eed2,#1bc397);
 font-weight:900;
 box-shadow:0 7px 17px rgba(19,207,157,.18);
}
.sidebar-user-copy{display:flex;min-width:0;flex-direction:column;line-height:1.25}
.sidebar-user-copy strong{color:#eef6fb;font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.sidebar-user-copy small{color:#6f8196;font-size:10px;margin-top:4px}
.sidebar-toggle{
 background:#122034;
 box-shadow:0 8px 24px rgba(15,23,42,.20);
 border:1px solid rgba(255,255,255,.08);
 border-radius:12px;
 align-items:center;
 justify-content:center;
 flex-direction:column;
 gap:4px;
}
.sidebar-toggle span{display:block;width:19px;height:2px;border-radius:999px;background:#fff;transition:.2s}
.sidebar-toggle[aria-expanded="true"] span:nth-child(1){transform:translateY(6px) rotate(45deg)}
.sidebar-toggle[aria-expanded="true"] span:nth-child(2){opacity:0}
.sidebar-toggle[aria-expanded="true"] span:nth-child(3){transform:translateY(-6px) rotate(-45deg)}
@media(max-width:800px){
 .admin-layout{grid-template-columns:1fr}
 .sidebar{
  position:fixed;
  top:0;
  right:0;
  bottom:0;
  left:auto;
  width:min(var(--ql-sidebar-w),88vw);
  height:100vh;
  z-index:1100;
  transform:translateX(110%);
  transition:transform .25s ease;
  box-shadow:-25px 0 60px rgba(2,8,23,.32);
 }
 .sidebar-open .sidebar{transform:translateX(0)}
 .sidebar-toggle{display:flex}
 .admin-topbar{padding-right:54px}
 body.sidebar-open::after{content:"";position:fixed;inset:0;z-index:1050;background:rgba(4,10,20,.48);backdrop-filter:blur(2px)}
}
