:root{--bg:#f4f7fb;--card:#fff;--text:#14213d;--muted:#6b7a90;--line:#e4eaf2;--primary:#2563eb;--purple:#6d28d9;--ok:#15803d;--danger:#b91c1c;--dark:#0f172a;--shadow:0 10px 30px rgba(15,23,42,.07)}*{box-sizing:border-box}body{margin:0;font-family:Inter,Segoe UI,Arial,sans-serif;background:var(--bg);color:var(--text)}a{color:var(--primary);text-decoration:none}button,input,select,textarea{font:inherit}.top{height:64px;background:#fff;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:0 24px}.brand{font-size:20px;color:var(--dark)}.top-right{display:flex;align-items:center;gap:12px}.linkbtn{border:0;background:none;color:var(--primary)}.page{padding:28px;max-width:1480px;margin:auto}.hero{display:flex;align-items:flex-start;justify-content:space-between;gap:20px;margin-bottom:20px}.hero h1{margin:0 0 6px;font-size:30px}.hero p{margin:0;color:var(--muted)}.panel,.auth-card,.widget,.dash-card,.dataset-card{background:#fff;border:1px solid var(--line);border-radius:16px;box-shadow:var(--shadow)}.panel{padding:20px}.auth-card{max-width:500px;margin:7vh auto;padding:30px}.auth-card h1{margin-top:0}label{display:block;font-size:12px;font-weight:800;color:#475569;margin:13px 0 6px}input,select,textarea{width:100%;padding:10px 11px;border:1px solid #ced7e5;border-radius:9px;background:#fff}textarea{resize:vertical}.btn{display:inline-flex;align-items:center;justify-content:center;border:1px solid var(--line);background:#fff;border-radius:9px;padding:10px 14px;font-weight:750;cursor:pointer;color:var(--text)}.btn.primary{background:var(--primary);color:#fff;border-color:var(--primary)}.btn.secondary{background:#fff}.btn.ai{background:linear-gradient(135deg,var(--purple),var(--primary));color:#fff;border:0}.btn.danger{color:var(--danger)}.btn.tiny{font-size:12px;padding:7px 9px}.auth-card .btn{margin-top:16px;width:100%}.alert{padding:12px 14px;border-radius:10px;margin:12px 0;font-size:13px}.alert.ok{background:#ecfdf5;color:#166534;border:1px solid #bbf7d0}.alert.error{background:#fef2f2;color:#991b1b;border:1px solid #fecaca}.alert.key{background:#eff6ff;border:1px solid #bfdbfe;color:#1e3a8a;display:flex;gap:10px;flex-wrap:wrap;align-items:center}.alert.key code{font-size:13px;word-break:break-all}.admin-grid{display:grid;grid-template-columns:2fr 1fr;gap:18px;margin-bottom:18px}.wide{grid-column:1/-1}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:0 14px}.span2{grid-column:1/-1}.check{display:flex;align-items:center;gap:8px}.check input{width:auto}.table-wrap{overflow:auto}table{width:100%;border-collapse:collapse}th,td{padding:11px;border-bottom:1px solid var(--line);text-align:left;font-size:13px;vertical-align:top}th{color:#64748b;font-size:11px;text-transform:uppercase;letter-spacing:.04em}td small{display:block;color:var(--muted);margin-top:4px}.status{background:#eef2ff;color:#4338ca;border-radius:99px;padding:4px 8px;font-weight:700}.inline{display:inline}.empty{padding:28px;text-align:center;color:var(--muted)}pre{white-space:pre-wrap;word-break:break-word}.app-body{background:#f5f7fb}.side{position:fixed;inset:0 auto 0 0;width:245px;background:linear-gradient(180deg,#0f172a,#172554);color:#fff;padding:22px 15px;z-index:20}.side-brand{font-size:21px;font-weight:700;padding:0 7px 20px}.tenant-pill{padding:10px;background:rgba(255,255,255,.08);border-radius:10px;font-size:12px;margin-bottom:20px}.side nav{display:grid;gap:4px}.side nav button{border:0;background:transparent;color:#cbd5e1;text-align:left;padding:12px;border-radius:9px;cursor:pointer}.side nav button.active,.side nav button:hover{background:rgba(255,255,255,.1);color:#fff}.app-main{margin-left:245px;min-height:100vh}.app-top{height:64px;background:#fff;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:0 24px;position:sticky;top:0;z-index:10}.app-top small{display:block;color:var(--muted);margin-top:3px}.app-content{padding:24px}.app-view{display:none}.app-view.active{display:block}.cards{display:grid;grid-template-columns:repeat(3,1fr);gap:15px}.dash-card,.dataset-card{padding:18px;cursor:pointer}.dash-card:hover{transform:translateY(-2px)}.dash-card h3,.dataset-card h3{margin:0 0 7px}.dash-grid{display:grid;grid-template-columns:repeat(12,1fr);gap:14px;margin-top:18px}.widget{padding:16px;grid-column:span 4;min-height:145px;overflow:hidden}.widget.chart{grid-column:span 6;min-height:330px}.widget.table-widget{grid-column:span 12}.widget h3{margin:0 0 12px;font-size:15px}.kpi{font-size:30px;font-weight:900}.muted{color:var(--muted);font-size:12px}.chartbox{height:255px}.designer{display:grid;grid-template-columns:310px 1fr;gap:15px}.ai-layout{display:grid;grid-template-columns:1fr 1fr;gap:15px}.mobile-only,.bottom-nav{display:none}.loading{color:var(--muted);padding:25px;text-align:center}.error-box{color:#991b1b;background:#fff1f2;padding:10px;border-radius:9px;font-size:12px}.no-data{color:var(--muted);display:grid;place-items:center;min-height:90px}.bottom-nav{position:fixed;bottom:0;left:0;right:0;background:#fff;border-top:1px solid var(--line);z-index:40;padding-bottom:env(safe-area-inset-bottom)}
@media(max-width:950px){.admin-grid,.designer,.ai-layout{grid-template-columns:1fr}.cards{grid-template-columns:repeat(2,1fr)}.widget,.widget.chart{grid-column:span 6}.wide{grid-column:auto}}
@media(max-width:700px){.page{padding:14px}.top{padding:0 14px}.hero{flex-direction:column}.hero h1{font-size:24px}.admin-grid,.form-grid{grid-template-columns:1fr}.span2{grid-column:auto}.side{display:none}.app-main{margin-left:0;padding-bottom:70px}.app-content{padding:13px}.app-top{padding:0 14px}.mobile-only{display:block}.cards{grid-template-columns:1fr}.dash-grid{grid-template-columns:1fr}.widget,.widget.chart,.widget.table-widget{grid-column:1;min-height:140px}.widget.chart{min-height:300px}.bottom-nav{display:grid;grid-template-columns:repeat(4,1fr)}.bottom-nav button{border:0;background:#fff;padding:9px 3px;color:#64748b;font-size:18px}.bottom-nav small{display:block;font-size:10px;margin-top:3px}.auth-card{margin:3vh 12px;padding:22px}.table-wrap table{min-width:720px}}
