/* governed-edge-ai.css — page-specific stylesheet for governed-edge-ai.html.
   Extracted from an inline <style> block (2026-08-06) because the site-wide Content-Security-Policy
   (style-src 'self' https://fonts.googleapis.com — no unsafe-inline) silently blocks inline <style> tags
   in production. This file must be loaded via <link rel="stylesheet"> to actually apply. */

  [data-reveal] { opacity:0; transform:translateY(24px); transition:opacity 0.6s ease, transform 0.6s ease; }
  [data-reveal].is-revealed { opacity:1; transform:translateY(0); }
  @media (prefers-reduced-motion:reduce) { [data-reveal] { opacity:1; transform:none; transition:none; } }

  code[class*=language-],pre[class*=language-]{color:#ccc;background:0 0;font-family:Consolas,Monaco,'Andale Mono','Ubuntu Mono',monospace;font-size:1em;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;-moz-hyphens:none;-ms-hyphens:none;hyphens:none}pre[class*=language-]{padding:1em;margin:.5em 0;overflow:auto}:not(pre)>code[class*=language-],pre[class*=language-]{background:#2d2d2d}:not(pre)>code[class*=language-]{padding:.1em;border-radius:.3em;white-space:normal}.token.block-comment,.token.cdata,.token.comment,.token.doctype,.token.prolog{color:#999}.token.punctuation{color:#ccc}.token.attr-name,.token.deleted,.token.namespace,.token.tag{color:#e2777a}.token.function-name{color:#6196cc}.token.boolean,.token.function,.token.number{color:#f08d49}.token.class-name,.token.constant,.token.property,.token.symbol{color:#f8c555}.token.atrule,.token.builtin,.token.important,.token.keyword,.token.selector{color:#cc99cd}.token.attr-value,.token.char,.token.regex,.token.string,.token.variable{color:#7ec699}.token.entity,.token.operator,.token.url{color:#67cdcc}.token.bold,.token.important{font-weight:700}.token.italic{font-style:italic}.token.entity{cursor:help}.token.inserted{color:green}

  html{scroll-behavior:smooth;}
  #progress{
    position:fixed;top:0;left:0;height:3px;background:var(--teal-signal);
    width:0%;z-index:var(--z-toast);transition:width .1s ease-out;
  }

  .tut-layout{
    max-width:var(--container-wide);margin:0 auto;
    display:grid;grid-template-columns:250px minmax(0,1fr);gap:var(--space-12);
    padding:0 var(--gutter);
  }
  aside.tut-toc{ padding-top:var(--space-10); }
  .toc-sticky{ position:sticky; top:calc(var(--nav-height) + var(--space-1)); }
  .toc-label{
    font-family:var(--font-body);font-size:var(--text-xs);font-weight:var(--weight-bold);
    letter-spacing:var(--tracking-widest);text-transform:uppercase;
    color:var(--teal-dark);margin-bottom:var(--space-3);
  }
  .toc-sticky nav ul{list-style:none;margin:0;padding:0;border-left:2px solid var(--grey-200);}
  .toc-sticky nav a{
    display:block;padding:var(--space-2) 0 var(--space-2) var(--space-4);margin-left:-2px;
    border-left:2px solid transparent;
    color:var(--grey-500);text-decoration:none;font-family:var(--font-body);
    font-size:var(--text-sm);font-weight:var(--weight-medium);
    transition:all var(--transition-fast);
  }
  .toc-sticky nav a:hover{color:var(--navy-profond);}
  .toc-sticky nav a.active{color:var(--teal-dark);border-left-color:var(--teal-signal);font-weight:var(--weight-bold);}

  .tut-content{
    padding:var(--space-10) 0 var(--space-24);min-width:0;
    font-family:var(--font-body);font-size:var(--text-base);line-height:var(--leading-relaxed);
    color:var(--black);
  }

  .tut-utility{display:flex;justify-content:flex-end;margin:0 0 var(--space-6);}

  .stat-strip{ display:flex;flex-wrap:wrap;gap:var(--space-3);margin:0 0 var(--space-8); }
  .stat{
    background:var(--teal-light);color:var(--teal-dark);font-weight:var(--weight-bold);
    font-size:var(--text-sm);padding:var(--space-2) var(--space-4);border-radius:var(--radius-full);
    border:1px solid var(--teal-signal);
  }

  .lede{ font-size:var(--text-lg);color:var(--black);line-height:var(--leading-relaxed);margin-bottom:var(--space-5); }
  .tut-content p{margin:0 0 var(--space-5);}
  .tut-content > p a,
  .tut-content li a,
  .tut-content td a,
  .callout a,
  .gap-card a{ color:var(--teal-dark); text-decoration:underline; text-underline-offset:2px; }

  .tut-content h2{
    font-family:var(--font-display);color:var(--navy-profond);font-size:var(--text-3xl);
    font-weight:var(--weight-semibold);letter-spacing:var(--tracking-tight);
    margin:var(--space-16) 0 var(--space-5);padding-bottom:var(--space-3);
    border-bottom:2px solid var(--grey-200);scroll-margin-top:calc(var(--nav-height) + var(--space-4));
  }
  .tut-content h2 .step-badge{
    display:inline-flex;align-items:center;justify-content:center;
    width:32px;height:32px;border-radius:var(--radius-md);background:var(--navy-profond);color:var(--white);
    font-family:var(--font-body);font-size:var(--text-sm);margin-right:var(--space-3);
    vertical-align:middle;font-weight:var(--weight-bold);
  }
  .tut-content h3{
    font-family:var(--font-body);color:var(--navy-profond);font-size:var(--text-base);
    margin:var(--space-8) 0 var(--space-3);font-weight:var(--weight-semibold);
    scroll-margin-top:calc(var(--nav-height) + var(--space-4));
  }

  .tut-content code{
    font-family:"SF Mono",SFMono-Regular,Menlo,Consolas,"Liberation Mono",monospace;
    font-size:0.87em;background:var(--grey-100);color:var(--navy-profond);
    padding:.15em .4em;border-radius:var(--radius-sm);border:1px solid var(--grey-200);
  }
  .tut-content pre{margin:0 0 var(--space-6);}
  .tut-content pre code{ all:unset; font-family:"SF Mono",SFMono-Regular,Menlo,Consolas,"Liberation Mono",monospace; }

  .code-block{
    position:relative;border-radius:var(--radius-md);overflow:hidden;margin:0 0 var(--space-6);
    box-shadow:var(--shadow-sm);border:1px solid var(--navy-dark);
  }
  .code-head{
    display:flex;align-items:center;justify-content:space-between;
    background:var(--navy-dark);color:var(--grey-300);font-size:var(--text-xs);font-weight:var(--weight-semibold);
    padding:var(--space-2) var(--space-4);font-family:"SF Mono",SFMono-Regular,Menlo,monospace;
    letter-spacing:var(--tracking-normal);
  }
  .copy-btn{
    background:var(--navy-mid);color:var(--grey-100);border:none;border-radius:var(--radius-base);
    font-family:var(--font-body);font-size:var(--text-xs);font-weight:var(--weight-semibold);
    padding:var(--space-1) var(--space-3);cursor:pointer;
    display:flex;align-items:center;gap:var(--space-1);transition:background var(--transition-fast);
  }
  .copy-btn:hover{background:var(--teal-signal);}
  .copy-btn.copied{background:var(--teal-signal);}
  .code-block pre{margin:0;padding:var(--space-4) var(--space-5);background:var(--navy-dark)!important;overflow-x:auto;}
  .code-block pre code{font-size:0.85em;line-height:1.6;color:#ccc;}

  .tut-content table{
    width:100%;border-collapse:collapse;margin:0 0 var(--space-6);font-size:var(--text-sm);
    border-radius:var(--radius-md);border:1px solid var(--grey-200);
    display:block;overflow-x:auto;-webkit-overflow-scrolling:touch;max-width:100%;
  }
  .tut-content thead th{
    background:var(--navy-profond);color:var(--white);text-align:left;padding:var(--space-3) var(--space-4);
    font-family:var(--font-body);font-weight:var(--weight-bold);font-size:var(--text-xs);
    letter-spacing:var(--tracking-wide);text-transform:uppercase;
  }
  .tut-content tbody td{padding:var(--space-3) var(--space-4);border-top:1px solid var(--grey-200);}
  .tut-content tbody tr:nth-child(even){background:var(--grey-100);}
  .tut-content tbody td code{background:var(--white);}

  .callout{
    border-radius:var(--radius-md);padding:var(--space-4) var(--space-5);margin:0 0 var(--space-5);
    border:1px solid var(--grey-200);border-left:4px solid var(--teal-signal);
    background:var(--teal-light);
  }
  .callout strong.callout-label{
    display:block;color:var(--teal-dark);font-family:var(--font-body);font-size:var(--text-xs);
    font-weight:var(--weight-bold);text-transform:uppercase;letter-spacing:var(--tracking-wide);
    margin-bottom:var(--space-2);
  }
  .callout p{margin:0;font-size:var(--text-base);}

  ol.invariants{
    counter-reset:inv;list-style:none;margin:0 0 var(--space-6);padding:0;
    border:1px solid var(--grey-200);border-radius:var(--radius-md);overflow:hidden;
  }
  ol.invariants li{
    counter-increment:inv;position:relative;padding:var(--space-4) var(--space-5) var(--space-4) 54px;
    border-bottom:1px solid var(--grey-200);font-size:var(--text-sm);
  }
  ol.invariants li:last-child{border-bottom:none;}
  ol.invariants li:nth-child(even){background:var(--grey-100);}
  ol.invariants li::before{
    content:counter(inv);position:absolute;left:16px;top:14px;
    width:24px;height:24px;border-radius:var(--radius-base);background:var(--navy-profond);color:var(--white);
    font-family:var(--font-body);font-size:var(--text-xs);font-weight:var(--weight-bold);
    display:flex;align-items:center;justify-content:center;
  }
  ol.invariants li strong{color:var(--navy-profond);}

  .gap-card{
    background:#FFFBEB;border:1px solid #FCD34D;border-left:4px solid #B45309;
    border-radius:var(--radius-md);padding:var(--space-4) var(--space-5);margin:0 0 var(--space-4);
  }
  .gap-card strong{color:#B45309;display:block;margin-bottom:var(--space-1);font-size:var(--text-base);}
  .gap-card p{margin:0;font-size:var(--text-sm);color:var(--black);}

  ul.plain{margin:0 0 var(--space-5);padding-left:22px;}
  ul.plain li{margin-bottom:var(--space-2);}

  .module-tag{
    display:inline-block;font-family:"SF Mono",SFMono-Regular,Menlo,monospace;
    font-size:var(--text-xs);color:var(--navy-profond);background:var(--grey-100);
    border:1px solid var(--grey-200);padding:3px 9px;border-radius:var(--radius-base);margin-bottom:var(--space-4);
  }

  .cta-card{
    background:linear-gradient(135deg,var(--navy-profond) 0%,var(--navy-dark) 100%);
    color:var(--white);border-radius:var(--radius-lg);padding:var(--space-8);margin:var(--space-12) 0 var(--space-6);
  }
  .cta-card h3{color:var(--white);margin-top:0;font-size:var(--text-lg);}
  .cta-card p{color:var(--grey-300);font-size:var(--text-sm);}
  .cta-card .btn--primary{
    margin-top:var(--space-2);max-width:100%;box-sizing:border-box;
    white-space:normal;text-align:center;word-break:break-word;
  }
  @media (max-width:480px){
    .cta-card .btn--primary{font-size:var(--text-xs);padding:var(--space-3) var(--space-5);}
  }

  .back-to-top{
    position:fixed;bottom:28px;right:28px;width:44px;height:44px;border-radius:var(--radius-full);
    background:var(--navy-profond);color:var(--white);border:none;display:flex;align-items:center;
    justify-content:center;cursor:pointer;box-shadow:var(--shadow-md);
    opacity:0;pointer-events:none;transition:opacity .2s ease,transform .15s ease;
    z-index:var(--z-sticky);
  }
  .back-to-top.visible{opacity:1;pointer-events:auto;}
  .back-to-top:hover{transform:translateY(-2px);background:var(--teal-dark);}

  .mobile-toc-toggle{display:none;}

  @media (max-width:900px){
    .tut-layout{grid-template-columns:1fr;}
    aside.tut-toc{
      padding-top:0;order:-1;position:sticky;top:57px;z-index:var(--z-sticky);
      background:var(--ivory);border-bottom:1px solid var(--grey-200);
    }
    .toc-sticky{position:static;}
    .toc-sticky nav{ max-height:0;overflow:hidden;transition:max-height .25s ease; }
    .toc-sticky nav.open{max-height:520px;overflow-y:auto;}
    .toc-label{display:none;}
    .mobile-toc-toggle{
      display:flex;width:100%;align-items:center;justify-content:space-between;
      background:none;border:none;padding:var(--space-3) 0;font-weight:var(--weight-bold);color:var(--navy-profond);
      font-family:var(--font-body);font-size:var(--text-sm);cursor:pointer;
    }
    .tut-content{padding-top:var(--space-5);}
  }
  @media print{
    .back-to-top,#progress,aside.tut-toc,.cta-card,.copy-btn{display:none!important;}
    .tut-layout{grid-template-columns:1fr;}
  }

  .gea-subtle{font-weight:400;color:var(--grey-500);}
