:root{--lab-ok:#c8ff00;--lab-cyan:#62d9ff;--lab-danger:#ff6b5e}
body{min-height:100vh;background:var(--bg);color:var(--text);font-family:var(--f-display);overflow-x:hidden}
.lab-shell{position:relative;z-index:1;min-height:100vh;display:flex;flex-direction:column}
.lab-head{position:sticky;top:0;z-index:30;border-bottom:1px solid var(--line);background:color-mix(in srgb,var(--bg) 86%,transparent);backdrop-filter:blur(14px)}
.lab-head .wrap{min-height:62px;display:flex;align-items:center;justify-content:space-between;gap:18px}
.lab-brand{display:inline-flex;align-items:center;gap:10px;color:var(--text);font:600 13px var(--f-mono)}
.lab-brand-path{color:var(--faint)}
.lab-actions{display:flex;align-items:center;gap:10px}
.lab-back{display:inline-flex;align-items:center;gap:7px;min-height:32px;padding:6px 10px;border:1px solid var(--line-2);border-radius:7px;background:var(--surface);color:var(--muted);font:11px var(--f-mono)}
.lab-main{flex:1;padding:clamp(58px,8vw,104px) 0 80px}
.lab-hero{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:30px;align-items:end;margin-bottom:44px}
.lab-eyebrow{display:inline-flex;margin-bottom:18px;color:var(--accent-ink);font:11px var(--f-mono);letter-spacing:.14em;text-transform:uppercase}
.lab-hero h1{margin:0;font-size:clamp(52px,9vw,104px);line-height:.84;font-weight:800;letter-spacing:-.04em}
.lab-hero p{max-width:62ch;margin:24px 0 0;color:var(--muted);font-size:16px;line-height:1.7}
.lab-count{align-self:start;padding:9px 11px;border:1px solid var(--line);border-radius:6px;color:var(--faint);font:11px var(--f-mono);letter-spacing:.12em;text-transform:uppercase}
.lab-filter{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:24px}
.lab-filter button{padding:8px 12px;border:1px solid var(--line);border-radius:7px;background:var(--surface);color:var(--muted);font:11px var(--f-mono);cursor:pointer}
.lab-filter button:hover,.lab-filter button.on{border-color:var(--accent-ink);color:var(--accent-ink)}
.lab-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}
.lab-card{position:relative;min-height:320px;display:flex;flex-direction:column;padding:26px;overflow:hidden;border:1px solid var(--line-2);border-radius:10px;background:color-mix(in srgb,var(--surface) 94%,transparent);transition:border-color .25s,transform .25s}
.lab-card:hover{border-color:color-mix(in srgb,var(--accent) 52%,var(--line-2));transform:translateY(-2px)}
.lab-card::before{content:"";position:absolute;inset:0;opacity:var(--grid-op);background-size:32px 32px;background-image:linear-gradient(to right,var(--accent) 1px,transparent 1px),linear-gradient(to bottom,var(--accent) 1px,transparent 1px);mask-image:linear-gradient(to bottom,black,transparent 65%)}
.lab-card-top,.lab-card-body{position:relative;z-index:1}
.lab-card-top{display:flex;align-items:center;justify-content:space-between;gap:16px}
.lab-index{color:var(--faint);font:11px var(--f-mono);letter-spacing:.12em}
.lab-state{display:inline-flex;align-items:center;gap:7px;color:var(--accent-ink);font:11px var(--f-mono);letter-spacing:.08em;text-transform:uppercase}
.lab-state::before{content:"";width:6px;height:6px;border-radius:50%;background:var(--accent);box-shadow:0 0 8px var(--accent)}
.lab-icon{position:relative;z-index:1;width:76px;height:76px;display:grid;place-items:center;margin:34px 0 26px;border:1px solid var(--line-2);border-radius:18px;background:var(--bg);color:var(--accent-ink);font:700 28px var(--f-mono);box-shadow:0 18px 50px rgba(0,0,0,.24)}
.lab-card-body{margin-top:auto}
.lab-card h2{margin:0;font-size:clamp(26px,4vw,40px);line-height:1;letter-spacing:-.025em}
.lab-card p{margin:13px 0 18px;max-width:48ch;color:var(--muted);font-size:13.5px;line-height:1.65}
.lab-open{display:inline-flex;align-items:center;gap:8px;color:var(--text);font:12px var(--f-mono)}
.lab-open span{color:var(--accent-ink);transition:transform .2s}.lab-card:hover .lab-open span{transform:translate(2px,-2px)}
.lab-card-wide{grid-column:1/-1;min-height:250px;display:grid;grid-template-columns:94px minmax(0,1fr);grid-template-rows:auto 1fr;column-gap:26px}
.lab-card-wide .lab-card-top{grid-column:1/-1}
.lab-card-wide .lab-icon{grid-column:1;grid-row:2;align-self:center;margin:28px 0 0}
.lab-card-wide .lab-card-body{grid-column:2;grid-row:2;align-self:center;margin:28px 0 0}
.lab-card-wide p{max-width:72ch}
.lab-foot{border-top:1px solid var(--line);padding:24px 0;color:var(--faint);font:11px var(--f-mono)}
.lab-foot .wrap{display:flex;justify-content:space-between;gap:16px;flex-wrap:wrap}

/* tool pages */
.tool-main{flex:1;padding:clamp(42px,7vw,76px) 0 72px}
.tool-intro{margin-bottom:28px}.tool-intro h1{margin:8px 0 12px;font-size:clamp(36px,7vw,72px);line-height:.95;letter-spacing:-.035em}.tool-intro p{max-width:64ch;color:var(--muted);line-height:1.65}
.tool-layout{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(280px,.85fr);gap:18px;align-items:start}
.tool-panel{border:1px solid var(--line-2);border-radius:11px;background:var(--surface);overflow:hidden}
.tool-panel-head{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:13px 16px;border-bottom:1px solid var(--line);background:var(--surface-2);color:var(--faint);font:11px var(--f-mono);letter-spacing:.12em;text-transform:uppercase}
.tool-panel-body{padding:clamp(18px,4vw,30px)}
.tool-field{display:grid;gap:8px;margin-bottom:18px}.tool-field label,.tool-label{color:var(--muted);font:11px var(--f-mono);letter-spacing:.08em;text-transform:uppercase}
.tool-input,.tool-select,.tool-output{width:100%;border:1px solid var(--line-2);border-radius:8px;background:var(--bg);color:var(--text);font:14px var(--f-mono);outline:none}
.tool-input,.tool-select{min-height:46px;padding:10px 12px}.tool-input:focus,.tool-select:focus{border-color:var(--accent-ink)}
.tool-output{min-height:118px;padding:18px;overflow-wrap:anywhere;line-height:1.7;resize:vertical}
.tool-range{width:100%;accent-color:var(--accent)}
.tool-checks{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin:18px 0}.tool-check{display:flex;align-items:center;gap:9px;padding:11px;border:1px solid var(--line);border-radius:7px;color:var(--muted);font:12px var(--f-mono)}.tool-check input{accent-color:var(--accent)}
.tool-actions{display:flex;gap:10px;flex-wrap:wrap;margin-top:18px}.tool-actions .btn{justify-content:center}
.tool-note{padding:14px;border:1px solid var(--line);border-radius:8px;background:var(--bg);color:var(--muted);font-size:13px;line-height:1.6}.tool-note strong{color:var(--text)}
.tool-stats{display:grid;gap:1px;background:var(--line);border:1px solid var(--line);border-radius:8px;overflow:hidden}.tool-stat{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:13px;background:var(--bg);font:11px var(--f-mono);color:var(--muted)}.tool-stat b{color:var(--text);font-weight:500}
.result-list{display:grid;gap:8px}.result-item{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:13px;border:1px solid var(--line);border-radius:8px;background:var(--bg);font:13px var(--f-mono)}
.winner{margin-bottom:18px;padding:24px;border:1px solid var(--accent-ink);border-radius:10px;background:color-mix(in srgb,var(--accent) 7%,var(--bg));color:var(--accent-ink);font-size:clamp(24px,5vw,44px);font-weight:700;text-align:center;overflow-wrap:anywhere}
.status-msg{margin-top:12px;color:var(--muted);font:12px var(--f-mono);line-height:1.6}.status-msg.ok{color:var(--accent-ink)}.status-msg.err{color:var(--lab-danger)}
.redirect-chain{display:grid;gap:8px;margin-top:18px}.redirect-hop{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:12px;border-left:2px solid var(--line-2);background:var(--bg);font:11px var(--f-mono)}.redirect-hop-main{min-width:0;overflow-wrap:anywhere}.redirect-hop b{display:block;margin-bottom:4px;color:var(--accent-ink)}.redirect-hop-url{color:var(--text)}.redirect-hop-code{margin-left:7px;color:var(--faint);font-weight:400}.redirect-hop-actions{display:flex;gap:6px;flex:none}.hop-action{min-height:31px;padding:6px 9px;display:inline-flex;align-items:center;justify-content:center;gap:6px;border:1px solid var(--line-2);border-radius:6px;background:var(--surface);color:var(--muted);font:11px var(--f-mono);cursor:pointer;text-decoration:none;transition:border-color .2s,color .2s,background .2s}.hop-action:hover{border-color:var(--accent-ink);color:var(--accent-ink)}.hop-action.copied{border-color:var(--accent-ink);background:color-mix(in srgb,var(--accent) 8%,var(--surface));color:var(--accent-ink)}
.redirect-map-panel{margin-top:18px}.redirect-map{display:flex;align-items:stretch;gap:0;overflow-x:auto;padding:4px 2px 10px}.redirect-map-node{flex:1 0 170px;min-width:0;padding:15px;border:1px solid var(--line-2);border-radius:8px;background:var(--bg);font-family:var(--f-mono)}.redirect-map-node.final{border-color:color-mix(in srgb,var(--accent) 55%,var(--line-2));box-shadow:inset 0 0 24px color-mix(in srgb,var(--accent) 5%,transparent)}.redirect-map-step{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:12px;color:var(--faint);font-size:11px;letter-spacing:.1em;text-transform:uppercase}.redirect-map-step b{color:var(--accent-ink);font-weight:500}.redirect-map-host{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--text);font-size:12px}.redirect-map-protocol{display:block;margin-top:5px;color:var(--faint);font-size:11px;text-transform:uppercase}.redirect-map-arrow{flex:0 0 42px;display:grid;place-items:center;color:var(--accent-ink);font:18px var(--f-mono)}
@media(max-width:760px){.lab-brand-path{display:none}.lab-back span:last-child{display:none}.lab-hero{grid-template-columns:1fr}.lab-count{display:none}.lab-grid,.tool-layout{grid-template-columns:1fr}.lab-card{min-height:300px}.lab-card-wide{display:flex;grid-column:auto}.lab-card-wide .lab-icon{align-self:auto;margin:34px 0 26px}.lab-card-wide .lab-card-body{align-self:auto;margin-top:auto}.tool-checks{grid-template-columns:1fr}.lab-main{padding-top:48px}.redirect-hop{align-items:flex-start;flex-direction:column}.redirect-hop-actions{width:100%}.hop-action{flex:1}.redirect-map{flex-direction:column;overflow:visible;padding-bottom:4px}.redirect-map-node{flex:auto;width:100%}.redirect-map-arrow{flex:0 0 32px;transform:rotate(90deg)}}
@media(prefers-reduced-motion:reduce){.lab-card{transition:none}}
