:root{
  --portal-primary:#3f6ad8;
  --portal-primary2:#2952c8;
  --portal-soft:#eef4ff;
  --portal-bg:#f4f6f9;
  --portal-card:#ffffff;
  --portal-text:#1f2937;
  --portal-muted:#6b7280;
  --portal-line:#e5e7eb;
  --portal-shadow:0 12px 28px rgba(15,23,42,.08);
  --portal-radius:14px;
}
html[data-portal-theme="dark"]{
  --portal-bg:#111827;
  --portal-card:#182231;
  --portal-text:#e5e7eb;
  --portal-muted:#9ca3af;
  --portal-line:#263244;
  --portal-soft:#1d2b46;
  --portal-shadow:0 16px 34px rgba(0,0,0,.28);
}
body{font-family:Inter,system-ui,-apple-system,"Segoe UI",Roboto,Arial,sans-serif;font-size:14px;color:var(--portal-text)}
a{text-decoration:none!important}.content-wrapper,.portal-content-wrapper{background:var(--portal-bg)!important}.portal-content{padding-bottom:92px}.portal-content-header h1{font-size:24px;font-weight:800;letter-spacing:-.02em;color:var(--portal-text)}.portal-subtitle{font-size:12px;color:var(--portal-muted)}
.main-sidebar{background:#111c2f!important}.portal-sidebar .nav-sidebar>.nav-item>.nav-link{border-radius:9px;margin:2px 8px;color:#cbd5e1}.portal-sidebar .nav-sidebar>.nav-item>.nav-link.active{background:linear-gradient(135deg,var(--portal-primary),#6d8cff)!important;color:#fff!important;box-shadow:0 8px 20px rgba(63,106,216,.22)}.portal-sidebar .nav-header{font-size:11px;letter-spacing:.08em;color:#8191aa;margin-top:8px}.portal-brand{border-bottom:1px solid rgba(255,255,255,.08)!important}.portal-brand-mark{width:34px;height:34px;border-radius:10px!important;background:linear-gradient(135deg,var(--portal-primary),#6d8cff);color:#fff;display:inline-grid;place-items:center;font-weight:900;text-align:center;line-height:34px}.portal-brand .brand-text{font-size:16px;letter-spacing:-.02em}.sidebar-avatar,.profile-avatar{width:32px;height:32px;border-radius:50%;display:inline-grid;place-items:center;background:linear-gradient(135deg,var(--portal-primary),#6d8cff);color:#fff;font-weight:800}.portal-sidebar .user-panel small{display:block;color:#8ea0bd;font-size:11px}.portal-sidebar .user-panel .info{line-height:1.15}.portal-topbar{border-bottom:1px solid var(--portal-line)!important;background:var(--portal-card)!important;color:var(--portal-text)!important}.portal-topbar .nav-link{color:var(--portal-text)!important}.portal-page-title{position:absolute;left:50%;transform:translateX(-50%);text-align:center;line-height:1.05}.portal-page-title strong{display:block;font-size:15px;letter-spacing:-.02em;color:var(--portal-text)}.portal-page-title small{font-size:11px;color:var(--portal-muted)}.wallet-chip{display:inline-flex;align-items:center;gap:7px;background:var(--portal-soft);color:var(--portal-primary2);border:1px solid var(--portal-line);border-radius:999px;padding:8px 12px;font-weight:800}.theme-toggle{border:0;background:transparent}.profile-nav{display:flex!important;align-items:center;gap:8px}.profile-name{max-width:150px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.portal-dropdown{border:1px solid var(--portal-line);box-shadow:var(--portal-shadow);border-radius:12px;overflow:hidden;background:var(--portal-card)}.portal-dropdown .dropdown-item{color:var(--portal-text)}.portal-dropdown .dropdown-item:hover{background:var(--portal-soft)}.breadcrumb{background:transparent}.breadcrumb a{color:var(--portal-primary)}

/* layout compatibility for existing PHP pages */
.grid{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:16px}.card{background:var(--portal-card)!important;color:var(--portal-text);border:1px solid var(--portal-line)!important;border-radius:var(--portal-radius)!important;box-shadow:var(--portal-shadow);padding:18px;margin-bottom:0}.card h2,.card h3{font-weight:800;letter-spacing:-.025em;color:var(--portal-text)}.card-2{grid-column:span 2}.card-3{grid-column:span 3}.card-4{grid-column:span 4}.card-5{grid-column:span 5}.card-6{grid-column:span 6}.card-7{grid-column:span 7}.card-8{grid-column:span 8}.card-9{grid-column:span 9}.muted{color:var(--portal-muted)!important}.kpi{font-size:30px;font-weight:900;letter-spacing:-.05em;line-height:1.1}.kpi small{font-size:12px;color:var(--portal-muted);font-weight:700}.stat-card{position:relative;overflow:hidden}.stat-card:after{content:"";position:absolute;width:64px;height:64px;border-radius:50%;right:-20px;bottom:-20px;background:var(--portal-soft)}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;border:0;border-radius:10px;background:var(--portal-primary);color:#fff!important;padding:10px 15px;font-weight:800;cursor:pointer;box-shadow:0 9px 18px rgba(63,106,216,.16)}.btn:hover{filter:brightness(.98);transform:translateY(-1px)}.btn-small,.btn-sm{padding:7px 11px;font-size:12px}.btn-light,.btn-soft{background:var(--portal-soft)!important;color:var(--portal-primary2)!important;box-shadow:none!important}.btn-blue{background:var(--portal-primary)!important}.btn-ok{background:#10b981!important}.btn-danger{background:#ef4444!important}.btn-warn{background:#f59e0b!important}.btn-full{width:100%}.actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.badge,.pill{display:inline-flex;align-items:center;gap:5px;border-radius:999px;padding:5px 9px;font-size:11px;font-weight:800;background:var(--portal-soft);color:var(--portal-primary2)}.badge.ok{background:#dcfce7;color:#15803d}.badge.danger{background:#fee2e2;color:#b91c1c}.badge.warn{background:#fef3c7;color:#b45309}.badge.info{background:#dbeafe;color:#1d4ed8}
.wallet-card{background:linear-gradient(135deg,#172554,#2563eb 70%,#60a5fa)!important;color:#fff!important;border:0!important;position:relative;overflow:hidden}.wallet-card:after{content:"";position:absolute;right:-60px;bottom:-80px;width:190px;height:190px;border-radius:50%;background:rgba(255,255,255,.13)}.wallet-card .kpi,.wallet-card .muted{color:#fff!important}.wallet-card .btn-light{background:rgba(255,255,255,.16)!important;color:#fff!important;border:1px solid rgba(255,255,255,.18)}
.icon-box{width:44px;height:44px;border-radius:13px;display:grid;place-items:center;background:linear-gradient(135deg,#eef4ff,#dbe8ff);color:var(--portal-primary);font-weight:900;font-size:18px;flex:none}.icon-box.big{width:56px;height:56px;font-size:23px}.icon-box.green{background:#dcfce7;color:#16a34a}.icon-box.blue{background:#dbeafe;color:#1d4ed8}.icon-box.orange{background:#ffedd5;color:#ea580c}.icon-box.red{background:#fee2e2;color:#dc2626}.quick-title{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin:0 0 16px}.quick-title h2{margin:0;font-size:22px;font-weight:850}.quick-title p{margin:5px 0 0}.mini-kicker{font-size:11px;font-weight:900;color:var(--portal-primary);text-transform:uppercase;letter-spacing:.08em;margin-bottom:4px}

/* AdminLTE / Hive style service app cards */
.service-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}.service-grid.big{grid-template-columns:repeat(3,minmax(0,1fr))}.dashboard-service-grid{grid-template-columns:repeat(4,minmax(0,1fr))}.service-card,.service-tile{display:flex;flex-direction:column;gap:12px;min-height:135px;background:var(--portal-card)!important;border:1px solid var(--portal-line)!important;border-radius:16px!important;padding:16px;color:var(--portal-text)!important;box-shadow:var(--portal-shadow);transition:.16s;position:relative}.service-card:hover,.service-tile:hover{transform:translateY(-2px);border-color:#b9c7e6!important}.svc-top{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.svc-main{display:flex;align-items:flex-start;gap:12px}.svc-title{font-size:14px;font-weight:850;color:var(--portal-text);letter-spacing:-.01em}.svc-desc{font-size:12px;color:var(--portal-muted);line-height:1.45;margin-top:4px}.svc-pin{color:#a3adc2}.svc-footer{margin-top:auto;display:flex;align-items:center;justify-content:space-between;gap:10px}.svc-price{font-size:12px;color:var(--portal-muted);font-weight:800}.service-open{background:var(--portal-primary);color:#fff;border-radius:8px;padding:7px 12px;font-size:12px;font-weight:850}.service-submit-card .svc-headline{display:flex;gap:12px;align-items:center;margin-bottom:18px}.empty-state{text-align:center;border:1px dashed var(--portal-line);border-radius:16px;padding:34px 18px;color:var(--portal-muted)}.empty-icon{width:70px;height:70px;border-radius:22px;margin:0 auto 12px;display:grid;place-items:center;background:var(--portal-soft);color:var(--portal-primary);font-size:28px;font-weight:900}

/* Forms / tables */
.form{display:grid;gap:12px}label{font-size:12px;font-weight:800;color:var(--portal-text)}input,select,textarea{width:100%;border:1px solid var(--portal-line);background:var(--portal-card);color:var(--portal-text);border-radius:10px;padding:10px 12px;outline:none}input:focus,select:focus,textarea:focus{border-color:#8aa7ff;box-shadow:0 0 0 3px rgba(63,106,216,.13)}textarea{min-height:110px}.table-wrap{overflow:auto;border:1px solid var(--portal-line);border-radius:14px;background:var(--portal-card)}table{width:100%;border-collapse:collapse;background:var(--portal-card);color:var(--portal-text)}th,td{padding:11px 12px;border-bottom:1px solid var(--portal-line);text-align:left;font-size:13px;vertical-align:top}th{background:rgba(148,163,184,.10);color:var(--portal-muted);font-size:11px;text-transform:uppercase;letter-spacing:.04em;font-weight:900}.api-url,.codebox,.json-box{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;background:#0b1220;color:#e5efff;border-radius:14px;padding:13px;overflow:auto;font-size:12px;line-height:1.55}.api-url.light{background:rgba(148,163,184,.10);color:var(--portal-text);border:1px dashed var(--portal-line)}.json-box{white-space:pre-wrap;max-height:360px}.tabs{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:14px}.tab{padding:8px 12px;background:var(--portal-soft);color:var(--portal-primary2);border-radius:999px;font-weight:850}.tab.active{background:var(--portal-primary);color:#fff}.alert{border-radius:12px!important;border:0!important;box-shadow:0 8px 20px rgba(15,23,42,.05)}

/* Public landing/auth */
.portal-public-body{background:var(--portal-bg);color:var(--portal-text)}.public-navbar{background:var(--portal-card)!important;border-bottom:1px solid var(--portal-line)}.portal-public-brand{display:flex;align-items:center;gap:10px;color:var(--portal-text)!important}.public-main{max-width:1200px;margin:0 auto;padding:34px 18px}.hero{display:grid;grid-template-columns:1.1fr .9fr;gap:26px;align-items:center}.hero h1{font-size:44px;line-height:1.05;letter-spacing:-.05em;font-weight:900}.hero-card,.auth-panel{background:linear-gradient(135deg,#172554,#2563eb 70%,#60a5fa);color:#fff;border-radius:24px;padding:30px;box-shadow:var(--portal-shadow)}.feature-flow{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;margin-top:22px}.split-auth{min-height:calc(100vh - 160px);display:grid;grid-template-columns:1fr 1fr;gap:20px;align-items:center}.public-footer{border-top:1px solid var(--portal-line);background:var(--portal-card)}

/* dark mode tuning */
body.dark-mode{background:var(--portal-bg)!important;color:var(--portal-text)!important}.dark-mode .navbar-white,.dark-mode .main-footer,.dark-mode .public-navbar,.dark-mode .public-footer{background:var(--portal-card)!important;color:var(--portal-text)!important;border-color:var(--portal-line)!important}.dark-mode .dropdown-menu{background:var(--portal-card);border-color:var(--portal-line)}.dark-mode .dropdown-divider{border-color:var(--portal-line)}.dark-mode .main-header{border-color:var(--portal-line)}.dark-mode .content-wrapper{background:var(--portal-bg)!important}.dark-mode .breadcrumb-item.active{color:var(--portal-muted)}.dark-mode .modal-content{background:var(--portal-card);color:var(--portal-text)}

.portal-bottom-nav{position:fixed;left:10px;right:10px;bottom:10px;z-index:1040;display:grid;grid-template-columns:repeat(5,1fr);gap:4px;background:rgba(255,255,255,.95);backdrop-filter:blur(14px);border:1px solid var(--portal-line);box-shadow:0 18px 50px rgba(21,36,70,.18);border-radius:18px;padding:6px}.dark-mode .portal-bottom-nav{background:rgba(24,34,49,.94)}.portal-bottom-nav a{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;font-size:10px;font-weight:850;color:var(--portal-muted);border-radius:13px;padding:6px 2px}.portal-bottom-nav i{font-size:15px}.portal-bottom-nav a:hover{background:var(--portal-soft);color:var(--portal-primary)}

@media(max-width:1200px){.dashboard-service-grid{grid-template-columns:repeat(3,1fr)}.portal-page-title{display:none!important}}
@media(max-width:991px){.hero,.split-auth{grid-template-columns:1fr}.hero h1{font-size:36px}.feature-flow{grid-template-columns:1fr}.card-2,.card-3,.card-4,.card-5,.card-6,.card-7,.card-8,.card-9{grid-column:span 6}.service-grid,.service-grid.big,.dashboard-service-grid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:767px){.content-header{padding:12px .5rem}.portal-content{padding-bottom:98px}.portal-content-header h1{font-size:20px}.grid{gap:12px}.card,.card-2,.card-3,.card-4,.card-5,.card-6,.card-7,.card-8,.card-9{grid-column:span 12;padding:14px;border-radius:14px}.service-grid,.service-grid.big,.dashboard-service-grid{grid-template-columns:repeat(2,1fr);gap:10px}.service-card,.service-tile{min-height:124px;padding:12px;border-radius:14px!important}.svc-main{gap:9px}.svc-title{font-size:12px}.svc-desc{font-size:11px;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.icon-box{width:38px;height:38px;border-radius:12px;font-size:16px}.svc-footer{align-items:flex-end}.service-open{padding:6px 10px}.quick-title{align-items:flex-start}.quick-title h2{font-size:19px}th,td{font-size:12px;padding:9px}.wallet-chip{display:none}.main-footer{padding-bottom:78px}.public-main{padding:22px 12px 90px}.hero h1{font-size:31px}.profile-name{display:none}.kpi{font-size:26px}}
@media(max-width:420px){.service-grid,.service-grid.big,.dashboard-service-grid{grid-template-columns:repeat(2,1fr)}.svc-price{font-size:11px}.portal-brand .brand-text{font-size:14px}.hero h1{font-size:28px}.public-footer{padding-bottom:80px}}
.phone-preview{background:var(--portal-card);border:1px solid var(--portal-line);border-radius:26px;padding:20px;box-shadow:var(--portal-shadow)}.phone-inner{background:var(--portal-bg);border-radius:22px;padding:16px;display:grid;gap:12px}.mini-row{display:flex;justify-content:space-between;align-items:center;gap:12px}.mini-card{background:var(--portal-card);border:1px solid var(--portal-line);border-radius:16px;padding:14px;display:grid;gap:8px}.mini-card code{display:block;background:#0b1220;color:#dbeafe;border-radius:10px;padding:10px;white-space:pre-wrap}.hero-img{width:100%;border-radius:24px;box-shadow:var(--portal-shadow)}.flow-step{background:var(--portal-card);border:1px solid var(--portal-line);border-radius:16px;padding:18px;box-shadow:var(--portal-shadow)}.flow-step .no{width:34px;height:34px;border-radius:11px;display:grid;place-items:center;background:var(--portal-primary);color:#fff;font-weight:900;margin-bottom:12px}.flow-step h3{font-weight:850}.public-shell .grid{margin-left:0;margin-right:0}.landing-clean .pill{margin-bottom:14px}.landing-clean p{font-size:15px;line-height:1.7}.landing-clean .hero-card p{color:rgba(255,255,255,.84)}.landing-clean .hero-card .pill{background:rgba(255,255,255,.16);color:#fff}.landing-clean .hero-card .btn-light{background:rgba(255,255,255,.16)!important;color:#fff!important;border:1px solid rgba(255,255,255,.2)}
