
  @font-face{font-family:'ACMilan1415';src:url('/static/fonts/ACMilan1415.ttf') format('truetype');font-display:swap;}
  @font-face{font-family:'Antonio';src:url('/static/fonts/Antonio.ttf') format('truetype');font-display:swap;}
  @font-face{font-family:'Bars1213';src:url('/static/fonts/Bars1213.ttf') format('truetype');font-display:swap;}
  @font-face{font-family:'BrazilWC22';src:url('/static/fonts/BrazilWC22.ttf') format('truetype');font-display:swap;}
  @font-face{font-family:'Engl0911';src:url('/static/fonts/Engl0911.ttf') format('truetype');font-display:swap;}
  @font-face{font-family:'EnglandWC22';src:url('/static/fonts/EnglandWC22.ttf') format('truetype');font-display:swap;}
  @font-face{font-family:'FulboArgenta';src:url('/static/fonts/FulboArgenta.otf') format('opentype');font-display:swap;}
  @font-face{font-family:'FulboChampagne';src:url('/static/fonts/FulboChampagne.otf') format('opentype');font-display:swap;}
  @font-face{font-family:'FulboPremier';src:url('/static/fonts/FulboPremier.otf') format('opentype');font-display:swap;}
  @font-face{font-family:'FulboRetro';src:url('/static/fonts/FulboRetro.otf') format('opentype');font-display:swap;}
  @font-face{font-family:'FulboTano';src:url('/static/fonts/FulboTano.otf') format('opentype');font-display:swap;}
  @font-face{font-family:'JuventusFans';src:url('/static/fonts/JuventusFans.ttf') format('truetype');font-display:swap;}
  @font-face{font-family:'LiverpoolFC';src:url('/static/fonts/LiverpoolFC.ttf') format('truetype');font-display:swap;}
  @font-face{font-family:'MetaExport';src:url('/static/fonts/MetaExport.ttf') format('truetype');font-display:swap;}
  @font-face{font-family:'FranceWC';src:url('/static/fonts/FranceWC.ttf') format('truetype');font-display:swap;}
  @font-face{font-family:'NHLSabres';src:url('/static/fonts/NHLSabres.ttf') format('truetype');font-display:swap;}
  @font-face{font-family:'NetherlandsWC22';src:url('/static/fonts/NetherlandsWC22.otf') format('opentype');font-display:swap;}
  @font-face{font-family:'PFDinCSKA';src:url('/static/fonts/PFDinCSKA.ttf') format('truetype');font-display:swap;}
  @font-face{font-family:'PortugalWC22';src:url('/static/fonts/PortugalWC22.ttf') format('truetype');font-display:swap;}
  @font-face{font-family:'Puma2122';src:url('/static/fonts/Puma2122.ttf') format('truetype');font-display:swap;}
  @font-face{font-family:'PumaGaffer';src:url('/static/fonts/PumaGaffer.ttf') format('truetype');font-display:swap;}
  @font-face{font-family:'RPL2019';src:url('/static/fonts/RPL2019.otf') format('opentype');font-display:swap;}
  @font-face{font-family:'RealMadrid1415';src:url('/static/fonts/RealMadrid1415.ttf') format('truetype');font-display:swap;}
  @font-face{font-family:'Sagewold';src:url('/static/fonts/Sagewold.ttf') format('truetype');font-display:swap;}
  @font-face{font-family:'Serati';src:url('/static/fonts/Serati.ttf') format('truetype');font-display:swap;}
  @font-face{font-family:'SerieA';src:url('/static/fonts/SerieA.ttf') format('truetype');font-display:swap;}
  @font-face{font-family:'SportingCP2122';src:url('/static/fonts/SportingCP2122.ttf') format('truetype');font-display:swap;}
  @font-face{font-family:'Stengazeta';src:url('/static/fonts/Stengazeta.ttf') format('truetype');font-display:swap;}
  @font-face{font-family:'Tourney';src:url('/static/fonts/Tourney.ttf') format('truetype');font-display:swap;}
  :root{--bg:#0f1420;--panel:#171d2b;--panel2:#1e2637;--line:#2a3346;--ink:#eef1f6;--muted:#8b97a9;--accent:#00A99B;--gold:#F2A83B;
    --stage1:#28304a;--stage2:#0d111a;--params:#141a27;--hover:#3d4a63;--ichover:#2c374d;--tglbg:#39445a;--tglknob:#cdd5e0;--viewbg:rgba(23,29,43,.92);--modalbg:rgba(6,10,18,.74);--chipbd:rgba(255,255,255,.18);--softbg:rgba(255,255,255,.035);}
  :root[data-theme="light"]{--bg:#eef1f6;--panel:#ffffff;--panel2:#f1f4f8;--line:#dbe1ea;--ink:#1b2430;--muted:#5c6875;--accent:#009286;--gold:#c98a1e;
    --stage1:#e7edf5;--stage2:#c9d3e0;--params:#f1f4f8;--hover:#aab6c6;--ichover:#e3e9f1;--tglbg:#c3ccda;--tglknob:#ffffff;--viewbg:rgba(255,255,255,.92);--modalbg:rgba(20,28,40,.45);--chipbd:rgba(0,0,0,.2);--softbg:rgba(0,0,0,.03);}
  *{margin:0;padding:0;box-sizing:border-box}
  body{font-family:-apple-system,'Segoe UI',Roboto,sans-serif;background:var(--bg);color:var(--ink);font-size:14px;overflow-x:hidden;}
  .sr-only{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0;}
  .seo{max-width:820px;margin:0 auto;padding:30px 20px 44px;color:var(--muted);line-height:1.6;font-size:13px;}
  .seo h2{color:var(--ink);font-size:15.5px;font-weight:700;margin:20px 0 7px;}
  .seo h2:first-of-type{margin-top:0;}
  .seo p{margin:0 0 9px;}
  .seo a{color:var(--accent);text-decoration:underline;text-underline-offset:2px;}
  .seo a:hover{opacity:.82;}
  .seo .seo-top{display:flex;align-items:center;gap:9px;border-bottom:1px solid var(--line);padding-bottom:11px;margin-bottom:18px;font-size:12.5px;}
  .seo .seo-badge{display:inline-block;font-size:10.5px;font-weight:800;letter-spacing:.04em;color:#03231f;background:var(--accent);border-radius:20px;padding:2px 10px;}
  .top{display:flex;align-items:center;gap:8px;padding:10px 18px;background:var(--panel);border-bottom:1px solid var(--line);position:sticky;top:0;z-index:50;}
  .top .brand{display:flex;align-items:center;gap:10px;flex:1;min-width:0;}
  .top .center{display:flex;align-items:center;gap:8px;flex:none;}
  .top .right{display:flex;align-items:center;gap:8px;flex:1;justify-content:flex-end;}
  .btn-ghost.locked{opacity:.55;color:var(--muted);border-style:dashed;}
  .btn-ghost.locked:hover{border-color:var(--line);color:var(--muted);}
  .top .brand .blogo{height:38px;width:auto;display:block;}
  :root[data-theme="light"] .top .brand .blogo{filter:brightness(0);}
  .top .brand small{color:var(--muted);font-weight:600;letter-spacing:.04em;font-size:9px;position:relative;top:9px;}
  .top .vsep{width:1px;height:24px;background:var(--line);margin:0 3px;flex:none;}
  .btn-ico{width:38px;height:38px;padding:0!important;border-radius:10px;font-size:15px;flex:none;}
  /* ссылка на Telegram-канал — выглядит как соседняя иконочная кнопка (тема) */
  .tgbtn{display:inline-flex;align-items:center;justify-content:center;text-decoration:none;color:inherit;}
  .tgbtn:hover{color:#2AABEE;}
  .tgbtn.pulse{color:#2AABEE;animation:tgpulse 1.6s ease-in-out 3;}
  @keyframes tgpulse{0%,100%{box-shadow:0 0 0 0 rgba(42,171,238,0)}50%{box-shadow:0 0 0 6px rgba(42,171,238,.22)}}
  /* облачко-подсказка про канал: показывается один раз, указывает хвостиком на иконку */
  .tgpop{position:fixed;z-index:60;width:270px;background:var(--panel);border:1px solid var(--line);border-radius:12px;
    padding:12px 14px;box-shadow:0 14px 34px rgba(0,0,0,.28);display:none;}
  .tgpop.on{display:block;animation:tgpopIn .22s ease-out;}
  @keyframes tgpopIn{from{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:none}}
  .tgpop:before{content:'';position:absolute;top:-7px;right:16px;width:12px;height:12px;background:var(--panel);
    border-left:1px solid var(--line);border-top:1px solid var(--line);transform:rotate(45deg);}
  .tgpop .h{font-weight:800;font-size:13.5px;margin-bottom:4px;}
  .tgpop .t{font-size:12.5px;color:var(--muted);line-height:1.45;margin-bottom:10px;}
  .tgpop .row{display:flex;gap:8px;align-items:center;}
  .tgpop .go{flex:1;background:#2AABEE;color:#fff;border:0;border-radius:9px;padding:8px 10px;font-weight:700;
    font-size:12.5px;cursor:pointer;text-align:center;text-decoration:none;}
  .tgpop .go:hover{filter:brightness(1.06);}
  .tgpop .no{background:transparent;border:0;color:var(--muted);font-size:12.5px;cursor:pointer;padding:8px 6px;}
  .tgpop .no:hover{color:var(--ink);}
  @media(max-width:600px){ .tgpop{width:auto;left:12px;right:12px;} }
  /* меню пользователя */
  .usr{position:relative;flex:none;}
  .usr-btn{display:inline-flex;align-items:center;gap:8px;background:var(--panel2);border:1px solid var(--line);border-radius:10px;padding:6px 11px;font:inherit;font-size:13px;font-weight:700;color:var(--ink);cursor:pointer;transition:border-color .15s;}
  .usr-btn:hover,.usr.open .usr-btn{border-color:var(--accent);}
  .usr-btn .av{width:24px;height:24px;border-radius:50%;background:var(--accent);color:#03231f;display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:800;flex:none;}
  .usr-btn .av.gr{background:transparent;color:var(--muted);font-size:15px;}
  .usr-btn .unm{max-width:130px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
  .usr-btn .car{color:var(--muted);font-size:10px;transition:transform .15s;}
  .usr.open .usr-btn .car{transform:rotate(180deg);}
  .usr-menu{position:absolute;right:0;top:calc(100% + 8px);min-width:210px;background:var(--panel);border:1px solid var(--line);border-radius:12px;box-shadow:0 14px 40px rgba(0,0,0,.4);padding:6px;display:none;flex-direction:column;gap:1px;z-index:200;}
  .usr.open .usr-menu{display:flex;}
  .usr-menu a,.usr-menu button{display:flex;align-items:center;gap:10px;width:100%;text-align:left;background:none;border:none;color:var(--ink);font:inherit;font-size:13px;font-weight:600;padding:10px 12px;border-radius:8px;cursor:pointer;text-decoration:none;transition:background .12s,color .12s;}
  .usr-menu a:hover,.usr-menu button:hover{background:var(--panel2);color:var(--accent);}
  .usr-menu .sep{height:1px;background:var(--line);margin:5px 4px;}
  .usr-menu .exit{color:#ff8b8b;}
  .usr-menu .exit:hover{color:#ff8b8b;background:rgba(255,139,139,.1);}
  .usr-menu .enter{background:var(--accent);color:#03231f;font-weight:800;justify-content:center;margin-top:2px;}
  .usr-menu .enter:hover{filter:brightness(1.06);background:var(--accent);color:#03231f;}
  .dgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:16px;overflow:auto;padding:2px;align-content:start;grid-auto-rows:max-content;}
  .dcard{position:relative;background:var(--panel2);border:1px solid var(--line);border-radius:12px;overflow:hidden;}
  .dcard .daibadge{position:absolute;top:6px;left:6px;font-size:10px;font-weight:700;background:rgba(0,169,155,.92);color:#fff;padding:2px 7px;border-radius:20px;}
  .dcard img{width:100%;height:auto;display:block;background:#0d111a;aspect-ratio:1/1;object-fit:cover;}
  .dcard .dnm{padding:9px 11px;font-size:13px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
  .dcard .drow{display:flex;gap:6px;padding:0 11px 11px;}
  .dcard .drow button{flex:1;background:var(--panel);border:1px solid var(--line);color:var(--ink);font:inherit;font-size:12px;font-weight:600;padding:7px;border-radius:7px;cursor:pointer;}
  .dcard .drow button:hover{border-color:var(--accent);}
  .dcard .drow .del{color:#ff8b8b;}
  .dcard .drow .pub.on{border-color:var(--accent);color:var(--accent);}
  /* карточка галереи + звёзды */
  .gcard-item{position:relative;background:var(--panel2);border:1px solid var(--line);border-radius:12px;overflow:hidden;display:flex;flex-direction:column;}
  .gcard-item>img{width:100%;aspect-ratio:1/1;object-fit:cover;background:#0d111a;display:block;}
  .gcard-item .gnm{padding:9px 11px 1px;font-size:13px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
  .gcard-item .gauth{padding:0 11px 2px;font-size:11px;color:var(--muted);}
  .gstars{display:flex;align-items:center;gap:2px;padding:5px 11px 4px;}
  .gstars .st{font-size:18px;line-height:1;color:var(--line);cursor:pointer;transition:color .1s;}
  .gstars .st.on{color:#f2b01e;}
  .gstars .st:not(.ro):hover{color:#f2b01e;}
  .gstars .gcnt{font-size:11px;color:var(--muted);margin-left:7px;}
  .gcard-item .grow{display:flex;gap:6px;padding:4px 11px 11px;}
  .gcard-item .grow button{flex:1;background:var(--panel);border:1px solid var(--line);color:var(--ink);font:inherit;font-size:12px;font-weight:600;padding:7px;border-radius:7px;cursor:pointer;}
  .gcard-item .grow button:hover{border-color:var(--accent);}
  .gcard-item .voonly{flex:1;text-align:center;font-size:12px;font-weight:600;color:var(--muted);background:var(--panel);border:1px dashed var(--line);border-radius:7px;padding:7px;}
  .vorow{display:flex;align-items:center;gap:7px;padding:2px 11px 11px;font-size:12px;color:var(--muted);cursor:pointer;user-select:none;}
  .vorow input{accent-color:var(--accent);cursor:pointer;}
  .btn{border:1px solid transparent;border-radius:10px;padding:8px 13px;font:inherit;font-size:13px;font-weight:700;cursor:pointer;display:inline-flex;align-items:center;gap:7px;justify-content:center;line-height:1;white-space:nowrap;transition:border-color .15s,background .15s,color .15s,transform .05s,filter .15s;}
  .btn:active{transform:translateY(1px);}
  .btn-accent{background:var(--accent);color:#03231f;box-shadow:0 2px 10px rgba(0,169,155,.28);}
  .btn-accent:hover{filter:brightness(1.06);}
  .btn-ghost{background:var(--panel2);color:var(--ink);border-color:var(--line);}
  .btn-ghost:hover{border-color:var(--accent);color:var(--accent);}
  .btn.on{background:var(--accent);color:#03231f;border-color:var(--accent);}
  .wrap{display:grid;grid-template-columns:340px 1fr;grid-template-rows:1fr;height:calc(100vh - 53px);}
  .panel{background:var(--panel);border-right:1px solid var(--line);overflow-y:auto;padding:16px 16px 60px;min-height:0;}
  .stage{position:relative;min-height:0;overflow:hidden;background:radial-gradient(120% 90% at 50% 8%,var(--stage1),var(--stage2));}
  #stageBox{position:absolute;inset:0;}
  #stageBox canvas{display:block;width:100%;height:100%;}
  .loading{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:14px;color:var(--muted);z-index:5;}
  .spin{width:38px;height:38px;border:3px solid var(--line);border-top-color:var(--accent);border-radius:50%;animation:sp 0.9s linear infinite;}
  @keyframes sp{to{transform:rotate(360deg)}}
  .sec{margin-bottom:16px;}
  .sec>.lbl{font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);font-weight:700;margin-bottom:9px;}
  #patSec{background:var(--softbg);border:1px solid var(--line);border-radius:12px;padding:14px 12px;}
  #patSec>#patTitle{color:var(--accent);}
  .zones{display:flex;flex-direction:column;gap:6px;}
  .zrow{display:flex;align-items:center;gap:10px;background:var(--panel2);border:1px solid var(--line);border-radius:9px;padding:8px 10px;}
  .zrow .zn{flex:1;font-size:13px;font-weight:600;}
  .sw{width:32px;height:32px;border-radius:7px;border:1px solid var(--chipbd);overflow:hidden;flex-shrink:0;}
  .sw input{-webkit-appearance:none;appearance:none;width:100%;height:100%;border:none;padding:0;margin:0;cursor:pointer;background:none;}
  .sw input::-webkit-color-swatch-wrapper{padding:0;}
  .sw input::-webkit-color-swatch{border:none;}
  .sw input::-moz-color-swatch{border:none;}
  .lchip{width:20px;height:20px;border-radius:5px;border:1px solid var(--chipbd);flex-shrink:0;display:flex;align-items:center;justify-content:center;font-size:11px;}
  .presets{display:flex;gap:7px;flex-wrap:wrap;}
  .preset{width:34px;height:34px;border-radius:8px;cursor:pointer;border:1px solid rgba(255,255,255,.14);overflow:hidden;display:flex;}
  .preset span{flex:1;}
  .hint{font-size:11.5px;color:var(--muted);line-height:1.5;}
  .patHint{font-size:12px;color:var(--muted);line-height:1.5;background:var(--panel2);border:1px dashed var(--line);border-radius:9px;padding:11px 12px;}
  .viewbtns{position:absolute;top:12px;left:50%;transform:translateX(-50%);display:flex;gap:6px;background:var(--viewbg);border:1px solid var(--line);border-radius:10px;padding:4px;z-index:10;}
  .viewbtns button{border:none;background:none;color:var(--muted);font:inherit;font-weight:700;font-size:12px;padding:7px 13px;border-radius:7px;cursor:pointer;transition:.12s;}
  .viewbtns button:hover{color:var(--ink);}
  .viewbtns button.on{background:var(--accent);color:#03231f;}
  .viewbtns .vsep{width:1px;align-self:stretch;background:var(--line);margin:2px 3px;}
  .viewbtns button.hist{font-size:17px;line-height:1;padding:5px 11px;}
  /* обучающая подсказка при первом входе */
  .onboard{position:absolute;inset:0;z-index:30;display:flex;align-items:center;justify-content:center;background:rgba(10,15,25,.55);backdrop-filter:blur(2px);padding:20px;}
  .onboard-card{background:var(--panel);border:1px solid var(--line);border-radius:16px;padding:22px 24px;max-width:430px;width:100%;box-shadow:0 24px 60px rgba(0,0,0,.5);}
  .ob-h{font-size:18px;font-weight:800;margin-bottom:16px;color:var(--ink);}
  .ob-list{list-style:none;margin:0 0 18px;padding:0;display:flex;flex-direction:column;gap:13px;}
  .ob-list li{display:flex;gap:12px;align-items:flex-start;font-size:14px;color:var(--ink);line-height:1.45;}
  .ob-ic{font-size:20px;flex:none;width:26px;text-align:center;}
  .ob-list b{font-weight:700;}
  .viewbtns button:disabled{opacity:.3;cursor:default;}
  .viewbtns button:disabled:hover{color:var(--muted);}
  /* правый блок экспорта поверх сцены */
  .exportbar{position:absolute;top:12px;right:14px;display:flex;flex-direction:column;align-items:stretch;gap:6px;z-index:10;}
  .exportbar .btn{font-size:11px;padding:6px 10px;justify-content:flex-start;box-shadow:0 3px 12px rgba(0,0,0,.22);}
  /* всплывающая подсказка */
  .toast{position:fixed;top:66px;left:50%;transform:translateX(-50%) translateY(-8px);background:var(--panel);border:1px solid var(--accent);color:var(--ink);padding:11px 18px;border-radius:11px;font-size:13px;font-weight:600;box-shadow:0 12px 34px rgba(0,0,0,.4);z-index:9999;opacity:0;pointer-events:none;transition:opacity .2s,transform .2s;max-width:92vw;text-align:center;}
  .toast.show{opacity:1;transform:translateX(-50%) translateY(0);}
  /* слои */
  .llist{display:flex;flex-direction:column;gap:5px;}
  .lrow{display:flex;align-items:center;gap:7px;background:var(--panel2);border:1.5px solid var(--line);border-radius:9px;padding:7px 9px;cursor:pointer;transition:border-color .12s;}
  .lrow.sel{border-color:var(--accent);}
  .lrow .lname{flex:1;font-size:12.5px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
  .lrow .ic{width:22px;height:24px;display:flex;align-items:center;justify-content:center;border-radius:6px;font-size:13px;color:var(--muted);flex-shrink:0;}
  .lrow .ic:hover{background:var(--ichover);color:var(--ink);}
  .parts{display:flex;gap:6px;}
  .pbtn{flex:1;background:var(--panel2);border:1px solid var(--line);border-radius:10px;padding:11px 4px;cursor:pointer;display:flex;flex-direction:column;align-items:center;gap:6px;color:var(--muted);font-weight:700;font-size:11.5px;transition:.12s;}
  .pbtn svg{width:24px;height:24px;fill:currentColor;}
  .pbtn:hover{color:var(--ink);border-color:var(--hover);}
  .pbtn.on{color:var(--accent);border-color:var(--accent);background:rgba(0,169,155,.08);}
  .trow{display:flex;align-items:center;gap:10px;background:var(--panel2);border:1px solid var(--line);border-radius:9px;padding:10px 12px;cursor:pointer;margin-bottom:6px;transition:border-color .12s;}
  .trow:hover{border-color:var(--hover);}
  .trow.sel{border-color:var(--accent);}
  .trow .tn{flex:1;font-size:13px;font-weight:600;}
  .trow .chip{width:26px;height:20px;border-radius:5px;border:1px solid var(--chipbd);flex-shrink:0;}
  .trow .chip-off{font-size:10px;color:var(--muted);font-weight:700;text-transform:uppercase;}
  .trow .tcar{color:var(--muted);font-size:11px;width:12px;text-align:center;}
  .shrow{display:flex;gap:9px;flex-wrap:nowrap;}
  .tglrow{display:flex;align-items:center;gap:5px;cursor:pointer;}
  .tgl{width:30px;height:17px;border-radius:17px;background:var(--tglbg);position:relative;transition:.15s;flex-shrink:0;}
  .tgl i{position:absolute;top:2px;left:2px;width:13px;height:13px;border-radius:50%;background:var(--tglknob);transition:.15s;}
  .tgl.on{background:var(--accent);}
  .tgl.on i{left:15px;background:#fff;}
  .tgl-l{font-size:11px;font-weight:600;color:var(--ink);white-space:nowrap;}
  .tabs.tabnarrow{display:inline-flex;width:auto;}
  .tabs.tabnarrow .tab{flex:none;padding:7px 15px;}
  /* цветовой попап */
  .cbtn{width:32px;height:32px;border-radius:7px;border:1px solid var(--chipbd);cursor:pointer;padding:0;flex-shrink:0;}
  .cpop{position:fixed;z-index:200;background:var(--panel);border:1px solid var(--line);border-radius:11px;padding:12px;box-shadow:0 14px 36px rgba(0,0,0,.42);display:none;width:238px;}
  .cpop.open{display:block;}
  .cpop .clbl{font-size:10px;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);font-weight:700;margin:0 0 6px;}
  .cpop .cprow{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:11px;}
  .cpop .csw{width:24px;height:24px;border-radius:6px;border:1px solid var(--chipbd);cursor:pointer;transition:transform .1s;}
  .cpop .csw:hover{transform:scale(1.12);}
  .cpop .cpsearch{width:100%;background:var(--panel2);border:1px solid var(--line);border-radius:8px;color:var(--ink);font:inherit;font-size:12px;padding:7px 9px;margin-bottom:8px;}
  .cpop .cpsearch:focus{outline:none;border-color:var(--accent);}
  .cpop .cppreset{display:grid;grid-template-columns:1fr 1fr;gap:5px;max-height:188px;overflow-y:auto;margin-bottom:11px;padding-right:2px;}
  .cpop .cpt{border:1px solid var(--chipbd);border-radius:6px;padding:5px 5px;font-size:9.5px;font-weight:700;line-height:1.12;cursor:pointer;text-align:center;min-height:34px;display:flex;align-items:center;justify-content:center;overflow:hidden;transition:transform .1s;}
  .cpop .cpt:hover{transform:scale(1.05);}
  .cpop .cswpick{width:24px;height:24px;border-radius:6px;border:1px dashed var(--line);background:var(--panel2);color:var(--ink);cursor:pointer;font-size:13px;line-height:1;padding:0;}
  .cpop .cswpick:hover{border-color:var(--accent);color:var(--accent);}
  .cppick{position:fixed;inset:0;z-index:400;background:rgba(8,12,20,.72);display:none;align-items:center;justify-content:center;padding:20px;}
  .cppick.open{display:flex;}
  .cppick-box{background:var(--panel);border:1px solid var(--line);border-radius:14px;padding:14px;max-width:min(780px,96vw);max-height:92vh;overflow:auto;}
  .cppick-top{display:flex;align-items:center;gap:10px;margin-bottom:10px;}
  .cppick-sw{width:30px;height:30px;border-radius:8px;border:1px solid var(--chipbd);flex:none;}
  .cppick-hex{font-size:13px;font-weight:700;color:var(--ink);font-family:'SF Mono',Menlo,monospace;}
  .cppick-tabs{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:8px;}
  .cppick-th{width:38px;height:38px;border-radius:8px;border:1px solid var(--line);background-color:#2a3346;background-size:contain;background-position:center;background-repeat:no-repeat;cursor:pointer;}
  .cppick-th.on{border-color:var(--accent);}
  .cppick-cv{display:block;max-width:100%;cursor:crosshair;border-radius:10px;touch-action:none;background-color:#fff;background-image:linear-gradient(45deg,#e6e9ef 25%,transparent 25%),linear-gradient(-45deg,#e6e9ef 25%,transparent 25%),linear-gradient(45deg,transparent 75%,#e6e9ef 75%),linear-gradient(-45deg,transparent 75%,#e6e9ef 75%);background-size:16px 16px;background-position:0 0,0 8px,8px -8px,-8px 0;}
  .cppick-hint{font-size:11.5px;color:var(--muted);margin-top:8px;line-height:1.45;}
  .cpop .cnat{display:flex;align-items:center;gap:9px;}
  .cpop .cnat input[type=color]{width:36px;height:32px;border:1px solid var(--line);border-radius:7px;background:none;cursor:pointer;padding:2px;}
  .cpop .cnat span{font-size:12.5px;font-weight:600;color:var(--ink);}
  .lrow.dragging{opacity:.4;}
  .lrow[draggable=true]{cursor:grab;}
  .lrow[draggable=true]:active{cursor:grabbing;}
  .grip{width:9px;height:17px;flex-shrink:0;align-self:center;opacity:.5;color:var(--muted);cursor:grab;
    background-image:radial-gradient(currentColor 1.1px,transparent 1.4px);background-size:4.5px 4.5px;background-position:center;}
  .lrow.sel .grip,.lrow:hover .grip{opacity:.8;}
  /* линия-индикатор места вставки при перетаскивании */
  .lrow.drop-above{box-shadow:0 -3px 0 var(--accent);}
  .lrow.drop-below{box-shadow:0 3px 0 var(--accent);}
  .fsel{width:100%;background:var(--panel);border:1px solid var(--line);border-radius:8px;color:var(--ink);font:inherit;font-weight:600;padding:8px 10px;cursor:pointer;}
  .fpick{width:100%;display:flex;align-items:center;justify-content:space-between;gap:8px;background:var(--panel);border:1px solid var(--line);border-radius:8px;color:var(--ink);padding:9px 12px;cursor:pointer;font-size:15px;}
  .fpick:hover{border-color:var(--accent);}
  .fpick .fpc{color:var(--muted);font-size:12px;}
  .fmodal{position:fixed;inset:0;background:var(--modalbg);z-index:120;display:flex;align-items:center;justify-content:center;padding:20px;}
  /* предпросмотр дизайна из галереи */
  .gprev{position:fixed;inset:0;background:rgba(6,10,18,.82);z-index:140;display:flex;align-items:center;justify-content:center;padding:20px;backdrop-filter:blur(3px);}
  .gprev-box{position:relative;background:var(--panel);border:1px solid var(--line);border-radius:16px;max-width:560px;width:100%;box-shadow:0 24px 60px rgba(0,0,0,.55);overflow:hidden;}
  .gprev-x{position:absolute;top:10px;right:12px;z-index:2;background:rgba(6,10,18,.5);border-radius:8px;width:30px;height:30px;display:flex;align-items:center;justify-content:center;color:#fff;}
  .gprev-img{background:radial-gradient(120% 120% at 50% 12%,#17253d,#0b1320 60%,#060a12);display:grid;place-items:center;}
  .gprev-img img{width:100%;max-height:60vh;object-fit:contain;display:block;}
  .gprev-info{padding:16px 18px 18px;}
  .gprev-nm{font-size:17px;font-weight:800;}
  .gprev-au{font-size:13px;color:var(--muted);margin-top:3px;}
  .gprev-st{margin-top:8px;font-size:13px;color:var(--muted);}
  .gprev-st .st{color:#3a4658;font-size:16px;}.gprev-st .st.on{color:#f2b01e;}
  .gcard-item>img{cursor:zoom-in;}
  /* панель живого 3D-предпросмотра из галереи */
  .previewbar{position:absolute;bottom:16px;left:50%;transform:translateX(-50%);z-index:15;display:flex;align-items:center;gap:8px;
    background:var(--viewbg);border:1px solid var(--line);border-radius:12px;padding:8px 10px;box-shadow:0 10px 30px rgba(0,0,0,.4);max-width:94%;flex-wrap:wrap;justify-content:center;}
  .previewbar .pv-lbl{font-size:12.5px;color:var(--ink);font-weight:600;padding:0 4px;}
  .previewbar .btn{font-size:12.5px;padding:8px 13px;}
  .fmbox{background:var(--bg);border:1px solid var(--line);width:min(1180px,95vw);max-height:88vh;display:flex;flex-direction:column;border-radius:16px;padding:20px 22px;box-shadow:0 20px 60px rgba(0,0,0,.5);}
  .fmhead{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px;}
  .fmhead b{font-size:16px;}
  .fmx{cursor:pointer;font-size:20px;color:var(--muted);line-height:1;padding:2px 6px;}
  .fmx:hover{color:var(--ink);}
  .fmbar{display:flex;align-items:center;gap:18px;margin-bottom:16px;flex-wrap:wrap;}
  /* фото → графика */
  .ptdrop{border:1.5px dashed var(--line);border-radius:14px;padding:38px 22px;text-align:center;cursor:pointer;background:var(--softbg);}
  .ptdrop:hover{border-color:var(--accent);}
  .ptwrap{display:grid;grid-template-columns:1fr 1fr;gap:14px;}
  @media(max-width:720px){.ptwrap{grid-template-columns:1fr;}}
  .ptpane{min-width:0;}
  .ptlbl{font-size:11.5px;color:var(--muted);margin-bottom:5px;font-weight:600;}
  .ptview{background:var(--panel2);border:1px solid var(--line);border-radius:12px;height:300px;display:flex;align-items:center;justify-content:center;overflow:hidden;}
  .ptview img,.ptview canvas{max-width:100%;max-height:100%;object-fit:contain;display:block;}
  /* шахматка — чтобы была видна прозрачность будущего принта */
  .ptchk{background-color:#20283a;background-image:linear-gradient(45deg,#2a3346 25%,transparent 25%),linear-gradient(-45deg,#2a3346 25%,transparent 25%),linear-gradient(45deg,transparent 75%,#2a3346 75%),linear-gradient(-45deg,transparent 75%,#2a3346 75%);background-size:16px 16px;background-position:0 0,0 8px,8px -8px,-8px 0;}
  .ptrow{display:flex;align-items:center;gap:10px;margin-top:10px;flex-wrap:wrap;}
  .ptcap{font-size:11.5px;color:var(--muted);font-weight:600;white-space:nowrap;}
  .ptrow input[type=range]{flex:1;min-width:90px;}
  .ptseg{background:var(--panel2);border:1px solid var(--line);color:var(--ink);border-radius:8px;padding:6px 13px;font-size:12.5px;font-weight:600;cursor:pointer;}
  .ptseg.on{background:var(--accent);border-color:var(--accent);color:#fff;}
  .ptchk2{font-size:12px;color:var(--ink);display:flex;align-items:center;gap:7px;cursor:pointer;}
  .ptchk2 input{width:auto;margin:0;}
  .fmfilter{width:230px;padding:9px 12px;border-radius:8px;border:1px solid var(--line);background:var(--panel);color:var(--ink);font:inherit;}
  .fmtabs{display:flex;gap:16px;}
  .fmtab{cursor:pointer;font-size:13.5px;font-weight:600;color:var(--muted);padding-bottom:4px;border-bottom:2px solid transparent;}
  .fmtab.on{color:var(--ink);border-bottom-color:var(--accent);}
  .fmup{margin-left:auto;}
  .fgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:16px;overflow:auto;padding:2px;align-content:start;grid-auto-rows:max-content;}
  .fcard{border:1px solid #e3e6ea;border-radius:10px;padding:20px 14px 12px;cursor:pointer;text-align:center;background:#fff;transition:.12s;}
  .fcard:hover{border-color:var(--accent);}
  .fcard.on{border-color:var(--accent);box-shadow:0 0 0 2px var(--accent);}
  .fcard .fprev{font-size:34px;line-height:1;color:#111;overflow:hidden;white-space:nowrap;letter-spacing:.02em;}
  .fcard .fnm{margin-top:14px;font-size:12.5px;color:#555;font-weight:600;}
  .gcard{padding:0;overflow:hidden;}
  .gcard canvas,.gcard img{width:100%;height:auto;display:block;background:#fff;}
  .gcard .fnm{margin:0;padding:9px 6px;}
  .lcard{position:relative;padding:0;overflow:hidden;background:#fff;display:flex;flex-direction:column;}
  .lcard .limg{width:100%;aspect-ratio:1.5/1;object-fit:contain;background:#f3f5f8;padding:14px;display:block;}
  .lcard .lmeta{display:flex;align-items:center;justify-content:space-between;padding:6px 9px;font-size:11px;color:#555;gap:6px;}
  .lcard .lup{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
  .lcard .ltag{font-size:9px;font-weight:700;text-transform:uppercase;padding:1px 6px;border-radius:20px;background:#eef1f6;color:#5c6875;flex-shrink:0;}
  .lcard .ldel{position:absolute;top:5px;right:5px;width:23px;height:23px;border-radius:6px;border:none;background:rgba(224,45,45,.92);color:#fff;font-size:13px;cursor:pointer;display:flex;align-items:center;justify-content:center;line-height:1;}
  .lcard .ldel:hover{background:#e02d2d;}
  .recents{display:flex;align-items:center;gap:5px;flex-wrap:wrap;margin-top:8px;}
  .recents .rlbl{font-size:10px;color:var(--muted);font-weight:700;text-transform:uppercase;margin-right:2px;}
  .rsw{width:20px;height:20px;border-radius:5px;border:1px solid var(--chipbd);cursor:pointer;transition:transform .1s;}
  .rsw:hover{transform:scale(1.12);}
  .addrow{display:grid;grid-template-columns:1fr 1fr;gap:6px;}
  .addrow .btn{font-size:12px;padding:8px 6px;}
  .params{margin:2px 0 4px;background:var(--params);border:1px solid var(--line);border-radius:10px;padding:11px;}
  .params .lbl{font-size:10px;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);font-weight:700;margin-bottom:7px;}
  .pats{display:grid;grid-template-columns:repeat(3,1fr);gap:6px;}
  .pat{background:var(--panel);border:1.5px solid var(--line);border-radius:8px;padding:5px 4px 4px;cursor:pointer;text-align:center;transition:border-color .12s;}
  .pat:hover{border-color:var(--hover);}
  .pat.on{border-color:var(--accent);}
  .pat img{width:100%;height:44px;border-radius:4px;display:block;}
  .pat .pn{font-size:9px;color:var(--muted);margin-top:3px;line-height:1.1;font-weight:600;}
  .pat.on .pn{color:var(--ink);}
  .row2{display:flex;gap:8px;}
  .fld{flex:1;}
  .fld label{display:block;font-size:10px;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);font-weight:700;margin-bottom:4px;}
  .fld input[type=text]{width:100%;background:var(--panel);border:1px solid var(--line);border-radius:8px;color:var(--ink);font:inherit;font-weight:600;padding:8px 10px;}
  .cnt{display:flex;align-items:center;gap:10px;background:var(--panel);border:1px solid var(--line);border-radius:9px;padding:7px 11px;margin-top:8px;}
  .cnt label{flex:1;min-width:0;font-size:12px;font-weight:600;}
  .cnt input[type=range]{flex:1.4;min-width:0;width:0;accent-color:var(--accent);}
  .cnt b{width:26px;text-align:center;font-size:13px;}
  .cnt input.nval{width:42px;flex:none;background:var(--panel2);border:1px solid var(--line);border-radius:6px;color:var(--ink);font:inherit;font-size:12px;font-weight:600;padding:4px 1px;text-align:center;-moz-appearance:textfield;}
  .cnt input.nval::-webkit-outer-spin-button,.cnt input.nval::-webkit-inner-spin-button{-webkit-appearance:none;margin:0;}
  .cnt input.nval:focus{outline:none;border-color:var(--accent);}
  .tabs{display:flex;gap:5px;background:var(--panel);border:1px solid var(--line);border-radius:9px;padding:4px;margin-bottom:8px;}
  .tabs .tab{flex:1;border:none;background:none;color:var(--muted);font:inherit;font-weight:700;font-size:12px;padding:8px 5px;border-radius:6px;cursor:pointer;}
  .tabs .tab.on{background:var(--accent);color:#03231f;}
  /* Ноутбучные экраны (1024–1200): панель 340px забирала треть ширины, а кнопки видов
     переставали помещаться в строку и «Обзор» уезжал на вторую. Сужаем панель и поджимаем кнопки —
     на экранах шире 1200px ничего не меняется. */
  @media(min-width:821px) and (max-width:1200px){
    .wrap{grid-template-columns:292px 1fr;}
    .panel{padding:14px 12px 60px;}
    .viewbtns{gap:3px;padding:3px;}
    .viewbtns button{font-size:11px;padding:6px 9px;}
    .exportbar button{font-size:11.5px;padding:7px 10px;}
  }
  @media(max-width:820px){
    html,body{overflow:auto;overflow-x:hidden;height:auto;-webkit-overflow-scrolling:touch;}
    /* шапка: лого без подписи + центральные кнопки только эмодзи, чтобы всё влезло в один ряд */
    .top{padding:8px 12px;gap:6px;}
    .top .brand{flex:0 0 auto;}
    .top .brand small{display:none;}
    .top .brand .blogo{height:32px;}
    .top .center{flex:1;justify-content:center;gap:6px;}
    .top .center .btn{padding:8px 11px;font-size:16px;line-height:1;}
    .top .center .btn .t{display:none;}
    .top .right{flex:0 0 auto;gap:6px;}
    .top .right .usr-btn .unm{max-width:0;padding:0;margin:0;overflow:hidden;}
    .wrap{grid-template-columns:1fr;grid-template-rows:none;height:auto;}
    .panel{border-right:none;border-bottom:1px solid var(--line);order:2;overflow:visible;min-height:0;padding-bottom:40px;}
    .stage{order:1;height:56vh;touch-action:none;}
    .viewbtns{top:8px;padding:3px;gap:3px;max-width:96%;}
    /* на телефоне колонка кнопок экспорта наезжала на переключатель видов и закрывала «Обзор» —
       опускаем её под него и поджимаем, чтобы не отъедала сцену */
    .exportbar{top:52px;right:8px;gap:4px;}
    .exportbar .btn{font-size:10.5px;padding:5px 8px;}
    #viewTabs{display:flex;gap:3px;}
    .viewbtns button{padding:6px 9px;font-size:11px;}
  }
