@import url('https://fonts.googleapis.com/css2?family=Vazirmatn:wght@400;500;600;700;800&display=swap');
:root{font-family:Vazirmatn,Tahoma,sans-serif;color:#17233a;background:#f4f7fb;font-synthesis:none}*{box-sizing:border-box}body{margin:0}button,input,select,textarea{font:inherit}button{cursor:pointer}a{color:inherit;text-decoration:none}svg{display:block}#app{min-height:100vh}.layout{display:flex;min-height:100vh}.sidebar{background:#101a31;color:#e6efff;width:254px;flex:0 0 254px;position:sticky;top:0;height:100vh;display:flex;flex-direction:column;padding:22px 14px;z-index:20}.brand{padding:4px 13px 24px;display:flex;align-items:center;gap:10px;font-weight:800;font-size:22px;direction:ltr;justify-content:flex-end}.mark{display:grid;place-items:center;width:37px;height:37px;border-radius:11px;background:linear-gradient(135deg,#3b82f6,#13c6b0);color:white;font-size:23px}.brand-sub{font-size:10px;color:#91a4c3;font-weight:500;letter-spacing:.06em}.side-label{font-size:11px;color:#7990b2;padding:12px 15px 8px}.nav{display:flex;gap:11px;align-items:center;padding:11px 15px;border:0;background:none;color:#aebfd8;text-align:right;width:100%;border-radius:10px;font-size:13px;margin:2px 0}.nav:hover{background:#1d2d4b;color:#fff}.nav.active{background:#253b60;color:#fff;font-weight:700}.nav .ico{width:20px;text-align:center;font-size:17px}.sidebar-footer{margin-top:auto;border-top:1px solid #2b3851;padding:15px 10px;color:#8fa3c2;font-size:11px;line-height:2}.main{flex:1;min-width:0}.topbar{height:84px;background:#fff;border-bottom:1px solid #edf1f6;padding:0 34px;display:flex;align-items:center;justify-content:space-between;gap:14px}.top-title{font-size:23px;font-weight:800;letter-spacing:-.5px}.muted{color:#8490a3}.subtitle{font-size:12px;margin-top:4px}.top-actions{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.tag-mode{font-size:11px;padding:7px 11px;border-radius:40px;background:#e9f8f2;color:#118763;font-weight:700}.tag-mode.offline{background:#fff4df;color:#a16b0d}.content{padding:28px 34px 65px;max-width:1640px;margin:auto}.heading-row{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:20px;flex-wrap:wrap}.heading-row h2{font-size:18px;margin:0}.btn{border:1px solid #e1e7f0;background:#fff;color:#263a55;padding:9px 15px;border-radius:10px;font-weight:700;font-size:12px;display:inline-flex;align-items:center;justify-content:center;gap:6px;transition:.15s}.btn:hover{border-color:#a9bdde;transform:translateY(-1px)}.btn.primary{background:#2764e7;border-color:#2764e7;color:#fff}.btn.danger{background:#fff5f5;color:#c83d4d}.btn.ghost{border:0;background:#f0f4fa}.btn.small{padding:6px 10px;font-size:11px}.card{background:#fff;border:1px solid #eaf0f6;border-radius:17px;padding:22px;box-shadow:0 4px 20px #1b365308}.grid{display:grid;gap:16px}.kpis{grid-template-columns:repeat(4,minmax(0,1fr))}.kpi{min-height:128px}.kpi .name{color:#7c899e;font-size:12px;display:flex;align-items:center;justify-content:space-between}.kpi .value{font-size:25px;font-weight:800;margin:18px 0 5px;direction:ltr;text-align:right}.kpi .note{font-size:11px;color:#8d9bb0}.kpi .glyph{background:#edf4ff;color:#3274e9;width:30px;height:30px;border-radius:10px;display:grid;place-items:center}.filters{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-bottom:22px}.field{padding:10px 12px;border:1px solid #dfe7f0;border-radius:10px;background:#fff;color:#253750;min-width:135px;max-width:100%;outline:none}.field:focus{border-color:#4e86ea;box-shadow:0 0 0 3px #407fed20}.field.wide{width:100%}.field-wrap{display:flex;flex-direction:column;gap:7px}.field-wrap label{font-size:12px;font-weight:700;color:#5e6d83}.filter-label{font-size:11px;color:#778499}.span2{grid-column:span 2}.charts{grid-template-columns:minmax(0,1.55fr) minmax(310px,1fr);margin-top:17px}.card h3{font-size:15px;margin:0 0 6px}.card-desc{font-size:11px;color:#8d9aab;margin:0 0 18px}.chart-box{width:100%;overflow:auto}.chart-svg{width:100%;height:255px;min-width:380px}.chart-legend{display:flex;gap:16px;flex-wrap:wrap;color:#6f7b91;font-size:11px;margin-top:10px}.legend-dot{display:inline-block;width:9px;height:9px;border-radius:50%;margin-left:5px}.bar-list{display:grid;gap:17px}.bar-item{font-size:12px}.bar-name{display:flex;justify-content:space-between;margin-bottom:8px;color:#56647a}.bar-track{background:#eef3fa;height:10px;border-radius:8px;overflow:hidden}.bar-fill{height:100%;background:#3181f4;border-radius:8px}.table-wrap{overflow-x:auto}.data-table{border-collapse:collapse;width:100%;font-size:12px;min-width:740px}.data-table th{text-align:right;color:#8b97a8;background:#f8fafd;font-weight:700;padding:13px 12px;white-space:nowrap}.data-table td{padding:14px 12px;border-bottom:1px solid #edf1f6;vertical-align:middle}.data-table tr:last-child td{border-bottom:0}.data-table tr:hover td{background:#fcfdff}.chip{display:inline-block;border-radius:30px;background:#edf4ff;color:#2862b4;padding:4px 9px;font-size:10px;font-weight:700;margin:2px}.chip.green{background:#e8f8f0;color:#138a62}.chip.orange{background:#fff4e5;color:#b46b05}.chips{display:flex;gap:4px;flex-wrap:wrap}.actions{display:flex;gap:5px;flex-wrap:wrap}.empty{text-align:center;color:#8b9bb0;padding:45px 10px}.empty strong{display:block;color:#657589;margin-bottom:6px}.progress{height:10px;border-radius:20px;background:#eaf0f8;overflow:hidden}.progress div{height:100%;border-radius:20px;background:linear-gradient(90deg,#20bba5,#377cfa)}.target-card .goal-name{font-weight:800;font-size:14px}.target-meta{display:flex;justify-content:space-between;font-size:12px;margin:15px 0 9px}.target-card{display:flex;flex-direction:column;gap:7px}.small-muted{font-size:11px;color:#8896a9}.panel-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.pill-line{display:flex;flex-wrap:wrap;align-items:center;gap:7px}.help{color:#8190a4;font-size:12px;line-height:2}.help strong{color:#374862}.notice{background:#eff5ff;border:1px solid #d6e6ff;border-radius:12px;padding:12px 15px;color:#41618b;font-size:12px;line-height:2}.notice.warning{background:#fff9ed;border-color:#ffe6af;color:#916519}.modal-backdrop{position:fixed;inset:0;background:#0b1533a8;z-index:50;display:grid;place-items:center;padding:18px}.modal{max-width:650px;width:100%;background:#fff;border-radius:20px;max-height:92vh;overflow:auto;padding:26px;box-shadow:0 40px 100px #0004}.modal h2{margin:0 0 5px;font-size:19px}.modal .form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:15px;margin:22px 0}.modal .full{grid-column:1/-1}.modal-actions{display:flex;gap:9px;justify-content:flex-end;border-top:1px solid #eef1f7;padding-top:16px}.highlight{color:#266de5}.stat-row{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.stat-cell{padding:14px;background:#f6f9fd;border-radius:12px}.stat-cell span{display:block;color:#7f90a5;font-size:11px}.stat-cell b{display:block;margin-top:6px;font-size:17px}.section-gap{margin-top:20px}.mini-select{padding:9px;border:1px solid #e1e8f0;border-radius:9px;background:#fff;max-width:100%}.switch-line{display:flex;align-items:center;gap:8px;font-size:12px}.breakdown{display:grid;gap:8px}.break-row{display:grid;grid-template-columns:90px 1fr 70px;gap:9px;align-items:center;font-size:11px}.break-row .progress{height:8px}.footer-note{font-size:11px;color:#9aa6b4;margin-top:20px}.badge-number{font-size:11px;background:#e9f1ff;border-radius:99px;padding:4px 8px;color:#316ce3}.mobile-menu{display:none}#toast{position:fixed;bottom:24px;left:26px;background:#192b47;color:#fff;padding:12px 18px;border-radius:12px;font-size:12px;z-index:100;box-shadow:0 10px 30px #0003;opacity:0;pointer-events:none;transition:opacity .2s}#toast.show{opacity:1}.code{direction:ltr;text-align:left;font:12px monospace;background:#f2f5fa;padding:10px;border-radius:8px;word-break:break-all}.footer-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px}.report-kpis{grid-template-columns:repeat(3,minmax(0,1fr))}.tip-strong{font-weight:700;color:#3662a1}.mini-plot{height:120px;width:100%}.welcome{display:flex;align-items:center;gap:15px}.avatar{width:46px;height:46px;border-radius:14px;background:#e8f1ff;color:#2f71e3;display:grid;place-items:center;font-size:23px}@media(max-width:1150px){.kpis{grid-template-columns:repeat(2,minmax(0,1fr))}.charts{grid-template-columns:1fr}.sidebar{width:216px;flex-basis:216px}.content{padding:24px}.topbar{padding:0 24px}}@media(max-width:750px){.sidebar{position:fixed;right:-260px;transition:right .2s}.sidebar.open{right:0}.mobile-menu{display:inline-flex}.topbar{height:auto;min-height:76px;padding:12px 17px;align-items:center}.top-title{font-size:17px}.content{padding:18px 13px 45px}.kpis{grid-template-columns:repeat(2,minmax(0,1fr));gap:9px}.card{padding:15px;border-radius:14px}.kpi .value{font-size:19px}.panel-grid,.footer-grid,.report-kpis{grid-template-columns:1fr}.modal .form-grid{grid-template-columns:1fr}.modal{padding:19px}.span2{grid-column:auto}.filters{gap:7px}.field{min-width:120px}.stat-row{grid-template-columns:1fr}.chart-svg{min-width:350px}.top-actions .small-hide{display:none}}
/* v0.2: channel-first visual system */
:root{--brand-blue:#3669e8;--muted-ink:#74839b}
.content{max-width:1560px}.card{box-shadow:0 8px 32px rgba(25,52,91,.045)}.sidebar{background:linear-gradient(170deg,#0e1930,#142846)}.nav.active{background:#2b4773;box-shadow:inset 3px 0 #70a0ff}.topbar{box-shadow:0 2px 18px rgba(32,56,103,.025)}.kpi{position:relative;overflow:hidden}.kpi:before{content:"";position:absolute;top:0;right:0;left:0;height:3px;background:linear-gradient(90deg,#7b9cf6,#4dc7b1);opacity:.7}.kpi .value{font-size:23px}.channel-hero{display:flex;justify-content:space-between;align-items:center;gap:24px;background:linear-gradient(120deg,#14254b,#29467c);color:white;padding:28px 32px;border-radius:19px;position:relative;overflow:hidden}.channel-hero.social{background:linear-gradient(110deg,#28366b,#7757a8)}.channel-hero.apps{background:linear-gradient(110deg,#163b55,#177e88)}.channel-hero.webads{background:linear-gradient(110deg,#152c55,#2a5d9b)}.channel-hero:after{content:"";position:absolute;width:240px;height:240px;left:-65px;bottom:-160px;border:35px solid #ffffff09;border-radius:50%}.channel-hero h2{font-size:26px;margin:5px 0 6px}.channel-hero p{font-size:12px;color:#dce5f9}.eyebrow{font-size:10px;letter-spacing:2px;color:#a3c3f9;direction:ltr}.hero-ico{font-size:44px;opacity:.8}.subchannel .sub-number{font-size:29px;font-weight:800;color:#1d3659;margin:18px 0}.subchannel .sub-number small{font-size:12px;color:#8b9ab1;font-weight:500}.metric-line{display:flex;justify-content:space-between;gap:15px;align-items:center;padding:12px 0;border-bottom:1px solid #edf1f6;font-size:12px;color:#63758d}.metric-line b{color:#1e3652;font-size:14px}.metric-line:last-of-type{border-bottom:0}.initiative-card .stat-row{margin-top:15px}.initiative-card{border-top:3px solid #5d8cec}.subchannel .stat-row{grid-template-columns:repeat(3,minmax(0,1fr))}.subchannel .stat-cell b{font-size:13px}.notice{line-height:2.1}@media(max-width:750px){.channel-hero{padding:23px 20px}.channel-hero h2{font-size:20px}.subchannel .stat-row{grid-template-columns:1fr}.subchannel .stat-cell{padding:9px}.hero-ico{font-size:28px}}

/* HoudiniAI brand identity — v0.3. Existing reporting functionality preserved. */
:root{--brand-blue:#4d56f6;--brand-purple:#8c39ee;--brand-cyan:#01bde6;--brand-pink:#d450ed}
.sidebar{background:radial-gradient(ellipse at 92% 4%,rgba(143,55,242,.24),transparent 43%),linear-gradient(175deg,#0b1031 0%,#121837 58%,#101533 100%);border-left:1px solid rgba(146,100,249,.18)}
.brand{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;padding:1px 8px 22px;direction:ltr}
.brand-logo{width:min(190px,100%);height:135px;object-fit:contain;display:block;filter:drop-shadow(0 7px 18px rgba(107,63,238,.18))}
.brand-sub{font-size:8px;letter-spacing:.12em;text-align:center;color:#aeb9df;margin-top:-7px}
.nav.active{background:linear-gradient(100deg,rgba(71,93,247,.4),rgba(165,52,222,.42));box-shadow:inset -3px 0 #c75cff,0 5px 24px rgba(107,65,251,.17)}
.nav:hover{background:rgba(111,81,190,.23)}
.sidebar-footer{border-top-color:#353058;color:#a6a6ca}
.btn.primary{background:linear-gradient(110deg,#4b64f0,#9040e3);border-color:#7751eb;box-shadow:0 5px 15px rgba(101,71,233,.16)}
.field:focus{border-color:#845aea;box-shadow:0 0 0 3px #9255ec1c}
.kpi:before{background:linear-gradient(90deg,#26c6ef,#6667fd,#c148e7);height:3px;opacity:.85}
.kpi .glyph{background:#f1eaff;color:#7844e8}
.highlight{color:#7e47eb}.chip{background:#f1ebff;color:#6a4bc4}
.progress div{background:linear-gradient(90deg,#19bee7,#555cf2,#bf52e5)}
.bar-fill{background:linear-gradient(90deg,#2dbbe9,#7c50e9)}
.channel-hero.social{background:linear-gradient(110deg,#2a205e,#8542a9)}
.channel-hero.apps{background:linear-gradient(110deg,#182e69,#225ac2)}
.channel-hero.webads{background:linear-gradient(110deg,#172d5e,#6845ac)}
.initiative-card{border-top-color:#9a4be8}
@media(max-width:1150px){.brand-logo{height:120px;width:175px}}

/* HoudiniAI v0.4: compact brand and independently scrollable navigation on desktop and zoomed screens */
.sidebar{overflow:hidden;padding:14px 12px 12px;min-height:0}
.brand{flex:0 0 auto;padding:0 8px 10px;gap:0}
.brand-logo{width:128px;max-width:100%;height:86px;object-fit:contain}
.brand-sub{font-size:7px;margin-top:-4px;letter-spacing:.06em}
.sidebar-scroll{flex:1 1 auto;min-height:0;overflow-y:auto;overscroll-behavior:contain;scrollbar-width:thin;scrollbar-color:#7755bc #171c3a;padding-inline:2px 5px}
.sidebar-scroll::-webkit-scrollbar{width:7px}
.sidebar-scroll::-webkit-scrollbar-track{background:#171c3a;border-radius:10px}
.sidebar-scroll::-webkit-scrollbar-thumb{background:#7755bc;border-radius:10px}
.sidebar-footer{flex:0 0 auto;margin-top:6px;padding:9px 10px;font-size:10px;line-height:1.6}
.jalali-field{direction:ltr;text-align:center;font-variant-numeric:tabular-nums}
.jalali-hint{color:#8290a7;font-size:10px}
@media(max-width:1150px){.brand-logo{height:76px;width:112px}}
@media(max-height:600px){.sidebar{padding-top:8px;padding-bottom:6px}.brand-logo{height:62px;width:96px}.brand{padding-bottom:5px}.sidebar-footer{font-size:9px;padding:6px}}

/* HoudiniAI v0.5: clearly isolated production PostgreSQL workspace */
.server-card{margin-top:17px;max-width:960px}.server-form{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;margin-top:18px;align-items:end}.server-form label{display:flex;flex-direction:column;gap:8px;color:#53657e;font-size:12px;font-weight:700}.server-form button{justify-self:start}.server-error{color:#ae3345;background:#fff0f1;border:1px solid #ffd6dd;border-radius:10px;padding:12px}.field.wide{width:100%;max-width:100%}@media(max-width:750px){.server-form{grid-template-columns:1fr}}

/* v0.6 online forms */
.online-box{margin-top:2px;min-width:0}.online-box .data-table{font-size:12px}.online-box .server-form{grid-template-columns:repeat(2,minmax(0,1fr))}.online-box .server-form input,.online-box .server-form select{min-width:0}.online-box .server-form button{align-self:end}.online-box .card-desc{overflow-wrap:anywhere}@media(max-width:950px){.online-box .server-form{grid-template-columns:1fr}}

/* HoudiniAI 0.7.1: report scope visibility */
.server-workspace-selector {border:2px solid #7457e5 !important;background:#f5f2ff !important;font-weight:700;}
.server-form .notice.full {grid-column:1/-1;line-height:1.9;}
/* v0.9: one operational source of truth: PostgreSQL */
.global-ws{display:flex;align-items:center;gap:8px;color:#50617b;font-size:11px;font-weight:700;max-width:310px}
.global-ws .field{min-width:160px;max-width:215px;margin:0}
.top-actions{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.card .server-form{margin-top:13px}
.card .switch-line{display:flex;align-items:flex-start;gap:9px;margin:16px 0;line-height:2;font-size:13px}
.card .switch-line input{margin-top:6px}
@media(max-width:850px){.global-ws{max-width:180px;flex-direction:column;align-items:stretch}.global-ws .field{min-width:130px;max-width:180px}}
