/* AppsInAi company presentation. Generated by scripts/make-deck.mjs (npm run deck) in the appsin.ai site repository.
   Same design tokens as the site (DESIGN.md): graphite, one green, amber for attention, Inter Tight + JetBrains Mono.
   Every slide is a <section class="slide"> of exactly 960 × 540 px; add class "w" for a white band. */
@font-face{font-family:'Inter Tight Variable';font-style:normal;font-weight:100 900;font-display:block;src:url(assets/fonts/inter-tight-latin-wght-normal.woff2) format('woff2')}
@font-face{font-family:'JetBrains Mono Variable';font-style:normal;font-weight:100 900;font-display:block;src:url(assets/fonts/jetbrains-mono-latin-wght-normal.woff2) format('woff2')}
:root{--bg:#0c0d0f;--panel:#15171a;--panel-2:#1a1d21;--sunk:#111316;--rule:#24272c;--rule-2:#30343a;--rule-3:#4a5059;--gl:#17191d;--text:#e9ebee;--text-2:#c4c8ce;--muted:#8a9099;--dim:#6b717a;--green:#19c819;--green-t:#19c819;--amber:#f5b544;--amber-t:#f5b544;--on-g:#06120a;--sans:'Inter Tight Variable','Inter Tight',system-ui,sans-serif;--mono:'JetBrains Mono Variable','JetBrains Mono',ui-monospace,Consolas,monospace}
.w{--bg:#fff;--panel:#f6f6f5;--panel-2:#efefee;--sunk:#f3f3f2;--rule:#e3e4e6;--rule-2:#cfd2d6;--rule-3:#9aa0a8;--gl:#eeeff1;--text:#0c0d0f;--text-2:#2c3036;--muted:#565b63;--dim:#80868f;--green-t:var(--text);--amber-t:#8a5a00}
@page{size:960px 540px;margin:0}
*{box-sizing:border-box}
html,body{margin:0;padding:0;background:#0c0d0f;-webkit-print-color-adjust:exact;print-color-adjust:exact}
.slide{position:relative;width:960px;height:540px;overflow:hidden;background:var(--bg);color:var(--text);font-family:var(--sans);font-size:12px;line-height:1.45;padding:32px 40px 0;break-after:page;page-break-after:always}
.slide:last-child{break-after:auto;page-break-after:auto}
.slide::before{content:'';position:absolute;top:0;bottom:0;left:40px;width:881px;background-image:linear-gradient(to right,var(--gl) 1px,transparent 1px);background-size:calc(880px / 12) 100%;border-right:1px solid var(--gl);pointer-events:none}
.slide>*{position:relative}
.ft{position:absolute;left:40px;right:40px;bottom:14px;display:flex;justify-content:space-between;align-items:center;font-family:var(--mono);font-size:9.5px;font-weight:500;color:var(--dim);border-top:1px solid var(--rule);padding-top:8px;margin:0}
.ft .mark{height:11px;width:auto;vertical-align:-1px;margin-right:7px}
p{margin:0 0 8px}
b{font-weight:600}
.k{font-family:var(--mono);font-size:10px;font-weight:500;color:var(--muted);letter-spacing:.01em}
.k.lab{margin:0 0 6px}
.sq{display:inline-block;width:6px;height:6px;background:var(--amber);margin-right:7px;vertical-align:1px}
.sq--g{background:var(--green)}
.g-t{color:var(--green-t)}
.eyebrow{font-family:var(--mono);font-size:10.5px;font-weight:500;color:var(--muted);margin:0 0 9px}
.eyebrow b{color:var(--green-t);font-weight:500}
.head{display:grid;grid-template-columns:220px 1fr;align-items:start;margin-bottom:14px}
.head--c{grid-template-columns:1fr;margin-bottom:16px}
.head .num{font-size:96px;font-weight:640;line-height:.8;letter-spacing:-.075em;color:var(--text);font-variant-numeric:tabular-nums;padding-left:12px;margin-top:-2px}
.head__t{padding:2px 14px 0}
h2{margin:0;font-size:27px;font-weight:600;letter-spacing:-.038em;line-height:1.1}
h2 em{font-style:normal;color:var(--muted)}
h1{margin:0 0 16px;font-size:56px;font-weight:630;letter-spacing:-.045em;line-height:1.02}
.caret{display:inline-block;width:.5em;height:.78em;background:var(--green);margin-left:.08em;vertical-align:-.06em}
.lead{font-size:15px;line-height:1.5;color:var(--text-2);margin-bottom:16px}
.body{font-size:12.5px;line-height:1.5;color:var(--text-2);margin-bottom:10px}
.body--l{font-size:14px;margin-bottom:16px}
.small{font-size:10.5px;line-height:1.45;color:var(--muted);margin:0 0 6px}
.g{display:grid;grid-template-columns:repeat(12,minmax(0,1fr))}
.c{padding:0 14px;min-width:0}
.g2{display:grid;grid-template-columns:1fr 1fr;column-gap:28px}
.panel{background:var(--panel);border:1px solid var(--rule-2);padding:13px 15px;margin-bottom:10px}
.panel .k{margin-bottom:6px}
.panel .body:last-child{margin-bottom:0}
.chip{display:inline-block;font-family:var(--mono);font-size:9.5px;font-weight:500;border:1px solid var(--rule-2);padding:2px 6px 1px;margin:0 4px 4px 0;color:var(--text-2);text-transform:lowercase;line-height:1.3}
.chip--big{font-size:12px;padding:5px 10px 4px;margin-bottom:6px}
.wrap{line-height:1.6}
.note{margin-top:10px;color:var(--dim)}
.note--tight{margin-top:5px}
.numeral{font-weight:600;letter-spacing:-.05em;font-variant-numeric:tabular-nums;line-height:1}
.numeral.mid{font-size:22px}
.numeral.big{font-size:34px}
.numeral.huge{font-size:72px}
.list{border-top:1px solid var(--text)}
.row{display:grid;grid-template-columns:22px 1fr;column-gap:6px;padding:8px 0 7px;border-bottom:1px solid var(--rule)}
.row .n{font-family:var(--mono);font-size:10px;color:var(--muted);padding-top:2px}
.row b{display:block;font-size:13px;line-height:1.25}
.row span{font-size:11px;color:var(--muted);line-height:1.35}
/* cover */
.top{display:flex;justify-content:space-between;align-items:center;margin-bottom:56px}
.logo{display:inline-flex;align-items:center;gap:9px;font-size:19px;font-weight:650;letter-spacing:-.03em}
.logo b{color:var(--green);font-weight:650}
.cover__markets{margin-top:22px}
.cover__markets .chip{margin-left:4px}
.cover .k{line-height:1.9}
.log{margin-top:4px}
.log__h{border-bottom:1px solid var(--rule-2);padding-bottom:7px;margin-bottom:4px}
.log__r{display:grid;grid-template-columns:36px 54px 1fr;align-items:baseline;column-gap:8px;padding:7px 0;border-bottom:1px solid var(--rule);font-size:11px;color:var(--text-2)}
.log__r .numeral{font-size:18px}
.log__f{margin:8px 0 0;color:var(--dim)}
/* about */
.card{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));border-top:1px solid var(--text);margin:12px 0 0;padding-top:10px}
.card>div{padding:0 14px 0 0}
.card dt{font-family:var(--mono);font-size:10px;font-weight:500;color:var(--muted);margin-bottom:3px}
.card dd{margin:0;font-size:11.5px;line-height:1.35}
.card--v{grid-template-columns:1fr;margin-top:14px}
.card--v>div{display:grid;grid-template-columns:120px 1fr;padding:7px 0;border-bottom:1px solid var(--rule)}
.card--v dt{margin:0;padding-top:1px}
.card--v dd{font-size:13px;font-weight:600}
/* contents */
.toc__r{display:grid;grid-template-columns:30px 1fr 36px;align-items:baseline;padding:8px 0;border-bottom:1px solid var(--rule)}
.toc__r b{font-size:13.5px}
a.toc__r{color:inherit;text-decoration:none}
.ft a{color:inherit;text-decoration:none}
.toc__r .g-t{text-align:right}
/* benefits */
.ben__r{display:grid;grid-template-columns:22px 1fr 150px;column-gap:10px;align-items:start;padding:11px 0 10px;border-bottom:1px solid var(--rule)}
.ben__r .n{font-family:var(--mono);font-size:10px;color:var(--muted);padding-top:2px}
.ben__r b{display:block;font-size:13.5px;line-height:1.25;margin-bottom:2px}
.ben__r>div>span{font-size:11px;color:var(--muted);line-height:1.35}
.ben__p{font-family:var(--mono);font-size:10px;line-height:1.35;color:var(--green-t);text-align:right;padding-top:1px}
.ben__p b{display:block;font-size:20px;font-family:var(--sans);font-weight:600;letter-spacing:-.04em;color:var(--green-t);margin-bottom:2px}
/* how we build and ship, security */
.ship .row{padding:6px 0 5px}
.ship .row b{font-size:12px}
.ship .row span{font-size:10.5px}
.ship__t{margin-top:16px}
.runs{margin-top:18px}
.mnt{margin-top:6px}
/* screenshots, the what-we-built cards and the projects deck */
.frame{border:1px solid var(--rule-2);background:var(--sunk);overflow:hidden}
.frame img{display:block;width:100%;height:auto}
.frame--card{aspect-ratio:16/9}
.frame--card img{height:100%;object-fit:cover;object-position:top}
.built__c b{display:block;font-size:13.5px;margin:4px 0 3px}
.built__c .k{margin:8px 0 0}
.built__c .small{font-size:10.5px;margin-bottom:6px}
.built__c .chip{display:block;width:max-content;max-width:100%}
.built__cta{margin:10px 0 0 14px;display:flex;align-items:center;gap:12px}
a.btn{text-decoration:none}
.pj__sum{font-size:11px;line-height:1.5;color:var(--text-2);margin-bottom:8px}
.pj__f .row{padding:5px 0 4px}
.pj__f .row b{font-size:11.5px;font-weight:500}
.log__r--p{grid-template-columns:30px 1fr;font-size:10.5px}
.log__r--p b{font-size:12px}
.arch{border:1px solid var(--rule-2);background:var(--panel);padding:8px 12px 6px;margin-bottom:8px}
.arch__l .k{margin:0 0 4px}
.arch__b{display:flex;flex-wrap:wrap;gap:4px;margin-bottom:2px}
.arch__b span{font-family:var(--mono);font-size:9px;line-height:1.3;border:1px solid var(--rule-2);background:var(--sunk);padding:3px 6px;color:var(--text-2)}
.arch__a{text-align:center;color:var(--amber-t);line-height:1;margin:1px 0 3px}
.gal{display:grid;column-gap:28px;row-gap:10px;padding:0 14px}
.gal--1{grid-template-columns:1fr}
.gal--2,.gal--3,.gal--4{grid-template-columns:1fr 1fr}
.gal__i{margin:0}
.gal__i .frame img{width:100%;height:100%;object-fit:cover;object-position:top}
.gal--4 .frame,.gal--3 .frame{height:150px}
.gal--2 .frame{height:300px}
.gal--1 .frame{height:340px}
.gal--1 .frame img{object-fit:contain;object-position:center top;background:var(--sunk)}
.gal__i .k{margin:5px 0 0}
/* ai in mobile apps, and the mobile app projects deck */
.uses{display:grid;grid-template-columns:repeat(3,1fr);column-gap:20px;row-gap:14px}
.uses__i .small{font-size:10.5px}
.phones{display:flex;gap:8px;margin:0 0 6px}
.phone{margin:0;flex:0 0 auto}
.phone .frame{width:80px;height:160px}
.phone .frame img{width:100%;height:100%;object-fit:cover;object-position:top}
.phones--big{gap:16px;margin:0}
.phones--big .phone .frame{width:150px;height:300px}
.phone figcaption{margin:5px 0 0;width:150px;line-height:1.35}
.app__f .row{padding:5px 0 4px}
.app__f .row b{font-size:11.5px;font-weight:500}
.log__r--m{grid-template-columns:26px 1fr;font-size:10.5px;padding:4px 0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.log__r--m .k{margin:0;line-height:1.45}
.log__r--m b{font-size:11px}
/* ai in automotive */
.auto .row{padding:4px 0 3px}
.auto .row>div>span{display:block;line-height:1.3}
.auto+.built__cta{margin-top:8px}
/* inputs */
.kinds{row-gap:14px}
.kind{display:grid;grid-template-columns:124px 1fr;column-gap:12px;align-items:start}
.kind .art{width:124px;height:74px;display:block;border:1px solid var(--rule-2)}
.kind b{display:block;font-size:12.5px;margin:3px 0 3px}
.kind .small{font-size:10.5px}
.kind .out{color:var(--green-t);margin:0}
/* results */
.ledger{display:grid;grid-template-columns:repeat(5,1fr);border-top:1px solid var(--text);padding-top:12px}
.ledger__c{padding:0 14px 0 0;border-right:1px solid var(--rule);margin-right:14px}
.ledger__c:last-child{border-right:0;margin-right:0}
.ledger__c b{display:block;font-size:12.5px;line-height:1.25;margin:8px 0 2px}
.stats-l{font-size:11px;color:var(--muted);line-height:1.45;margin:8px 0 8px}
.stats-l span{display:block}
.stats-l b{display:inline;font-size:11px;color:var(--text)}
.reticle{position:relative;display:inline-block;padding:8px 10px;margin:4px 0 0}
.reticle::before,.reticle::after{content:'';position:absolute;width:9px;height:9px;border:1px solid var(--green)}
.reticle::before{top:0;left:0;border-right:0;border-bottom:0}
.reticle::after{bottom:0;right:0;border-left:0;border-top:0}
.reticle--big{display:block;padding:12px 14px 12px;margin:0 0 14px}
.reticle--big .rl{display:block;font-size:12.5px;color:var(--text-2);margin-top:8px}
.cs .body{margin-bottom:12px;font-size:13.5px}
.cs .k{margin-bottom:4px}
/* case study before → after bars */
.ba{border-top:1px solid var(--rule-2);padding-top:8px}
.ba__r{margin-bottom:9px}
.ba__l{font-size:11px;color:var(--text-2);margin:0 0 4px}
.ba__l b{color:var(--text)}
.ba__bar{display:grid;grid-template-columns:1fr 92px;align-items:center;column-gap:8px;margin-bottom:3px}
.ba__t{display:block;height:9px;background:var(--sunk);border:1px solid var(--rule)}
.ba__t i{display:block;height:100%;background:var(--rule-3)}
.ba__bar--a .ba__t i{background:var(--green)}
.ba__bar .k{margin:0;font-size:9.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ba__bar--a .k{color:var(--green-t)}
.head--c h2{font-size:22px;max-width:760px}
/* run log */
.runlog{padding:8px 16px 4px;margin-bottom:0}
.runlog__h .cmt{color:var(--muted);margin-left:10px}
.runlog__h{color:var(--text);border-bottom:1px solid var(--rule-2);padding-bottom:6px;margin-bottom:0}
.step{display:grid;grid-template-columns:22px 110px 1fr 215px 44px;column-gap:10px;align-items:start;padding:5px 0;border-bottom:1px solid var(--rule)}
.step:last-of-type{border-bottom:0}
.step .cmd{color:var(--green-t)}
.step b{display:block;font-size:12px;line-height:1.25;margin-bottom:2px}
.step .small{margin:0;font-size:10px;line-height:1.38}
.step .you .chip{margin-bottom:2px}
.step .st{text-align:right;color:var(--green-t)}
.step .st--o{color:var(--amber-t)}
.gate{color:var(--amber-t);padding:4px 0 4px 32px;border-bottom:1px solid var(--rule)}
/* why */
.why{row-gap:22px}
.why__i{border-top:1px solid var(--text);padding-top:8px}
.why__i .k{margin-bottom:6px}
.why__i b{display:block;font-size:13.5px;margin-bottom:5px}
.why__i .small{font-size:11.5px;line-height:1.5}
/* tech */
.tech{row-gap:5px}
.tech__g{display:grid;grid-template-columns:22px 1fr;column-gap:6px;border-top:1px solid var(--rule);padding-top:4px}
.tech__g b{display:block;font-size:12px;margin-bottom:2px}
.tech__g .k{line-height:1.45;font-size:9.5px}
/* hours */
.hours{margin:0 0 8px}
.hours>div{display:grid;grid-template-columns:1fr 160px;padding:8px 0;border-bottom:1px solid var(--rule);font-size:12px}
.hours dt{color:var(--text-2)}
.hours dd{margin:0;font-family:var(--mono);font-size:10.5px;color:var(--text);text-align:right}
/* quotes */
.quote{min-height:170px;padding:18px 20px}
.quote .q{font-size:15px;line-height:1.5;color:var(--text);margin-bottom:14px}
.reviews{display:grid;grid-template-columns:repeat(3,1fr);column-gap:28px;border-top:1px solid var(--text);margin-top:14px;padding:14px 14px 0}
.review .numeral{font-size:26px}
.review{display:flex;align-items:baseline;gap:12px}
a.review,.card--v dd a,.social a{color:inherit;text-decoration:none}
/* end */
.btn{display:inline-block;background:var(--green);color:var(--on-g);font-weight:600;font-size:12.5px;padding:9px 16px;margin-right:10px}
.social a{display:block;line-height:1.7}
.bigmark{position:absolute;right:40px;bottom:44px;opacity:.9}
.bigmark .mark{display:block}
/* the overview slide's button: one link on screen (the HTML), another in print (the PDF) */
a.btn.only-print{display:none}
@media print{a.btn.only-screen{display:none}a.btn.only-print{display:inline-block}}
/* On screen only: slides stacked, scaled to the window, with a hint bar. None of this applies when printing. */
@media screen{
html,body{background:#000}
body{padding:28px 0 64px}
.slide{margin:0 auto 28px;outline:1px solid #2a2d31;zoom:var(--z,1)}
html{scroll-behavior:smooth}
a.toc__r:hover{background:var(--panel-2)}
a.toc__r:hover b{color:var(--green-t)}
.hint{position:fixed;left:0;right:0;bottom:0;margin:0;padding:9px 16px;background:#111316;color:#8a9099;font:500 11px/1.4 var(--mono);border-top:1px solid #24272c;z-index:9}
}
/* Speaker notes (from notes.md): hidden until the N key shows them under each slide; never printed */
.notes{display:none}
@media screen{
body.show-notes .notes{display:block;width:960px;margin:-14px auto 28px;padding:14px 20px 8px;background:#15171a;border:1px solid #30343a;color:#c4c8ce;font-family:var(--sans);font-size:15px;line-height:1.55;zoom:var(--z,1)}
.notes .k{margin:0 0 10px}
.notes p{margin:0 0 10px}
.notes ul{margin:0 0 10px;padding-left:20px}
.notes li{margin:0 0 4px}
.notes b{color:var(--text)}
.notes{position:relative}
.notes__play{position:absolute;top:10px;right:12px;display:grid;place-items:center;width:30px;height:30px;padding:0;background:#1a1d21;border:1px solid #30343a;color:var(--green);cursor:pointer}
.notes__play:hover,.notes__play.on{border-color:var(--green)}
.notes__play::before{content:'';box-sizing:border-box;margin-left:2px;border-style:solid;border-width:6px 0 6px 10px;border-color:transparent transparent transparent currentColor}
.notes__play.on::before{margin:0;width:10px;height:12px;border-width:0 3px;border-color:currentColor}
}
@media print{.hint,.notes{display:none}}
/* Presenting (F): one slide at a time, scaled to the screen. Screen only. */
@media screen{
body.present{padding:0;height:100vh;overflow:hidden;display:flex;align-items:center;justify-content:center}
body.present .slide{display:none;margin:0;outline:0}
body.present .slide.on{display:block}
body.present .hint,body.present .notes{display:none}
}
