:root{
  --bg:#f7f9fc;
  --card:#ffffff;
  --soft:#eef2f7;
  --text:#111827;
  --muted:#6b7280;

  --ok-bg:#e8f8ef;
  --ok-border:#2fbf71;
  --ok-text:#106a3d;

  --warn-bg:#fff4d6;
  --warn-border:#f59e0b;
  --warn-text:#7a4b00;

  --bad-bg:#fde8ea;
  --bad-border:#ef4444;
  --bad-text:#842029;

  --link:#2563eb;

  --radius:14px;
  --shadow:0 10px 30px rgba(17,24,39,.08);
  --maxw:1100px;
}

*{box-sizing:border-box}
body{
  margin:0;
  font-family:system-ui,-apple-system,Segoe UI,Roboto,Arial,sans-serif;
  background:var(--bg);
  color:var(--text);
  line-height:1.6;
}

a{color:var(--link); text-decoration:none}
a:hover{text-decoration:underline}

.sn-topbar{
  max-width:var(--maxw);
  margin:18px auto 0;
  padding:10px 14px;
  border-radius:var(--radius);
  background:var(--card);
  box-shadow:var(--shadow);
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:12px;
}
.sn-topbar-left{display:flex; align-items:center; gap:12px; min-width:0}
.sn-logo img{height:3.0rem; width:auto; display:block}
.sn-title-wrap{min-width:0}
.sn-topbar-title{font-weight:900; letter-spacing:-0.02em; white-space:nowrap; overflow:hidden; text-overflow:ellipsis}
.sn-topbar-sub{color:var(--muted); font-size:.9rem; line-height:1.3}
.sn-topbar-right{display:flex; align-items:center; gap:10px; flex-wrap:wrap; justify-content:flex-end}
.sn-nav a{
  display:inline-block;
  padding:.45rem .7rem;
  border-radius:10px;
  background:var(--soft);
  border:1px solid #e5e7eb;
  font-weight:900;
}
.sn-nav a:hover{filter:brightness(.98); text-decoration:none}

.sn-main{max-width:var(--maxw); margin:0 auto; padding:16px 1.5rem 2rem}

.sn-card{
  background:var(--card);
  border-radius:var(--radius);
  box-shadow:var(--shadow);
  padding:1.4rem;
  margin-bottom:1.25rem;
}

.sn-hero{
  padding:0;
  overflow:hidden;
}
.sn-hero-grid{display:grid; grid-template-columns:1fr}
@media (min-width: 980px){
  .sn-hero-grid{grid-template-columns: 1.2fr .8fr}
}
.sn-hero-main{
  background:linear-gradient(120deg,#4f8cff,#4ecb8c);
  color:#fff;
  padding:2.1rem 1.5rem;
}
.sn-hero-main h1{margin:0 0 .35rem 0; font-size:2rem}
.sn-hero-main p{margin:.25rem 0 0 0; opacity:.92}
.sn-tags{display:flex; flex-wrap:wrap; gap:.5rem; margin-top:1rem}
.sn-tags span{
  display:inline-block;
  padding:.22rem .6rem;
  border-radius:999px;
  background:rgba(255,255,255,.18);
  border:1px solid rgba(255,255,255,.22);
  font-weight:800;
  font-size:.85rem;
}
.sn-hero-aside{padding:1.1rem; background:var(--card)}
@media (min-width: 980px){ .sn-hero-aside{padding:1.4rem; border-left:1px solid #e5e7eb} }
.sn-hero-box{border:1px solid #e5e7eb; border-radius:14px; padding:14px; background:#fff}
.sn-hero-label{font-weight:900; margin-bottom:10px}
.sn-hero-links{display:flex; flex-wrap:wrap; gap:10px}
.sn-hero-links a{
  display:inline-block;
  padding:.55rem .75rem;
  border-radius:10px;
  background:var(--soft);
  border:1px solid #e5e7eb;
  font-weight:900;
  text-decoration:none;
}
.sn-hero-links a:hover{filter:brightness(.98)}

.sn-grid{display:grid; grid-template-columns:1fr; gap:12px}
@media (min-width: 900px){ .sn-grid{grid-template-columns: repeat(3, minmax(0,1fr));} }

.sn-box{
  border:1px solid #e5e7eb;
  border-radius:14px;
  padding:12px;
  background:#fff;
  box-shadow:0 6px 16px rgba(17,24,39,0.06);
}
.sn-box h3{margin:0 0 6px 0; font-size:1rem}
.sn-muted{color:var(--muted)}

.sn-code{
  background:var(--soft);
  border:1px solid #e5e7eb;
  border-radius:12px;
  padding:.85rem 1rem;
  font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;
  overflow:auto;
  white-space:pre-wrap;
}

.sn-pill{
  display:inline-block;
  padding:.22rem .6rem;
  border-radius:999px;
  font-size:.85rem;
  font-weight:800;
  border:1px solid transparent;
}
.sn-pill.ok{background:var(--ok-bg); color:var(--ok-text); border-color:var(--ok-border)}
.sn-pill.warn{background:var(--warn-bg); color:var(--warn-text); border-color:var(--warn-border)}

.sn-btn{
  display:inline-block;
  padding:.7rem .95rem;
  border-radius:10px;
  border:none;
  background:#4f8cff;
  color:#fff;
  font-weight:900;
  cursor:pointer;
  text-decoration:none;
}
.sn-btn:hover{filter:brightness(.95); text-decoration:none}

.sn-footer{
  max-width:var(--maxw);
  margin:0 auto 22px;
  padding:0 1.5rem;
  color:var(--muted);
  font-size:.9rem;
}
.sn-footer-inner{
  margin-top:14px;
  padding:14px 16px;
  border-radius:14px;
  background:var(--card);
  box-shadow:var(--shadow);
  border:1px solid #e5e7eb;
}
.sn-footer a{color:var(--link)}