/* SWITCH CERT vulnerability research blog — complete stylesheet.
   Transparent SWITCH logo; no white header badge. */

:root {
  color-scheme:dark;
  --bg:#090e13;
  --surface:#101820;
  --surface-raised:#141e27;
  --border:#273441;
  --border-soft:#202a34;
  --text:#eef3f3;
  --muted:#9ba9b3;
  --faint:#74828e;
  --accent:#ffb000;
  --accent-dark:#c78200;
  --blue:#002864;
  --mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono",monospace;
  --sans:Inter,ui-sans-serif,-apple-system,BlinkMacSystemFont,"Segoe UI",Arial,sans-serif
}

*,*::before,*::after {
  box-sizing:border-box
}

html {
  scroll-behavior:smooth;
  scroll-padding-top:95px
}

body {
  margin:0;
  background:var(--bg);
  color:var(--text);
  font-family:var(--sans);
  -webkit-font-smoothing:antialiased
}

body:before {
  content:"";
  pointer-events:none;
  position:absolute;
  z-index:-1;
  left:0;
  top:91px;
  width:100%;
  height:850px;
  background:radial-gradient(ellipse at 76% 26%,rgba(13,59,93,.22),transparent 45%),linear-gradient(90deg,transparent 98%,rgba(255,255,255,.025) 100%),linear-gradient(0deg,transparent 98%,rgba(255,255,255,.025) 100%);
  background-size:auto,64px 64px,64px 64px;
  mask-image:linear-gradient(#000,transparent 92%)
}

a {
  color:inherit;
  text-decoration:none
}

button,input {
  font:inherit
}

button {
  cursor:pointer
}

a:focus-visible,button:focus-visible,input:focus-visible {
  outline:2px solid var(--accent);
  outline-offset:4px
}

.container {
  width:min(1180px,calc(100% - 64px));
  margin-inline:auto
}

.top-rule {
  height:4px;
  background:linear-gradient(90deg,#ffad00 0 22%,#002864 22% 100%)
}

.site-header {
  border-bottom:1px solid var(--border-soft);
  background:rgba(9,14,19,.91);
  position:relative;
  z-index:3
}

.header-inner {
  height:86px;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:24px
}

.brand {
  display:inline-flex;
  align-items:center;
  gap:14px;
  min-width:0
}

.brand-logo {
  width:146px;
  height:auto;
  display:grid;
  place-items:center;
  background:transparent;
  border-radius:0;
  padding:0;
  flex:none
}

.brand-logo img {
  width:100%;
  height:auto;
  display:block;
  filter:brightness(3)
}

.brand-sub {
  display:flex;
  flex-direction:column;
  gap:3px;
  font-family:var(--mono);
  white-space:nowrap;
  font-size:12px;
  letter-spacing:.08em
}

.brand-sub strong {
  font-size:16px;
  color:#fff;
  letter-spacing:.13em
}

.brand-sub small {
  color:var(--faint);
  font-size:10px;
  text-transform:uppercase
}

.site-nav {
  display:flex;
  gap:32px;
  align-items:center;
  font-family:var(--mono);
  text-transform:uppercase;
  letter-spacing:.04em;
  font-size:11px;
  font-weight:600
}

.site-nav a {
  color:#acb5be;
  transition:color .2s
}

.site-nav a:hover {
  color:#fff
}

.site-nav a.nav-external {
  color:var(--accent)
}

.site-nav a.nav-external:hover {
  color:#ffcc5b
}

.hero {
  min-height:598px;
  display:grid;
  grid-template-columns:minmax(0,1.18fr) minmax(360px,.82fr);
  gap:54px;
  align-items:center;
  padding-block:90px 79px
}

.eyebrow,.section-label {
  font:700 11px/1.6 var(--mono);
  letter-spacing:.13em;
  color:var(--accent)
}

.eyebrow {
  display:flex;
  align-items:center;
  gap:10px;
  flex-wrap:wrap
}

.eyebrow-divider {
  color:#637383
}

.status-dot {
  width:7px;
  height:7px;
  background:var(--accent);
  border-radius:50%;
  box-shadow:0 0 0 4px rgba(255,176,0,.1)
}

h1,h2,p {
  margin-top:0
}

.hero h1 {
  letter-spacing:-.062em;
  line-height:1.08;
  font-size:clamp(39px,4.35vw,64px);
  margin:21px 0 25px;
  font-weight:800;
  max-width:690px
}

.title-accent {
  color:var(--accent);
  white-space:nowrap
}

.terminal-cursor {
  color:#d3a941;
  animation:blink 1.1s steps(1) infinite
}

@keyframes blink {
  50% {
    opacity:0
  }
}

.hero-lede {
  font-weight:600;
  line-height:1.65;
  font-size:18px;
  max-width:600px;
  margin-bottom:15px;
  color:#dce4e8
}

.hero-lede strong {
  color:#fff
}

.hero-support {
  font-size:14px;
  line-height:1.85;
  color:var(--muted);
  max-width:585px
}

.hero-actions {
  display:flex;
  align-items:center;
  gap:12px;
  flex-wrap:wrap;
  margin-top:30px
}

.button {
  min-height:44px;
  padding:13px 19px;
  border:1px solid transparent;
  display:inline-flex;
  justify-content:center;
  align-items:center;
  gap:11px;
  text-transform:uppercase;
  letter-spacing:.035em;
  font:700 11px/1.1 var(--mono);
  transition:background .2s,border-color .2s,transform .2s;
  white-space:nowrap;
  border-radius:2px
}

.button:hover {
  transform:translateY(-2px)
}

.button-primary {
  background:var(--accent);
  color:#111813
}

.button-primary:hover {
  background:#ffc23d
}

.button-ghost {
  border-color:#40505c;
  background:rgba(15,23,30,.65);
  color:#e4e9ec
}

.button-ghost:hover {
  border-color:var(--accent);
  background:var(--surface-raised)
}

.hero-footnote {
  font:600 10px/1.7 var(--mono);
  letter-spacing:.07em;
  color:var(--faint);
  margin-top:33px
}

.mono-square {
  display:inline-block;
  background:var(--accent);
  width:7px;
  height:7px;
  margin-right:7px
}

.terminal {
  border:1px solid #344452;
  background:#0d141b;
  box-shadow:0 18px 80px rgba(0,0,0,.33),inset 0 0 0 1px rgba(255,255,255,.015);
  position:relative;
  max-width:490px;
  width:100%;
  justify-self:end;
  transform:rotate(.45deg)
}

.terminal:after {
  position:absolute;
  content:"";
  width:90px;
  height:5px;
  right:0;
  bottom:-1px;
  background:var(--accent)
}

.terminal-header {
  height:43px;
  background:#17222c;
  border-bottom:1px solid #34434f;
  display:flex;
  gap:11px;
  align-items:center;
  padding:0 17px;
  color:#95a4b0;
  font:11px var(--mono)
}

.terminal-dots {
  display:flex;
  gap:5px
}

.terminal-dots i {
  display:block;
  background:#5a6874;
  width:7px;
  height:7px;
  border-radius:50%
}

.terminal-dots i:first-child {
  background:#ffb000
}

.terminal-dots i:nth-child(2) {
  background:#687c87
}

.terminal-top-right {
  margin-left:auto;
  font-size:9px;
  color:#7bbd95;
  letter-spacing:.06em
}

.terminal-content {
  padding:29px 29px 24px;
  font:12px/1.8 var(--mono)
}

.cmd {
  font-weight:700;
  color:#d8e3e8;
  margin:0 0 9px
}

.cmd span {
  color:var(--accent);
  margin-right:8px
}

.terminal-answer {
  color:#8fe1bc;
  margin:0 0 24px;
  padding-left:17px
}

.tree {
  color:#cdd6d9;
  padding-left:17px;
  line-height:2.05;
  margin-bottom:24px;
  white-space:nowrap
}

.tree-line {
  color:#566e7f;
  margin-right:10px
}

.type-note {
  color:#6f8aa0
}

.scope-output {
  margin:0 0 24px 18px;
  color:#accedd;
  letter-spacing:.09em;
  font-size:11px;
  line-height:2
}

.scope-output b {
  color:var(--accent)
}

.lower-cmd {
  margin-bottom:7px
}

.terminal-bottom {
  padding-top:16px;
  border-top:1px solid #263744;
  display:flex;
  justify-content:space-between;
  align-items:center;
  color:#72818e;
  font-size:10px;
  letter-spacing:.1em
}

.terminal-prompt {
  font-size:24px;
  line-height:.8;
  color:var(--accent);
  animation:blink 1.1s steps(1) infinite
}

.focus-band {
  border-block:1px solid #26333c;
  background:#0f171e
}

.focus-inner {
  display:grid;
  grid-template-columns:repeat(3,1fr)
}

.focus-inner>div {
  min-height:78px;
  display:flex;
  align-items:center;
  gap:21px;
  font-size:12px;
  font-weight:600;
  letter-spacing:.015em;
  padding:16px 24px;
  border-right:1px solid #273540
}

.focus-inner>div:first-child {
  padding-left:0
}

.focus-inner>div:last-child {
  border:0
}

.focus-number {
  font:700 12px var(--mono);
  color:var(--accent)
}

.research-section {
  padding-top:94px;
  padding-bottom:112px;
  min-height:490px
}

.section-heading {
  display:flex;
  justify-content:space-between;
  align-items:flex-end;
  gap:35px;
  margin-bottom:34px
}

.section-heading h2,.about-section h2 {
  font-size:clamp(32px,3.5vw,48px);
  letter-spacing:-.053em;
  line-height:1.15;
  margin:12px 0 13px;
  font-weight:800
}

.period {
  color:var(--accent)
}

.section-heading p {
  font-size:14px;
  line-height:1.7;
  margin:0;
  color:var(--muted)
}

.archive-count {
  flex:none;
  padding:8px 10px;
  background:#17212a;
  border:1px solid #2b3944;
  font:700 10px var(--mono);
  color:#abbac2;
  letter-spacing:.07em;
  margin-bottom:3px
}

.archive-toolbar {
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:24px;
  margin-bottom:16px
}

.search-wrap {
  position:relative;
  flex:1;
  max-width:560px
}

.search-wrap input {
  width:100%;
  height:50px;
  padding:13px 49px 13px 47px;
  border:1px solid #34424e;
  background:#121b23;
  color:#e7eef1;
  outline:none;
  border-radius:2px;
  font-size:13px
}

.search-wrap input::placeholder {
  color:#85949e
}

.search-wrap input:focus {
  border-color:var(--accent)
}

.search-glyph {
  position:absolute;
  left:16px;
  top:7px;
  font-size:27px;
  color:var(--accent);
  line-height:1.3
}

.search-wrap kbd {
  position:absolute;
  top:14px;
  right:16px;
  border:1px solid #405160;
  font:12px var(--mono);
  color:#a1b0ba;
  padding:2px 6px;
  border-radius:2px
}

.sort-label {
  font:700 10px var(--mono);
  color:#8b9da9;
  letter-spacing:.08em;
  white-space:nowrap
}

.sort-label span {
  color:var(--accent);
  margin-right:8px
}

.post-list {
  display:grid;
  gap:12px
}

.post-card {
  display:flex;
  justify-content:space-between;
  align-items:center;
  gap:32px;
  background:#111a22;
  border:1px solid #2b3a46;
  padding:27px 29px 27px 30px;
  position:relative;
  transition:background .2s,border-color .2s
}

.post-card:before {
  content:"";
  width:3px;
  position:absolute;
  top:-1px;
  left:-1px;
  bottom:-1px;
  background:var(--accent);
  opacity:0;
  transition:opacity .2s
}

.post-card:hover {
  border-color:#53616b;
  background:#15202a
}

.post-card:hover:before {
  opacity:1
}

.post-body {
  min-width:0;
  max-width:795px
}

.post-meta {
  display:flex;
  align-items:center;
  gap:12px;
  flex-wrap:wrap;
  margin-bottom:14px;
  font:700 10px/1.5 var(--mono);
  letter-spacing:.075em
}

.post-category {
  color:var(--accent)
}

.meta-divider {
  color:#53616b
}

.post-date {
  color:#92a1aa
}

.post-card h3 {
  font-size:21px;
  line-height:1.32;
  letter-spacing:-.025em;
  margin:0 0 11px
}

.post-desc {
  font-size:13px;
  line-height:1.75;
  color:#aab6be;
  overflow-wrap:anywhere;
  margin:0;
  max-width:750px
}

.post-actions {
  display:flex;
  gap:10px;
  align-items:center;
  flex:none
}

.post-actions button {
  color:#151713
}

.post-actions .button-ghost {
  color:#e4e9ec
}

.post-actions .button-small {
  padding-inline:16px
}

.pdf-mini {
  display:inline-grid;
  place-items:center;
  border:1px solid #476071;
  color:#a4b6c4;
  padding:7px 6px;
  font:700 9px var(--mono);
  letter-spacing:.02em
}

.button-small {
  min-height:40px;
  padding:10px 14px
}

.empty-state,.loading-state {
  padding:50px 28px;
  border:1px dashed #394a55;
  text-align:center;
  color:#acb9c2;
  background:rgba(17,26,34,.5);
  font-size:14px
}

.empty-state h3 {
  color:#fff;
  font-size:19px;
  margin:12px 0
}

.empty-state p {
  margin:0 auto;
  max-width:480px;
  line-height:1.7
}

.empty-state .empty-icon {
  font:30px var(--mono);
  color:var(--accent)
}

.loading-state {
  font-family:var(--mono);
  font-size:12px
}

.loading-state span {
  color:var(--accent)
}

.about-section {
  border-block:1px solid #2a3741;
  background:#111b23;
  padding:78px 0 89px;
  position:relative
}

.about-section:before {
  position:absolute;
  right:0;
  top:0;
  content:"";
  width:20%;
  height:4px;
  background:var(--accent)
}

.about-layout {
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:80px
}

.about-section h2 {
  font-size:clamp(31px,3vw,43px);
  line-height:1.25;
  margin:16px 0 0
}

.about-section h2 em {
  font-style:normal;
  color:var(--accent)
}

.about-content p {
  color:#b6c2c9;
  font-size:14px;
  line-height:1.9;
  margin:0 0 20px
}

.text-link {
  font:700 11px var(--mono);
  color:var(--accent);
  text-transform:uppercase;
  letter-spacing:.065em;
  border-bottom:1px solid var(--accent);
  padding-bottom:7px;
  display:inline-flex;
  gap:18px
}

.text-link:hover {
  color:#ffd071
}

.site-footer {
  padding:38px 0 22px;
  background:#090e13
}

.footer-content {
  display:flex;
  justify-content:space-between;
  gap:18px;
  align-items:center
}

.footer-brand {
  font:800 20px var(--sans);
  letter-spacing:-.055em
}

.footer-brand span {
  font:600 10px var(--mono);
  color:var(--accent);
  letter-spacing:.025em;
  vertical-align:middle;
  margin-left:6px
}

.footer-content p {
  color:#7e8d98;
  font-size:12px;
  margin:0
}

.footer-content a {
  font:600 12px var(--mono);
  color:#d6e3e7
}

.footer-content a:hover {
  color:var(--accent)
}

.footer-lower {
  display:flex;
  justify-content:space-between;
  gap:15px;
  border-top:1px solid #27323d;
  margin-top:38px;
  padding-top:21px;
  font:10px var(--mono);
  letter-spacing:.04em;
  color:#72818c
}

.footer-amber {
  color:var(--accent)
}

.pdf-dialog {
  position:fixed;
  inset:3vh 3vw;
  border:1px solid #455565;
  padding:0;
  background:#0b1218;
  color:#eef3f3;
  width:94vw;
  height:94vh;
  max-width:1400px;
  max-height:1000px;
  box-shadow:0 20px 100px rgba(0,0,0,.7);
  overflow:hidden
}

.pdf-dialog::backdrop {
  background:rgba(0,0,0,.85);
  backdrop-filter:blur(5px)
}

.viewer-shell {
  height:100%;
  min-height:0;
  display:flex;
  flex-direction:column
}

.viewer-topbar {
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:25px;
  padding:13px 23px;
  background:#15202a;
  border-bottom:1px solid #3a4752
}

.viewer-title-wrap {
  display:flex;
  align-items:center;
  gap:14px;
  min-width:0
}

.viewer-icon {
  font:800 10px var(--mono);
  color:var(--accent);
  border:1px solid var(--accent);
  padding:10px 7px
}

.viewer-overline {
  font:700 9px var(--mono);
  letter-spacing:.12em;
  color:#99aab6;
  margin-bottom:3px
}

.viewer-topbar h2 {
  font-size:15px;
  line-height:1.3;
  margin:0;
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
  max-width:77vw
}

.close-button {
  display:grid;
  place-items:center;
  width:35px;
  height:35px;
  line-height:1;
  border:1px solid #40525e;
  background:transparent;
  color:#fff;
  font-size:28px;
  flex:none
}

.close-button:hover {
  background:var(--accent);
  color:#111
}

.viewer-actions {
  display:flex;
  align-items:center;
  gap:9px;
  flex-wrap:wrap;
  padding:11px 23px;
  border-bottom:1px solid #273643
}

.viewer-tip {
  margin-left:auto;
  font:11px var(--mono);
  color:#8b9ba6
}

.pdf-dialog iframe {
  width:100%;
  height:100%;
  flex:1;
  min-height:0;
  border:0;
  background:#f0f0f0
}

.sr-only {
  position:absolute;
  width:1px;
  height:1px;
  padding:0;
  margin:-1px;
  overflow:hidden;
  clip:rect(0,0,0,0);
  white-space:nowrap;
  border:0
}

@media(max-width:1050px) {
  .hero {
    gap:32px;
    grid-template-columns:minmax(0,1.05fr) minmax(320px,.95fr)
  }
  .hero h1 {
    font-size:clamp(39px,4.6vw,55px)
  }
  .title-accent {
    white-space:normal
  }
  .post-card {
    align-items:flex-start;
    flex-direction:column;
    gap:19px
  }
  .post-actions {
    align-self:flex-end
  }
  .about-layout {
    gap:40px
  }
}

@media(max-width:760px) {
  .container {
    width:min(100% - 36px,1180px)
  }
  .header-inner {
    height:73px
  }
  .brand-logo {
    width:113px;
    height:auto
  }
  .brand-sub strong {
    font-size:13px
  }
  .brand-sub small {
    font-size:9px
  }
  .site-nav {
    gap:18px;
    font-size:10px
  }
  .site-nav a:first-child,.site-nav a:nth-child(2) {
    display:none
  }
  .hero {
    padding-top:67px;
    padding-bottom:65px;
    grid-template-columns:1fr;
    gap:47px;
    min-height:0
  }
  .hero h1 {
    font-size:clamp(39px,8vw,62px);
    margin-top:21px
  }
  .hero-lede {
    font-size:17px
  }
  .hero-support {
    font-size:13px
  }
  .terminal {
    max-width:none;
    transform:none
  }
  .focus-inner {
    grid-template-columns:1fr
  }
  .focus-inner>div {
    padding:15px 0;
    border-right:0;
    border-bottom:1px solid #273540;
    min-height:55px
  }
  .focus-inner>div:last-child {
    border:0
  }
  .research-section {
    padding:72px 0 80px
  }
  .section-heading {
    align-items:flex-start;
    flex-direction:column;
    gap:17px
  }
  .archive-toolbar {
    flex-direction:column;
    align-items:stretch;
    gap:12px
  }
  .search-wrap {
    max-width:none
  }
  .sort-label {
    align-self:flex-end
  }
  .post-card {
    padding:23px 19px
  }
  .post-actions {
    flex-wrap:wrap;
    align-self:stretch
  }
  .post-actions .button {
    flex:1
  }
  .post-card h3 {
    font-size:20px
  }
  .about-section {
    padding:67px 0
  }
  .about-layout {
    grid-template-columns:1fr;
    gap:28px
  }
  .footer-content {
    flex-wrap:wrap
  }
  .footer-content p {
    width:100%;
    order:3
  }
  .footer-lower {
    flex-direction:column
  }
  .pdf-dialog {
    inset:1.5vh 2vw;
    height:97vh;
    width:96vw
  }
  .viewer-topbar {
    padding:10px 12px
  }
  .viewer-actions {
    padding:9px 12px
  }
  .viewer-tip {
    display:none
  }
}

@media(max-width:420px) {
  .container {
    width:calc(100% - 30px)
  }
  .brand {
    gap:8px
  }
  .brand-logo {
    width:100px;
    height:auto;
    padding:0
  }
  .brand-sub strong {
    font-size:11px
  }
  .brand-sub small {
    font-size:8px
  }
  .site-nav a.nav-external {
    font-size:9px
  }
  .hero h1 {
    font-size:37px
  }
  .hero-actions .button {
    width:100%
  }
  .eyebrow {
    font-size:9px
  }
  .post-actions .pdf-mini {
    display:none
  }
  .terminal-content {
    padding:20px 16px
  }
  .tree {
    padding-left:5px;
    font-size:10px
  }
  .scope-output {
    font-size:10px
  }
  .pdf-dialog .button-small {
    font-size:10px
  }
}

@media(prefers-reduced-motion:reduce) {
  *,*::before,*::after {
    scroll-behavior:auto!important;
    animation:none!important;
    transition:none!important
  }
}

* Local file-based publisher helper */
.publisher-page {
  padding:70px 0 110px
}

.publisher-page>h1 {
  font-size:clamp(35px,4vw,54px);
  letter-spacing:-.052em;
  margin:12px 0 12px
}

.publisher-lede {
  font-size:15px;
  line-height:1.8;
  color:#b7c4ca;
  max-width:810px
}

.publisher-lede strong {
  color:#fff
}

.publisher-page code {
  font:12px var(--mono);
  color:var(--accent)
}

.publisher-steps {
  display:grid;
  grid-template-columns:repeat(3,1fr);
  border:1px solid #33424e;
  margin:29px 0 31px
}

.publisher-steps>div {
  display:flex;
  align-items:center;
  gap:15px;
  padding:20px;
  border-right:1px solid #33424e;
  font-size:12px;
  line-height:1.7;
  color:#bcc7cf
}

.publisher-steps>div:last-child {
  border-right:0
}

.publisher-steps b {
  color:var(--accent);
  font:700 15px var(--mono)
}

.publisher-layout {
  display:grid;
  grid-template-columns:minmax(0,1.15fr) minmax(330px,.85fr);
  gap:18px;
  align-items:start
}

.publisher-panel {
  background:#111a22;
  border:1px solid #30414e;
  padding:28px
}

.publisher-panel-heading {
  margin-bottom:24px
}

.publisher-panel-heading h2 {
  font-size:24px;
  letter-spacing:-.035em;
  margin:7px 0
}

.publisher-panel-heading p {
  font-size:12px;
  line-height:1.7;
  color:#a2b0ba;
  margin:13px 0 0
}

.form-group {
  margin:0 0 21px
}

.form-group label {
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:10px;
  font:700 11px var(--mono);
  margin:0 0 9px;
  color:#e4eaed
}

.form-group label>span {
  color:var(--accent)
}

.form-group label output {
  font:11px var(--mono);
  color:var(--accent);
  margin-left:auto
}

.form-group input,.form-group textarea,.form-group select {
  width:100%;
  display:block;
  background:#0a1118;
  color:#e6edf0;
  border:1px solid #425461;
  padding:12px 13px;
  border-radius:2px;
  font:13px var(--sans);
  min-height:43px;
  outline:0
}

.form-group input:focus,.form-group textarea:focus,.form-group select:focus {
  border-color:var(--accent)
}

.form-group textarea {
  line-height:1.6;
  resize:vertical
}

.form-group small {
  font:10px/1.7 var(--mono);
  color:#7f909c;
  display:block;
  margin-top:7px
}

.form-row {
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:14px
}

.filename-input {
  display:flex;
  align-items:center;
  background:#0a1118;
  border:1px solid #425461
}

.filename-input:focus-within {
  border-color:var(--accent)
}

.filename-input>span {
  color:var(--accent);
  font:12px var(--mono);
  padding-left:13px
}

.filename-input input {
  border:0;
  background:transparent;
  min-width:0
}

.editor-feedback {
  font:12px/1.5 var(--mono);
  min-height:18px;
  margin:0 0 17px;
  color:#9fe1b9
}

.editor-feedback.error {
  color:#ffb080
}

.draft-utilities {
  display:flex;
  justify-content:space-between;
  align-items:center;
  gap:15px;
  flex-wrap:wrap;
  padding-bottom:14px;
  border-bottom:1px solid #33414d
}

.import-label {
  font:700 11px var(--mono);
  color:var(--accent);
  cursor:pointer;
  border-bottom:1px solid var(--accent);
  padding-bottom:4px
}

.import-label:hover {
  color:#ffce68
}

.draft-utilities input {
  position:absolute;
  width:1px;
  height:1px;
  opacity:0
}

.draft-utilities input:focus-visible+span {
  outline:2px solid var(--accent)
}

.draft-count {
  font:10px var(--mono);
  color:#9facb6
}

.draft-list {
  min-height:158px;
  max-height:510px;
  overflow:auto
}

.draft-entry {
  padding:16px 0;
  border-bottom:1px solid #2a3945;
  display:flex;
  justify-content:space-between;
  align-items:start;
  gap:15px
}

.draft-entry h3 {
  font-size:13px;
  line-height:1.5;
  margin:0 0 7px
}

.draft-entry p {
  font:10px/1.5 var(--mono);
  color:#91a3b0;
  margin:0;
  overflow-wrap:anywhere
}

.draft-entry button {
  flex:none;
  border:1px solid #435361;
  color:#d5dfe4;
  background:transparent;
  font:11px var(--mono);
  padding:7px
}

.draft-entry button:hover {
  color:var(--accent);
  border-color:var(--accent)
}

.draft-empty {
  padding:40px 10px;
  font:12px/1.7 var(--mono);
  color:#8899a5;
  text-align:center
}

.export-button {
  width:100%;
  margin-top:24px
}

.export-tip {
  margin:17px 0 0;
  font-size:11px;
  line-height:1.75;
  color:#8d9da8
}

@media(max-width:900px) {
  .publisher-layout {
    grid-template-columns:1fr
  }
  .publisher-steps {
    grid-template-columns:1fr
  }
  .publisher-steps>div {
    border-right:0;
    border-bottom:1px solid #33424e
  }
  .publisher-steps>div:last-child {
    border-bottom:0
  }
}

@media(max-width:480px) {
  .publisher-panel {
    padding:20px
  }
  .form-row {
    grid-template-columns:1fr
  }
  .publisher-page {
    padding-top:49px
  }
  .publisher-page>h1 {
    font-size:35px
  }
}

* Reliable offline/online publication states */
[hidden] {
  display:none!important
}

.archive-notice {
  margin:0 0 18px;
  padding:12px 15px;
  border-left:3px solid var(--accent);
  background:#1b231d;
  color:#e7c882;
  font:12px/1.65 var(--mono)
}

.post-missing {
  margin:13px 0 0;
  color:#ffca84;
  font:11px/1.8 var(--mono);
  overflow-wrap:anywhere
}

.post-pdf-hint {
  margin:12px 0 0;
  font:10px/1.6 var(--mono);
  color:#a2b2bd;
  overflow-wrap:anywhere
}

.pdf-mini-missing {
  color:#ffb785!important;
  border-color:#9d6554!important
}

.button-disabled {
  opacity:.45;
  cursor:not-allowed;
  pointer-events:none
}

.viewer-error {
  height:100%;
  min-height:0;
  flex:1;
  display:flex;
  flex-direction:column;
  align-items:center;
  justify-content:center;
  text-align:center;
  padding:30px;
  background:#0e1720
}

.viewer-error-icon {
  display:grid;
  place-items:center;
  border:2px solid #ffc266;
  border-radius:100%;
  color:#ffc266;
  width:64px;
  height:64px;
  font:800 29px var(--mono)
}

.viewer-error h3 {
  font-size:25px;
  margin:19px 0 9px
}

.viewer-error p {
  max-width:600px;
  font:14px/1.8 var(--mono);
  color:#b9cad5;
  overflow-wrap:anywhere
}

* Connected Node publisher states */
.publisher-mode {
  padding:12px 17px;
  border:1px solid #305c49;
  background:#14261f;
  color:#a7ebbb;
  font:12px/1.7 var(--mono)
}

.publisher-mode.publisher-offline {
  border-color:#806b40;
  background:#2b241a;
  color:#ffd187
}

.existing-info {
  min-width:0;
  overflow-wrap:anywhere
}

.existing-status {
  margin-top:10px;
  color:#9fe1b9;
  font:10px var(--mono)
}

.existing-status.missing {
  color:#ffbd83
}

.attach-button {
  border:1px solid var(--accent);
  color:var(--accent);
  background:transparent;
  padding:10px 11px;
  font:11px var(--mono);
  flex:none;
  min-height:39px
}

.attach-button:hover {
  color:#111;
  background:var(--accent)
}

.attach-button:disabled {
  opacity:.5
}

#post-file {
  font:11px var(--mono);
  padding:12px 10px
}

#post-file::file-selector-button {
  border:1px solid #6d7882;
  color:#fff;
  background:#283743;
  padding:8px 10px;
  margin-right:11px;
  cursor:pointer
}

@media(max-width:520px) {
  .draft-entry {
    flex-direction:column
  }
  .attach-button {
    width:100%
  }
}

* Browser-only static publisher: no server or API required. */
.publisher-mode {
  padding:12px 17px;
  border:1px solid #305c49;
  background:#14261f;
  color:#a7ebbb;
  font:12px/1.7 var(--mono)
}

.publisher-mode.publisher-offline {
  border-color:#806b40;
  background:#2b241a;
  color:#ffd187
}

#post-file {
  font:11px var(--mono);
  padding:12px 10px
}

#post-file::file-selector-button {
  border:1px solid #6d7882;
  color:#fff;
  background:#283743;
  padding:8px 10px;
  margin-right:11px;
  cursor:pointer
}

.publisher-security-note {
  margin-top:28px;
  color:#9eafba;
  font:12px/1.8 var(--mono)
}

.publisher-security-note strong {
  color:#fff
}

.draft-entry-buttons {
  display:flex;
  flex-direction:column;
  gap:6px;
  min-width:76px
}

.draft-entry-buttons button {
  white-space:nowrap
}

.draft-entry-attachment {
  margin-top:8px!important;
  color:#b7d9ac!important
}

.draft-entry-attachment.missing {
  color:#ffd18f!important
}

[hidden] {
  display:none!important
}

textarea:focus-visible,select:focus-visible {
  outline:2px solid var(--accent);
  outline-offset:2px
}

button:disabled {
  opacity:.48;
  cursor:not-allowed;
  transform:none!important
}
