*,:before,:after{box-sizing:border-box;margin:0;padding:0}:root{--bg-0:#060d13;--bg-1:#071016;--bg-2:#081016;--panel:#091218e6;--panel-hi:#0c171ffa;--surface:#081118c7;--teal:#35d6bb;--teal-soft:#35d6bb1f;--amber:#ffb84d;--violet:#9f88ff;--rose:#ff6b7f;--text-hi:#f2f8fb;--text:#c5d2da;--text-dim:#8497a3;--text-mute:#63808e;--border:#63809238;--border-strong:#6380926b;--shadow:0 18px 50px -22px #000000a6;--serif:"Fraunces", "Times New Roman", serif;--mono:"DM Mono", "Consolas", "Courier New", monospace}html.light{--bg-0:#e8ecf0;--bg-1:#eef1f4;--bg-2:#f4f6f8;--panel:#fffffff0;--panel-hi:#fff;--surface:#3c50640f;--text-hi:#0a1620;--text:#1d2a36;--text-dim:#4d5e6c;--text-mute:#6a7a87;--border:#3c50642e;--border-strong:#3c506452;--shadow:0 18px 40px -24px #14283c4d}html,body{min-height:100%}body{font-family:var(--mono);color:var(--text);background:radial-gradient(circle at top center, #35d6bb1f, transparent 32%), radial-gradient(circle at 85% 15%, #9f88ff14, transparent 24%), linear-gradient(180deg, var(--bg-2) 0%, var(--bg-1) 50%, var(--bg-0) 100%);font-size:14px;line-height:1.65;overflow-x:hidden}html.light body{background:linear-gradient(#f4f6f8 0%,#eef1f4 50%,#e8ecf0 100%)}body:before{content:"";pointer-events:none;z-index:0;background-image:linear-gradient(#263e4e38 1px,#0000 1px),linear-gradient(90deg,#263e4e38 1px,#0000 1px);background-size:48px 48px;position:fixed;inset:0;-webkit-mask-image:linear-gradient(#ffffffe6,#ffffff2e);mask-image:linear-gradient(#ffffffe6,#ffffff2e)}html.light body:before{background-image:linear-gradient(#3c506412 1px,#0000 1px),linear-gradient(90deg,#3c506412 1px,#0000 1px)}a{color:inherit}::selection{color:var(--text-hi);background:#35d6bb59}.skip-link{width:1px;height:1px;position:absolute;top:auto;left:-9999px;overflow:hidden}.skip-link:focus{z-index:9999;background:var(--bg-0);width:auto;height:auto;color:var(--teal);border:2px solid var(--teal);font-family:var(--mono);letter-spacing:.06em;outline:none;padding:10px 16px;font-size:13px;position:fixed;top:0;left:0;overflow:visible}.cl-header{z-index:2;background:#0e1f1e;justify-content:space-between;align-items:center;gap:14px;padding:12px 20px;display:flex;position:relative;overflow:hidden}html.light .cl-header{background:#0e1f1e}.cl-header:before{content:"";pointer-events:none;background-image:linear-gradient(#4dcfb00d 1px,#0000 1px),linear-gradient(90deg,#4dcfb00d 1px,#0000 1px);background-size:24px 24px;position:absolute;inset:0}.cl-header-left{z-index:1;align-items:center;gap:14px;display:flex;position:relative}.cl-badge{width:38px;height:38px;font-family:var(--mono);color:#4dcfb0;letter-spacing:.5px;background:#162b2a;border:1px solid #2a4a44;border-radius:6px;flex-shrink:0;justify-content:center;align-items:center;font-size:12px;font-weight:700;display:flex}.cl-header-text{flex-direction:column;gap:2px;display:flex}.cl-title{color:#e8f5f2;letter-spacing:1.5px;font-size:16px;font-weight:700;line-height:1.2;font-family:var(--mono)}.cl-sub{color:#4dcfb0;letter-spacing:1px;font-size:11px;font-family:var(--mono);opacity:.85;text-decoration:none}.cl-sub:hover{opacity:1;text-decoration:underline}.cl-header-nav{z-index:1;align-items:center;gap:8px;display:flex;position:relative}.cl-nav-btn,.cl-theme-toggle{font-family:var(--mono);color:#4dcfb0;cursor:pointer;background:#162b2a;border:1px solid #2a4a44;border-radius:6px;transition:background .15s,border-color .15s}.cl-nav-btn{letter-spacing:1px;text-transform:uppercase;padding:7px 14px;font-size:11px;font-weight:700;text-decoration:none}.cl-nav-btn:hover,.cl-theme-toggle:hover{background:#1e3c3a;border-color:#4dcfb0}.cl-theme-toggle{justify-content:center;align-items:center;width:36px;height:36px;font-size:16px;line-height:1;display:flex}.wrap{z-index:1;width:min(1280px,100% - 40px);margin:0 auto;position:relative}#app{z-index:1;gap:22px;width:min(1280px,100% - 40px);margin:0 auto;padding:18px 0 56px;display:grid;position:relative}.hero{border:1px solid var(--border);box-shadow:var(--shadow);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background:linear-gradient(145deg,#35d6bb12,#0000 30%),linear-gradient(#081118eb,#081118d1);padding:28px 36px;position:relative}html.light .hero{background:linear-gradient(145deg,#1aab940f,#0000 30%),#ffffffe0}.hero-body{align-items:center;gap:40px;display:flex}.hero-left{flex:none}.hero-right{border-left:1px solid var(--border);flex:1 1 0;min-width:0;padding-left:40px}.eyebrow{color:var(--amber);text-transform:uppercase;letter-spacing:.16em;align-items:center;gap:10px;margin-bottom:14px;font-size:11px;display:inline-flex}.eyebrow:before{content:"";background:currentColor;width:34px;height:1px}.hero h1{max-width:14ch;font-family:var(--serif);color:var(--text-hi);letter-spacing:-.03em;text-wrap:balance;font-size:clamp(2.2rem,4vw,3.6rem);font-weight:500;line-height:.98}.hero h1 span{color:var(--teal);font-style:italic}.hero p{color:var(--text);margin-top:0;font-size:13.5px}.hero-stats{flex-wrap:wrap;gap:8px;margin-top:18px;display:flex}.hero-stat{border:1px solid var(--border-strong);color:var(--text);text-transform:uppercase;letter-spacing:.09em;background:var(--surface);padding:5px 10px;font-size:10px}.kicker{color:var(--text-dim);text-transform:uppercase;letter-spacing:.14em;align-items:center;gap:8px;margin-bottom:12px;font-size:10px;display:inline-flex}.kicker:before{content:"";background:currentColor;width:18px;height:1px}.panel{border:1px solid var(--border);background:linear-gradient(160deg, #ffffff08, transparent 38%), var(--panel);box-shadow:var(--shadow);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);padding:24px 26px;position:relative;overflow:hidden}html.light .panel{background:linear-gradient(160deg, #00000005, transparent 38%), var(--panel)}.panel:after{content:"";background:linear-gradient(90deg, var(--accent,var(--teal)), transparent 72%);opacity:.85;height:2px;position:absolute;inset:auto 0 0}.panel h2,.panel h3{font-family:var(--serif);color:var(--text-hi);letter-spacing:-.01em;margin-bottom:14px;font-weight:500}.panel h2{font-size:1.55rem;line-height:1.1}.panel h3{font-size:1.25rem;line-height:1.15}.panel h4{color:var(--teal);letter-spacing:.05em;font-size:12px}.panel p{color:var(--text);font-size:13px;line-height:1.7}.panel p+p{margin-top:8px}.controls{--accent:var(--teal)}.controls-grid{grid-template-columns:repeat(auto-fit,minmax(200px,1fr));align-items:end;gap:14px;display:grid}.field{flex-direction:column;gap:6px;display:flex}.field label{color:var(--text-dim);letter-spacing:.14em;text-transform:uppercase;font-size:10px}.controls select,.controls input[type=range],.controls button{font-family:var(--mono);color:var(--text-hi);background:var(--surface);border:1px solid var(--border-strong);border-radius:0;outline:none;padding:11px 14px;font-size:13px;transition:border-color .18s,color .18s,background .18s}.controls select:hover,.controls input[type=range]:hover,.controls button:hover{border-color:var(--teal)}.controls select:focus-visible,.controls input:focus-visible,.controls button:focus-visible,.cl-nav-btn:focus-visible,.cl-theme-toggle:focus-visible,summary:focus-visible{outline:2px solid var(--teal);outline-offset:2px}.controls input[type=range]{border:1px solid var(--border-strong);background:0 0;height:36px;padding:0 12px}.controls button{color:var(--teal);text-transform:uppercase;letter-spacing:.12em;cursor:pointer;background:#35d6bb1a;font-weight:500}.controls button:hover{color:var(--text-hi);border-color:var(--teal);background:#35d6bb33}.controls output{font-family:var(--mono);color:var(--teal);letter-spacing:.06em;font-size:12px}pre,code{font-family:var(--mono);color:var(--text)}code{background:var(--surface);border:1px solid var(--border);padding:1px 6px}pre{color:var(--text);border:1px solid var(--border);white-space:pre-wrap;word-break:break-all;background:#040a0ec7;padding:12px 14px;font-size:12px;line-height:1.55;overflow-x:auto}html.light pre{background:#f5f8fbf2}.msg-card{--accent:var(--teal);border:1px solid var(--border);background:var(--panel);margin-top:12px;padding:16px 18px;animation:.28s both reveal;position:relative;overflow:hidden}.msg-card:after{content:"";background:linear-gradient(90deg, var(--accent), transparent 70%);opacity:.8;height:2px;position:absolute;inset:auto 0 0}.msg-card h4{color:var(--accent);text-transform:uppercase;letter-spacing:.1em;margin:0 0 8px;font-size:11px;font-weight:700}.msg-card pre{margin-top:6px}.msg-card details{margin-top:10px}.msg-card summary{cursor:pointer;color:var(--text-dim);letter-spacing:.1em;text-transform:uppercase;-webkit-user-select:none;user-select:none;font-size:11px}.msg-card summary:hover,.msg-card details[open] summary{color:var(--teal)}.scenario-ns .msg-card{--accent:var(--violet)}.scenario-lowe-attack .msg-card{--accent:var(--rose)}.scenario-lowe-fix .msg-card{--accent:var(--teal)}.scenario-kerberos .msg-card{--accent:var(--amber)}.flow-result{border:1px dashed var(--border-strong);color:var(--text);letter-spacing:.04em;margin-top:16px;padding:10px 14px;font-size:12px}.flow-result.ok{color:var(--teal);border-color:#35d6bb73}.flow-result.bad{color:var(--rose);border-color:#ff6b7f73}.grid{grid-template-columns:1fr 1fr;gap:22px;display:grid}.ticket-line{grid-template-columns:140px 1fr;gap:12px;margin-bottom:8px;font-size:12px;display:grid}.ticket-line span:first-child{color:var(--text-dim);text-transform:uppercase;letter-spacing:.08em;padding-top:4px;font-size:10px}.ticket-line code{border:1px solid var(--border);background:var(--surface);overflow-wrap:anywhere;padding:6px 10px;font-size:11.5px;display:block}.attack-list{gap:12px;margin-top:6px;display:grid}.attack-item{border:1px solid var(--border);background:var(--surface);grid-template-columns:14px 1fr;gap:14px;padding:14px 16px;display:grid;position:relative}.attack-item:before{content:"";background:var(--teal);border-radius:0;width:6px;height:6px;margin-top:8px;box-shadow:0 0 0 3px #35d6bb26}.attack-item h4{color:var(--text-hi);text-transform:uppercase;letter-spacing:.1em;margin:0 0 4px;font-size:11px}.attack-item p{color:var(--text);margin:0;font-size:12.5px;line-height:1.65}.footer{z-index:1;padding:24px 0 48px;position:relative}.footer-quote{border:1px solid var(--border);box-shadow:var(--shadow);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:linear-gradient(#0b1821eb,#081118d1);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:24px;padding:26px 28px;display:flex}html.light .footer-quote{background:linear-gradient(#ffffffe0,#ffffffc7)}.footer-quote blockquote{font-family:var(--serif);color:var(--text-hi);max-width:42ch;font-size:1.25rem;line-height:1.4}.footer-quote cite{color:var(--teal);text-transform:uppercase;letter-spacing:.14em;font-size:11px;font-style:normal}@keyframes fadeUp{0%{opacity:0;transform:translateY(14px)}to{opacity:1;transform:translateY(0)}}@keyframes reveal{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.hero,.panel,.footer-quote{animation:.55s both fadeUp}@media (width<=880px){.cl-header{flex-wrap:wrap;padding:10px 14px}.cl-title{letter-spacing:1px;font-size:14px}.cl-sub{font-size:10px}.cl-badge{width:32px;height:32px;font-size:11px}#app,.wrap{width:min(100% - 24px,1280px);padding-left:0;padding-right:0}#app{gap:16px;padding-top:22px}.hero{padding:22px 18px}.hero-body{flex-direction:column;gap:20px}.hero-right{border-left:none;border-top:1px solid var(--border);padding-top:18px;padding-left:0}.hero h1{font-size:clamp(2rem,9vw,3rem)}.hero p{font-size:13px}.panel{padding:20px 18px}.grid{grid-template-columns:1fr;gap:16px}.controls-grid{grid-template-columns:1fr}.ticket-line{grid-template-columns:1fr;gap:4px}.ticket-line span:first-child{padding-top:0}.attack-item{grid-template-columns:1fr}.attack-item:before{display:none}.footer-quote{padding:22px}.footer-quote blockquote{font-size:1.1rem}}@media (width<=600px){.panel{overflow:visible}.swim{-webkit-overflow-scrolling:touch;padding-bottom:6px;overflow-x:auto}.swim-header,.swim-step{min-width:420px}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition:none!important;animation:none!important}}.layout{grid-template-columns:220px 1fr;align-items:start;gap:22px;display:grid}.layout>.main{gap:22px;min-width:0;display:grid}@media (width<=980px){.layout{grid-template-columns:1fr}}.timeline{border:1px solid var(--border);background:var(--panel);box-shadow:var(--shadow);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);padding:18px 18px 18px 22px;position:sticky;top:18px}.timeline ol{margin:0;padding:0;list-style:none;position:relative}.timeline ol:before{content:"";background:var(--border-strong);width:1px;position:absolute;top:6px;bottom:6px;left:5px}.timeline li{cursor:pointer;color:var(--text-dim);letter-spacing:.04em;padding:8px 0 8px 22px;font-size:12px;line-height:1.4;position:relative}.timeline li:before{content:"";border:1px solid var(--border-strong);background:var(--bg-1);width:11px;height:11px;position:absolute;top:14px;left:0}.timeline li.active{color:var(--text-hi)}.timeline li.active:before{background:var(--accent,var(--teal));border-color:var(--accent,var(--teal));box-shadow:0 0 0 4px color-mix(in srgb, var(--accent,var(--teal)) 18%, transparent)}.timeline li[data-key=ns].active{--accent:var(--violet)}.timeline li[data-key=lowe-attack].active{--accent:var(--rose)}.timeline li[data-key=lowe-fix].active{--accent:var(--teal)}.timeline li[data-key=kerberos].active{--accent:var(--amber)}.timeline .year{font-family:var(--mono);letter-spacing:.14em;color:var(--text-mute);text-transform:uppercase;font-size:10px;display:block}.timeline .label{font-family:var(--serif);margin-top:2px;font-size:14px;display:block}.swim{gap:14px;margin-top:16px;display:grid}.swim-header{grid-template-columns:repeat(var(--cols,3), minmax(0, 1fr));gap:12px;margin-bottom:4px;display:grid}.swim-header .party{text-align:center;border:1px solid var(--border-strong);background:var(--surface);font-family:var(--mono);letter-spacing:.14em;text-transform:uppercase;color:var(--text-hi);padding:8px 10px;font-size:11px}.swim-step{grid-template-columns:repeat(var(--cols,3), minmax(0, 1fr));align-items:stretch;gap:12px;display:grid;position:relative}.swim-step .lane{border-left:1px dashed var(--border);border-right:1px dashed var(--border);min-height:18px}.swim-step .lane:first-child{border-left:none}.swim-step .lane:last-child{border-right:none}.swim-arrow{grid-column:var(--from) / var(--to);background:linear-gradient(90deg, transparent, color-mix(in srgb, var(--accent,var(--teal)) 14%, transparent), transparent);border-top:1px solid color-mix(in srgb, var(--accent,var(--teal)) 50%, transparent);align-items:center;gap:10px;padding:4px 10px;display:flex}.swim-arrow.reverse{background:linear-gradient(270deg, transparent, color-mix(in srgb, var(--accent,var(--teal)) 14%, transparent), transparent)}.swim-arrow .step-num{font-family:var(--mono);letter-spacing:.1em;color:var(--accent,var(--teal));background:var(--bg-1);border:1px solid color-mix(in srgb, var(--accent,var(--teal)) 50%, transparent);flex-shrink:0;padding:2px 6px;font-size:10px}.swim-arrow .arrow-label{font-family:var(--mono);color:var(--text-hi);text-align:center;white-space:nowrap;text-overflow:ellipsis;flex:1;font-size:11.5px;overflow:hidden}.swim-arrow .arrow-tip{color:var(--accent,var(--teal));font-family:var(--mono);font-weight:700}.swim-step.scenario-ns{--accent:var(--violet)}.swim-step.scenario-lowe-attack{--accent:var(--rose)}.swim-step.scenario-lowe-fix{--accent:var(--teal)}.swim-step.scenario-kerberos{--accent:var(--amber)}.swim-payload{border:1px solid var(--border);background:var(--surface);grid-column:1/-1;gap:10px;padding:12px 14px;display:grid}.swim-payload .narrative{color:var(--text);font-size:12.5px;line-height:1.6}.swim-payload .narrative b{color:var(--text-hi);font-weight:500}.chips{flex-wrap:wrap;gap:6px;display:flex}.chip{font-family:var(--mono);border:1px solid var(--border);background:var(--bg-1);color:var(--text);padding:3px 8px;font-size:11px}.chip b{color:var(--text-mute);text-transform:uppercase;letter-spacing:.08em;margin-right:6px;font-size:9.5px;font-weight:400}.chip code{color:var(--text-hi);background:0 0;border:none;padding:0}.swim-payload details summary{cursor:pointer;font-family:var(--mono);letter-spacing:.12em;text-transform:uppercase;color:var(--text-dim);font-size:10.5px}.swim-payload details[open] summary{color:var(--accent,var(--teal))}.swim-payload pre{margin-top:8px;font-size:11px}.explainer{border:1px solid var(--border);background:linear-gradient(180deg, color-mix(in srgb, var(--accent,var(--teal)) 8%, transparent), transparent);margin-top:18px;padding:14px 16px}.explainer h3{font-family:var(--mono);letter-spacing:.16em;text-transform:uppercase;color:var(--accent,var(--teal));margin:0 0 6px;font-size:11px}.explainer p{color:var(--text);margin:0;font-size:12.5px;line-height:1.7}.explainer p+p{margin-top:6px}.scenario-ns .explainer{--accent:var(--violet)}.scenario-lowe-attack .explainer{--accent:var(--rose)}.scenario-lowe-fix .explainer{--accent:var(--teal)}.scenario-kerberos .explainer{--accent:var(--amber)}.diff{font-family:var(--mono);border:1px solid var(--border);background:var(--bg-1);margin-top:12px;font-size:12px;overflow:hidden}.diff .row{align-items:baseline;gap:10px;padding:6px 12px;display:flex}.diff .row.del{color:var(--rose);background:#ff6b7f14}.diff .row.add{color:var(--teal);background:#35d6bb14}.diff .row .sigil{opacity:.7;flex-shrink:0;width:14px}.diff .row .text{white-space:pre-wrap;word-break:break-all}.klist .ticket-line.cipher code{color:var(--text-dim);font-size:10.5px;line-height:1.5}.klist .flag-row{flex-wrap:wrap;gap:4px;margin-top:2px;display:flex}.klist .flag{font-family:var(--mono);letter-spacing:.08em;text-transform:uppercase;border:1px solid var(--border);background:var(--bg-1);color:var(--teal);padding:2px 6px;font-size:10px}.hidden{display:none!important}.swim-arrow .arrow-line{background:linear-gradient(90deg, transparent, color-mix(in srgb, var(--accent,var(--teal)) 70%, transparent), transparent);flex:auto;min-width:14px;height:1px}.swim-arrow .arrow-head{border-top:5px solid #0000;border-bottom:5px solid #0000;border-left:8px solid var(--accent,var(--teal));width:0;height:0;filter:drop-shadow(0 0 3px color-mix(in srgb, var(--accent,var(--teal)) 50%, transparent));flex-shrink:0}.swim-arrow.reverse .arrow-head{transform:rotate(180deg)}.swim-arrow .arrow-tip{font-family:var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--text-dim);flex-shrink:0;font-size:10px}.swim-header .party.dim{opacity:.35;border-style:dashed}.swim-step{opacity:0;animation:.36s both swim-in;animation-delay:calc(var(--i,1) * 90ms);transform:translateY(6px)}@keyframes swim-in{to{opacity:1;transform:translateY(0)}}.klist .ticket-line.cipher code{white-space:pre-wrap;word-break:break-all}.klist .cipher-note{font-family:var(--mono);letter-spacing:.12em;text-transform:uppercase;color:var(--text-mute);margin:6px 0 2px;font-size:10px;display:block}.klist .cipher-note.hmac{color:var(--amber)}.action-row{flex-wrap:wrap;align-items:center;gap:10px;margin-top:14px;display:flex}.action-row button{font-family:var(--mono);letter-spacing:.12em;text-transform:uppercase;border:1px solid var(--border-strong);background:var(--surface);color:var(--text-hi);cursor:pointer;padding:9px 14px;font-size:11px;transition:border-color .15s,color .15s,background .15s}.action-row button:hover{border-color:var(--rose);color:var(--rose);background:color-mix(in srgb, var(--rose) 8%, transparent)}.action-row .hint{color:var(--text-dim);font-size:11.5px}.action-row .badge{font-family:var(--mono);letter-spacing:.1em;text-transform:uppercase;border:1px solid var(--border-strong);padding:4px 10px;font-size:10.5px}.action-row .badge.ok{color:var(--teal);border-color:#35d6bb8c}.action-row .badge.bad{color:var(--rose);border-color:#ff6b7f8c}.selfcheck{grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:10px;margin-top:6px;display:grid}.selfcheck .check{border:1px solid var(--border);background:var(--surface);align-items:center;gap:10px;padding:10px 12px;display:flex}.selfcheck .check .pip{background:var(--text-mute);width:10px;height:10px;box-shadow:0 0 0 3px color-mix(in srgb, var(--text-mute) 25%, transparent);flex-shrink:0}.selfcheck .check.ok .pip{background:var(--teal);box-shadow:0 0 0 3px color-mix(in srgb, var(--teal) 25%, transparent)}.selfcheck .check.bad .pip{background:var(--rose);box-shadow:0 0 0 3px color-mix(in srgb, var(--rose) 25%, transparent)}.selfcheck .check .name{font-family:var(--mono);color:var(--text-hi);font-size:11.5px}.selfcheck .check .msg{font-family:var(--mono);color:var(--text-dim);text-align:right;margin-left:auto;font-size:10.5px}html.light .swim-arrow .arrow-head{filter:none}html.light .selfcheck .check,html.light .action-row button,html.light .swim-payload{background:#ffffffd9}html.light .swim-header .party{background:#ffffffe6}html.light .timeline li:before{background:#fffffff2}html.light .diff,html.light .chip,html.light .klist .flag,html.light .timeline{background:#ffffffd9}html.light pre,html.light .swim-payload pre{background:#f5f8fbf2}html.light .explainer{background:linear-gradient(180deg, color-mix(in srgb, var(--accent,var(--teal)) 10%, white), white)}
