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

        :root {
            --green: #48ff00;
            --green-dim: #1a5500;
            --purple: #aa00ff;
            --bg: #000;
            --bg2: #0a0a0a;
            --border: #0d2200;
        }

        html { scroll-behavior: smooth; }

        body {
            background: var(--bg);
            color: var(--green);
            font-family: 'Handjet', monospace;
            min-height: 100vh;
            line-height: 1.6;
        }

        /* ── TOP BAR ── */
        .topp-bar {
            position: sticky;
            top: 0;
            z-index: 100;
            background: #000;
            border-bottom: 1px solid var(--green-dim);
            display: flex;
            align-items: center;
            justify-content: space-between;
            padding: 0 24px;
            height: 48px;
        }

        .top-bar-title {
            font-size: 1.1rem;
            letter-spacing: 0.25em;
            color: var(--purple);
        }

        .back-link {
            color: var(--green-dim);
            text-decoration: none;
            font-size: 1rem;
            letter-spacing: 0.15em;
            transition: color 0.2s;
        }
        .back-link:hover { color: var(--green); }

        /* ── LAYOUT ── */
        .page-wrapper {
            display: flex;
            max-width: 1100px;
            margin: 0 auto;
            padding: 40px 20px 80px;
            gap: 40px;
        }

        /* ── SIDEBAR / TOC ── */
        .toc {
            width: 220px;
            flex-shrink: 0;
        }

        .toc-inner {
            position: sticky;
            top: 68px;
        }

        .toc-label {
            font-size: 0.78rem;
            letter-spacing: 0.3em;
            color: var(--green-dim);
            margin-bottom: 10px;
        }

        .toc a {
            display: block;
            color: var(--green-dim);
            text-decoration: none;
            font-size: 0.95rem;
            letter-spacing: 0.1em;
            padding: 4px 0 4px 10px;
            border-left: 1px solid var(--border);
            transition: color 0.15s, border-color 0.15s;
        }

        .toc a:hover, .toc a.active {
            color: var(--purple);
            border-left-color: var(--purple);
        }

        .toc a.sub {
            padding-left: 22px;
            font-size: 0.85rem;
        }

        /* ── CONTENT ── */
        .content { flex: 1; min-width: 0; }

        /* hero */
        .hero {
            border: 1px solid var(--green-dim);
            padding: 28px 30px;
            margin-bottom: 48px;
            position: relative;
            overflow: hidden;
        }

        .hero::before {
            content: "";
            position: absolute;
            inset: 0;
            background: repeating-linear-gradient(
                0deg, transparent, transparent 28px, #48ff0005 28px, #48ff0005 29px
            );
            pointer-events: none;
        }

        .hero-tag {
            font-size: 0.78rem;
            letter-spacing: 0.35em;
            color: var(--green-dim);
            margin-bottom: 8px;
        }

        .hero h1 {
            font-size: clamp(1.8rem, 5vw, 3rem);
            font-weight: 700;
            letter-spacing: 0.15em;
            text-shadow: 0 0 20px #48ff0055;
            margin-bottom: 10px;
        }

        .hero p {
            color: var(--green-dim);
            font-size: 1.05rem;
            letter-spacing: 0.08em;
            max-width: 600px;
        }

        /* sections */
        .section {
            margin-bottom: 52px;
        }

        .section-header {
            display: flex;
            align-items: baseline;
            gap: 14px;
            margin-bottom: 20px;
            padding-bottom: 8px;
            border-bottom: 1px solid var(--green-dim);
        }

        .section-num {
            color: var(--purple);
            font-size: 0.85rem;
            letter-spacing: 0.2em;
            white-space: nowrap;
        }

        .section h2 {
            font-size: 1.5rem;
            font-weight: 700;
            letter-spacing: 0.15em;
        }

        .section h3 {
            font-size: 1.1rem;
            font-weight: 700;
            letter-spacing: 0.12em;
            color: var(--green);
            margin: 22px 0 8px;
        }

        .section p {
            font-size: 1.05rem;
            letter-spacing: 0.05em;
            color: #b0ffb0;
            margin-bottom: 12px;
        }

        /* highlight box */
        .box {
            border: 1px solid var(--green-dim);
            background: var(--bg2);
            padding: 16px 20px;
            margin: 18px 0;
        }

        .box.purple { border-color: #55006a; }
        .box.warning { border-color: #665500; }

        .box-label {
            font-size: 0.75rem;
            letter-spacing: 0.3em;
            color: var(--green-dim);
            margin-bottom: 6px;
        }

        .box.purple .box-label { color: #8800cc; }
        .box.warning .box-label { color: #997700; }

        .box p {
            font-size: 1rem;
            color: #c0ffc0;
            margin: 0;
        }

        /* code / mono blocks */
        .mono {
            background: #050f00;
            border: 1px solid var(--border);
            padding: 14px 18px;
            font-family: 'Handjet', monospace;
            font-size: 1rem;
            color: var(--green);
            letter-spacing: 0.08em;
            overflow-x: auto;
            margin: 12px 0;
        }

        .mono .c { color: var(--green-dim); } /* comment */
        .mono .h { color: var(--purple); }     /* highlight */
        .mono .w { color: #ffffff; }            /* white */

        /* inline code */
        code {
            background: #0a1f00;
            border: 1px solid var(--border);
            padding: 1px 7px;
            font-family: 'Handjet', monospace;
            font-size: 0.95em;
            color: var(--green);
        }

        /* ip byte table */
        .byte-table {
            width: 100%;
            border-collapse: collapse;
            margin: 18px 0;
            font-size: 1rem;
        }

        .byte-table th {
            background: #0a1f00;
            color: var(--green-dim);
            font-size: 0.8rem;
            letter-spacing: 0.2em;
            padding: 8px 12px;
            text-align: left;
            border: 1px solid var(--border);
        }

        .byte-table td {
            padding: 8px 12px;
            border: 1px solid var(--border);
            color: #b0ffb0;
        }

        .byte-table tr:hover td { background: #080f00; }

        .byte-table .hl { color: var(--purple); font-weight: 700; }

        /* range badge */
        .badge {
            display: inline-block;
            border: 1px solid var(--green-dim);
            color: var(--green-dim);
            font-size: 0.78rem;
            letter-spacing: 0.18em;
            padding: 1px 8px;
            margin: 2px;
        }

        .badge.purple { border-color: var(--purple); color: var(--purple); }

        /* flow diagram */
        .flow {
            display: flex;
            flex-wrap: wrap;
            align-items: center;
            gap: 0;
            margin: 18px 0;
        }

        .flow-step {
            border: 1px solid var(--green-dim);
            padding: 10px 16px;
            font-size: 0.95rem;
            letter-spacing: 0.1em;
            color: var(--green);
            background: var(--bg2);
            white-space: nowrap;
        }

        .flow-arrow {
            color: var(--green-dim);
            font-size: 1.2rem;
            padding: 0 6px;
        }

        /* field list */
        .field-list {
            list-style: none;
            margin: 10px 0;
        }

        .field-list li {
            display: flex;
            gap: 14px;
            padding: 7px 0;
            border-bottom: 1px solid var(--border);
            font-size: 1rem;
        }

        .field-list li:last-child { border-bottom: none; }

        .fl-key {
            color: var(--purple);
            letter-spacing: 0.1em;
            min-width: 140px;
            flex-shrink: 0;
        }

        .fl-val { color: #b0ffb0; }

        /* scan animation */
        @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 3s linear infinite;
        }

        /* responsive */
        @media (max-width: 720px) {
            .toc { display: none; }
            .page-wrapper { padding: 24px 14px 60px; }
        }