@font-face{font-family:Aeroport;src:url('./assets/brand/Aeroport-Regular.woff') format('woff');font-display:swap}
@font-face{font-family:Druk;src:url('./assets/brand/DrukWideCyr-Bold.woff') format('woff');font-display:swap}
:root{--yellow:#fff200;--ink:#060606;--black:#0a0a0b;--panel:#151516;--panel2:#202023;--line:#343438;--muted:#9d9d97;--green:#2afd55;--orange:#ff8a0a;--pink:#fc1fc4;--blue:#6781ff;--red:#ff4b4b;--white:#f7f7f4;font-family:Aeroport,Arial,sans-serif;color:var(--white);background:#111}
*{box-sizing:border-box}button,input,select{font:inherit}button{color:inherit;cursor:pointer}body{margin:0;min-height:100vh;background:radial-gradient(circle at 50% 15%,#343437 0,#181819 34%,#080808 78%);overflow:hidden}.stage{min-height:100vh;display:grid;place-content:center;gap:13px}.phone{position:relative;width:430px;height:min(900px,calc(100vh - 64px));border:12px solid #050505;border-radius:52px;background:var(--ink);box-shadow:0 30px 90px #000c,0 0 0 2px #414143;overflow:hidden}.phone-hardware{position:absolute;z-index:50;top:8px;left:50%;translate:-50%;width:104px;height:27px;border-radius:0 0 15px 15px;background:#030303;display:flex;align-items:center;justify-content:center;gap:10px}.phone-hardware i{width:46px;height:5px;border-radius:3px;background:#202023}.phone-hardware span{width:7px;height:7px;border-radius:50%;background:#10233c}.app{height:100%;background:var(--ink);overflow:hidden;position:relative}.desktop-hint{margin:9px 0 0;text-align:center;color:#777;font-size:10px;letter-spacing:.11em;text-transform:uppercase}.toast{position:fixed;z-index:100;left:50%;bottom:25px;translate:-50% 30px;background:#f4f4ef;color:#090909;padding:12px 16px;border-radius:0;opacity:0;pointer-events:none;transition:.2s;box-shadow:0 10px 40px #0008;max-width:340px;text-align:center}.toast.show{opacity:1;translate:-50% 0}
.desktop-tools{width:430px;color:#ddd}.theme-caption{display:flex;align-items:baseline;justify-content:space-between;margin-bottom:7px}.theme-caption span{font-weight:700;font-size:13px}.theme-caption small{color:#858585;font-size:11px}.theme-switch{display:grid;grid-template-columns:repeat(3,1fr);border:1px solid #49494d}.theme-switch button{height:38px;border:0;border-right:1px solid #49494d;background:#18181a;color:#aaa}.theme-switch button:last-child{border-right:0}.theme-switch button.active{background:var(--yellow);color:#090909;font-weight:800}

/* Геометрический инвариант относится к UI. Корпус телефона и его физическая чёлка — исключения. */
.app *,.app *::before,.app *::after,.desktop-tools *,.desktop-tools *::before,.desktop-tools *::after{border-radius:0!important}
.splash{height:100%;background:#060606;display:grid;place-items:center}.splash img{width:54%;max-width:230px;animation:splash-in .55s cubic-bezier(.2,.8,.2,1)}@keyframes splash-in{from{opacity:0;scale:.82}to{opacity:1;scale:1}}
.screen{height:100%;overflow:auto;overscroll-behavior:contain;padding:calc(28px + env(safe-area-inset-top)) 18px calc(30px + env(safe-area-inset-bottom));scrollbar-width:none}.screen::-webkit-scrollbar{display:none}.system-screen{background:var(--ink)}.system-screen.has-bottom-action{padding-bottom:calc(112px + env(safe-area-inset-bottom))}.system-screen.no-bottom{overflow:hidden}.grow{flex:1;min-width:0}.muted{color:var(--muted)}.eyebrow{font-size:11px;letter-spacing:.13em;text-transform:uppercase;color:var(--yellow);font-weight:700}.display{font:34px/1.02 Druk;margin:8px 0 12px;letter-spacing:-.025em}.title{font:23px/1.08 Druk;margin:7px 0}.body{font-size:16px;line-height:1.45;color:#d7d7d1}.gap-sm{height:10px}.gap-lg{height:22px}
.appbar{min-height:62px;display:flex;align-items:center;gap:12px;position:sticky;top:-28px;z-index:20;background:linear-gradient(var(--ink) 82%,transparent);padding-top:8px;margin:0 -3px 14px}.back,.icon-btn{width:48px;height:48px;border:0;border-radius:14px;background:var(--panel2);display:grid;place-items:center;font-size:22px;flex:0 0 auto}.appbar-mark{width:42px;height:42px;border-radius:11px}.appbar-copy{min-width:0;flex:1}.appbar-copy small{display:block;color:var(--muted);font-size:12px}.appbar-copy strong{display:block;font:18px Druk;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.appbar-space{width:48px}.text-action{border:0;background:none;color:var(--yellow);font-size:13px;font-weight:700;padding:12px 0}
.btn{width:100%;min-height:56px;border:0;border-radius:12px;padding:14px 18px;font-weight:700;display:flex;align-items:center;justify-content:center;gap:9px;margin-top:10px}.btn:active{transform:scale(.985)}.btn:disabled{opacity:.65}.btn-primary{background:var(--yellow);color:#050505}.btn-secondary{background:var(--panel2);border:1px solid var(--line)}.btn-ghost{background:transparent;border:1px solid var(--line)}.danger-outline{color:#ff7a7a;border-color:#713333;margin-top:24px}.link-btn{border:0;background:none;color:var(--yellow);font-weight:700;font-size:13px;padding:8px}.emergency-link{width:100%;border:0;background:none;color:#ff7373;padding:20px 8px 6px;font-weight:700}
.card{background:var(--panel);border:1px solid #2b2b2e;border-radius:16px;padding:16px}.compact-card{padding:4px 15px}.stack{display:grid;gap:10px}.section-head{display:flex;align-items:end;justify-content:space-between;margin:25px 0 12px}.section-head.first{margin-top:4px}.section-head h2{font:19px Druk;margin:0}.live-badge{font-size:10px;font-weight:800;color:#071307;background:var(--green);border-radius:99px;padding:5px 8px}.dark-text{color:#161600}
.status-dot{display:inline-block;width:9px;height:9px;border-radius:50%;background:var(--green);box-shadow:0 0 0 3px #2afd5519}.status-dot.warn{background:var(--orange)}.status-dot.error{background:var(--red)}
.face{width:min(78vw,330px);height:auto;overflow:visible;animation:breathe 5.7s ease-in-out infinite}.eyes{transform-origin:center;animation:look 6.5s ease-in-out infinite}.face-eye,.face-mouth{fill:var(--yellow)}.warning-eyes{transform:scaleY(.75)}.sleepy-eyes{transform:scaleY(.18)}@keyframes breathe{50%{transform:scale(1.012) translate(2px,-1px)}}@keyframes look{0%,30%,100%{translate:0}45%,58%{translate:7px -2px}74%,86%{translate:-5px 1px}}
.face-mode{height:100%;position:relative;background:#0a0a0b;display:grid;grid-template-rows:auto 1fr auto auto;padding:calc(36px + env(safe-area-inset-top)) 22px calc(20px + env(safe-area-inset-bottom));overflow:hidden}.face-topline{display:flex;align-items:center;justify-content:space-between;z-index:2}.face-identity{border:0;background:none;display:flex;align-items:center;gap:10px;text-align:left;padding:4px 0}.face-identity b{display:block;font-size:13px;letter-spacing:.04em}.face-identity small{display:block;color:#85857f;font-size:10px;margin-top:3px}.face-settings{width:48px;height:48px;border:1px solid #262629;border-radius:15px;background:#111113;color:#aaa;font-weight:800;letter-spacing:2px}.face-stage{border:0;background:none;display:grid;place-items:center;min-height:0}.face-state{justify-self:center;border:1px solid #333337;background:#121214;color:#ddd;border-radius:99px;padding:10px 14px;display:flex;align-items:center;gap:9px;font-weight:700;font-size:13px}.face-state span:last-child{color:#777;font-size:18px}.face-footnote{text-align:center;color:#555;font-size:10px;text-transform:uppercase;letter-spacing:.09em;margin-top:12px}
.setup-hero{min-height:100%;display:flex;flex-direction:column}.setup-wordmark{width:150px;margin-top:12px}.setup-face{flex:1;min-height:250px;display:grid;place-items:center}.setup-face .face{width:300px}.setup-hero .btn{margin-top:22px}.setup-device{height:210px;display:grid;place-items:center;position:relative}.setup-device img{width:118px;border-radius:24px;box-shadow:0 0 0 14px #111}.setup-device span{position:absolute;bottom:16px;background:#151518;border:1px solid #333;border-radius:99px;padding:9px 12px;font-size:12px}.field-label{display:block;font-size:13px;color:#bbb;margin:8px 0}.text-field{width:100%;height:58px;border:1px solid #424247;border-radius:12px;background:#151517;color:white;padding:0 15px;font:19px Druk;text-transform:uppercase;outline:none}.text-field:focus{border-color:var(--yellow)}.field-help{font-size:13px;color:var(--muted);line-height:1.4}.bottom-action{position:absolute;bottom:0;left:0;right:0;padding:12px 18px calc(18px + env(safe-area-inset-bottom));background:linear-gradient(transparent,#080809 18%,#080809);z-index:15}.bottom-action .btn{margin:18px 0 0}.intro-block{padding:8px 0 15px}.privacy-note{color:#777;font-size:12px;line-height:1.45;padding:4px 2px}
.permission-list{padding:2px 15px}.permission-row,.system-row{display:flex;align-items:center;gap:12px;padding:14px 0;border-bottom:1px solid #2b2b2e}.permission-row:last-child,.system-row:last-child{border-bottom:0}.permission-row strong,.system-row strong{display:block;font-size:15px}.permission-row small,.system-row small{display:block;color:var(--muted);font-size:12px;margin-top:4px;white-space:normal}.system-icon{width:42px;height:42px;border-radius:12px;background:#28282b;color:#aaa;display:grid;place-items:center;font:bold 10px Aeroport;flex:0 0 auto}.system-icon.green{background:var(--green);color:#071207}.system-icon.yellow{background:var(--yellow);color:#111}.system-icon.blue{background:var(--blue);color:#080b22}.system-icon.pink{background:var(--pink);color:#170012}.system-icon.red{background:#3b1b1b;color:#ff7f7f}.toggle{width:50px;height:29px;border:0;border-radius:30px;background:#3a3a3e;padding:3px;flex:0 0 auto}.toggle i{display:block;width:23px;height:23px;border-radius:50%;background:#aaa;transition:.18s}.toggle.on{background:var(--yellow)}.toggle.on i{translate:21px;background:#090909}
.health-card{background:var(--yellow);color:#090909;border-radius:19px;padding:17px;display:flex;align-items:center;gap:14px}.health-card h1{font:22px Druk;margin:4px 0}.health-card p{margin:0;font-size:13px}.health-ring{width:66px;height:66px;border:2px solid #111;border-radius:50%;display:grid;place-items:center;flex:0 0 auto}.health-ring span{font-size:31px}.system-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:10px}.system-tile{position:relative;border:1px solid #2c2c30;border-radius:16px;background:var(--panel);min-height:145px;text-align:left;padding:14px;display:flex;flex-direction:column}.system-tile .tile-icon{width:42px;height:42px;border-radius:12px;display:grid;place-items:center;color:#080808;font-weight:900;font-size:20px;margin-bottom:auto}.tile-icon.green{background:var(--green)}.tile-icon.orange{background:var(--orange)}.tile-icon.blue{background:var(--blue)}.tile-icon.pink{background:var(--pink)}.system-tile strong{font-size:15px;margin-top:13px}.system-tile small{color:var(--muted);font-size:11px;margin-top:5px;line-height:1.3}.system-tile>i{position:absolute;right:13px;top:17px;color:#777;font-style:normal;font-size:20px}
.sensor-list{padding:2px 15px}.sensor-value{font-variant-numeric:tabular-nums}.port-stack{gap:8px}.port-card{display:flex;align-items:center;gap:12px;padding:12px}.port-number{width:42px;height:42px;background:var(--yellow);color:#090909;border-radius:12px;display:grid;place-items:center;font:15px Druk}.port-card strong{display:block}.port-card small{display:block;color:var(--muted);font-size:12px;margin-top:4px}.port-card select{max-width:125px;border:1px solid #3d3d42;background:#242428;color:#eee;border-radius:9px;padding:9px 26px 9px 9px;font-size:12px}
.diagnostic-summary{display:flex;align-items:center;gap:17px;padding:15px 2px 20px}.diag-orbit{width:84px;height:84px;border:5px solid #28282c;border-top-color:var(--yellow);border-radius:50%;display:grid;place-items:center;flex:0 0 auto}.diag-orbit span{font:27px Druk}.diagnostic-progress{height:6px;background:#242427;border-radius:9px;margin-bottom:12px;overflow:hidden}.diagnostic-progress i{height:100%;display:block;width:0;background:var(--green);transition:.3s}.check-list{padding:2px 15px}.diagnostic-row{display:flex;gap:11px;align-items:center;padding:13px 0;border-bottom:1px solid #2b2b2e}.diagnostic-row:last-child{border:0}.diagnostic-row .diag-state{width:25px;color:#777;font-size:19px}.diagnostic-row strong{display:block;font-size:14px}.diagnostic-row small{display:block;font-size:11px;color:var(--muted);margin-top:3px}.diagnostic-row>b{font-size:11px;color:#777}.diagnostic-row.passed .diag-state,.diagnostic-row.passed>b{color:var(--green)}
.connection-hero{display:flex;align-items:center;gap:17px;padding:8px 2px 22px}.connection-pulse{position:relative;width:76px;height:76px;border-radius:50%;background:#131315;display:grid;place-items:center;flex:0 0 auto}.connection-pulse:before,.connection-pulse:after{content:"";position:absolute;inset:-7px;border:1px solid #2afd5544;border-radius:50%;animation:pulse-ring 2s infinite}.connection-pulse:after{inset:-15px;animation-delay:.5s}@keyframes pulse-ring{50%{opacity:.15;scale:1.06}}.connection-list{padding:2px 15px}.connection-state{font-size:11px;color:var(--green)}.qr-card{display:flex;align-items:center;gap:16px;background:white;color:#090909;border-radius:17px;padding:14px}.qr-card strong{display:block;font:14px Druk}.qr-card small{display:block;color:#444;margin-top:7px;font-size:12px}.fake-qr{width:126px;height:126px;display:grid;grid-template-columns:repeat(21,1fr);grid-template-rows:repeat(21,1fr);background:white;border:4px solid white;flex:0 0 auto}.fake-qr i{background:white}.fake-qr i.on{background:#050505}
.log-filter{display:flex;gap:7px;overflow:auto;margin:0 -18px;padding:0 18px 12px;scrollbar-width:none}.chip{white-space:nowrap;border:1px solid var(--line);background:var(--panel);border-radius:99px;padding:8px 12px;font-size:12px}.chip.active{background:var(--yellow);color:#080808;border-color:var(--yellow);font-weight:700}.log-console{background:#0d0f12;border:1px solid #292c31;border-radius:15px;padding:12px;min-height:450px;font:11px/1.7 ui-monospace,SFMono-Regular,Menlo,monospace;color:#adb6c4}.log-entry{display:flex;gap:8px;border-bottom:1px solid #181b20;padding:6px 0}.log-entry span{color:var(--green)}.log-entry.error{color:#ff8d8d}.log-entry.error span{color:var(--red)}
.camera-screen{height:100%;position:relative;overflow:hidden;background:linear-gradient(145deg,#171a15,#292d22 47%,#111);color:white}.camera-noise{position:absolute;inset:0;opacity:.25;background-image:repeating-linear-gradient(0deg,transparent 0 2px,#fff1 3px);mix-blend-mode:overlay}.camera-screen header{position:absolute;z-index:4;top:0;left:0;right:0;padding:calc(30px + env(safe-area-inset-top)) 18px 12px;display:flex;align-items:center;gap:12px;background:linear-gradient(#000b,transparent)}.camera-screen header div{flex:1}.camera-screen header small,.camera-screen header strong{display:block}.camera-screen header small{font-size:9px;color:#bbb;letter-spacing:.12em}.camera-screen header strong{font:17px Druk}.camera-back{background:#0009}.recording-dot{width:12px;height:12px;border-radius:50%;background:var(--green);box-shadow:0 0 0 5px #2afd5530}.vision-box{position:absolute;z-index:3;left:19%;top:34%;width:61%;height:31%;border:2px solid var(--yellow);border-radius:8px}.vision-box:before,.vision-box:after{content:"";position:absolute;width:24px;height:24px;border-color:var(--yellow)}.vision-box span{position:absolute;top:-26px;background:var(--yellow);color:#090909;padding:5px 8px;font-size:10px;font-weight:800}.vision-box b{position:absolute;right:0;top:-26px;color:var(--yellow);font-size:11px}.camera-object{position:absolute;left:50%;top:49%;translate:-50% -50%;font:42px Druk;color:#ddd2;rotate:-8deg}.camera-bottom{position:absolute;z-index:4;bottom:0;left:0;right:0;padding:25px 18px calc(20px + env(safe-area-inset-bottom));background:linear-gradient(transparent,#000 28%)}.camera-bottom>div span,.camera-bottom>div small{display:block}.camera-bottom>div span{font-weight:700}.camera-bottom>div small{color:#aaa;margin-top:5px;font-size:11px}.camera-bottom .btn{margin-top:16px}

/* Светлая тема. На мобильной ширине выбор всегда определяется временем. */
.app.theme-light{--ink:#f4f1e8;--black:#fff;--panel:#fff;--panel2:#e6e2d7;--line:#aaa79d;--muted:#67665f;--white:#090909;color:#090909;background:var(--ink)}
.app.theme-light .system-screen{background:var(--ink)}
.app.theme-light .appbar{background:linear-gradient(var(--ink) 82%,transparent)}
.app.theme-light .back,.app.theme-light .icon-btn{background:#dedacf;color:#090909;border:1px solid #aaa79d}
.app.theme-light .card,.app.theme-light .system-tile{background:#fff;border-color:#aba89f;color:#090909}
.app.theme-light .system-row,.app.theme-light .permission-row,.app.theme-light .diagnostic-row{border-color:#d1cdc2}
.app.theme-light .system-icon{background:#dcd8ce;color:#222}
.app.theme-light .system-icon.green{background:var(--green);color:#061006}.app.theme-light .system-icon.yellow{background:var(--yellow)}.app.theme-light .system-icon.blue{background:var(--blue)}.app.theme-light .system-icon.pink{background:var(--pink)}
.app.theme-light .btn-secondary{background:#dedacf;border-color:#aaa79d;color:#090909}.app.theme-light .btn-ghost{color:#090909;border-color:#aaa79d}
.app.theme-light .port-card select{background:#ece8de;color:#111;border-color:#aaa79d}.app.theme-light .text-field{background:#fff;color:#090909;border-color:#8f8c84}
.app.theme-light .diagnostic-progress{background:#d8d4ca}.app.theme-light .log-console{background:#fff;color:#30343a;border-color:#aaa79d}.app.theme-light .log-entry{border-color:#ddd8ce}
.app.theme-light .chip{background:#fff;color:#090909;border-color:#aaa79d}.app.theme-light .chip.active{background:var(--yellow)}
.app.theme-light .bottom-action{background:linear-gradient(transparent,var(--ink) 18%,var(--ink))}
.app.theme-light .setup-hero,.app.theme-light .setup-device{color:#090909}
.app.theme-light .face-mode{background:var(--yellow);color:#060606}.app.theme-light .face-mode .face-eye,.app.theme-light .face-mode .face-mouth{fill:#060606}.app.theme-light .face-identity small,.app.theme-light .face-footnote{color:#514f00}.app.theme-light .face-settings{background:#060606;color:#fff;border-color:#060606}.app.theme-light .face-state{background:#060606;color:#fff;border-color:#060606}.app.theme-light .face-state .status-dot,.app.theme-light .face-identity .status-dot{box-shadow:none}
body[data-page-theme="light"]{background:#d7d3c8}
@media(max-width:699px){body{background:var(--ink)}.stage{display:block;min-height:0}.phone{width:100vw;height:100dvh;border:0;border-radius:0;box-shadow:none}.phone-hardware,.desktop-tools{display:none}.screen{padding-top:calc(8px + env(safe-area-inset-top))}.appbar{top:-8px}.face-mode{padding-top:calc(18px + env(safe-area-inset-top))}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important}}
