/* IraNOC Portal 0.22.6 — isolated components; separate filename avoids stale CDN cache. */
.iranoc-portal .service-health-dashboard,
.iranoc-portal .finance-license-admin-shell{
  --component-panel:var(--ip-panel,#fff);
  --component-bg:var(--ip-bg,#f6f8fb);
  --component-line:var(--ip-line,#dfe4eb);
  --component-ink:var(--ip-ink,#151922);
  --component-muted:var(--ip-muted,#687083);
  width:100%;
  min-width:0;
  box-sizing:border-box;
}

/* Health control center */
.iranoc-portal .service-health-dashboard{
  display:grid;
  gap:18px;
  margin:24px 0 0;
  padding:24px;
  overflow:hidden;
  border:1px solid var(--component-line);
  border-radius:20px;
  background:
    radial-gradient(circle at 94% 0,rgba(8,170,162,.13),transparent 26%),
    radial-gradient(circle at 0 100%,rgba(107,47,152,.08),transparent 30%),
    var(--component-panel);
  box-shadow:0 18px 45px rgba(17,24,39,.07);
}
.iranoc-portal .service-health-dashboard>.portal-heading{
  display:flex;
  align-items:flex-start;
  justify-content:space-between;
  gap:22px;
  margin:0;
  padding:0 0 18px;
  border-bottom:1px solid var(--component-line);
}
.iranoc-portal .service-health-dashboard>.portal-heading>div{
  display:grid;
  gap:5px;
}
.iranoc-portal .service-health-dashboard>.portal-heading small{
  color:#08aaa2;
  font-size:9px;
  font-weight:900;
  letter-spacing:.04em;
}
.iranoc-portal .service-health-dashboard>.portal-heading h3{
  margin:0;
  color:var(--component-ink);
  font-size:20px;
  line-height:1.7;
}
.iranoc-portal .service-health-dashboard>.portal-heading p{
  max-width:620px;
  margin:0;
  color:var(--component-muted);
  font-size:10px;
  line-height:1.9;
}
.iranoc-portal .service-health-dashboard>.portal-heading form{margin:0;flex:0 0 auto}
.iranoc-portal .service-health-overview{
  display:flex;
  align-items:center;
  gap:8px;
  flex-wrap:wrap;
  min-height:34px;
}
.iranoc-portal .service-health-overview>span{
  display:inline-flex;
  align-items:center;
  min-height:29px;
  padding:5px 11px;
  border:1px solid transparent;
  border-radius:999px;
  font-size:9px;
  font-weight:900;
}
.iranoc-portal .service-health-overview .healthy{background:rgba(27,178,122,.11);border-color:rgba(27,178,122,.22);color:#13875e}
.iranoc-portal .service-health-overview .warning{background:rgba(223,158,40,.11);border-color:rgba(223,158,40,.22);color:#a96d05}
.iranoc-portal .service-health-overview .error{background:rgba(223,72,95,.1);border-color:rgba(223,72,95,.2);color:#bc2f48}
.iranoc-portal .service-health-overview>small{margin-inline-start:auto;color:var(--component-muted);font-size:9px}
.iranoc-portal .service-health-grid{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:11px;
}
.iranoc-portal .service-health-card{
  position:relative;
  display:grid;
  grid-template-columns:46px minmax(0,1fr) auto;
  align-items:center;
  gap:13px;
  min-width:0;
  min-height:105px;
  padding:15px;
  overflow:hidden;
  border:1px solid var(--component-line);
  border-radius:15px;
  background:linear-gradient(145deg,var(--component-panel),var(--component-bg));
  color:var(--component-ink);
  text-decoration:none;
  box-shadow:0 7px 18px rgba(18,25,38,.035);
  transition:transform .18s ease,border-color .18s ease,box-shadow .18s ease;
}
.iranoc-portal .service-health-card:before{
  content:"";
  position:absolute;
  inset:0 auto 0 0;
  width:3px;
  background:#9098a7;
}
.iranoc-portal .service-health-card.state-healthy:before{background:#18b57b}
.iranoc-portal .service-health-card.state-warning:before{background:#df9e28}
.iranoc-portal .service-health-card.state-error:before{background:#df485f}
.iranoc-portal .service-health-card:hover{
  transform:translateY(-2px);
  border-color:rgba(8,170,162,.42);
  box-shadow:0 13px 28px rgba(18,25,38,.09);
}
.iranoc-portal .health-service-icon{
  position:relative;
  display:grid;
  place-items:center;
  width:44px;
  height:44px;
  border:1px solid rgba(8,170,162,.2);
  border-radius:13px;
  background:rgba(8,170,162,.08);
  color:#078e87;
}
.iranoc-portal .health-service-icon svg{width:23px;height:23px}
.iranoc-portal .health-service-icon i{
  position:absolute;
  inset:auto auto -2px -2px;
  width:10px;
  height:10px;
  border:3px solid var(--component-panel);
  border-radius:50%;
  background:#9098a7;
}
.iranoc-portal .state-healthy .health-service-icon i{background:#18b57b}
.iranoc-portal .state-warning .health-service-icon i{background:#df9e28}
.iranoc-portal .state-error .health-service-icon i{background:#df485f}
.iranoc-portal .service-health-card>div{display:grid;gap:3px;min-width:0}
.iranoc-portal .service-health-card>div>small{color:var(--component-muted);font-size:8px;font-weight:800}
.iranoc-portal .service-health-card>div>strong{color:var(--component-ink);font-size:11px;line-height:1.8;overflow-wrap:anywhere}
.iranoc-portal .service-health-card>div>span{color:var(--component-muted);font-size:8px;line-height:1.8;overflow-wrap:anywhere}
.iranoc-portal .service-health-card>b{
  align-self:start;
  display:inline-flex;
  width:max-content;
  padding:5px 8px;
  border-radius:999px;
  background:rgba(144,152,167,.12);
  color:#6f7785;
  font-size:8px;
  font-weight:900;
}
.iranoc-portal .service-health-card.state-healthy>b{background:rgba(27,178,122,.12);color:#13875e}
.iranoc-portal .service-health-card.state-warning>b{background:rgba(223,158,40,.12);color:#a96d05}
.iranoc-portal .service-health-card.state-error>b{background:rgba(223,72,95,.11);color:#bc2f48}

/* License control center */
.iranoc-portal .finance-license-admin-shell{display:grid;gap:17px}
.iranoc-portal .finance-license-admin-shell>*{min-width:0;margin:0!important;box-sizing:border-box}
.iranoc-portal .finance-license-admin-hero{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:25px;
  padding:28px;
  overflow:hidden;
  border:1px solid rgba(8,170,162,.25);
  border-radius:21px;
  background:
    radial-gradient(circle at 8% 12%,rgba(107,47,152,.16),transparent 31%),
    linear-gradient(125deg,rgba(8,170,162,.09),var(--component-panel));
  box-shadow:0 18px 44px rgba(17,24,39,.07);
}
.iranoc-portal .finance-license-admin-hero>div{display:grid;gap:5px;min-width:0}
.iranoc-portal .finance-license-admin-hero small{color:#08aaa2;font-size:9px;font-weight:900;letter-spacing:.1em}
.iranoc-portal .finance-license-admin-hero h2{margin:0!important;color:var(--component-ink);font-size:clamp(23px,3vw,33px);line-height:1.65!important}
.iranoc-portal .finance-license-admin-hero p{margin:0!important;color:var(--component-muted);font-size:10px;line-height:1.9}
.iranoc-portal .finance-license-hero-states{display:flex!important;align-items:center;justify-content:flex-end;gap:8px!important;flex-wrap:wrap}
.iranoc-portal .finance-license-code textarea{display:block;width:100%;min-width:0;min-height:118px;padding:12px 14px;border:0;border-radius:9px;background:transparent;color:var(--component-ink);font:700 11px/1.75 ui-monospace,SFMono-Regular,Consolas,monospace;direction:ltr;text-align:left;resize:vertical;overflow-wrap:anywhere;box-sizing:border-box}
.iranoc-portal .finance-signing-warning{display:flex;align-items:center;gap:7px;margin:0!important;padding:12px 15px!important;border-radius:12px!important;line-height:1.9}
.iranoc-portal .finance-license-admin-shell .finance-license-summary.admin{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}
.iranoc-portal .finance-license-admin-shell .finance-license-summary.admin>div{
  position:relative;
  display:grid;
  gap:5px;
  min-height:105px;
  padding:18px;
  overflow:hidden;
  border:1px solid var(--component-line);
  border-radius:15px;
  background:linear-gradient(145deg,var(--component-panel),var(--component-bg));
}
.iranoc-portal .finance-license-admin-shell .finance-license-summary.admin>div:after{content:"";position:absolute;inset:auto 18px 0 auto;width:38px;height:3px;border-radius:3px 3px 0 0;background:linear-gradient(90deg,#6b2f98,#08aaa2)}
.iranoc-portal .finance-license-summary.admin small{color:var(--component-muted);font-size:8px}
.iranoc-portal .finance-license-summary.admin strong{color:var(--component-ink);font-size:21px;line-height:1.5}
.iranoc-portal .finance-license-summary.admin span{color:var(--component-muted);font-size:8px}
.iranoc-portal .finance-license-settings,
.iranoc-portal .finance-license-security,
.iranoc-portal .finance-license-manual,
.iranoc-portal .finance-license-sms-health,
.iranoc-portal .finance-license-admin-list{
  width:100%;
  padding:23px!important;
  border:1px solid var(--component-line)!important;
  border-radius:18px!important;
  background:var(--component-panel)!important;
  box-shadow:0 10px 28px rgba(17,24,39,.045);
}
.iranoc-portal .finance-license-settings>section{display:grid;gap:14px;padding:0!important;border:0!important;background:transparent!important}
.iranoc-portal .finance-license-settings h3{margin:0 0 2px}
.iranoc-portal .finance-license-settings input,
.iranoc-portal .finance-license-manual input,
.iranoc-portal .finance-totp-setup input{width:100%;min-width:0;box-sizing:border-box}
.iranoc-portal .finance-license-security{display:grid;gap:17px}
.iranoc-portal .finance-license-security>.portal-heading{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:20px;
  margin:0;
  padding:0 0 17px;
  border-bottom:1px solid var(--component-line);
}
.iranoc-portal .finance-security-heading-copy{display:flex;align-items:center;gap:13px;min-width:0}
.iranoc-portal .finance-security-heading-copy>div{display:grid;gap:4px;min-width:0}
.iranoc-portal .finance-security-shield{
  display:grid;
  place-items:center;
  flex:0 0 48px;
  width:48px;
  height:48px;
  border:1px solid rgba(107,47,152,.24);
  border-radius:15px;
  background:linear-gradient(145deg,rgba(107,47,152,.13),rgba(8,170,162,.09));
  color:#6b2f98;
}
.iranoc-portal .finance-security-shield svg{width:27px;height:27px}
.iranoc-portal .finance-security-heading-copy small{color:#08aaa2;font-size:8px;font-weight:900}
.iranoc-portal .finance-security-heading-copy h3{margin:0;color:var(--component-ink);font-size:17px;line-height:1.7}
.iranoc-portal .finance-security-heading-copy p{margin:0;color:var(--component-muted);font-size:9px;line-height:1.8}
.iranoc-portal .finance-security-state{display:inline-flex;width:max-content;padding:7px 11px;border:1px solid transparent;border-radius:999px;font-size:8px;font-weight:900}
.iranoc-portal .finance-security-state.on{border-color:rgba(27,178,122,.22);background:rgba(27,178,122,.11);color:#13875e}
.iranoc-portal .finance-security-state.off{border-color:rgba(223,158,40,.22);background:rgba(223,158,40,.11);color:#a96d05}
.iranoc-portal .finance-security-model{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:9px}
.iranoc-portal .finance-security-model article{
  display:flex;
  align-items:flex-start;
  gap:11px;
  min-width:0;
  padding:14px;
  border:1px solid var(--component-line);
  border-radius:13px;
  background:var(--component-bg);
}
.iranoc-portal .finance-security-model article>b{display:grid;place-items:center;flex:0 0 29px;width:29px;height:29px;border-radius:10px;background:linear-gradient(145deg,#6b2f98,#08aaa2);color:#fff;font-size:10px}
.iranoc-portal .finance-security-model article>div{display:grid;gap:4px;min-width:0}
.iranoc-portal .finance-security-model article strong{color:var(--component-ink);font-size:10px;line-height:1.7}
.iranoc-portal .finance-security-model article span{color:var(--component-muted);font-size:8px;line-height:1.8}
.iranoc-portal .finance-security-start,
.iranoc-portal .finance-security-ready{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:18px;
  padding:16px;
  border:1px solid rgba(8,170,162,.25);
  border-radius:13px;
  background:linear-gradient(120deg,rgba(8,170,162,.075),rgba(107,47,152,.045));
}
.iranoc-portal .finance-security-start>div,
.iranoc-portal .finance-security-ready>div{display:grid;gap:4px;min-width:0}
.iranoc-portal .finance-security-start strong,
.iranoc-portal .finance-security-ready strong{font-size:11px}
.iranoc-portal .finance-security-start span,
.iranoc-portal .finance-security-ready span{color:var(--component-muted);font-size:8px;line-height:1.8}
.iranoc-portal .finance-security-start form{margin:0;flex:0 0 auto}
.iranoc-portal .finance-security-ready details{min-width:230px}
.iranoc-portal .finance-security-ready summary{cursor:pointer;color:#6b2f98;font-size:8px;font-weight:900}
.iranoc-portal .finance-security-ready details form{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:7px;margin-top:9px}
.iranoc-portal .finance-security-ready input{min-width:0;padding:9px;border:1px solid var(--component-line);border-radius:9px;background:var(--component-panel);color:var(--component-ink)}
.iranoc-portal .finance-totp-setup{
  display:grid;
  grid-template-columns:minmax(0,1.25fr) minmax(250px,.75fr);
  gap:14px;
  padding:17px;
  border:1px solid rgba(107,47,152,.25);
  border-radius:14px;
  background:linear-gradient(125deg,rgba(107,47,152,.07),rgba(8,170,162,.045));
}
.iranoc-portal .finance-totp-setup>div{display:grid;align-content:start;gap:9px;min-width:0}
.iranoc-portal .finance-totp-setup small{color:#6b2f98;font-size:8px;font-weight:900}
.iranoc-portal .finance-totp-setup p{margin:0;color:var(--component-muted);font-size:8px;line-height:1.9}
.iranoc-portal .finance-totp-setup .portal-form{display:grid;align-content:center;gap:11px;margin:0;padding:15px;border-radius:12px;background:var(--component-panel)}
.iranoc-portal .finance-secret-copy{display:grid;grid-template-columns:minmax(0,1fr) 78px;gap:7px;min-width:0}
.iranoc-portal .finance-secret-copy input{padding:10px;border:1px solid var(--component-line);border-radius:9px;background:var(--component-bg);color:var(--component-ink);font:700 10px/1.5 monospace}
.iranoc-portal .finance-secret-copy button{border:0;border-radius:9px;background:#08aaa2;color:#fff;font:inherit;font-size:8px;font-weight:900;cursor:pointer}
.iranoc-portal .finance-totp-setup details summary{cursor:pointer;color:var(--component-muted);font-size:8px}
.iranoc-portal .finance-security-note{margin:0!important;padding:11px 13px;border-radius:10px;background:var(--component-bg);color:var(--component-muted);font-size:8px;line-height:1.9}
.iranoc-portal .finance-license-manual>.portal-heading,
.iranoc-portal .finance-license-sms-health>.portal-heading,
.iranoc-portal .finance-license-admin-list>.portal-heading{margin:0 0 16px;padding-bottom:14px;border-bottom:1px solid var(--component-line)}
.iranoc-portal .finance-license-manual .portal-form{display:grid;gap:14px;margin:0}
.iranoc-portal .finance-admin-totp-field{display:grid;gap:8px;margin-top:2px;padding:14px;border:1px solid rgba(107,47,152,.22);border-radius:12px;background:rgba(107,47,152,.045)}
.iranoc-portal .finance-admin-totp-field input{max-width:280px;font-size:16px;font-weight:900;letter-spacing:4px;text-align:center}
.iranoc-portal .finance-license-manual .portal-button:disabled{cursor:not-allowed;opacity:.52}
.iranoc-portal .finance-license-health-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:9px}
.iranoc-portal .finance-license-health-grid>div{display:grid;gap:5px;min-width:0;padding:15px;border:1px solid var(--component-line);border-radius:12px;background:var(--component-bg)}
.iranoc-portal .finance-license-health-grid small{color:var(--component-muted);font-size:8px}
.iranoc-portal .finance-license-health-grid strong{font-size:10px;line-height:1.7;overflow-wrap:anywhere}

html.iranoc-dark .iranoc-portal .service-health-dashboard,
html.iranoc-dark .iranoc-portal .service-health-card,
html.iranoc-dark .iranoc-portal .finance-license-admin-hero,
html.iranoc-dark .iranoc-portal .finance-license-settings,
html.iranoc-dark .iranoc-portal .finance-license-security,
html.iranoc-dark .iranoc-portal .finance-license-manual,
html.iranoc-dark .iranoc-portal .finance-license-sms-health,
html.iranoc-dark .iranoc-portal .finance-license-admin-list,
html.iranoc-dark .iranoc-portal .finance-totp-setup .portal-form{background-color:#151a23!important;border-color:#303846!important}
html.iranoc-dark .iranoc-portal .service-health-card,
html.iranoc-dark .iranoc-portal .finance-license-summary.admin>div{background:linear-gradient(145deg,#151a23,#10151d)!important}
html.iranoc-dark .iranoc-portal .finance-security-model article,
html.iranoc-dark .iranoc-portal .finance-security-note,
html.iranoc-dark .iranoc-portal .finance-license-health-grid>div{background:#10151d!important;border-color:#303846!important}
html.iranoc-dark .iranoc-portal .health-service-icon i{border-color:#151a23}

@media(max-width:980px){
  .iranoc-portal .finance-license-admin-shell .finance-license-summary.admin{grid-template-columns:1fr 1fr}
  .iranoc-portal .finance-security-model{grid-template-columns:1fr}
  .iranoc-portal .finance-totp-setup{grid-template-columns:1fr}
}
@media(max-width:780px){
  .iranoc-portal .service-health-grid{grid-template-columns:1fr}
  .iranoc-portal .finance-license-health-grid{grid-template-columns:1fr 1fr}
}
@media(max-width:620px){
  .iranoc-portal .service-health-dashboard,
  .iranoc-portal .finance-license-settings,
  .iranoc-portal .finance-license-security,
  .iranoc-portal .finance-license-manual,
  .iranoc-portal .finance-license-sms-health,
  .iranoc-portal .finance-license-admin-list{padding:17px!important}
  .iranoc-portal .service-health-dashboard>.portal-heading,
  .iranoc-portal .finance-license-admin-hero,
  .iranoc-portal .finance-license-security>.portal-heading,
  .iranoc-portal .finance-security-start,
  .iranoc-portal .finance-security-ready{align-items:stretch;flex-direction:column}
  .iranoc-portal .finance-license-hero-states{justify-content:flex-start}
  .iranoc-portal .finance-license-hero-states .sms-connection-state{align-self:auto}
  .iranoc-portal .service-health-dashboard>.portal-heading form,
  .iranoc-portal .service-health-dashboard>.portal-heading button,
  .iranoc-portal .finance-security-start form,
  .iranoc-portal .finance-security-start button{width:100%}
  .iranoc-portal .service-health-overview>small{width:100%;margin:3px 0 0}
  .iranoc-portal .service-health-card{grid-template-columns:42px minmax(0,1fr);min-height:0}
  .iranoc-portal .service-health-card>b{grid-column:2;grid-row:2}
  .iranoc-portal .health-service-icon{width:40px;height:40px}
  .iranoc-portal .finance-license-admin-shell .finance-license-summary.admin,
  .iranoc-portal .finance-license-health-grid{grid-template-columns:1fr}
  .iranoc-portal .finance-security-heading-copy{align-items:flex-start}
  .iranoc-portal .finance-security-ready details{min-width:0}
  .iranoc-portal .finance-secret-copy{grid-template-columns:1fr}
  .iranoc-portal .finance-secret-copy button{min-height:39px}
  .iranoc-portal .finance-admin-totp-field input{max-width:none}
}
