/* ===== v42 device blocking rules: «Доступ» → «Правила устройств» ===== */
/* v44 grouped network estimates and administrator inventory */
.device-rule-network-groups,.network-overview-groups{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,260px),1fr));gap:10px;min-width:0}
.device-rule-network-groups>.device-rule-group,.network-overview-groups>.device-rule-group{min-width:0;margin:0}
.network-overview-list{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,330px),1fr));gap:12px;margin-top:16px}
.network-overview .device-rule-chip,.user-network-summary .device-rule-chip{max-width:100%;white-space:normal;overflow-wrap:break-word;text-align:left}
.network-active-filters{display:flex;flex-wrap:wrap;gap:8px;margin:12px 0}
.network-facet-more{margin-top:8px}
.network-inventory-card{min-width:0}
.network-inventory-card dd{overflow-wrap:break-word}
.user-network-summary{grid-column:1/-1;min-width:0;padding:12px;border:1px solid var(--palette-587d5a);border-radius:var(--radius-14px);background:var(--palette-15302380)}
.network-overview button:focus-visible,.user-network-summary button:focus-visible{outline:3px solid var(--accent);outline-offset:3px}
@media(max-width:420px){.network-overview .device-rules-toolbar{align-items:stretch}.network-overview .device-rules-toolbar>button{width:100%}.network-overview-groups{grid-template-columns:minmax(0,1fr)}.network-overview .device-rule-chip{padding:8px 10px}}
/* Equal destination cards for any number of tabs: two columns, one on phones, no spanning card.
   The index keeps a fixed tabular width so every title starts at the same offset. */
.access-mode-switch{grid-template-columns:repeat(2,minmax(0,1fr));grid-auto-rows:1fr}
.access-mode-switch>.access-mode-tab{grid-column:auto;align-items:flex-start}
.access-mode-number{flex:none;min-inline-size:2.4ch;font-variant-numeric:tabular-nums}
@media(max-width:420px){.access-mode-switch{grid-template-columns:minmax(0,1fr)}}
.device-rules-panel{padding:clamp(16px,2.2vw,26px);border-color:var(--palette-668960);background:linear-gradient(145deg,var(--palette-213829),var(--palette-14241a));box-shadow:inset 0 1px 0 var(--palette-d5ffc02b),0 12px 28px var(--palette-00000033)}
.device-rules-title,.network-overview-title{display:flex;align-items:center;gap:10px}
.device-rules-title::before,.network-overview-title::before{content:"";display:inline-block;flex:none;width:32px;height:32px;background:url('/static/icons/wan-studio-atlas.webp?v=20261029-42') 66.667% 66.667%/400% 400% no-repeat;filter:drop-shadow(0 4px 5px var(--palette-030a05aa))}
.device-rules-legend{display:flex;flex-wrap:wrap;gap:7px;margin:16px 0 12px}
.device-rules-source,.device-rule-source{display:inline-flex;align-items:center;gap:5px;padding:4px 9px;border:1px solid var(--palette-5d7f58);border-radius:var(--radius-999px);background:var(--palette-112319);color:var(--palette-cfe5c4);font:700 10px/1.3 var(--display);letter-spacing:.02em}
.device-rule-source{margin-left:7px;padding:2px 7px;font-size:9px;vertical-align:middle;white-space:normal}
.device-rules-source.is-reported,.device-rule-source.is-reported,.device-rule-source.is-cross_check{border-color:var(--palette-c9a85a);color:var(--palette-f3e2b0);background:var(--palette-2b2715)}
.device-rules-source.is-observed,.device-rule-source.is-observed{border-color:var(--palette-a9e26c);color:var(--palette-e2ffbd);background:var(--palette-1d3a1f)}
.device-rules-source.is-derived,.device-rule-source.is-derived{border-color:var(--palette-7fb2a1);color:var(--palette-cdeee3);background:var(--palette-143029)}
.device-rules-toolbar{display:flex;align-items:center;flex-wrap:wrap;gap:10px 16px;margin:0 0 14px}
.device-rules-status{margin:0;color:var(--palette-b9cfb1);font:600 11px/1.5 var(--display)}
.device-rules-create,.device-rule-save{min-height:42px;padding:10px 16px;border:1px solid var(--accent);border-radius:var(--radius-12px);background:linear-gradient(145deg,var(--accent),var(--palette-a9d953));color:var(--palette-16240f);font:800 12px/1.2 var(--display);cursor:pointer;box-shadow:inset 0 1px 0 var(--palette-ffffffa0),0 4px 0 var(--palette-4c6d2b),0 8px 16px var(--palette-00000066);transition:transform .2s,box-shadow .2s}
.device-rules-create:hover,.device-rule-save:hover{transform:translateY(-1px)}.device-rules-create:active,.device-rule-save:active{transform:translateY(2px);box-shadow:inset 0 1px 0 var(--palette-ffffff80),0 1px 0 var(--palette-4c6d2b)}
.device-rule-save:disabled{opacity:.55;cursor:wait}
.device-rules-list{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,420px),1fr));gap:11px}
.device-rules-empty{margin:0;padding:14px;border:1px dashed var(--palette-5b7d57);border-radius:var(--radius-12px);color:var(--palette-b7caae);font-size:12px}
.device-rule-card{min-width:0;display:grid;align-content:start;gap:11px;padding:14px;border:1px solid var(--palette-4c6e50);border-radius:var(--radius-14px);background:linear-gradient(145deg,var(--palette-1b3021),var(--palette-122219));box-shadow:inset 0 1px 0 var(--palette-d5ffc01f)}
.device-rule-card.is-active{border-color:var(--palette-9fd96a);box-shadow:inset 0 1px 0 var(--palette-e6ffb533),0 0 0 2px var(--palette-9edf4814)}
.device-rule-card.is-disabled,.device-rule-card.is-expired{opacity:.86}
.device-rule-head{display:flex;align-items:center;gap:9px;min-width:0}
.device-rule-head strong{flex:1;min-width:0;color:var(--palette-e8f8dd);font:700 14px/1.35 var(--display);overflow-wrap:break-word}
.device-rule-state{flex:none;padding:4px 8px;border:1px solid var(--palette-6d8d66);border-radius:var(--radius-8px);color:var(--palette-cfe4c6);font:800 10px var(--display)}
.device-rule-state.is-active{border-color:var(--palette-c6f582);color:var(--palette-e4ffb7);background:var(--palette-2a4a25)}.device-rule-state.is-expired{border-color:var(--palette-c9a85a);color:var(--palette-f1dfac)}
.device-rule-switch{position:relative;flex:none;display:inline-flex;width:46px;height:26px;cursor:pointer}
.device-rule-switch input{position:absolute;inset:0;width:100%;height:100%;margin:0;opacity:0;cursor:pointer}
.device-rule-switch-track{width:100%;height:100%;border:1px solid var(--palette-6a8b69);border-radius:var(--radius-999px);background:var(--palette-112319);transition:background .2s,border-color .2s}
.device-rule-switch-track::after{content:"";position:absolute;top:4px;left:4px;width:18px;height:18px;border-radius:var(--radius-circle);background:var(--palette-9db596);box-shadow:0 2px 4px var(--palette-00000088);transition:transform .2s,background .2s}
.device-rule-switch input:checked+.device-rule-switch-track{border-color:var(--accent);background:var(--palette-3d6a2c)}
.device-rule-switch input:checked+.device-rule-switch-track::after{transform:translateX(20px);background:var(--palette-e6ffad)}
.device-rule-switch input:focus-visible+.device-rule-switch-track{outline:2px solid var(--palette-e4ffa8);outline-offset:3px}
.device-rule-facts{margin:0}
.device-rule-criteria{display:grid;gap:5px;margin:0;padding:0;list-style:none}
.device-rule-criteria li{min-width:0;overflow-wrap:break-word;font-size:12px;line-height:1.45}
.device-rule-criteria strong{color:var(--palette-d8ff9d);font:700 11px var(--display)}
.device-rule-actions,.device-rule-editor-actions{display:flex;flex-wrap:wrap;gap:8px}
.device-rule-actions button,.device-rule-editor-actions button:not(.device-rule-save),.device-rule-free button{min-height:38px;padding:8px 13px;border:1px solid var(--palette-9eca80);border-radius:var(--radius-10px);background:linear-gradient(145deg,var(--palette-325438),var(--palette-203c29));color:var(--palette-e2ffca);font:700 11px var(--display);cursor:pointer}
.device-rule-actions button.device-revoke{border-color:var(--palette-d58a74);color:var(--palette-ffd8cc);background:linear-gradient(145deg,var(--palette-4a2a24),var(--palette-2c1a16))}
.device-rules-panel button:focus-visible,.device-rules-panel input:focus-visible,.device-rules-panel select:focus-visible,.device-rules-panel textarea:focus-visible,.device-rules-editor h4:focus-visible{outline:2px solid var(--palette-e4ffa8);outline-offset:2px}
.device-rules-editor{display:grid;gap:12px;margin:0 0 16px;padding:clamp(13px,2vw,18px);border:1px solid var(--palette-b0e36f);border-radius:var(--radius-16px);background:linear-gradient(145deg,var(--palette-203d27),var(--palette-102c1d));box-shadow:inset 0 1px 0 var(--palette-e6ffb533),0 0 0 2px var(--palette-9edf4817)}
.device-rule-editor-title{margin:0;color:var(--palette-e8f8da);font:700 18px var(--display)}
.device-rule-group{min-width:0;display:grid;gap:9px;margin:0;padding:12px;border:1px solid var(--palette-4f7350);border-radius:var(--radius-13px);background:var(--palette-10241a)}
.device-rule-group legend{display:flex;flex-wrap:wrap;align-items:center;gap:4px;padding:0 6px;color:var(--palette-d7ff97);font:800 12px/1.4 var(--display);letter-spacing:.03em}
.device-rule-hint{margin:0;color:var(--palette-a9c2a2);font:11px/1.5 var(--font)}
.device-rule-subtitle{display:flex;flex-wrap:wrap;align-items:center;gap:4px;margin:4px 0 0;color:var(--palette-cfe5c4);font:700 11px var(--display)}
.device-rule-field{display:grid;gap:6px;min-width:0;color:var(--palette-bed5b1);font:700 11px var(--display)}
.device-rule-field>span{display:flex;flex-wrap:wrap;align-items:center;gap:4px}
.device-rule-field select,.device-rule-field input,.device-rule-field textarea,.device-rule-free input{width:100%;min-width:0;min-height:40px;padding:8px 10px;border:1px solid var(--palette-6a8b69);border-radius:var(--radius-10px);background:var(--palette-0c1c13);color:var(--palette-eaf7e0);font:500 12px/1.4 var(--font)}
.device-rule-field textarea{resize:vertical}
.device-rule-pair{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px}
.device-rule-check{display:flex;align-items:flex-start;gap:8px;color:var(--palette-dcecd3);font:600 12px/1.4 var(--font);cursor:pointer}
.device-rule-check input{flex:none;width:18px;height:18px;margin:1px 0 0;accent-color:var(--palette-c1fa79)}
.device-rule-chips{display:grid;gap:7px;min-width:0}
.device-rule-chip-list{display:flex;flex-wrap:wrap;gap:6px}
.device-rule-chip{display:inline-flex;align-items:center;gap:6px;max-width:100%;min-height:34px;padding:6px 11px;border:1px solid var(--palette-557a55);border-radius:var(--radius-999px);background:var(--palette-13291c);color:var(--palette-d7e9cf);font:600 11px/1.3 var(--font);cursor:pointer;overflow-wrap:break-word;text-align:left}
.device-rule-chip small{padding:1px 6px;border-radius:var(--radius-999px);background:var(--palette-25402b);color:var(--palette-b8d6aa);font:700 9px var(--display)}
.device-rule-chip[aria-pressed="true"]{border-color:var(--accent);background:linear-gradient(145deg,var(--palette-3f6a2f),var(--palette-28482a));color:var(--palette-f1ffd9);box-shadow:inset 0 1px 0 var(--palette-f0ffc84d)}
.device-rule-chip[aria-pressed="true"]::before{content:"✓";color:var(--accent);font-weight:800}
.device-rule-chip-empty{color:var(--palette-8fa98a);font-size:11px}
.device-rule-free{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:7px}
.device-rule-preview{display:grid;gap:9px;padding:12px;border:1px solid var(--palette-82a76b);border-radius:var(--radius-13px);background:linear-gradient(140deg,var(--palette-28412d),var(--palette-152c1d))}
.device-rule-preview h5{margin:0;color:var(--palette-e4ffbf);font:800 12px var(--display);letter-spacing:.04em}
.device-rule-counts{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;margin:0}
.device-rule-counts>div{min-width:0;padding:9px;border:1px solid var(--palette-5f845f);border-radius:var(--radius-10px);background:var(--palette-15301e)}
.device-rule-counts dt{color:var(--palette-acc9a6);font:700 10px/1.3 var(--display)}
.device-rule-counts dd{margin:3px 0 0;color:var(--palette-d7ff99);font:700 20px var(--display);font-variant-numeric:tabular-nums}
.device-rule-samples{display:grid;gap:4px;margin:0;padding-left:18px;color:var(--palette-d2e7c7);font:11px/1.45 var(--font)}
.device-rule-samples li{overflow-wrap:break-word}
.device-rule-warning{margin:0;padding:8px 10px;border:1px solid var(--palette-e0a184);border-radius:var(--radius-9px);background:var(--palette-3a211b);color:var(--palette-ffd9ca);font:700 11px/1.45 var(--display)}
.device-rule-feedback{margin:0;min-height:1px;color:var(--danger);font:700 12px/1.45 var(--display)}
.device-rule-feedback:empty{display:none}
@media(max-width:590px){.device-rules-list{grid-template-columns:minmax(0,1fr)}.device-rule-counts{grid-template-columns:repeat(2,minmax(0,1fr))}.device-rule-card{padding:12px}.device-rule-group{padding:10px}.device-rules-create,.device-rule-editor-actions button{flex:1 1 auto}}
@media(max-width:380px){.device-rule-pair,.device-rule-free{grid-template-columns:minmax(0,1fr)}.device-rule-head{flex-wrap:wrap}.device-rule-head strong{flex-basis:100%}}
@media(prefers-reduced-motion:reduce){.device-rules-create,.device-rule-save,.device-rule-switch-track,.device-rule-switch-track::after{transition:none}}
/* ===== end v42 device blocking rules ===== */
/* v47 addendum 4: on phones rule chips are 44 px tall touch targets (no extra hit area or gap nudge needed). */
@media (max-width:640px){.device-rule-chip{min-height:44px}}
