/* ══════════════════════════════════════════
   IPAddress.to — Shared Design Tokens & Base
   ══════════════════════════════════════════ */
:root {
    --font-display: 'SF Pro Display', 'Segoe UI', system-ui, sans-serif;
    --font-body: 'SF Pro Text', 'Segoe UI', system-ui, sans-serif;
    --font-mono: 'SF Mono', 'Cascadia Code', 'Fira Code', 'Consolas', monospace;
    --ease-out: cubic-bezier(0.16, 1, 0.3, 1);
    --ease-spring: cubic-bezier(0.34, 1.56, 0.64, 1);
    --ease-smooth: cubic-bezier(0.4, 0, 0.2, 1);
    --radius-sm: 8px; --radius-md: 14px; --radius-lg: 20px; --radius-xl: 28px;
}
[data-theme="dark"] {
    --bg-base: #09090b; --bg-raised: #111113; --bg-surface: #18181b;
    --bg-elevated: #1e1e22; --bg-hover: #27272a;
    --bg-glass: rgba(24,24,27,0.7); --bg-glass-border: rgba(255,255,255,0.06);
    --bg-input: #111113; --bg-code: #0c0c0e; --bg-code-header: #08080a;
    --text-primary: #fafafa; --text-secondary: #a1a1aa;
    --text-tertiary: #71717a; --text-muted: #3f3f46;
    --border-default: rgba(255,255,255,0.07); --border-hover: rgba(255,255,255,0.18);
    --accent: #3b82f6; --accent-hover: #2563eb;
    --accent-subtle: rgba(59,130,246,0.1); --accent-glow: rgba(59,130,246,0.15);
    --green: #34d399; --green-subtle: rgba(52,211,153,0.1);
    --red: #f87171; --red-subtle: rgba(248,113,113,0.1);
    --yellow: #fbbf24; --yellow-subtle: rgba(251,191,36,0.1);
    --blue: #60a5fa; --blue-subtle: rgba(96,165,250,0.1);
    --shadow-md: 0 4px 24px rgba(0,0,0,0.4); --shadow-lg: 0 12px 48px rgba(0,0,0,0.5);
    --shadow-glow: 0 0 60px rgba(59,130,246,0.08);
    --grid-color: rgba(255,255,255,0.03); --grain-opacity: 0.03;
    --hero-gradient: radial-gradient(ellipse 70% 50% at 50% 0%, rgba(59,130,246,0.08) 0%, transparent 70%);
    --map-land: #1e1e22; --map-border: #2a2a2e; --map-water: var(--bg-base);
}
[data-theme="light"] {
    --bg-base: #fafafa; --bg-raised: #ffffff; --bg-surface: #ffffff;
    --bg-elevated: #f4f4f5; --bg-hover: #e4e4e7;
    --bg-glass: rgba(255,255,255,0.75); --bg-glass-border: rgba(0,0,0,0.06);
    --bg-input: #ffffff; --bg-code: #1a1a1e; --bg-code-header: #111114;
    --text-primary: #09090b; --text-secondary: #52525b;
    --text-tertiary: #71717a; --text-muted: #d4d4d8;
    --border-default: rgba(0,0,0,0.06); --border-hover: rgba(0,0,0,0.16);
    --accent: #2563eb; --accent-hover: #1d4ed8;
    --accent-subtle: rgba(37,99,235,0.06); --accent-glow: rgba(37,99,235,0.08);
    --green: #10b981; --green-subtle: rgba(16,185,129,0.08);
    --red: #ef4444; --red-subtle: rgba(239,68,68,0.06);
    --yellow: #f59e0b; --yellow-subtle: rgba(245,158,11,0.06);
    --blue: #3b82f6; --blue-subtle: rgba(59,130,246,0.08);
    --shadow-md: 0 4px 24px rgba(0,0,0,0.06); --shadow-lg: 0 12px 48px rgba(0,0,0,0.08);
    --shadow-glow: 0 0 60px rgba(37,99,235,0.04);
    --grid-color: rgba(0,0,0,0.03); --grain-opacity: 0.015;
    --hero-gradient: radial-gradient(ellipse 70% 50% at 50% 0%, rgba(37,99,235,0.05) 0%, transparent 70%);
    --map-land: #e4e4e7; --map-border: #d4d4d8; --map-water: var(--bg-base);
}

/* ── Reset & Base ── */
*,*::before,*::after{margin:0;padding:0;box-sizing:border-box}
html{scroll-behavior:smooth;scroll-padding-top:80px}
body{font-family:var(--font-body);background:var(--bg-base);color:var(--text-primary);line-height:1.6;-webkit-font-smoothing:antialiased;transition:background .5s var(--ease-smooth),color .3s var(--ease-smooth);overflow-x:hidden}
::selection{background:var(--accent);color:#fff}
.container{max-width:1100px;margin:0 auto;padding:0 24px}
.container-wide{max-width:1400px;margin:0 auto;padding:0 24px}
body::after{content:'';position:fixed;inset:0;pointer-events:none;z-index:9999;opacity:var(--grain-opacity);background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");background-repeat:repeat;background-size:200px}

/* ══════════════════════════════════════════
   Swup Page Transitions
   ══════════════════════════════════════════ */
html.is-changing .transition-main {
    transition: opacity 0.3s ease, transform 0.3s ease;
    opacity: 1;
    transform: translateY(0);
}
html.is-animating .transition-main {
    opacity: 0;
    transform: translateY(12px);
}

/* ══════════════════════════════════════════
   Header
   ══════════════════════════════════════════ */
.header{position:fixed;top:12px;left:50%;transform:translateX(-50%);z-index:100;width:calc(100% - 32px);max-width:1400px}
.header-bar{display:flex;align-items:center;justify-content:space-between;height:52px;padding:0 20px;background:var(--bg-glass);backdrop-filter:blur(24px) saturate(1.4);-webkit-backdrop-filter:blur(24px) saturate(1.4);border:1px solid var(--bg-glass-border);border-radius:16px;transition:background .5s ease,border-color .3s ease}
.logo{font-family:var(--font-body);font-size:15px;font-weight:700;color:var(--text-primary);text-decoration:none;display:flex;align-items:center;gap:10px;letter-spacing:-0.02em}
.logo-mark{width:50px;background:#eaeaea;border-radius:8px;display:grid;place-items:center;position:absolute;left:0;height:100%;z-index:2;transition:transform .3s var(--ease-smooth)}
.logo:hover .logo-mark{transform:scale(1.03)}
.logo-mark img{width:36px;filter:drop-shadow(0 0 3px #59a5fd)}
.logo-text{padding-left:40px;display:inline-block;clip-path:inset(0 100% 0 0);animation:textReveal .6s var(--ease-out) .2s forwards}
@keyframes textReveal{to{clip-path:inset(0 0% 0 0)}}
.logo-mark svg{width:15px;height:15px;color:white}
.header-right{display:flex;align-items:center;gap:4px}
.header-link{font-size:13px;font-weight:500;color:var(--text-secondary);text-decoration:none;padding:6px 12px;border-radius:var(--radius-sm);transition:all .15s ease}
.header-link:hover{color:var(--text-primary);background:var(--bg-hover)}
.header-link.active{color:var(--accent)}

/* Theme toggle */
.theme-pill{width:42px;height:24px;background:var(--bg-elevated);border:1px solid var(--border-default);border-radius:100px;cursor:pointer;margin-left:8px;position:relative;transition:all .3s ease;flex-shrink:0}
.theme-pill:hover{border-color:var(--border-hover)}
.theme-pill-knob{position:absolute;top:2px;left:2px;width:18px;height:18px;background:var(--accent);border-radius:50%;transition:transform .4s var(--ease-spring);display:grid;place-items:center}
[data-theme="light"] .theme-pill-knob{transform:translateX(18px)}
.theme-pill-knob svg{width:10px;height:10px;color:#fff}
.theme-pill-knob .icon-moon{display:none}
[data-theme="light"] .theme-pill-knob .icon-sun{display:none}
[data-theme="light"] .theme-pill-knob .icon-moon{display:block}

/* ══════════════════════════════════════════
   Shared Buttons
   ══════════════════════════════════════════ */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:7px;padding:9px 18px;font-family:var(--font-body);font-size:13px;font-weight:600;border-radius:var(--radius-md);border:none;cursor:pointer;text-decoration:none;transition:all .2s ease;letter-spacing:-0.01em}
.btn svg{width:15px;height:15px}
.btn-primary{background:var(--text-primary);color:var(--bg-base)}
.btn-primary:hover{opacity:.85;transform:translateY(-1px)}
.btn-secondary{background:var(--bg-elevated);color:var(--text-primary);border:1px solid var(--border-default)}
.btn-secondary:hover{background:var(--bg-hover);border-color:var(--border-hover)}
.btn-ghost{background:transparent;color:var(--text-secondary);padding:8px 14px}
.btn-ghost:hover{background:var(--bg-hover);color:var(--text-primary)}
.btn-accent{background:var(--accent);color:#fff;box-shadow:0 2px 12px rgba(59,130,246,.25)}
.btn-accent:hover{background:var(--accent-hover);transform:translateY(-1px);box-shadow:0 6px 20px rgba(59,130,246,.3)}

/* ══════════════════════════════════════════
   Toast
   ══════════════════════════════════════════ */
.toast{position:fixed;bottom:24px;left:50%;transform:translateX(-50%) translateY(100px);background:var(--text-primary);color:var(--bg-base);padding:10px 20px;border-radius:var(--radius-md);font-size:13px;font-weight:600;box-shadow:var(--shadow-lg);z-index:1001;transition:transform .45s var(--ease-spring);display:flex;align-items:center;gap:8px}
.toast.show{transform:translateX(-50%) translateY(0)}
.toast svg{width:15px;height:15px;color:var(--green)}

/* ══════════════════════════════════════════
   Footer
   ══════════════════════════════════════════ */
.footer{padding:40px 0;border-top:1px solid var(--border-default);background:var(--bg-raised);transition:background .5s ease}
.footer-inner{display:flex;align-items:center;justify-content:space-between;max-width:1400px;margin:0 auto;padding:0 24px}
.footer-logo{font-size:14px;font-weight:700;color:var(--text-primary);letter-spacing:-0.02em}
.footer-links{display:flex;gap:24px}
.footer-links a{font-size:13px;font-weight:500;color:var(--text-tertiary);text-decoration:none;transition:color .15s ease}
.footer-links a:hover{color:var(--text-primary)}
.footer-copy{font-size:13px;color:var(--text-muted)}

/* ══════════════════════════════════════════
   HOME — Hero
   ══════════════════════════════════════════ */
.hero{padding:130px 0 80px;position:relative;overflow:hidden;background:var(--bg-base);transition:background .5s ease}
.hero-grid{position:absolute;inset:0;background-image:linear-gradient(var(--grid-color) 1px,transparent 1px),linear-gradient(90deg,var(--grid-color) 1px,transparent 1px);background-size:60px 60px;mask-image:radial-gradient(ellipse 70% 60% at 50% 40%,black 20%,transparent 100%);-webkit-mask-image:radial-gradient(ellipse 70% 60% at 50% 40%,black 20%,transparent 100%);animation:gridDrift 20s linear infinite}
@keyframes gridDrift{0%{background-position:0 0}100%{background-position:60px 60px}}
.hero-glow{position:absolute;top:-100px;left:50%;transform:translateX(-50%);width:800px;height:600px;background:var(--hero-gradient);pointer-events:none}

/* IP Card */
.ip-card-wrapper{max-width:680px;margin:0 auto 60px;position:relative;z-index:2;opacity:0;transform:translateY(30px) scale(0.97);animation:heroReveal .9s var(--ease-out) .15s forwards}
@keyframes heroReveal{to{opacity:1;transform:translateY(0) scale(1)}}
.ip-card{background:var(--bg-glass);backdrop-filter:blur(20px) saturate(1.3);-webkit-backdrop-filter:blur(20px) saturate(1.3);border:1px solid var(--bg-glass-border);border-radius:var(--radius-xl);box-shadow:var(--shadow-lg),var(--shadow-glow);overflow:hidden;transition:all .5s ease}
.ip-card-main{padding:40px 32px 28px;text-align:center}
.ip-label{display:inline-flex;align-items:center;gap:8px;font-size:11px;font-weight:700;color:var(--text-tertiary);text-transform:uppercase;letter-spacing:.14em;margin-bottom:16px}
.ip-label::before{content:'';width:7px;height:7px;background:var(--green);border-radius:50%;box-shadow:0 0 10px rgba(52,211,153,0.5);animation:pulse 2s ease-in-out infinite}
@keyframes pulse{0%,100%{opacity:1;transform:scale(1)}50%{opacity:.4;transform:scale(.8)}}
.ip-value{font-family:var(--font-mono);font-size:clamp(28px,6vw,50px);font-weight:700;letter-spacing:-0.04em;color:var(--text-primary);cursor:pointer;transition:color .2s ease}
.ip-value:hover{color:var(--accent)}
.ip-value.loading{color:var(--text-muted);animation:loadingPulse 1.5s ease-in-out infinite}
@keyframes loadingPulse{0%,100%{opacity:.3}50%{opacity:.6}}
.ip-badge{display:inline-flex;align-items:center;gap:5px;margin-top:14px;padding:4px 12px;background:var(--green-subtle);color:var(--green);font-size:11px;font-weight:700;border-radius:100px;letter-spacing:.03em}
.ip-card-details{display:grid;grid-template-columns:repeat(3,1fr);border-top:1px solid var(--border-default)}
.ip-detail{padding:16px 14px;text-align:center;border-right:1px solid var(--border-default);border-bottom:1px solid var(--border-default);transition:background .2s ease}
.ip-detail:nth-child(3n){border-right:none}
.ip-detail:nth-child(n+4){border-bottom:none}
.ip-detail:hover{background:var(--bg-hover)}
.ip-detail-label{font-size:10px;font-weight:700;color:var(--text-muted);text-transform:uppercase;letter-spacing:.12em;margin-bottom:3px}
[data-theme="light"] .ip-detail-label{color:var(--text-tertiary)}
.ip-detail-value{font-size:13px;font-weight:600;color:var(--text-primary);letter-spacing:-0.01em}
.ip-detail-value.loading{color:var(--text-muted)}
.ip-card-actions{display:flex;justify-content:center;gap:8px;padding:14px 20px;border-top:1px solid var(--border-default)}

/* Hero content */
.hero-content{text-align:center;max-width:580px;margin:0 auto;position:relative;z-index:2;opacity:0;transform:translateY(24px);animation:heroReveal .8s var(--ease-out) .35s forwards}
.hero-title{font-family:var(--font-display);font-size:clamp(32px,5vw,52px);font-weight:700;line-height:1.1;letter-spacing:-0.04em;margin-bottom:18px}
.hero-title em{font-style:normal;background:linear-gradient(135deg,var(--accent) 0%,#93c5fd 100%);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}
.hero-desc{font-size:16px;color:var(--text-secondary);line-height:1.7;margin-bottom:28px;max-width:460px;margin-left:auto;margin-right:auto}
.hero-actions{display:flex;justify-content:center;gap:10px;flex-wrap:wrap}

/* Stats */
.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:1px;margin-top:72px;background:var(--border-default);border-radius:var(--radius-lg);overflow:hidden;position:relative;z-index:2;opacity:0;animation:heroReveal .8s var(--ease-out) .55s forwards}
.stat{text-align:center;padding:32px 16px;background:var(--bg-surface);transition:background .2s ease}
.stat:hover{background:var(--bg-elevated)}
.stat-value{font-family:var(--font-mono);font-size:28px;font-weight:700;color:var(--text-primary);letter-spacing:-0.04em}
.stat-label{font-size:12px;font-weight:500;color:var(--text-tertiary);margin-top:4px}

/* ══════════════════════════════════════════
   HOME — Sections
   ══════════════════════════════════════════ */
.section{padding:100px 0;transition:background .5s ease}
.section-eyebrow{display:inline-flex;align-items:center;gap:10px;font-size:11px;font-weight:700;color:var(--accent);text-transform:uppercase;letter-spacing:.14em;margin-bottom:16px}
.section-eyebrow::before{content:'';width:24px;height:2px;background:var(--accent);border-radius:1px}
.section-title{font-family:var(--font-display);font-size:clamp(26px,3.5vw,40px);font-weight:700;letter-spacing:-0.035em;margin-bottom:12px}
.section-desc{font-size:16px;color:var(--text-secondary);max-width:480px;line-height:1.65}
.section-header{margin-bottom:48px}
.api-section{background:var(--bg-raised);border-top:1px solid var(--border-default);border-bottom:1px solid var(--border-default)}

/* Endpoints */
.endpoints-grid{display:flex;flex-direction:column;gap:10px}
.endpoint{background:var(--bg-surface);border:1px solid var(--border-default);border-radius:var(--radius-lg);overflow:hidden;transition:border-color .2s ease,background .5s ease}
.endpoint:hover{border-color:var(--border-hover)}
.endpoint-header{display:flex;align-items:center;gap:12px;padding:14px 18px;cursor:pointer;user-select:none}
.method{font-family:var(--font-mono);font-size:10px;font-weight:700;padding:3px 8px;border-radius:6px;letter-spacing:.04em}
.method-get{background:var(--green-subtle);color:var(--green)}
.method-post{background:var(--blue-subtle);color:var(--blue)}
.endpoint-path{font-family:var(--font-mono);font-size:13px;font-weight:600;color:var(--text-primary)}
.endpoint-path .param{color:var(--accent)}
.endpoint-desc{font-size:13px;color:var(--text-tertiary);margin-left:auto}
.endpoint-toggle{width:24px;height:24px;display:flex;align-items:center;justify-content:center;color:var(--text-muted);transition:transform .3s var(--ease-out);flex-shrink:0}
.endpoint.open .endpoint-toggle{transform:rotate(180deg)}
.endpoint-body{display:grid;grid-template-rows:0fr;transition:grid-template-rows .35s var(--ease-out),opacity .25s ease;opacity:0}
.endpoint-body-inner{overflow:hidden}
.endpoint.open .endpoint-body{grid-template-rows:1fr;opacity:1}
.endpoint.open .endpoint-body .endpoint-body-content{border-top:1px solid var(--border-default)}
.endpoint-body-content{padding:0 18px 18px;padding-top:18px}

/* Code blocks */
.code-tabs{display:inline-flex;margin-bottom:12px;background:var(--bg-elevated);padding:3px;border-radius:var(--radius-sm);border:1px solid var(--border-default)}
.code-tab{font-family:var(--font-body);font-size:12px;font-weight:600;padding:4px 14px;background:transparent;border:none;color:var(--text-tertiary);cursor:pointer;border-radius:6px;transition:all .15s ease}
.code-tab:hover{color:var(--text-secondary)}
.code-tab.active{color:var(--text-primary);background:var(--bg-surface);box-shadow:0 1px 3px rgba(0,0,0,.1)}
.code-block{background:var(--bg-code);border-radius:var(--radius-md);overflow:hidden;border:1px solid var(--border-default)}
.code-header{display:flex;align-items:center;justify-content:space-between;padding:8px 14px;background:var(--bg-code-header);border-bottom:1px solid rgba(255,255,255,.04)}
.code-lang{font-family:var(--font-mono);font-size:10px;color:#52525b;text-transform:uppercase;letter-spacing:.08em;font-weight:700}
.code-copy{font-family:var(--font-body);font-size:11px;font-weight:600;color:#52525b;background:transparent;border:1px solid #3f3f46;padding:2px 10px;border-radius:5px;cursor:pointer;transition:all .15s ease}
.code-copy:hover{color:#e4e4e7;border-color:#52525b}
.code-content{padding:14px 16px;font-family:var(--font-mono);font-size:12.5px;line-height:1.8;color:#d4d4d8;overflow-x:auto}
.code-content pre{margin:0}
.code-content .string{color:#6ee7b7}
.code-content .number{color:#fbbf24}
.code-content .key{color:#67e8f9}
.code-content .keyword{color:#c4b5fd}
.code-content .comment{color:#3f3f46}
.code-example{display:none}
.code-example.active{display:block}

/* Params */
.params-grid{display:grid;gap:6px;margin-top:14px}
.param-row{display:grid;grid-template-columns:180px 70px 1fr;gap:14px;padding:10px 14px;background:var(--bg-elevated);border-radius:var(--radius-sm);align-items:center;border:1px solid var(--border-default)}
.param-name{font-family:var(--font-mono);font-size:12.5px;font-weight:600;color:var(--text-primary);display:flex;align-items:center;gap:8px}
.param-tag{font-size:9px;font-weight:700;padding:1px 6px;border-radius:4px;text-transform:uppercase;letter-spacing:.04em}
.param-required{background:var(--accent-subtle);color:var(--accent)}
.param-optional{background:var(--bg-hover);color:var(--text-tertiary)}
.param-type{font-family:var(--font-mono);font-size:11px;color:var(--text-tertiary)}
.param-desc{font-size:13px;color:var(--text-secondary)}

/* Playground */
.playground-section{background:var(--bg-base)}
.playground{background:var(--bg-surface);border:1px solid var(--border-default);border-radius:var(--radius-xl);overflow:hidden;box-shadow:var(--shadow-md);transition:all .5s ease}
.playground-header{display:flex;align-items:center;justify-content:space-between;padding:14px 22px;border-bottom:1px solid var(--border-default)}
.playground-title{font-size:13px;font-weight:700;display:flex;align-items:center;gap:10px;letter-spacing:-0.01em}
.live-dot{width:8px;height:8px;background:var(--green);border-radius:50%;box-shadow:0 0 10px rgba(52,211,153,.4);animation:pulse 2s ease-in-out infinite}
.playground-body{padding:22px}
.playground-input-row{display:flex;gap:10px;margin-bottom:14px}
.input-field{flex:1;padding:10px 14px;font-family:var(--font-mono);font-size:13px;border:1px solid var(--border-default);border-radius:var(--radius-md);background:var(--bg-input);color:var(--text-primary);transition:all .15s ease}
.input-field:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-subtle)}
.input-field::placeholder{color:var(--text-muted)}
.preset-btns{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:20px}
.preset-btn{font-family:var(--font-mono);font-size:11px;font-weight:600;padding:6px 14px;background:var(--bg-elevated);border:1px solid var(--border-default);border-radius:var(--radius-sm);cursor:pointer;color:var(--text-secondary);transition:all .15s ease}
.preset-btn:hover{border-color:var(--accent);color:var(--accent);background:var(--accent-subtle)}
.response-panel{background:var(--bg-code);border-radius:var(--radius-md);overflow:hidden;border:1px solid var(--border-default);transition:border-color .3s ease}
.response-header{display:flex;align-items:center;justify-content:space-between;padding:8px 14px;background:var(--bg-code-header);border-bottom:1px solid rgba(255,255,255,.04)}
.response-status{font-family:var(--font-mono);font-size:11px;font-weight:600;display:flex;align-items:center;gap:8px;transition:color .3s ease}
.response-status.success{color:#6ee7b7}
.response-status.error{color:#fca5a5}
.response-status.pending{color:#52525b}
.response-status::before{content:'';width:6px;height:6px;border-radius:50%;background:currentColor}
.response-time{font-family:var(--font-mono);font-size:11px;color:#52525b;transition:opacity .3s ease}
.response-body{padding:14px 16px;font-family:var(--font-mono);font-size:12.5px;line-height:1.8;color:#d4d4d8;max-height:400px;overflow-y:auto;min-height:340px!important}
.response-body pre{margin:0;white-space:pre-wrap}
.response-panel.loading{border-color:var(--accent)}
.response-panel.loading .response-header{position:relative;overflow:hidden}
.response-panel.loading .response-header::after{content:'';position:absolute;bottom:0;left:0;height:2px;width:30%;background:linear-gradient(90deg,transparent,var(--accent),transparent);animation:scanline 1s var(--ease-smooth) infinite}
@keyframes scanline{0%{left:-30%}100%{left:100%}}
.response-body.fade-in pre{animation:responseFadeIn .4s var(--ease-out) forwards}
@keyframes responseFadeIn{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}

/* ══════════════════════════════════════════
   DNS PAGE
   ══════════════════════════════════════════ */
.dns-main{padding:80px 0 40px;min-height:100vh}
.dns-layout{display:grid;grid-template-columns:340px 1fr;gap:20px;align-items:start}

.panel{background:var(--bg-surface);border:1px solid var(--border-default);border-radius:var(--radius-xl);overflow:hidden;box-shadow:var(--shadow-md);position:sticky;top:76px}
.panel-header{padding:20px 22px 0;display:flex;flex-direction:column;gap:16px}
.panel-title{font-family:var(--font-display);font-size:18px;font-weight:700;letter-spacing:-0.03em;display:flex;align-items:center;gap:10px}
.panel-title svg{width:20px;height:20px;color:var(--accent)}

.search-group{display:flex;flex-direction:column;gap:8px;padding:0 22px;margin-top:16px}
.search-row{display:flex;gap:8px}
.search-input{flex:1;padding:10px 14px;font-family:var(--font-mono);font-size:13px;border:1px solid var(--border-default);border-radius:var(--radius-md);background:var(--bg-input);color:var(--text-primary);transition:all .2s ease}
.search-input:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-subtle)}
.search-input::placeholder{color:var(--text-muted)}
.search-btn{padding:10px 18px;background:var(--accent);color:#fff;border:none;border-radius:var(--radius-md);font-family:var(--font-body);font-size:13px;font-weight:600;cursor:pointer;transition:all .2s ease;display:flex;align-items:center;gap:6px;white-space:nowrap}
.search-btn:hover{background:var(--accent-hover);transform:translateY(-1px);box-shadow:0 4px 14px rgba(59,130,246,.25)}
.search-btn:active{transform:translateY(0)}
.search-btn.loading{pointer-events:none;opacity:.7}
.search-btn.loading .btn-icon{animation:spin .8s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}
.search-btn svg{width:15px;height:15px}

.record-types{display:flex;gap:4px;padding:0 22px;margin-top:10px;flex-wrap:wrap}
.record-chip{font-family:var(--font-mono);font-size:11px;font-weight:700;padding:5px 12px;background:var(--bg-elevated);border:1px solid var(--border-default);border-radius:100px;cursor:pointer;color:var(--text-tertiary);transition:all .15s ease;letter-spacing:.02em}
.record-chip:hover{border-color:var(--border-hover);color:var(--text-secondary)}
.record-chip.active{background:var(--accent-subtle);border-color:var(--accent);color:var(--accent)}

.results-summary{display:none;padding:16px 22px 0;gap:12px;flex-direction:column}
.results-summary.visible{display:flex}
.summary-bar{display:flex;gap:4px;height:6px;border-radius:3px;overflow:hidden;background:var(--bg-elevated)}
.summary-segment{height:100%;transition:width .6s var(--ease-out);border-radius:3px}
.summary-segment.green{background:var(--green)}
.summary-segment.red{background:var(--red)}
.summary-segment.yellow{background:var(--yellow)}
.summary-stats{display:flex;gap:16px}
.summary-stat{display:flex;align-items:center;gap:6px;font-size:12px;font-weight:600;color:var(--text-secondary)}
.summary-dot{width:8px;height:8px;border-radius:50%}
.summary-dot.green{background:var(--green)}
.summary-dot.red{background:var(--red)}
.summary-dot.yellow{background:var(--yellow)}

.server-list{max-height:calc(100vh - 380px);overflow-y:auto;padding:16px 12px 12px;display:flex;flex-direction:column;gap:4px}
.server-row{display:grid;grid-template-columns:28px 1fr auto;gap:10px;align-items:center;padding:8px 10px;border-radius:var(--radius-sm);transition:background .15s ease;cursor:default;opacity:0;transform:translateX(-8px)}
.server-row.visible{opacity:1;transform:translateX(0);transition:opacity .3s var(--ease-out),transform .3s var(--ease-out),background .15s ease}
.server-row:hover{background:var(--bg-hover)}
.server-flag{font-size:18px;line-height:1;text-align:center}
.server-info{min-width:0}
.server-name{font-size:12px;font-weight:600;color:var(--text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.server-provider{font-size:10px;color:var(--text-tertiary);font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.server-result{text-align:right}
.server-ip{font-family:var(--font-mono);font-size:11px;font-weight:600;color:var(--text-primary)}
.server-ttl{font-family:var(--font-mono);font-size:9px;color:var(--text-muted);margin-top:1px}
.server-status{width:8px;height:8px;border-radius:50%;display:inline-block;margin-right:6px;vertical-align:middle}
.status-ok{background:var(--green);box-shadow:0 0 6px rgba(52,211,153,0.3)}
.status-err{background:var(--red);box-shadow:0 0 6px rgba(248,113,113,0.3)}
.status-warn{background:var(--yellow);box-shadow:0 0 6px rgba(251,191,36,0.3)}
.status-pending{background:var(--text-muted);animation:pulse 1.5s ease-in-out infinite}

.empty-state{padding:40px 22px;text-align:center;color:var(--text-muted)}
.empty-state svg{width:40px;height:40px;margin-bottom:12px;opacity:.3}
.empty-state p{font-size:13px;line-height:1.6}

/* Map */
.map-panel{background:var(--bg-surface);border:1px solid var(--border-default);border-radius:var(--radius-xl);overflow:hidden;box-shadow:var(--shadow-md);min-height:600px;display:flex;flex-direction:column}
.map-header{display:flex;align-items:center;justify-content:space-between;padding:14px 22px;border-bottom:1px solid var(--border-default)}
.map-title{font-size:13px;font-weight:700;display:flex;align-items:center;gap:10px;letter-spacing:-0.01em}
.map-badge{font-family:var(--font-mono);font-size:10px;font-weight:700;padding:3px 10px;background:var(--bg-elevated);border:1px solid var(--border-default);border-radius:100px;color:var(--text-tertiary)}
.map-container{flex:1;position:relative;overflow:hidden;display:flex;align-items:center;justify-content:center;padding:20px}
.map-svg{width:100%;height:auto;max-height:calc(100vh - 200px);border-radius:var(--radius-lg)}
.map-container svg{transition:opacity .3s ease}
.map-dot{transition:all .4s var(--ease-out);cursor:pointer}
.map-dot .dot-main{transition:fill .3s ease}
.map-dot .dot-ring{transition:opacity .3s ease}
.country{transition:fill .2s ease}

.map-tooltip{position:absolute;pointer-events:none;background:var(--bg-surface);border:1px solid var(--border-default);border-radius:var(--radius-md);padding:10px 14px;box-shadow:var(--shadow-lg);z-index:10;opacity:0;transform:translateY(4px);transition:opacity .15s ease,transform .15s ease;min-width:180px}
.map-tooltip.visible{opacity:1;transform:translateY(0)}
.map-tooltip-header{display:flex;align-items:center;gap:8px;margin-bottom:6px}
.map-tooltip-flag{font-size:16px}
.map-tooltip-name{font-size:12px;font-weight:700;color:var(--text-primary)}
.map-tooltip-provider{font-size:10px;color:var(--text-tertiary)}
.map-tooltip-result{font-family:var(--font-mono);font-size:12px;font-weight:600;display:flex;align-items:center;gap:6px}

/* ══════════════════════════════════════════
   IP INFO PAGE — /ip/
   ══════════════════════════════════════════ */
.ip-page{padding:100px 0 40px;min-height:100vh}

.ip-page-search{text-align:center;margin-bottom:48px}
.ip-page-title{font-family:var(--font-display);font-size:clamp(28px,5vw,44px);font-weight:700;letter-spacing:-0.04em;margin-bottom:10px}
.ip-page-title em{font-style:normal;background:linear-gradient(135deg,var(--accent) 0%,#93c5fd 100%);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}
.ip-page-subtitle{font-size:15px;color:var(--text-secondary);margin-bottom:28px}

.ip-search-bar{display:flex;align-items:center;gap:0;max-width:620px;margin:0 auto;background:var(--bg-surface);border:1px solid var(--border-default);border-radius:var(--radius-lg);overflow:hidden;transition:border-color .2s ease,box-shadow .2s ease}
.ip-search-bar:focus-within{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-subtle)}
.ip-search-icon{display:flex;align-items:center;padding:0 4px 0 16px;color:var(--text-muted);flex-shrink:0}
.ip-search-icon svg{width:18px;height:18px}
.ip-search-input{flex:1;padding:14px 12px;font-family:var(--font-mono);font-size:15px;background:transparent;border:none;color:var(--text-primary);outline:none;min-width:0}
.ip-search-input::placeholder{color:var(--text-muted)}
.ip-search-btn{padding:10px 22px;margin:6px;background:var(--accent);color:#fff;border:none;border-radius:var(--radius-md);font-family:var(--font-body);font-size:13px;font-weight:600;cursor:pointer;transition:all .2s ease;display:flex;align-items:center;gap:6px;white-space:nowrap;flex-shrink:0}
.ip-search-btn:hover{background:var(--accent-hover);transform:translateY(-1px);box-shadow:0 4px 14px rgba(59,130,246,.25)}
.ip-search-btn svg{width:16px;height:16px}

.ip-quick-links{display:flex;align-items:center;justify-content:center;gap:8px;margin-top:16px;flex-wrap:wrap}
.ip-quick-label{font-size:12px;color:var(--text-muted);font-weight:500}
.ip-quick-link{font-family:var(--font-mono);font-size:12px;font-weight:600;color:var(--text-tertiary);text-decoration:none;padding:4px 12px;background:var(--bg-elevated);border:1px solid var(--border-default);border-radius:100px;transition:all .15s ease}
.ip-quick-link:hover{border-color:var(--accent);color:var(--accent);background:var(--accent-subtle)}

/* Loading */
.ip-loading{display:flex;align-items:center;justify-content:center;gap:12px;padding:60px 0;color:var(--text-secondary);font-size:14px}
.ip-loading-spinner{width:20px;height:20px;border:2.5px solid var(--border-default);border-top-color:var(--accent);border-radius:50%;animation:spin .7s linear infinite}

/* Error */
.ip-error{display:flex;align-items:center;justify-content:center;gap:10px;padding:48px 0;color:var(--red);font-size:14px;font-weight:500}
.ip-error svg{width:20px;height:20px;flex-shrink:0}

/* Result grid */
.ip-result-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:16px;opacity:0;animation:heroReveal .6s var(--ease-out) forwards}

.ip-info-card{background:var(--bg-surface);border:1px solid var(--border-default);border-radius:var(--radius-xl);overflow:hidden;transition:border-color .2s ease,background .5s ease}
.ip-info-card:hover{border-color:var(--border-hover)}

.ip-info-card-header{display:flex;align-items:center;gap:10px;padding:18px 22px;border-bottom:1px solid var(--border-default)}
.ip-info-card-header h2{font-family:var(--font-display);font-size:14px;font-weight:700;letter-spacing:-0.01em;flex:1}
.ip-info-card-icon{width:32px;height:32px;display:flex;align-items:center;justify-content:center;background:var(--accent-subtle);border-radius:var(--radius-sm);flex-shrink:0}
.ip-info-card-icon svg{width:16px;height:16px;color:var(--accent)}

.ip-copy-btn{width:32px;height:32px;display:flex;align-items:center;justify-content:center;background:var(--bg-elevated);border:1px solid var(--border-default);border-radius:var(--radius-sm);cursor:pointer;color:var(--text-tertiary);transition:all .15s ease;flex-shrink:0}
.ip-copy-btn:hover{color:var(--text-primary);border-color:var(--border-hover);background:var(--bg-hover)}
.ip-copy-btn svg{width:14px;height:14px}

.ip-info-rows{padding:6px 0}
.ip-info-row{display:flex;align-items:center;justify-content:space-between;padding:10px 22px;transition:background .15s ease}
.ip-info-row:hover{background:var(--bg-hover)}
.ip-info-label{font-size:13px;color:var(--text-tertiary);font-weight:500;flex-shrink:0;min-width:100px}
.ip-info-value{font-size:13px;font-weight:600;color:var(--text-primary);text-align:right;word-break:break-all}
.ip-info-tag{display:inline-flex;font-family:var(--font-mono);font-size:10px;font-weight:700;padding:2px 8px;background:var(--bg-elevated);border:1px solid var(--border-default);border-radius:100px;color:var(--text-tertiary);letter-spacing:.03em;margin-left:6px;vertical-align:middle}
.ip-info-tag.accent{background:var(--accent-subtle);border-color:var(--accent);color:var(--accent)}

/* Map card spans full width */
.ip-info-map-card{grid-column:1/-1}
.ip-map-container{padding:12px;min-height:250px;display:flex;align-items:center;justify-content:center}
.ip-map-placeholder{color:var(--text-muted);font-size:13px}

/* Raw JSON card spans full width */
.ip-info-raw{grid-column:1/-1}
.ip-raw-json{padding:0;max-height:400px;overflow-y:auto}
.ip-raw-json pre{padding:16px 22px;font-family:var(--font-mono);font-size:12.5px;line-height:1.8;color:#d4d4d8;margin:0;white-space:pre-wrap;background:var(--bg-code);min-height:80px}

/* ══════════════════════════════════════════
   Responsive
   ══════════════════════════════════════════ */
@media(max-width:1024px){
    .stats{grid-template-columns:repeat(2,1fr)}
    .ip-card-details{grid-template-columns:repeat(2,1fr)}
    .ip-detail:nth-child(3n){border-right:1px solid var(--border-default)}
    .ip-detail:nth-child(2n){border-right:none}
    .ip-detail{border-bottom:1px solid var(--border-default)}
    .ip-detail:nth-child(n+5){border-bottom:none}
    .dns-layout{grid-template-columns:1fr;gap:16px}
    .panel{position:static}
    .server-list{max-height:300px}
    .map-panel{min-height:400px}
    .ip-result-grid{grid-template-columns:1fr}
}
@media(max-width:768px){
    .header{top:8px;width:calc(100% - 16px)}
    .header-bar{padding:0 14px;height:48px;border-radius:14px}
    .header-link{padding:4px 8px;font-size:12px}
    .hero{padding:110px 0 60px}
    .ip-card{border-radius:var(--radius-lg)}
    .ip-card-details{grid-template-columns:1fr}
    .ip-detail{border-right:none!important;border-bottom:1px solid var(--border-default)}
    .ip-detail:last-child{border-bottom:none}
    .ip-card-actions{flex-wrap:wrap}
    .endpoint-header{flex-wrap:wrap}
    .endpoint-desc{width:100%;margin-left:0;margin-top:4px}
    .playground-input-row{flex-direction:column}
    .footer-inner{flex-direction:column;gap:20px;text-align:center}
    .footer-links{flex-wrap:wrap;justify-content:center;gap:10px 20px}
    .param-row{grid-template-columns:1fr;gap:4px}
    .stats{grid-template-columns:repeat(2,1fr);border-radius:var(--radius-md)}
    .dns-main{padding:68px 0 20px}
    .record-types{gap:3px}
    .record-chip{padding:4px 10px;font-size:10px}
    .ip-page{padding:80px 0 20px}
    .ip-search-bar{flex-direction:column;border-radius:var(--radius-md)}
    .ip-search-icon{display:none}
    .ip-search-input{padding:14px 16px}
    .ip-search-btn{margin:0 6px 6px;border-radius:var(--radius-sm);justify-content:center}
    .ip-info-row{flex-direction:column;align-items:flex-start;gap:2px}
    .ip-info-value{text-align:left}
}

::-webkit-scrollbar{width:5px;height:5px}
::-webkit-scrollbar-track{background:transparent}
::-webkit-scrollbar-thumb{background:var(--text-muted);border-radius:3px}
::-webkit-scrollbar-thumb:hover{background:var(--text-tertiary)}
