.elementor-widget-heading .elementor-heading-title{font-family:var( --e-global-typography-primary-font-family ), Sans-serif;font-weight:var( --e-global-typography-primary-font-weight );color:var( --e-global-color-primary );}.elementor-273 .elementor-element.elementor-element-41ceb87{text-align:end;margin:0px 0px calc(var(--kit-widget-spacing, 0px) + 0px) 0px;width:var( --container-widget-width, 42.199% );max-width:42.199%;--container-widget-width:42.199%;--container-widget-flex-grow:0;}.elementor-273 .elementor-element.elementor-element-41ceb87 .elementor-heading-title{font-family:"Poppins", Sans-serif;font-weight:700;line-height:56px;color:#0A0A7A;}.elementor-273 .elementor-element.elementor-element-41ceb87.elementor-element{--flex-grow:0;--flex-shrink:0;}.elementor-273 .elementor-element.elementor-element-c0bd436{text-align:start;margin:0px 0px calc(var(--kit-widget-spacing, 0px) + 0px) 0px;width:var( --container-widget-width, 63.905% );max-width:63.905%;--container-widget-width:63.905%;--container-widget-flex-grow:0;}.elementor-273 .elementor-element.elementor-element-c0bd436 .elementor-heading-title{color:#0A0A7A;}.elementor-273 .elementor-element.elementor-element-c0bd436.elementor-element{--flex-grow:0;--flex-shrink:0;}.elementor-widget-text-editor{font-family:var( --e-global-typography-text-font-family ), Sans-serif;font-weight:var( --e-global-typography-text-font-weight );color:var( --e-global-color-text );}.elementor-widget-text-editor.elementor-drop-cap-view-stacked .elementor-drop-cap{background-color:var( --e-global-color-primary );}.elementor-widget-text-editor.elementor-drop-cap-view-framed .elementor-drop-cap, .elementor-widget-text-editor.elementor-drop-cap-view-default .elementor-drop-cap{color:var( --e-global-color-primary );border-color:var( --e-global-color-primary );}.elementor-273 .elementor-element.elementor-element-bc9a775{text-align:start;font-family:"Poppins", Sans-serif;font-size:18px;font-weight:400;color:#0A0A7A;width:var( --container-widget-width, 113.523% );max-width:113.523%;--container-widget-width:113.523%;--container-widget-flex-grow:0;}.elementor-273 .elementor-element.elementor-element-bc9a775 p{margin-block-end:0px;}.elementor-273 .elementor-element.elementor-element-bc9a775.elementor-element{--flex-grow:0;--flex-shrink:0;}.elementor-273 .elementor-element.elementor-element-bc9a775.kng-glass-bg-yes{backdrop-filter:blur(31px);-webkit-backdrop-filter:blur(31px);background-color:#191E2700;}.elementor-273 .elementor-element.elementor-element-8010890{text-align:end;margin:0px 0px calc(var(--kit-widget-spacing, 0px) + 0px) 0px;width:var( --container-widget-width, 66.712% );max-width:66.712%;--container-widget-width:66.712%;--container-widget-flex-grow:0;}.elementor-273 .elementor-element.elementor-element-8010890 .elementor-heading-title{color:#0A0A7A;}.elementor-273 .elementor-element.elementor-element-8010890.elementor-element{--flex-grow:0;--flex-shrink:0;}.elementor-273 .elementor-element.elementor-element-a3e85e9{text-align:start;font-family:"Poppins", Sans-serif;font-size:18px;font-weight:400;color:#0A0A7A;width:var( --container-widget-width, 104.161% );max-width:104.161%;--container-widget-width:104.161%;--container-widget-flex-grow:0;}.elementor-273 .elementor-element.elementor-element-a3e85e9 p{margin-block-end:0px;}.elementor-273 .elementor-element.elementor-element-a3e85e9.elementor-element{--flex-grow:0;--flex-shrink:0;}.elementor-273 .elementor-element.elementor-element-1345ebc{text-align:end;margin:0px 3px calc(var(--kit-widget-spacing, 0px) + 0px) 76px;padding:11px 11px 11px 11px;width:var( --container-widget-width, 49% );max-width:49%;--container-widget-width:49%;--container-widget-flex-grow:0;}.elementor-273 .elementor-element.elementor-element-1345ebc .elementor-heading-title{font-family:"Poppins", Sans-serif;font-weight:700;mix-blend-mode:darken;color:#0A0A7A;}.elementor-273 .elementor-element.elementor-element-1345ebc.elementor-element{--flex-grow:0;--flex-shrink:0;}.elementor-273 .elementor-element.elementor-element-1345ebc.kng-glass-bg-yes{backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);background-color:#07F26EC7;}.elementor-273 .elementor-element.elementor-element-68e6d7f{--spacer-size:65px;}.elementor-273 .elementor-element.elementor-element-032d1e9{text-align:start;font-family:"Poppins", Sans-serif;font-size:18px;font-weight:400;color:#0A0A7A;width:var( --container-widget-width, 104.161% );max-width:104.161%;--container-widget-width:104.161%;--container-widget-flex-grow:0;}.elementor-273 .elementor-element.elementor-element-032d1e9 p{margin-block-end:0px;}.elementor-273 .elementor-element.elementor-element-032d1e9.elementor-element{--flex-grow:0;--flex-shrink:0;}.elementor-273 .elementor-element.elementor-element-e0173cf{text-align:end;margin:0px 0px calc(var(--kit-widget-spacing, 0px) + 0px) 0px;width:var( --container-widget-width, 49.831% );max-width:49.831%;--container-widget-width:49.831%;--container-widget-flex-grow:0;}.elementor-273 .elementor-element.elementor-element-e0173cf .elementor-heading-title{-webkit-text-stroke-color:#000;stroke:#000;mix-blend-mode:darken;color:#0A0A7A;}.elementor-273 .elementor-element.elementor-element-e0173cf.elementor-element{--flex-grow:0;--flex-shrink:0;}.elementor-273 .elementor-element.elementor-element-537efe8{text-align:start;font-family:"Poppins", Sans-serif;font-size:18px;font-weight:400;color:#0A0A7A;width:var( --container-widget-width, 104.161% );max-width:104.161%;--container-widget-width:104.161%;--container-widget-flex-grow:0;}.elementor-273 .elementor-element.elementor-element-537efe8 p{margin-block-end:0px;}.elementor-273 .elementor-element.elementor-element-537efe8.elementor-element{--flex-grow:0;--flex-shrink:0;}.elementor-273 .elementor-element.elementor-element-e9023a8{text-align:end;margin:0px 0px calc(var(--kit-widget-spacing, 0px) + 0px) 0px;width:var( --container-widget-width, 49.831% );max-width:49.831%;--container-widget-width:49.831%;--container-widget-flex-grow:0;}.elementor-273 .elementor-element.elementor-element-e9023a8 .elementor-heading-title{color:#0A0A7A;}.elementor-273 .elementor-element.elementor-element-e9023a8.elementor-element{--flex-grow:0;--flex-shrink:0;}.elementor-273 .elementor-element.elementor-element-7fb67ec{text-align:start;font-family:"Poppins", Sans-serif;font-size:18px;font-weight:400;color:#0A0A7A;width:var( --container-widget-width, 104.161% );max-width:104.161%;--container-widget-width:104.161%;--container-widget-flex-grow:0;}.elementor-273 .elementor-element.elementor-element-7fb67ec p{margin-block-end:0px;}.elementor-273 .elementor-element.elementor-element-7fb67ec.elementor-element{--flex-grow:0;--flex-shrink:0;}.elementor-273 .elementor-element.elementor-element-979bf11{text-align:end;margin:0px 0px calc(var(--kit-widget-spacing, 0px) + 0px) 0px;width:var( --container-widget-width, 49.831% );max-width:49.831%;--container-widget-width:49.831%;--container-widget-flex-grow:0;}.elementor-273 .elementor-element.elementor-element-979bf11 .elementor-heading-title{color:#0A0A7A;}.elementor-273 .elementor-element.elementor-element-979bf11.elementor-element{--flex-grow:0;--flex-shrink:0;}.elementor-273 .elementor-element.elementor-element-f65949f{text-align:start;font-family:"Poppins", Sans-serif;font-size:18px;font-weight:400;color:#0A0A7A;width:var( --container-widget-width, 104.161% );max-width:104.161%;--container-widget-width:104.161%;--container-widget-flex-grow:0;}.elementor-273 .elementor-element.elementor-element-f65949f p{margin-block-end:0px;}.elementor-273 .elementor-element.elementor-element-f65949f.elementor-element{--flex-grow:0;--flex-shrink:0;}.elementor-273 .elementor-element.elementor-element-f65949f.king-addons-adv-border-radius-yes{border-radius:30% 70% 70% 30% / 30% 30% 70% 70% !important;overflow:hidden !important;}.elementor-273 .elementor-element.elementor-element-a384d23{text-align:end;margin:0px 0px calc(var(--kit-widget-spacing, 0px) + 0px) 0px;width:var( --container-widget-width, 49.831% );max-width:49.831%;--container-widget-width:49.831%;--container-widget-flex-grow:0;}.elementor-273 .elementor-element.elementor-element-a384d23 .elementor-heading-title{color:#0A0A7A;}.elementor-273 .elementor-element.elementor-element-a384d23.elementor-element{--flex-grow:0;--flex-shrink:0;}.elementor-273 .elementor-element.elementor-element-c4ec735{text-align:start;font-family:"Poppins", Sans-serif;font-size:18px;font-weight:400;color:#0A0A7A;width:var( --container-widget-width, 104.161% );max-width:104.161%;--container-widget-width:104.161%;--container-widget-flex-grow:0;}.elementor-273 .elementor-element.elementor-element-c4ec735 p{margin-block-end:0px;}.elementor-273 .elementor-element.elementor-element-c4ec735.elementor-element{--flex-grow:0;--flex-shrink:0;}.elementor-widget-nested-tabs.elementor-widget-n-tabs > .e-n-tabs[data-touch-mode='false'] > .e-n-tabs-heading > .e-n-tab-title[aria-selected="false"]:hover{background:var( --e-global-color-accent );}.elementor-widget-nested-tabs.elementor-widget-n-tabs > .e-n-tabs > .e-n-tabs-heading > .e-n-tab-title[aria-selected="true"], .elementor-widget-nested-tabs.elementor-widget-n-tabs > .e-n-tabs[data-touch-mode='true'] > .e-n-tabs-heading > .e-n-tab-title[aria-selected="false"]:hover{background:var( --e-global-color-accent );}.elementor-widget-nested-tabs.elementor-widget-n-tabs > .e-n-tabs > .e-n-tabs-heading > :is( .e-n-tab-title > .e-n-tab-title-text, .e-n-tab-title ){font-family:var( --e-global-typography-accent-font-family ), Sans-serif;font-weight:var( --e-global-typography-accent-font-weight );}.elementor-273 .elementor-element.elementor-element-0ec6503{--display:flex;}.elementor-273 .elementor-element.elementor-element-d1dfb40{--display:flex;}.elementor-273 .elementor-element.elementor-element-22de6c7{--display:flex;}.elementor-273 .elementor-element.elementor-element-610bffb{--n-tabs-heading-wrap:wrap;--n-tabs-heading-overflow-x:initial;--n-tabs-title-white-space:initial;--n-tabs-title-gap:0px;}@media(max-width:767px){.elementor-273 .elementor-element.elementor-element-41ceb87{width:var( --container-widget-width, 170.3px );max-width:170.3px;--container-widget-width:170.3px;--container-widget-flex-grow:0;}.elementor-273 .elementor-element.elementor-element-c0bd436{width:var( --container-widget-width, 170.3px );max-width:170.3px;--container-widget-width:170.3px;--container-widget-flex-grow:0;}.elementor-273 .elementor-element.elementor-element-8010890{width:var( --container-widget-width, 170.3px );max-width:170.3px;--container-widget-width:170.3px;--container-widget-flex-grow:0;}.elementor-273 .elementor-element.elementor-element-1345ebc{width:var( --container-widget-width, 170.3px );max-width:170.3px;--container-widget-width:170.3px;--container-widget-flex-grow:0;}.elementor-273 .elementor-element.elementor-element-e0173cf{width:var( --container-widget-width, 170.3px );max-width:170.3px;--container-widget-width:170.3px;--container-widget-flex-grow:0;}.elementor-273 .elementor-element.elementor-element-e9023a8{width:var( --container-widget-width, 170.3px );max-width:170.3px;--container-widget-width:170.3px;--container-widget-flex-grow:0;}.elementor-273 .elementor-element.elementor-element-979bf11{width:var( --container-widget-width, 170.3px );max-width:170.3px;--container-widget-width:170.3px;--container-widget-flex-grow:0;}.elementor-273 .elementor-element.elementor-element-a384d23{width:var( --container-widget-width, 170.3px );max-width:170.3px;--container-widget-width:170.3px;--container-widget-flex-grow:0;}}/* ============================================================
   TECHNES — PYTHON-THEMED LIGHT UI
   White surface, green + blue brand accents, background texture
   built from Python syntax (keywords, indentation, the
   two-snake logo silhouette) instead of a generic tech grid.
   ============================================================ */

:root {
  /* Color */
  --bg-page:      #ffffff;
  --bg-panel:     #ffffff;
  --bg-panel-2:   #f5f8f7;
  --border:       #dbe4e1;
  --border-active:#2f9e6e;

  --brand-green:      #1f9d5c;   /* Technes green */
  --brand-green-soft: rgba(31, 157, 92, 0.10);
  --brand-blue:        #2563eb;  /* Technes blue */
  --brand-blue-soft:   rgba(37, 99, 235, 0.10);
  --danger:       #e5484d;

  --text-primary: #14201b;
  --text-muted:   #5b6b66;
  --text-dim:     #9aa8a4;

  /* Type */
  --font-display: 'Space Grotesk', 'Segoe UI', sans-serif;
  --font-mono:    'IBM Plex Mono', 'Courier New', monospace;

  --radius: 6px;
  --gap: 24px;
  --shadow-soft: 0 4px 16px rgba(20, 32, 27, 0.06);
  --shadow-hover: 0 8px 24px rgba(31, 157, 92, 0.14);
}

* { box-sizing: border-box; }

/* ---------- Python-themed background ----------
   Two layers: (1) a faint tiled pattern of real Python
   syntax tokens, (2) a soft two-tone snake silhouette
   (the shape behind the Python logo) glowing green→blue
   in the corner. Both sit under the content, low-opacity,
   on a plain white page. */
body {
  margin: 0;
  min-height: 100vh;
  background-color: var(--bg-page);
  background-image:
    radial-gradient(circle at 92% 6%, rgba(37,99,235,0.10), transparent 40%),
    radial-gradient(circle at 4% 96%, rgba(31,157,92,0.10), transparent 40%),
    url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='420' height='420' viewBox='0 0 420 420'%3E%3Ctext x='10' y='40' font-family='monospace' font-size='16' fill='%231f9d5c' fill-opacity='0.07'%3Edef solve(x):%3C/text%3E%3Ctext x='30' y='70' font-family='monospace' font-size='16' fill='%232563eb' fill-opacity='0.07'%3Ereturn x ** 2%3C/text%3E%3Ctext x='10' y='110' font-family='monospace' font-size='16' fill='%231f9d5c' fill-opacity='0.07'%3Eclass Node:%3C/text%3E%3Ctext x='30' y='140' font-family='monospace' font-size='16' fill='%232563eb' fill-opacity='0.07'%3Eself.next = None%3C/text%3E%3Ctext x='10' y='180' font-family='monospace' font-size='16' fill='%231f9d5c' fill-opacity='0.07'%3Eimport asyncio%3C/text%3E%3Ctext x='10' y='220' font-family='monospace' font-size='16' fill='%232563eb' fill-opacity='0.07'%3Efor i in range(n):%3C/text%3E%3Ctext x='30' y='250' font-family='monospace' font-size='16' fill='%231f9d5c' fill-opacity='0.07'%3Eyield i * 2%3C/text%3E%3Ctext x='10' y='290' font-family='monospace' font-size='16' fill='%232563eb' fill-opacity='0.07'%3Etry:%3C/text%3E%3Ctext x='30' y='320' font-family='monospace' font-size='16' fill='%231f9d5c' fill-opacity='0.07'%3Eexcept Exception as e:%3C/text%3E%3Ctext x='10' y='360' font-family='monospace' font-size='16' fill='%232563eb' fill-opacity='0.07'%3Ewith open(f) as fh:%3C/text%3E%3Ctext x='30' y='390' font-family='monospace' font-size='16' fill='%231f9d5c' fill-opacity='0.07'%3Elambda x: x + 1%3C/text%3E%3C/svg%3E");
  background-repeat: no-repeat, no-repeat, repeat;
  background-size: auto, auto, 420px 420px;
  background-attachment: fixed, fixed, fixed;
  color: var(--text-primary);
  font-family: var(--font-display);
  line-height: 1.5;
}

/* Large soft "two-snake" silhouette (Python logo negative space),
   fixed in a back corner, barely-there — the one signature motif. */
body::before {
  content: "";
  position: fixed;
  top: -60px;
  right: -60px;
  width: 420px;
  height: 420px;
  z-index: -1;
  pointer-events: none;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 200 200'%3E%3Cpath d='M100 20c-33 0-40 12-40 30v18h40v6H40c-15 0-30 10-30 36s13 36 30 36h14v-20c0-17 12-30 30-30h32c14 0 24-10 24-24V56c0-20-18-36-40-36z' fill='%231f9d5c' fill-opacity='0.16'/%3E%3Cpath d='M100 180c33 0 40-12 40-30v-18h-40v-6h60c15 0 30-10 30-36s-13-36-30-36h-14v20c0 17-12 30-30 30H84c-14 0-24 10-24 24v20c0 20 18 36 40 36z' fill='%232563eb' fill-opacity='0.16'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-size: contain;
}

/* ---------- Typography ---------- */
h1, h2, h3 {
  font-family: var(--font-display);
  font-weight: 600;
  letter-spacing: 0.01em;
  margin: 0 0 0.4em;
  color: var(--text-primary);
}

.eyebrow {
  font-family: var(--font-mono);
  font-size: 0.72rem;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: var(--brand-green);
}

.mono {
  font-family: var(--font-mono);
  color: var(--text-muted);
}

/* ---------- Panel / Card ---------- */
.panel {
  position: relative;
  background: var(--bg-panel);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  padding: var(--gap);
  box-shadow: var(--shadow-soft);
}

/* left rule instead of HUD brackets — reads like an indent guide */
.panel::before {
  content: "";
  position: absolute;
  top: 14px;
  bottom: 14px;
  left: -1px;
  width: 3px;
  border-radius: 3px;
  background: linear-gradient(var(--brand-green), var(--brand-blue));
  opacity: 0.85;
}

.panel:hover {
  border-color: var(--border-active);
  box-shadow: var(--shadow-hover);
}

/* ---------- Buttons ---------- */
.btn {
  font-family: var(--font-mono);
  font-size: 0.85rem;
  letter-spacing: 0.03em;
  padding: 10px 20px;
  background: #fff;
  border: 1px solid var(--brand-green);
  color: var(--brand-green);
  border-radius: var(--radius);
  cursor: pointer;
  transition: background 0.15s ease, box-shadow 0.15s ease, color 0.15s ease;
}
.btn:hover {
  background: var(--brand-green-soft);
  box-shadow: 0 4px 14px rgba(31,157,92,0.18);
}
.btn:focus-visible {
  outline: 2px solid var(--brand-green);
  outline-offset: 2px;
}

.btn--solid {
  background: var(--brand-green);
  color: #ffffff;
  font-weight: 600;
  border-color: var(--brand-green);
}
.btn--solid:hover {
  background: #188351;
}

.btn--blue {
  border-color: var(--brand-blue);
  color: var(--brand-blue);
}
.btn--blue:hover {
  background: var(--brand-blue-soft);
  box-shadow: 0 4px 14px rgba(37,99,235,0.18);
}

/* ---------- Status / Badge ---------- */
.badge {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-family: var(--font-mono);
  font-size: 0.72rem;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  padding: 3px 10px;
  border: 1px solid var(--border);
  border-radius: 999px;
  color: var(--text-muted);
  background: #fff;
}
.badge::before {
  content: "";
  width: 6px;
  height: 6px;
  border-radius: 50%;
  background: var(--text-dim);
}
.badge--green::before { background: var(--brand-green); }
.badge--green { color: var(--brand-green); border-color: rgba(31,157,92,0.3); background: var(--brand-green-soft); }
.badge--blue::before  { background: var(--brand-blue); }
.badge--blue  { color: var(--brand-blue); border-color: rgba(37,99,235,0.3); background: var(--brand-blue-soft); }

/* ---------- Inputs ---------- */
.field label {
  display: block;
  font-family: var(--font-mono);
  font-size: 0.72rem;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--text-muted);
  margin-bottom: 6px;
}
.field input,
.field select {
  width: 100%;
  background: var(--bg-panel-2);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  color: var(--text-primary);
  font-family: var(--font-mono);
  padding: 10px 12px;
  transition: border-color 0.15s ease, box-shadow 0.15s ease;
}
.field input:focus,
.field select:focus {
  outline: none;
  border-color: var(--brand-green);
  box-shadow: 0 0 0 3px var(--brand-green-soft);
}

/* ---------- Divider ---------- */
.hr-tech {
  height: 1px;
  background: var(--border);
  position: relative;
  margin: var(--gap) 0;
}
.hr-tech::after {
  content: "";
  position: absolute;
  top: -2px;
  left: 0;
  width: 40px;
  height: 5px;
  border-radius: 3px;
  background: linear-gradient(90deg, var(--brand-green), var(--brand-blue));
}

/* ---------- Table (telemetry-style) ---------- */
table.tech {
  width: 100%;
  border-collapse: collapse;
  font-family: var(--font-mono);
  font-size: 0.85rem;
}
table.tech th {
  text-align: left;
  color: var(--text-muted);
  text-transform: uppercase;
  letter-spacing: 0.06em;
  font-size: 0.72rem;
  padding: 10px 12px;
  border-bottom: 2px solid var(--brand-green);
}
table.tech td {
  padding: 10px 12px;
  border-bottom: 1px solid var(--border);
  color: var(--text-primary);
}
table.tech tr:hover td { background: var(--bg-panel-2); }
.elementor-273 .elementor-element.elementor-element-f65949f {  }