 *, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }

        body {
            background: #000;
            color: #48ff00;
            font-family: 'Handjet', monospace;
            min-height: 100vh;
        }

        /* ── SEARCH SECTION ── */
        .lookup-wrapper {
            max-width: 860px;
            margin: 0 auto;
            padding: 40px 20px 60px;
        }

        .lookup-title {
            font-size: clamp(2rem, 6vw, 3.6rem);
            font-weight: 700;
            letter-spacing: 0.15em;
            text-align: center;
            margin-bottom: 6px;
            text-shadow: 0 0 18px #48ff0066;
        }

        .lookup-guide {
            letter-spacing: 0.15em;
            text-align: center;
            margin-bottom: 6px;
            text-shadow: 0 0 18px #48ff0066;
            transition: transform 0.3s ease;
            color: #48ff00;
        }

        .lookup-guide:hover {
            color: #aa00ff;
            transform: scale(1.2);
        }

        .lookup-subtitle {
            text-align: center;
            color: #1a5500;
            font-size: 1.1rem;
            letter-spacing: 0.3em;
            margin-bottom: 36px;
        }

        .search-row {
            display: flex;
            gap: 10px;
            margin-bottom: 14px;
        }

        .search-row input {
            flex: 1;
            background: transparent;
            border: 1px solid #48ff00;
            color: #48ff00;
            font-family: 'Handjet', monospace;
            font-size: 1.4rem;
            padding: 10px 16px;
            outline: none;
            letter-spacing: 0.08em;
            transition: border-color 0.2s, box-shadow 0.2s;
        }

        .search-row input::placeholder { color: #1a5500; }
        .search-row input:focus {
            border-color: #aa00ff;
            box-shadow: 0 0 10px #aa00ff44;
        }

        .search-row button, .btn-myip {
            background: transparent;
            border: 1px solid #48ff00;
            color: #48ff00;
            font-family: 'Handjet', monospace;
            font-size: 1.3rem;
            padding: 10px 22px;
            cursor: pointer;
            letter-spacing: 0.12em;
            transition: background 0.15s, color 0.15s, border-color 0.15s;
            white-space: nowrap;
        }

        .search-row button:hover {
            background: #48ff00;
            color: #000;
        }

        .btn-myip {
            display: block;
            width: 100%;
            border-color: #1a5500;
            color: #1a5500;
            font-size: 1.1rem;
            padding: 7px 16px;
            margin-bottom: 36px;
        }

        .btn-myip:hover {
            border-color: #aa00ff;
            color: #aa00ff;
            background: transparent;
        }

        /* ── RESULT PANEL ── */
        #result {
            display: none;
            border: 1px solid #1a5500;
            padding: 0;
            position: relative;
        }

        .result-header {
            background: #0a0a0a;
            border-bottom: 1px solid #1a5500;
            padding: 10px 18px;
            display: flex;
            align-items: center;
            justify-content: space-between;
            gap: 12px;
        }

        .result-ip-label {
            font-size: 1.6rem;
            font-weight: 700;
            letter-spacing: 0.12em;
            color: #aa00ff;
            text-shadow: 0 0 10px #aa00ff55;
        }

        .result-flag {
            font-size: 2rem;
        }

        /* grid of data blocks */
        .data-grid {
            display: grid;
            grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));
            gap: 0;
        }

        .data-block {
            padding: 14px 18px;
            border-right: 1px solid #0d2200;
            border-bottom: 1px solid #0d2200;
        }

        .data-block:last-child { border-right: none; }

        .data-label {
            font-size: 0.85rem;
            color: #1a5500;
            letter-spacing: 0.25em;
            text-transform: uppercase;
            margin-bottom: 3px;
        }

        .data-value {
            font-size: 1.25rem;
            color: #48ff00;
            letter-spacing: 0.06em;
            word-break: break-all;
        }

        .data-value.highlight {
            color: #aa00ff;
        }

        /* map placeholder */
        #map-container {
            border-top: 1px solid #1a5500;
            height: 260px;
            position: relative;
            overflow: hidden;
            background: #030d00;
        }

        #map-container iframe {
            width: 100%;
            height: 100%;
            border: none;
            filter: grayscale(1) invert(1) hue-rotate(90deg) brightness(0.7);
        }

        .map-label {
            position: absolute;
            top: 8px;
            left: 12px;
            font-size: 0.8rem;
            color: #1a5500;
            letter-spacing: 0.2em;
            z-index: 2;
            pointer-events: none;
        }

        /* status / error */
        #statusMsg {
            min-height: 26px;
            font-size: 1.1rem;
            letter-spacing: 0.15em;
            margin-bottom: 10px;
            color: #1a5500;
        }

        #statusMsg.error { color: #ff3300; }
        #statusMsg.loading { color: #aa00ff; }

        /* scan animation on result header */
        @keyframes scanline {
            0%   { top: 0; }
            100% { top: 100%; }
        }

        .scanline {
            pointer-events: none;
            position: absolute;
            left: 0; right: 0; height: 2px;
            background: linear-gradient(transparent, #48ff0033, transparent);
            animation: scanline 2.4s linear infinite;
            z-index: 5;
        }

        /* copy button */
        .copy-btn {
            background: transparent;
            border: 1px dotted #1a5500;
            color: #1a5500;
            font-family: 'Handjet', monospace;
            font-size: 0.85rem;
            padding: 3px 10px;
            cursor: pointer;
            letter-spacing: 0.1em;
        }

        .copy-btn:hover { border-color: #48ff00; color: #48ff00; }

        /* history */
        .history-title {
            font-size: 0.85rem;
            color: #1a5500;
            letter-spacing: 0.25em;
            margin-bottom: 6px;
        }

        .history-chips {
            display: flex;
            flex-wrap: wrap;
            gap: 6px;
            margin-bottom: 28px;
        }

        .chip {
            border: 1px dotted #1a5500;
            color: #1a5500;
            font-family: 'Handjet', monospace;
            font-size: 1rem;
            padding: 3px 10px;
            cursor: pointer;
            letter-spacing: 0.08em;
            transition: color 0.15s, border-color 0.15s;
        }

        .chip:hover { color: #aa00ff; border-color: #aa00ff; }