/* Визуализатор покрытий на портале: стиль v18 (design/visualizer/v18/style.css) внутри .viz-app.
   Файл собирает scripts/build_visualizer.py, руками не править. */
.viz-app{--red:#D24A43; --action:#BD423C; --action-h:#A53732; --ink:#151515; --ink-2:#1D1D1D; --ink-3:#282828; --line:#383838; --line-2:#4A4A4A; --line-3:#6A6A6A; --text:#FFFFFF; --text-2:#C9C9C9; --text-3:#A5A5A5; --text-4:#7A7A7A; --glass:rgba(21,21,21,.78); --ease:cubic-bezier(.22,1,.36,1); color-scheme:dark}
.viz-app{background:var(--ink);color:var(--text); font-family:Inter,system-ui,-apple-system,'Segoe UI',Roboto,Arial,sans-serif; font-size:14px;line-height:20px;-webkit-font-smoothing:antialiased;;font-synthesis:none}
.viz-app button,.viz-app input{font:inherit;color:inherit}
.viz-app button{cursor:pointer}
.viz-app ::selection{background:var(--red);color:#fff}
.viz-app :focus-visible{outline:2px solid var(--red);outline-offset:3px}
.viz-app{display:grid;grid-template-columns:360px minmax(0,1fr);height:calc(100vh - 86px);height:calc(100dvh - 86px);min-height:560px}
.viz-app .side{background:var(--ink);border-right:1px solid var(--line);display:flex;flex-direction:column;min-height:0;min-width:0}
.viz-app .side-head{padding:22px 28px 20px;border-bottom:1px solid var(--line)}
.viz-app .brand{display:flex;align-items:center;gap:8px;min-width:0}
.viz-app .brand img{height:20px;width:auto;display:block}
.viz-app .brand-caption{display:block;margin-top:6px;font-size:10px;line-height:12px;letter-spacing:.04em;color:#BDBDBD}
.viz-app .side-title{margin:18px 0 0;font-size:22px;line-height:26px;font-weight:500;letter-spacing:-.03em}
.viz-app .side-lead{margin:6px 0 0;font-size:12px;line-height:17px;color:var(--text-3)}
.viz-app .side-scroll{flex:1;min-height:0;overflow:auto;padding:4px 28px 8px;scrollbar-width:thin;scrollbar-color:var(--line-2) transparent}
.viz-app .sec{padding:18px 0 20px;border-bottom:1px solid var(--line)}
.viz-app .sec:last-child{border-bottom:0}
.viz-app .lab{display:flex;align-items:baseline;justify-content:space-between;gap:12px;margin:0 0 12px; font-size:11px;line-height:16px;font-weight:500;letter-spacing:.105em;text-transform:uppercase;color:var(--text-3)}
.viz-app .lab .num{color:var(--text-4);margin-right:10px;letter-spacing:.04em}
.viz-app .lab .val{font-size:12px;font-weight:400;letter-spacing:0;text-transform:none;color:var(--text);text-align:right;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.viz-app .sub{margin:14px 0 8px;font-size:12px;line-height:16px;color:var(--text-3)}
.viz-app .note{margin:10px 0 0;font-size:12px;line-height:17px;color:var(--text-3)}
.viz-app .row{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.viz-app .grid3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}
.viz-app .sgroup{margin:14px 0 8px;font-size:12px;line-height:16px;color:var(--text-3)}
.viz-app .sgroup:first-child{margin-top:0}
.viz-app .chip{min-height:38px;padding:0 14px;border:1px solid var(--line-2);border-radius:100px;background:transparent;color:var(--text); font-size:13.5px;line-height:1.2;font-weight:400;display:inline-flex;align-items:center;justify-content:center;gap:8px; white-space:nowrap;transition:background .25s,color .25s,border-color .25s,opacity .25s;min-width:0}
.viz-app .grid3 .chip{padding:0 8px}
.viz-app .chip:hover{border-color:var(--text)}
.viz-app .chip:active{transform:scale(.97)}
.viz-app .chip[aria-pressed="true"]{background:var(--text);border-color:var(--text);color:var(--ink)}
.viz-app .chip.sm{min-height:30px;padding:0 12px;font-size:12px}
.viz-app .chip[disabled]{opacity:.38;cursor:default}
.viz-app .link,.viz-app .tbtn{background:linear-gradient(currentColor,currentColor) no-repeat 0 100%/0 1px;border:0;border-bottom:1px solid #737373;border-radius:0; padding:8px 0;font-size:13.5px;line-height:18px;color:var(--text-2);transition:background-size .5s var(--ease),border-color .3s,color .3s}
.viz-app .link:hover,.viz-app .tbtn:hover{color:var(--text);border-color:var(--text);background-size:100% 1px}
.viz-app .tbtn{padding:10px 0;font-size:14px;color:var(--text);white-space:nowrap}
.viz-app .tbtn[disabled]{opacity:.45;cursor:default}
.viz-app .links{display:flex;flex-wrap:wrap;gap:6px 22px;margin-top:14px}
.viz-app .swatches{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:8px}
.viz-app .sw{aspect-ratio:1;width:100%;padding:0;border-radius:4px;border:1px solid rgba(255,255,255,.14); transition:box-shadow .2s,transform .2s var(--ease)}
.viz-app .sw:hover{transform:translateY(-1px)}
.viz-app .sw[aria-pressed="true"]{box-shadow:0 0 0 2px var(--ink),0 0 0 3px var(--text)}
.viz-app .sw.custom{position:relative;overflow:hidden;background:conic-gradient(from 90deg,#D24A43,#F0CA00,#57A639,#2271B3,#8C4FA8,#D24A43)}
.viz-app .sw.custom input{position:absolute;inset:0;opacity:0;width:100%;height:100%;cursor:pointer;border:0;padding:0}
.viz-app .pal{display:flex;gap:8px;margin-top:8px}
.viz-app .pal .sw{width:34px;flex:0 0 34px}
.viz-app .slider{display:flex;flex-direction:column;gap:10px}
.viz-app .slider .t{display:flex;justify-content:space-between;gap:12px;font-size:12px;color:var(--text-2);font-variant-numeric:tabular-nums}
.viz-app input[type=range]{-webkit-appearance:none;appearance:none;width:100%;height:2px;margin:8px 0;border-radius:2px;outline:none; background:linear-gradient(var(--text),var(--text)) 0/var(--p,0%) 100% no-repeat,var(--line-2)}
.viz-app input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;width:16px;height:16px;border-radius:50%;background:var(--text);border:0;cursor:pointer}
.viz-app input[type=range]::-moz-range-thumb{width:16px;height:16px;border:0;border-radius:50%;background:var(--text);cursor:pointer}
.viz-app input[type=range]:focus-visible{outline:2px solid var(--red);outline-offset:6px}
.viz-app .scale{display:flex;justify-content:space-between;font-size:11px;color:var(--text-4)}
.viz-app .side-foot{padding:16px 28px 18px;border-top:1px solid var(--line);display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:10px 16px}
.viz-app .btn{position:relative;overflow:hidden;isolation:isolate;min-height:50px;padding:0 22px;border-radius:100px;font-size:14.5px;font-weight:500;line-height:1.3; display:inline-flex;align-items:center;justify-content:center;gap:10px;white-space:nowrap; transition:background-color .3s,color .3s,border-color .3s,box-shadow .4s var(--ease),transform .2s var(--ease)}
.viz-app .btn:active{transform:scale(.97)}
.viz-app .btn.primary{background:var(--action);border:0;color:#fff}
.viz-app .btn.primary:hover{background:var(--action-h);box-shadow:0 14px 34px -14px rgba(210,74,67,.85)}
.viz-app .btn.primary::before{content:'';position:absolute;inset:0;z-index:-1;background:linear-gradient(105deg,transparent 30%,rgba(255,255,255,.22) 50%,transparent 70%); transform:translateX(-120%);transition:transform .8s var(--ease)}
.viz-app .btn.primary:hover::before{transform:translateX(120%)}
.viz-app .btn[disabled]{opacity:.45;cursor:default}
.viz-app .btn svg{width:14px;height:14px;flex:0 0 14px;transform:rotate(90deg);transition:transform .45s var(--ease)}
.viz-app .btn:hover svg{transform:rotate(90deg) translateX(3px)}
.viz-app .foot-note,.viz-app .foot-status{flex:1 0 100%}
.viz-app .foot-note{margin:2px 0 0;font-size:11px;line-height:15px;color:var(--text-4)}
.viz-app .foot-note:empty{display:none}
.viz-app .side-note{display:none;margin:16px 0 8px;font-size:11px;line-height:15px;color:var(--text-4)}
.viz-app .foot-status{margin:0;font-size:12px;line-height:16px;color:var(--text-2);border-left:2px solid var(--action);padding-left:10px}
.viz-app .foot-status:empty{display:none}
.viz-app .stage{position:relative;min-width:0;min-height:0;overflow:hidden;background:var(--ink-2)}
.viz-app canvas#view,.viz-app canvas#gl{position:absolute;inset:0;width:100%;height:100%;display:block;touch-action:none}
.viz-app canvas#gl{cursor:grab}
.viz-app canvas#gl:active{cursor:grabbing}
.viz-app canvas.freeze{position:absolute;inset:0;width:100%;height:100%;display:block;pointer-events:none}
.viz-app .float{position:absolute;z-index:5}
.viz-app .glass{background:var(--glass);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border:1px solid rgba(255,255,255,.10)}
.viz-app .cap{left:24px;top:22px;max-width:calc(100% - 500px);font-size:11px;line-height:16px;letter-spacing:.09em;text-transform:uppercase;color:#fff; text-shadow:0 1px 10px rgba(0,0,0,.55);pointer-events:none;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.viz-app .cap b{font-weight:500;color:#fff}
.viz-app .cap span{color:rgba(255,255,255,.78)}
.viz-app .tops{top:16px;right:16px;display:flex;align-items:center;gap:8px}
.viz-app .seg{display:flex;padding:3px;border-radius:100px}
.viz-app .seg .chip{border-color:transparent;min-height:30px;font-size:12px;padding:0 14px}
.viz-app .seg .chip:hover{border-color:transparent;background:rgba(255,255,255,.10)}
.viz-app .seg .chip[aria-pressed="true"]{background:#fff;color:var(--ink)}
.viz-app .togs{display:flex;gap:8px}
.viz-app .tog{min-height:36px;padding:0 12px 0 10px;border-radius:100px;font-size:12px;display:inline-flex;align-items:center;gap:8px;color:#fff}
.viz-app .tog i{position:relative;width:24px;height:14px;border-radius:7px;background:var(--line-2);transition:background .25s;flex:0 0 24px}
.viz-app .tog i::after{content:'';position:absolute;left:2px;top:2px;width:10px;height:10px;border-radius:50%;background:#fff;transition:transform .25s var(--ease)}
.viz-app .tog[aria-pressed="true"] i{background:var(--action)}
.viz-app .tog[aria-pressed="true"] i::after{transform:translateX(10px)}
.viz-app .cams{left:50%;transform:translateX(-50%);bottom:20px;display:flex;flex-direction:column;align-items:center;gap:8px;max-width:calc(100% - 32px)}
.viz-app .cams .hint{font-size:11px;color:rgba(255,255,255,.8);text-shadow:0 1px 8px rgba(0,0,0,.6);transition:opacity .6s}
.viz-app .cams .hint.gone{opacity:0}
.viz-app .sheet{position:absolute;inset:0;z-index:20;display:none;align-items:center;justify-content:center;background:rgba(0,0,0,.6);padding:32px; -webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}
.viz-app .sheet.on{display:flex}
.viz-app .sheet-inner{max-width:760px;width:100%;max-height:100%;overflow:auto;padding:32px 36px;background:var(--ink);border:1px solid var(--line)}
.viz-app .sheet .eyebrow{font-size:11px;letter-spacing:.105em;text-transform:uppercase;color:var(--text-3);margin:0 0 14px}
.viz-app .sheet h2{margin:0 0 10px;font-size:26px;line-height:32px;font-weight:500;letter-spacing:-.03em}
.viz-app .sheet .lead{margin:0 0 20px;font-size:13px;line-height:20px;color:var(--text-2);max-width:62ch}
.viz-app .prompt{border-top:1px solid var(--line);padding:16px 0}
.viz-app .prompt h3{margin:0 0 10px;font-size:14px;font-weight:500;display:flex;justify-content:space-between;align-items:center;gap:12px}
.viz-app .prompt p{margin:0;font:400 12px/18px ui-monospace,SFMono-Regular,Menlo,monospace;color:var(--text-2);background:var(--ink-3);padding:12px 14px;white-space:pre-wrap}
.viz-app .sheet-foot{padding-top:18px;display:flex;justify-content:flex-end;border-top:1px solid var(--line)}
.viz-app .drop{position:absolute;inset:0;z-index:15;display:none;align-items:center;justify-content:center;background:rgba(21,21,21,.72); border:1px dashed var(--text-3);font-size:15px;font-weight:500}
.viz-app .drop.on{display:flex}
.viz-app .busy{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);z-index:18;display:none;align-items:center;gap:12px; padding:12px 20px;border-radius:100px;font-size:13px;color:#fff}
.viz-app .busy::before{content:'';width:14px;height:14px;border-radius:50%;border:2px solid rgba(255,255,255,.25);border-top-color:#fff;animation:viz-spin .8s linear infinite}
.viz-app .busy.on{display:flex}
@keyframes viz-spin{to{transform:rotate(360deg)}}
.viz-app .nogl{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);z-index:4;display:none;padding:20px 24px;max-width:420px; text-align:center;font-size:13px;line-height:20px;color:var(--text-2);background:var(--ink);border:1px solid var(--line)}
.viz-app .nogl.on{display:block}
@media (max-width:1250px){.viz-app .cap{display:none}}
@media (max-width:1100px){.viz-app{grid-template-columns:340px minmax(0,1fr)}
.viz-app .side-head,.viz-app .side-scroll,.viz-app .side-foot{padding-left:22px;padding-right:22px}
.viz-app .btn{padding:0 20px}}
@media (max-width:900px){.viz-app{display:flex;flex-direction:column;height:auto;min-height:100dvh}
.viz-app .stage{order:1;height:58vh;height:58svh;min-height:300px;flex:0 0 auto}
.viz-app .side{order:2;border-right:0;border-top:1px solid var(--line);min-height:0}
.viz-app .side-head{padding:18px 16px 16px}
.viz-app .side-title{margin-top:14px;font-size:20px;line-height:24px}
.viz-app .side-scroll{overflow:visible;padding:0 16px 8px}
.viz-app .side-foot{position:sticky;bottom:0;background:var(--ink);padding:12px 16px calc(12px + env(safe-area-inset-bottom))}
.viz-app .side-foot .foot-note{display:none}
.viz-app .swatches{grid-template-columns:repeat(6,44px);justify-content:start}
.viz-app .side-note{display:block!important}
.viz-app .side-foot{gap:8px 20px}
.viz-app .btn{flex:1 1 auto}
.viz-app .tops{top:12px;right:12px}
.viz-app .tog{min-height:32px}
.viz-app .cams{bottom:12px;max-width:calc(100% - 24px)}
.viz-app .cams .hint{display:none}
.viz-app .seg .chip{padding:0 11px}
.viz-app .sheet{padding:12px}
.viz-app .sheet-inner{padding:22px 18px}}
@media (max-width:600px){.viz-app .cap{display:none}
.viz-app .tops{flex-direction:column;align-items:flex-end;gap:6px}}
@media (max-width:380px){.viz-app .btn{padding:0 16px}
.viz-app .side-foot{gap:8px 16px}
.viz-app .seg .chip{padding:0 9px;font-size:11px}
.viz-app .grid3{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (prefers-reduced-motion:reduce){.viz-app *{transition:none!important;animation:none!important}}
.viz-app{position:relative}
.viz-app [data-first]{margin-top:0}
.viz-app input[type=range]{display:block;border:0;padding:0;min-height:0;background-color:transparent;box-shadow:none}
.viz-app input[type=range]:hover,.viz-app input[type=range]:focus{box-shadow:none}
.viz-app .sw.custom input{min-height:0;margin:0;background:transparent}
.viz-app h1,.viz-app h2,.viz-app h3{overflow-wrap:normal}
.viz-app .viz-downloads{display:flex;gap:6px 18px;flex-wrap:wrap}
.viz-app .side-foot .btn.primary{flex:1 1 auto}
.viz-app .cams .seg{max-width:100%;overflow-x:auto;scrollbar-width:none}
.viz-app .cams .seg::-webkit-scrollbar{display:none}
.viz-app .cams .seg .chip{flex:0 0 auto}
@media (max-width:760px){.viz-app{height:auto}}
