/* IP lookup: an original dark data-desk surface inspired only by the requested information hierarchy. */
.ip-lab{--violet:#4e137e;--violet-deep:#13072d;--panel:rgba(39,14,78,.78);--line:rgba(255,255,255,.12);--text:#f8f5ff;--muted:#c9c1d9;position:relative;isolation:isolate;margin:0 calc((min(1220px,calc(100vw - 32px)) - 100vw)/2);padding:44px max(24px,calc((100vw - min(1220px,calc(100vw - 32px)))/2)) 70px;overflow:hidden;background:radial-gradient(circle at 77% 8%,rgba(170,59,255,.38),transparent 24%),radial-gradient(circle at 11% 78%,rgba(73,23,151,.62),transparent 33%),linear-gradient(135deg,#12062e 0%,#250050 54%,#1a063d 100%);color:var(--text)}.ip-lab:before{position:absolute;z-index:-1;inset:0;content:"";opacity:.44;background-image:linear-gradient(rgba(255,255,255,.03) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.025) 1px,transparent 1px);background-size:32px 32px}.ip-lab-back{display:inline-flex;margin-bottom:32px;color:#e9ddff;font-size:14px;font-weight:800;text-decoration:none}.ip-lab-back:hover{text-decoration:underline;text-underline-offset:5px}.ip-lab-head{max-width:760px;margin:0 auto 26px;text-align:center}.ip-lab-kicker{margin:0 0 9px;color:#cba8ff;font-size:11px;font-weight:900;letter-spacing:.18em}.ip-lab-head h1{margin:0;color:#fff;font-size:clamp(34px,5vw,58px);letter-spacing:-.055em;line-height:1.1}.ip-lab-head h1 span{display:inline-grid;place-items:center;width:.9em;height:.9em;margin-right:.13em;border-radius:.23em;background:linear-gradient(135deg,#47baff,#8d47ff);font-size:.74em;vertical-align:.06em}.ip-lab-head>p:last-child{margin:16px auto 0;color:var(--muted);font-size:15px;line-height:1.75}.ip-lab code{border:0;background:rgba(255,255,255,.09);color:#fff;padding:.12em .35em}.ip-search{display:grid;grid-template-columns:minmax(0,1fr) 126px;gap:12px;max-width:660px;margin:0 auto}.ip-search input{min-width:0;height:52px;border:1px solid rgba(255,255,255,.17);border-radius:13px;background:rgba(11,3,38,.42);padding:0 18px;color:#fff;font:600 16px/1 ui-sans-serif,system-ui,sans-serif;outline:none;box-shadow:inset 0 1px rgba(255,255,255,.06)}.ip-search input::placeholder{color:#b4abc6}.ip-search input:focus{border-color:#b06dff;box-shadow:0 0 0 4px rgba(166,77,255,.22)}.ip-search button{border:0;border-radius:13px;background:linear-gradient(135deg,#28a6ff,#913bff);color:#fff;font-weight:850;cursor:pointer;box-shadow:0 11px 24px rgba(116,40,255,.32)}.ip-search button:hover{filter:brightness(1.08)}.ip-search button:disabled{cursor:wait;opacity:.68}.ip-query-help,.ip-status{max-width:660px;margin:10px auto 0;font-size:12px;color:#bbb1d1}.ip-status{min-height:22px;color:#e2d9ef}.ip-dashboard{display:grid;grid-template-columns:minmax(0,1.25fr) minmax(390px,.82fr);gap:18px;max-width:1220px;margin:28px auto 0}.ip-dashboard[hidden]{display:none}.ip-map-shell,.ip-detail,.ip-stat{border:1px solid var(--line);border-radius:14px;background:var(--panel);box-shadow:0 15px 40px rgba(4,0,17,.18)}.ip-map-shell{position:relative;min-height:470px;padding:10px;overflow:hidden}.ip-map{height:450px;border-radius:9px;background:linear-gradient(135deg,#d9e8eb,#b7d0cf)}.ip-map-empty{position:absolute;inset:0;display:grid;place-items:center;margin:0;color:#5e5d78;font-size:14px}.ip-map-link{position:absolute;right:24px;bottom:22px;border-radius:7px;background:#fff;padding:7px 10px;color:#3e146b;font-size:12px;font-weight:800;text-decoration:none}.ip-data{display:grid;gap:14px;align-content:start}.ip-summary-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}.ip-stat{position:relative;display:grid;grid-template-columns:36px minmax(0,1fr);gap:10px;align-items:center;min-height:90px;padding:14px}.ip-stat-icon{display:grid;place-items:center;width:32px;height:32px;border-radius:9px;color:#fff;font-weight:900}.ip-stat-icon.sky{background:#18a5e8}.ip-stat-icon.rose{background:#d64dd9}.ip-stat-icon.mint{background:#1abf88}.ip-stat-icon.amber{background:#f26b22}.ip-stat-icon.blue{background:#4c84f3}.ip-stat-icon.orange{background:#f49c1b}.ip-stat small{display:block;margin-bottom:3px;color:#bab0cf;font-size:11px}.ip-stat strong{display:block;min-width:0;overflow:hidden;color:#fff;font-size:13px;line-height:1.35;letter-spacing:-.018em;text-overflow:ellipsis;white-space:nowrap}.ip-stat strong[data-field="isp"]{font-size:11px;letter-spacing:-.035em}.ip-stat button{position:absolute;top:14px;right:14px;border:0;background:transparent;color:#bdb3cf;font-size:11px;cursor:pointer}.ip-stat button:hover{color:#fff}.ip-detail{padding:21px}.ip-detail-title{display:flex;align-items:baseline;gap:10px}.ip-detail-title p{margin:0;color:#b67cff;font-size:11px;font-weight:900;letter-spacing:.15em}.ip-detail h2{margin:0;color:#fff;font-size:23px;letter-spacing:-.04em}.ip-detail dl{display:grid;grid-template-columns:1fr 1fr;gap:13px 26px;margin:19px 0 0}.ip-detail dt{color:#bdb3cf;font-size:11px}.ip-detail dd{margin:3px 0 0;color:#fff;font-size:14px;font-weight:700}.ip-disclaimer{max-width:1220px;margin:17px auto 0;color:#c9c0d7;font-size:12px;line-height:1.7}.ip-lab .leaflet-control-attribution{font-size:9px}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap}@media(max-width:820px){.ip-lab{padding-top:28px;padding-bottom:44px}.ip-lab-back{margin-bottom:24px}.ip-dashboard{grid-template-columns:1fr}.ip-map-shell{min-height:330px}.ip-map{height:310px}.ip-data{grid-row:1}.ip-map-shell{grid-row:2}}@media(max-width:520px){.ip-lab{padding-left:6px;padding-right:6px}.ip-search{grid-template-columns:1fr}.ip-search button{height:48px}.ip-summary-grid{grid-template-columns:1fr 1fr}.ip-stat{min-height:78px}.ip-detail dl{grid-template-columns:1fr 1fr;gap:11px}.ip-lab-head h1{font-size:34px}.ip-map-shell{min-height:270px}.ip-map{height:250px}}

.ip-full-record{padding:21px;border:1px solid var(--line);border-radius:14px;background:rgba(22,7,54,.52)}.ip-full-record>p{margin:8px 0 17px;color:#c7bed7;font-size:12px;line-height:1.7}.ip-full-record dl{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin:0}.ip-full-record dl>div{min-width:0;padding:10px 11px;border:1px solid rgba(255,255,255,.08);border-radius:8px;background:rgba(255,255,255,.035)}.ip-full-record dt{color:#bdb3cf;font-size:10px;line-height:1.35}.ip-full-record dd{margin:4px 0 0;overflow-wrap:anywhere;color:#fff;font-size:12px;line-height:1.5}@media(max-width:520px){.ip-full-record dl{grid-template-columns:1fr}}

/* Original Tool Desk: editorial utility index, scoped to /tools/ surfaces. */
.tools-hero{position:relative;display:grid;grid-template-columns:minmax(0,1.15fr) minmax(300px,.85fr);gap:40px;align-items:center;min-height:510px;margin:-28px calc((min(1220px,calc(100vw - 32px)) - 100vw)/2) 0;padding:76px max(24px,calc((100vw - min(1220px,calc(100vw - 32px)))/2));overflow:hidden;border-bottom:1px solid #dfe2e8;background:radial-gradient(circle at 71% 44%,rgba(108,140,255,.22),transparent 19%),linear-gradient(135deg,#f4f5f7 0%,#eef1f6 100%)}.tools-hero>div:first-child{position:relative;z-index:1;max-width:690px}.tools-kicker,.tool-en{margin:0;color:#6c8cff;font-size:11px;font-weight:900;letter-spacing:.18em}.tools-hero h1,.tool-detail h1{margin:12px 0 18px;color:#171a22;font-size:clamp(48px,6.3vw,84px);line-height:1.02;letter-spacing:-.075em}.tools-hero p:not(.tools-kicker){max-width:640px;margin:0;color:#535b68;font-size:17px;line-height:1.85}.tools-jump,.tool-back{display:inline-flex;gap:10px;align-items:center;margin-top:35px;padding:0 0 8px;border-bottom:2px solid #6c8cff;color:#202b43;font-size:14px;font-weight:850;text-decoration:none}.tools-jump span{font-size:19px;line-height:.7}.tools-orbit{position:relative;width:min(330px,80vw);aspect-ratio:1;margin:auto;border:1px solid rgba(158,175,255,.38);border-radius:47% 53% 44% 56%/56% 42% 58% 44%;transform:rotate(-13deg);background:linear-gradient(140deg,rgba(255,255,255,.72),rgba(158,175,255,.22));box-shadow:inset 0 0 62px rgba(108,140,255,.16)}.tools-orbit:before,.tools-orbit:after{position:absolute;content:"";inset:22px -20px;border:1px solid rgba(158,175,255,.32);border-radius:58% 42% 55% 45%/42% 59% 41% 58%;transform:rotate(25deg)}.tools-orbit:after{inset:54px 5px;transform:rotate(-43deg)}.tools-orbit b{position:absolute;inset:0;z-index:1;display:grid;place-items:center;width:116px;height:116px;margin:auto;border-radius:50%;background:#121a2b;color:#fff;font-size:47px;transform:rotate(13deg)}.tools-orbit span{position:absolute;right:20px;bottom:12px;color:#6c8cff;font-size:10px;font-weight:900;letter-spacing:.18em;line-height:1.5;text-align:right;transform:rotate(13deg)}.tools-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));margin:70px 0 0;border-top:1px solid #dfe2e8;border-left:1px solid #dfe2e8}.tool-card{position:relative;min-height:278px;padding:32px 42px 28px 88px;border-right:1px solid #dfe2e8;border-bottom:1px solid #dfe2e8;background:#fff;color:#535b68;text-decoration:none;transition:background .2s,transform .2s}.tool-card:hover{background:#f4f6fb;color:#535b68;transform:translateY(-3px)}.tool-number{position:absolute;left:28px;top:33px;color:#9ea5b3;font-size:12px;font-weight:900;letter-spacing:.12em}.tool-arrow{position:absolute;right:28px;top:27px;color:#6c8cff;font-size:25px;line-height:1}.tool-card h2{margin:15px 0 12px;color:#171a22;font-size:30px;line-height:1.2;letter-spacing:-.055em}.tool-card>p:not(.tool-en){margin:0;max-width:430px;font-size:14px;line-height:1.75}.tool-card small{position:absolute;right:32px;bottom:26px;color:#667080;font-size:11px;font-weight:750}.tool-card small i{display:inline-block;width:8px;height:8px;margin-right:7px;border-radius:50%;background:#6c8cff;box-shadow:0 0 0 5px #e9ecf2}.tools-boundary{max-width:740px;margin:94px auto 22px;padding:56px 20px;text-align:center;border-top:1px solid #dfe2e8}.tools-boundary h2{margin:12px 0 15px;color:#171a22;font-size:30px;letter-spacing:-.055em}.tools-boundary>p:last-child{margin:0;color:#667080;font-size:14px;line-height:1.9}.tool-detail{max-width:820px;margin:35px auto 0}.tool-detail h1{font-size:clamp(42px,5.5vw,68px);margin-top:24px}.tool-lede{max-width:680px;color:#535b68;font-size:17px;line-height:1.85}.tool-lede code{padding:2px 5px;border-radius:4px;background:#e9ecf2;color:#202b43;font-size:.9em}.tool-panel{margin-top:35px;padding:31px;border:1px solid #dfe2e8;border-radius:18px;background:linear-gradient(145deg,#fff,#f4f5f7)}.tool-state{margin:0 0 11px;color:#667080;font-size:13px;font-weight:750}.tool-result{display:block;overflow-wrap:anywhere;color:#171a22;font-size:clamp(27px,4vw,44px);font-weight:880;letter-spacing:-.055em}.tool-button{margin-top:26px;padding:11px 17px;border:0;border-radius:8px;background:#6c8cff;color:#fff;cursor:pointer;font:inherit;font-size:14px;font-weight:850}.tool-button:hover{background:#121a2b}.tool-button:disabled{opacity:.62;cursor:wait}.tool-note{margin:18px 0;color:#667080;font-size:13px;line-height:1.8}.candidate-list{max-height:260px;overflow:auto;color:#202b43;font-size:13px;line-height:1.7}.candidate-list code{display:block;padding:10px 0;border-bottom:1px solid #dfe2e8;overflow-wrap:anywhere}.environment-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin:17px 0 0}.environment-list div{padding:12px;border:1px solid #dfe2e8;border-radius:9px;background:#fff}.environment-list dt{color:#667080;font-size:11px}.environment-list dd{margin:3px 0 0;color:#171a22;font-size:13px;font-weight:800;overflow-wrap:anywhere}@media(max-width:760px){.tools-hero{grid-template-columns:1fr;min-height:0;padding-top:55px;padding-bottom:48px}.tools-orbit{width:220px;margin:6px auto 0}.tools-orbit b{width:86px;height:86px;font-size:34px}.tools-list{grid-template-columns:1fr;margin-top:40px}.tool-card{min-height:245px;padding:28px 27px 55px 76px}.tool-number{left:23px;top:29px}.tool-card small{left:27px;right:auto;bottom:24px}.tool-card h2{font-size:27px}.tools-boundary{margin-top:58px;padding-top:42px}.tool-panel{padding:23px}.environment-list{grid-template-columns:1fr}}