/* Sudowl Blog theme: wave 1+2 features */
.sw-sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.sw-ps{color:var(--petrol)}
.sw-band .sw-ps,.sw-hero .sw-ps,.sw-cta .sw-ps,.sw-rack-frame .sw-ps{color:#5FB3C7}
.sw-btn{display:inline-flex;align-items:center;gap:8px;font:600 15px/20px var(--sans);background:#F1F0EB;color:#0A3843;border:0;border-radius:99px;padding:10px 18px;text-decoration:none;cursor:pointer}
.sw .sw-btn{color:#0A3843;text-decoration:none}
.sw-btn:hover{background:#fff}
.sw .sw-btn-ghost{background:transparent;color:#F1F0EB;box-shadow:inset 0 0 0 1px rgba(241,240,235,.35)}
.sw .sw-btn-ghost:hover{background:rgba(241,240,235,.08)}

/* code blocks: shell chrome + copy */
.sw .sw-code{margin-bottom:20px;border:1px solid var(--line);border-radius:10px;overflow:hidden;background:var(--surface-raised)}
.sw-code-bar{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:6px 8px 6px 14px;border-bottom:1px solid var(--line);font:500 12px/16px var(--mono);color:var(--ink-muted);background:var(--surface)}
.sw-code-title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.sw-code-title::before{content:"";display:inline-block;width:7px;height:7px;border-radius:99px;box-shadow:inset 0 0 0 1.5px var(--ink-muted);margin-right:8px;vertical-align:0}
.sw-copy{font:500 12px/16px var(--mono);color:var(--petrol);background:transparent;border:1px solid var(--line);border-radius:6px;padding:5px 10px;cursor:pointer;display:inline-flex;align-items:center;gap:6px;min-height:28px}
.sw-copy:hover{border-color:var(--petrol)}
.sw-copy.is-done{color:var(--signal-ink);border-color:var(--signal-ink)}
.sw-copy.is-done::before{content:"";width:7px;height:7px;border-radius:99px;background:var(--signal)}
.sw .sw-code pre{border:0;border-radius:0;margin:0}
.sw .sw-content .sw-anchor{margin-left:10px;font:500 .7em var(--mono);color:var(--ink-muted);text-decoration:none;opacity:0;transition:opacity .15s}
.sw-content h2:hover .sw-anchor,.sw-content h3:hover .sw-anchor,.sw .sw-content .sw-anchor:focus-visible{opacity:1}
.sw .sw-content .sw-anchor.is-done{color:var(--signal-ink);opacity:1}
@media (hover:none){.sw .sw-content .sw-anchor{opacity:.5}}

/* conversion card */
.sw .sw-cta{margin:56px 0 0;border-radius:16px;overflow:hidden;background:linear-gradient(180deg,#0A3843,#06262E);color:#F1F0EB}
.sw-cta-term{padding:24px 28px 28px}
.sw-cta-line{font:500 14px/22px var(--mono);color:#F1F0EB;margin-bottom:14px}
.sw .sw-cta-q{font:700 clamp(24px,3vw,30px)/1.15 var(--display);color:#F1F0EB;margin:0 0 8px}
.sw .sw-cta-a{color:#A9C3C9;margin:0 0 20px;max-width:52ch}
.sw-cta-term .sw-btn{margin:0 8px 8px 0}
.sw-follow{border-top:1px solid rgba(241,240,235,.14);padding:20px 28px 24px}
.sw-follow label{display:flex;flex-wrap:wrap;gap:10px;align-items:center;color:#F1F0EB;font-size:15px;margin-bottom:12px}
.sw-follow-row{display:flex;gap:8px;flex-wrap:wrap}
.sw-follow input{flex:1 1 220px;font:16px var(--sans);padding:10px 14px;border-radius:99px;border:1px solid rgba(241,240,235,.3);background:rgba(241,240,235,.06);color:#F1F0EB}
.sw-follow-ok{display:none;margin:10px 0 0;color:#A9C3C9}
.sw-follow.success .sw-follow-ok{display:block}

/* related */
.sw-related{margin-top:56px}
.sw .sw-related .sw-label a{color:var(--petrol)}
.sw-related .sw-case{grid-template-columns:110px minmax(0,1fr) auto}
@media (max-width:700px){.sw-related .sw-case{grid-template-columns:1fr}}
.sw-archive-count{margin-top:10px}

/* reading LEDs in the header */
.sw-top-r{display:flex;align-items:center;gap:22px;flex-wrap:wrap}
.sw-read{display:flex;align-items:center;gap:6px;font:500 12px/16px var(--mono);color:#A9C3C9}
.sw-read i{width:8px;height:8px;border-radius:99px;box-shadow:inset 0 0 0 1.5px rgba(241,240,235,.45);transition:background .25s,box-shadow .25s}
.sw-read i.on{background:#2BB673;box-shadow:0 0 6px #2BB673}
.sw-read.is-open i.on{background:#F0A04B;box-shadow:0 0 6px #F0A04B}
.sw-read-msg{margin-left:6px;white-space:nowrap}
.sw-read.is-done .sw-read-msg{color:#3DD68C}
.sw-read.is-open.is-done .sw-read-msg{color:#F0A04B}
.sw-header{position:sticky;top:0;z-index:20}
@media (max-width:760px){.sw-read-msg{display:none}.sw-header{position:relative}}

/* rack map */
.sw-rackmap{margin:0 0 64px}
.sw-rackmap-head{display:flex;justify-content:space-between;align-items:end;gap:16px;flex-wrap:wrap;margin-bottom:14px}
.sw-rackmap-sub{margin:6px 0 0;color:var(--ink-muted);font-size:15px}
.sw-grep{display:flex;gap:6px;flex-wrap:wrap}
.sw-chip{font:500 12px/16px var(--mono);color:var(--ink-muted);background:transparent;border:1px solid var(--line);border-radius:6px;padding:6px 10px;cursor:pointer;min-height:32px}
.sw-chip:hover{border-color:var(--petrol);color:var(--petrol)}
.sw-chip.is-on{background:var(--petrol);border-color:var(--petrol);color:var(--on-petrol)}
.sw-rack-frame{background:linear-gradient(180deg,#0A3843,#06262E);border-radius:16px;padding:14px;box-shadow:inset 0 0 0 1px rgba(241,240,235,.08)}
.sw-rack-readout{font:500 13px/20px var(--mono);color:#F1F0EB;padding:4px 6px 12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.sw-rack-readout.is-open .sw-rack-title{color:#F0A04B}
.sw-units{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(64px,1fr));gap:5px}
.sw .sw-unit{position:relative;display:block;height:16px;border-radius:4px;background:rgba(241,240,235,.10);box-shadow:inset 0 0 0 1px rgba(241,240,235,.10);text-decoration:none;transition:background .15s,opacity .2s}
.sw-unit::before{content:"";position:absolute;left:6px;right:20px;top:7px;height:2px;border-radius:2px;background:rgba(241,240,235,.16)}
.sw-unit::after{content:"";position:absolute;right:6px;top:5px;width:6px;height:6px;border-radius:99px;background:#2BB673;box-shadow:0 0 5px #2BB673}
.sw-unit.is-open::after{background:#F0A04B;box-shadow:0 0 5px #F0A04B}
.sw .sw-unit:hover,.sw .sw-unit:focus-visible{background:rgba(241,240,235,.28)}
.sw .sw-unit.is-off{opacity:.15}
.sw-unit.is-off::after{box-shadow:none}
.sw .sw-unit.is-flash{background:rgba(43,182,115,.45)}
.sw-unit-t{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
@media (max-width:700px){.sw-units{grid-template-columns:repeat(auto-fill,minmax(44px,1fr))}.sw .sw-unit{height:22px}.sw-unit::after{top:8px}.sw-unit::before{top:10px}}

/* live shell in the hero */
.sw-prompt[hidden],.sw-shell[hidden]{display:none}
.sw-term-wrap{max-width:560px}
.sw-shell{font:500 14px/22px var(--mono);color:#F1F0EB;background:rgba(6,38,46,.8);border:1px solid rgba(241,240,235,.16);border-radius:10px;padding:10px 16px}
.sw-shell-log{max-height:220px;overflow:auto}
.sw-out{white-space:pre-wrap;word-break:break-word}
.sw .sw-out a{color:#F1F0EB;text-decoration:underline;text-underline-offset:3px}
.sw-dim{color:#A9C3C9}
.sw-o-ok{color:#3DD68C}
.sw-o-warn{color:#F0A04B}
.sw-shell-form{display:flex;align-items:center;gap:10px}
.sw-shell-form input{flex:1;min-width:0;font:inherit;color:#F1F0EB;background:transparent;border:0;outline:0;caret-color:#3DD68C;padding:2px 0}
.sw-shell-form:focus-within{box-shadow:0 1px 0 #5FB3C7}
.sw-shell-hint{font:500 12px/16px var(--mono);color:#A9C3C9;margin-top:8px}
.sw-shell-hint b{color:#F1F0EB;font-weight:500}
.sw-hero-owl.is-boot .sw-boot{animation:sw-boot-fast 1.2s ease-out 1}
.sw-hero-owl.is-boot .sw-boot.b2{animation-delay:.2s}
.sw-hero-owl.is-boot .sw-boot.b3{animation-delay:.4s}
@keyframes sw-boot-fast{0%{opacity:0}30%{opacity:1;filter:drop-shadow(0 0 8px #2BB673)}100%{opacity:1}}
.sw-hero-owl.is-boot{animation:sw-jolt .5s ease-out 1}
@keyframes sw-jolt{0%{transform:translateY(0)}30%{transform:translateY(-8px)}60%{transform:translateY(0)}80%{transform:translateY(-2px)}100%{transform:translateY(0)}}

/* 404 incident */
.sw-404 h1{font-size:clamp(40px,5.6vw,76px)}
.sw-incident{font:500 14px/24px var(--mono);color:#F1F0EB;background:rgba(6,38,46,.8);border:1px solid rgba(241,240,235,.16);border-radius:10px;padding:14px 16px;margin:0 0 18px;white-space:pre-wrap;word-break:break-all}
.sw-warn-txt{color:#F0A04B}
.sw-404-led{fill:#F0A04B;animation:sw-warnblink 1.6s ease-in-out infinite}
.sw-404-led:nth-of-type(2){animation-delay:.3s}
.sw-404-led:nth-of-type(3){animation-delay:.6s}
@keyframes sw-warnblink{0%,100%{opacity:1}50%{opacity:.35}}
.sw-404-eye{fill:#0F4C5C;transition:opacity .6s}
.sw-404.is-recovered .sw-404-led{fill:#2BB673;animation:none;filter:drop-shadow(0 0 3px #2BB673)}
.sw-404.is-recovered .sw-404-eye{opacity:0}
.sw-404-home{margin-top:28px}
@media (prefers-reduced-motion:reduce){.sw-404-led{animation:none}.sw-hero-owl.is-boot{animation:none}}
