@font-face{font-family:'Unbounded';font-weight:200 900;font-display:swap;src:url(fonts/unbounded-cyr.woff2) format('woff2');unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}
@font-face{font-family:'Unbounded';font-weight:200 900;font-display:swap;src:url(fonts/unbounded-lat.woff2) format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:'Onest';font-weight:100 900;font-display:swap;src:url(fonts/onest-cyr.woff2) format('woff2');unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}
@font-face{font-family:'Onest';font-weight:100 900;font-display:swap;src:url(fonts/onest-lat.woff2) format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:'Onest';font-weight:100 900;font-display:swap;src:url(fonts/onest-sym.woff2) format('woff2');unicode-range:U+2190,U+2192,U+2194-2199,U+21AF,U+21E6-21F0,U+2218-2219,U+2299,U+22C4-22C6,U+2300-243F,U+2460-24FF,U+25A0-27BF,U+2B00-2BFF}
@font-face{font-family:'JetBrains Mono';font-weight:400 800;font-display:swap;src:url(fonts/jbmono-cyr.woff2) format('woff2');unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}
@font-face{font-family:'JetBrains Mono';font-weight:400 800;font-display:swap;src:url(fonts/jbmono-lat.woff2) format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}

:root{--bg:#07070c;--bg2:#0f0f1a;--surface:#14141f;--line:#2a2a3d;--text:#f4f2f7;--muted:#9a95ab;--dim:#6f6a80;
--violet:#8B6CFF;--violet2:#B49CFF;--pink:#FF4FA3;--pink2:#FF8EC6;--cyan:#4FD1FF;--mint:#5CE1B6;--amber:#FFB84F;--red:#FF5C7A;
--h:'Unbounded',sans-serif;--b:'Onest',sans-serif;--m:'JetBrains Mono',monospace}
*{box-sizing:border-box;margin:0;padding:0}
html{-webkit-text-size-adjust:100%;background:var(--bg)}
body{background:var(--bg);color:var(--text);font-family:var(--b);min-height:100vh;line-height:1.4;-webkit-font-smoothing:antialiased;overflow-x:hidden}
button,input,select,textarea{font-family:inherit;color:inherit;font-size:inherit}
a{color:var(--violet2)}
#bg{position:fixed;inset:0;width:100%;height:100%;z-index:0;pointer-events:none}
#bgfade{position:fixed;inset:0;z-index:0;pointer-events:none;background:radial-gradient(90% 60% at 50% 25%,rgba(7,7,12,.25),rgba(7,7,12,.88))}
.wrap{position:relative;z-index:1;max-width:1100px;margin:0 auto;padding:10px 16px 48px}
.top{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:8px 0 18px}
.logo{display:flex;align-items:center;gap:10px;text-decoration:none;color:var(--text);font:700 16px var(--h);letter-spacing:-.02em;white-space:nowrap}
.logo i{width:26px;height:26px;border-radius:8px;background:linear-gradient(160deg,var(--violet),var(--pink));flex:none}
.nav{display:flex;gap:2px;overflow-x:auto;scrollbar-width:none;-webkit-overflow-scrolling:touch}
.nav::-webkit-scrollbar{display:none}
.nav a{color:var(--muted);text-decoration:none;font:500 13px var(--b);padding:8px 10px;border-radius:999px;white-space:nowrap;border:1px solid transparent}
.nav a.on{color:var(--text);background:var(--surface);border-color:var(--line)}
.kicker{font:600 11px var(--m);letter-spacing:.18em;text-transform:uppercase;color:var(--violet2)}
.kicker.c{color:var(--cyan)}.kicker.p{color:var(--pink2)}.kicker.m{color:var(--mint)}.kicker.a{color:var(--amber)}
h1{font:800 clamp(30px,8vw,60px)/1 var(--h);letter-spacing:-.03em;text-wrap:balance}
h2{font:700 clamp(22px,5vw,36px)/1.08 var(--h);letter-spacing:-.025em;text-wrap:balance}
h3{font:600 clamp(17px,4vw,22px)/1.15 var(--h);letter-spacing:-.02em}
.lead{font-size:clamp(15px,3.8vw,19px);color:#d6d2e2;text-wrap:pretty}
.small{font-size:13px;color:var(--muted)}
.mono{font-family:var(--m)}
.hl-v{color:var(--violet2)}.hl-p{color:var(--pink2)}.hl-c{color:var(--cyan)}.hl-m{color:var(--mint)}.hl-a{color:var(--amber)}
.stack{display:flex;flex-direction:column;gap:14px}
.row{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.sp{justify-content:space-between}
.card{background:rgba(15,15,26,.86);border:1px solid var(--line);border-radius:22px;padding:16px}
.card.v{border-color:rgba(139,108,255,.55)}.card.c{border-color:rgba(79,209,255,.5)}.card.p{border-color:rgba(255,79,163,.5)}.card.m{border-color:rgba(92,225,182,.5)}.card.a{border-color:rgba(255,184,79,.5)}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:12px 18px;border-radius:999px;border:1.5px solid var(--line);background:var(--surface);color:var(--text);font:600 15px/1 var(--b);cursor:pointer;text-decoration:none;transition:transform .15s,border-color .2s,background .2s,opacity .2s;user-select:none;-webkit-tap-highlight-color:transparent;min-height:44px}
.btn:active{transform:scale(.97)}
.btn.primary{background:var(--text);color:var(--bg);border-color:var(--text)}
.btn.violet{background:var(--violet);border-color:var(--violet);color:#fff}
.btn.cyan{background:var(--cyan);border-color:var(--cyan);color:#07070c}
.btn.pink{background:var(--pink);border-color:var(--pink);color:#fff}
.btn.mint{background:var(--mint);border-color:var(--mint);color:#07070c}
.btn.ghost{background:transparent}
.btn.big{font-size:17px;padding:16px 24px;min-height:54px}
.btn.sm{font-size:13px;padding:8px 12px;min-height:36px}
.btn.block{width:100%}
.btn:disabled{opacity:.4;cursor:default;transform:none}
.chip{display:inline-flex;align-items:center;gap:6px;padding:9px 13px;border-radius:999px;border:1.5px solid var(--line);background:rgba(20,20,31,.85);font:500 14px/1 var(--b);color:var(--text);cursor:pointer;user-select:none;-webkit-tap-highlight-color:transparent;min-height:40px;transition:border-color .2s,background .2s}
.chip.on{border-color:var(--violet);background:rgba(139,108,255,.22)}
.chip.on.c{border-color:var(--cyan);background:rgba(79,209,255,.18)}
.chip:disabled{opacity:.4;cursor:default}
.chip.ico{width:44px;height:44px;padding:0;justify-content:center;font-size:22px;border-radius:14px}
.pill{display:inline-flex;align-items:center;gap:8px;padding:6px 12px;border-radius:999px;background:rgba(20,20,31,.9);border:1px solid var(--line);font:600 12px var(--m);color:var(--muted);white-space:nowrap}
input.txt{background:rgba(15,15,26,.9);border:1.5px solid var(--line);border-radius:14px;font:600 18px var(--b);padding:12px 14px;width:100%;outline:none;color:var(--text);min-height:48px}
input.txt:focus{border-color:var(--violet)}
.lab{font:600 11px var(--m);letter-spacing:.16em;text-transform:uppercase;color:var(--violet2);margin-bottom:8px}
.tiles{display:grid;grid-template-columns:1fr;gap:12px}
@media(min-width:720px){.tiles{grid-template-columns:1fr 1fr}}
.tile{display:flex;flex-direction:column;gap:8px;padding:18px;border-radius:22px;background:rgba(15,15,26,.86);border:1px solid var(--line);text-decoration:none;color:var(--text);transition:transform .2s,border-color .2s;min-height:150px}
.tile:active{transform:scale(.98)}
.tile .ico{font-size:30px;line-height:1}
.tile p{color:var(--muted);font-size:14px}
.tile .go{margin-top:auto;font:600 13px var(--m)}
.toast{position:fixed;left:50%;bottom:24px;transform:translateX(-50%) translateY(20px);padding:12px 18px;border-radius:999px;background:var(--mint);color:#07070c;font:600 14px var(--b);opacity:0;transition:all .4s;z-index:50;pointer-events:none;max-width:92vw;text-align:center}
.toast.show{opacity:1;transform:translateX(-50%)}
.toast.bad{background:var(--red);color:#fff}
.sw{width:40px;height:40px;border-radius:50%;border:3px solid transparent;cursor:pointer;-webkit-tap-highlight-color:transparent;transition:transform .15s}
.sw.on{border-color:#fff;transform:scale(1.12)}
.grid-apps{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:12px}
.app{position:relative;display:flex;flex-direction:column;gap:7px;padding:12px;border-radius:20px;background:rgba(15,15,26,.9);border:1px solid var(--line);animation:pop .5s cubic-bezier(.2,.8,.2,1);cursor:pointer}
@keyframes pop{from{opacity:0;transform:translateY(14px) scale(.96)}to{opacity:1;transform:none}}
.app .ic{width:54px;height:54px;border-radius:16px;display:flex;align-items:center;justify-content:center;font-size:27px;box-shadow:0 10px 24px rgba(0,0,0,.4)}
.app .nm{font:700 15px var(--h);letter-spacing:-.02em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.app .ty{font:600 10.5px var(--m);color:var(--muted);letter-spacing:.08em;text-transform:uppercase}
.app .au{font-size:12px;color:var(--muted);min-height:16px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.app .ft{font-size:14px;letter-spacing:2px;min-height:20px}
.app .like{margin-top:auto;align-self:flex-start;display:inline-flex;align-items:center;gap:6px;padding:7px 12px;border-radius:999px;border:1.5px solid var(--line);background:transparent;color:var(--text);font:600 13px var(--b);cursor:pointer;-webkit-tap-highlight-color:transparent;min-height:36px}
.app .like.on{border-color:var(--pink);background:rgba(255,79,163,.18)}
.app.new{border-color:var(--mint);box-shadow:0 0 0 3px rgba(92,225,182,.25)}
.app .rank{position:absolute;right:10px;top:10px;font:700 12px var(--m);color:var(--amber)}
/* phone preview */
.appphone{position:relative;width:260px;height:520px;perspective:1400px;--acc:#8B6CFF;margin:0 auto}
.appphone .fl{position:absolute;inset:0;transform-style:preserve-3d;animation:float 7s ease-in-out infinite}
.appphone .rot{position:absolute;inset:0;transform-style:preserve-3d;transform:rotateY(-14deg) rotateX(5deg) rotateZ(1.5deg)}
.appphone .body{position:absolute;inset:0;border-radius:40px;background:linear-gradient(160deg,#1c1c2b,#0d0d16);border:2px solid #34344a;box-shadow:30px 40px 80px rgba(0,0,0,.6)}
.appphone .screen{position:absolute;left:10px;top:10px;right:10px;bottom:10px;border-radius:32px;background:#0f0f1a;overflow:hidden;transform:translateZ(6px);display:flex;flex-direction:column;color:#f4f2f7;font-size:12px}
.appphone .screen.light{background:#f6f5fa;color:#111}
.appphone .sb{display:flex;justify-content:space-between;padding:12px 18px 0;font:600 10px var(--m);opacity:.7}
.appphone .hd{display:flex;align-items:center;gap:9px;padding:16px 16px 8px}
.appphone .hd .ic{width:32px;height:32px;border-radius:10px;background:var(--acc);display:flex;align-items:center;justify-content:center;font-size:17px;flex:none}
.appphone .hd .nm{font:700 15px var(--h);letter-spacing:-.02em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.appphone .ct{flex:1;padding:6px 16px;display:flex;flex-direction:column;gap:8px;overflow:hidden}
.appphone .tile2{border-radius:13px;background:rgba(127,127,160,.16);height:74px;display:flex;align-items:flex-end;padding:8px;font-size:11px;font-weight:600}
.appphone .tile2.a{background:var(--acc);color:#fff}
.appphone .cta{margin:0 16px 10px;height:40px;border-radius:13px;background:var(--acc);display:flex;align-items:center;justify-content:center;font:600 13px var(--b);color:#fff}
.appphone .tabs{display:flex;justify-content:space-around;padding:8px 10px 16px;border-top:1px solid rgba(127,127,160,.25)}
.appphone .tabs span{font-size:16px;opacity:.85}
.appphone .map{border-radius:13px;height:150px;position:relative;overflow:hidden;background:linear-gradient(90deg,rgba(127,127,160,.12) 1px,transparent 1px) 0 0/20px 20px,linear-gradient(0deg,rgba(127,127,160,.12) 1px,transparent 1px) 0 0/20px 20px,rgba(127,127,160,.08)}
.appphone .map i{position:absolute;left:22px;top:112px;width:150px;height:4px;border-radius:2px;background:var(--acc);transform:rotate(-32deg);transform-origin:left}
.appphone .map b{position:absolute;width:12px;height:12px;border-radius:50%;background:var(--acc);box-shadow:0 0 0 4px rgba(255,255,255,.15)}
.appphone .msg{max-width:80%;padding:8px 11px;border-radius:13px;background:rgba(127,127,160,.16);font-size:11px}
.appphone .msg.me{align-self:flex-end;background:var(--acc);color:#fff}
.appphone .les{display:flex;gap:8px;align-items:center;padding:7px 9px;border-radius:10px;background:rgba(127,127,160,.14);font-size:10.5px}
.appphone .les b{font:600 9.5px var(--m);color:var(--acc)}
.appphone.launch .fl{transform:translateY(-100px) scale(.5);opacity:0;transition:transform 1s cubic-bezier(.6,-.2,.4,1),opacity .8s .3s}
.appphone.launch .rot{transform:rotateY(380deg);transition:transform 1s}
@keyframes float{0%,100%{transform:translateY(0)}50%{transform:translateY(-12px)}}
.pvbox{display:flex;justify-content:center;align-items:flex-start;height:440px;overflow:visible}
.pvbox .appphone{transform:scale(.8);transform-origin:top center}
@media(min-width:900px){.pvbox{height:560px;position:sticky;top:16px}.pvbox .appphone{transform:none}}
/* drawing pad */
.pad{position:relative;width:100%;max-width:420px;aspect-ratio:1/1;margin:0 auto;border-radius:22px;background:#0b0b14;border:1.5px solid var(--line);overflow:hidden;touch-action:none}
.pad canvas{position:absolute;inset:0;width:100%;height:100%;cursor:crosshair;touch-action:none}
.pad .ph{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;color:var(--dim);font-size:15px;pointer-events:none;text-align:center;padding:20px}
.pad.has .ph{display:none}
.bars{display:flex;flex-direction:column;gap:8px}
.bar{display:grid;grid-template-columns:minmax(70px,110px) 1fr 44px;gap:10px;align-items:center;font-size:14px}
.bar .tr2{height:12px;border-radius:6px;background:#1c1c30;overflow:hidden}
.bar .fi{height:100%;border-radius:6px;width:0;transition:width .25s}
.bar .pc{font:600 12px var(--m);text-align:right;color:var(--muted)}
.cls{display:grid;grid-template-columns:14px 1fr auto;grid-template-rows:auto auto;gap:6px 10px;align-items:center;padding:12px;border-radius:18px;background:rgba(15,15,26,.9);border:1.5px solid var(--line)}
.cls .dot{width:14px;height:14px;border-radius:50%;grid-row:1/3}
.cls input{background:transparent;border:0;border-bottom:1.5px solid var(--line);font:600 17px var(--b);padding:3px 2px;width:100%;outline:none;color:var(--text);border-radius:0}
.cls .ex{grid-column:2/3;display:flex;gap:5px;flex-wrap:wrap;min-height:30px;align-items:center}
.cls .ex canvas{width:30px;height:30px;border-radius:6px;background:#0b0b14;border:1px solid var(--line);image-rendering:pixelated}
.cls .add{grid-row:1/3}
.cls .cnt{font:600 11px var(--m);color:var(--muted)}
.netbox svg{width:100%;height:auto;display:block}
.losscv{width:100%;height:70px;border-radius:12px;background:#0b0b14;border:1px solid var(--line);display:block}
.feat{display:flex;gap:5px;flex-wrap:wrap}
.feat canvas{width:34px;height:34px;border-radius:6px;border:1px solid var(--line);image-rendering:pixelated}
.wall{display:flex;flex-wrap:wrap;gap:6px}
.wall canvas{width:46px;height:46px;border-radius:8px;border:1px solid var(--line);background:#0b0b14;image-rendering:pixelated;animation:pop .4s}
.qrbox{background:#fff;border-radius:20px;padding:12px;display:inline-block;line-height:0}
.qrbox svg{display:block;width:100%;height:auto}
.stat{display:flex;flex-direction:column;gap:2px}
.stat .n{font:800 clamp(28px,6vw,56px)/1 var(--h);letter-spacing:-.03em}
.stat .l{font:600 11px var(--m);letter-spacing:.14em;text-transform:uppercase;color:var(--muted)}
.hide{display:none!important}
.tabs2{display:flex;gap:6px;flex-wrap:wrap}
.tabs2 .btn.on{background:var(--text);color:var(--bg);border-color:var(--text)}
.two{display:flex;flex-direction:column;gap:20px}
@media(min-width:900px){.two{display:grid;grid-template-columns:1fr 1fr;gap:28px;align-items:start}.three{display:grid;grid-template-columns:1fr 1fr 1fr;gap:20px}}
.modal{position:fixed;inset:0;z-index:40;background:rgba(7,7,12,.78);display:none;align-items:center;justify-content:center;padding:16px;backdrop-filter:blur(6px)}
.modal.show{display:flex}
.modal .box{position:relative;width:min(560px,100%);max-height:94vh;overflow:auto;background:var(--bg2);border:1px solid var(--line);border-radius:26px;padding:18px}
.modal .x{position:absolute;right:12px;top:12px}
.steps{display:flex;gap:6px;flex-wrap:wrap}
.steps .s{padding:6px 10px;border-radius:10px;background:rgba(20,20,31,.9);border:1px solid var(--line);font-size:12.5px;color:var(--muted)}
.steps .s b{color:var(--text);font-weight:600}
/* projector screen */
body.screen .wrap{max-width:none;padding:20px 36px 30px}
body.screen .grid-apps{grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:16px}
body.screen .app .nm{font-size:19px}
body.screen .app .ic{width:68px;height:68px;font-size:34px;border-radius:20px}
body.screen .wall canvas{width:64px;height:64px}
body.screen .stat .n{font-size:clamp(40px,5vw,84px)}
.scr-tabs{position:fixed;left:50%;bottom:16px;transform:translateX(-50%);z-index:5;display:flex;gap:6px;padding:6px;border-radius:999px;background:rgba(15,15,26,.9);border:1px solid var(--line);backdrop-filter:blur(8px)}
.scr-tabs .btn{min-height:40px;padding:8px 16px;font-size:14px}
.scr-tabs .btn.on{background:var(--text);color:var(--bg);border-color:var(--text)}
