/* ============================================================================
 * site.css — shared shell for the SWE-game-bench static pages.
 *
 * Used by: documentation.html, download.html, upload.html
 * (index.html keeps its own inline styles for the leaderboard table; the theme
 *  variables and header rules below are kept identical so every page matches.)
 *
 * Sections:
 *   1. Theme variables (light + dark)   3. Header / nav
 *   2. Base                             4. Page content + reusable components
 * ========================================================================== */

*{box-sizing:border-box;}

/* ---------- 1. theme variables ---------- */
html{
  --bg:#F7F6F2; --surface:#FFFFFF; --elevated:#FFFFFF;
  --text:#16181D; --text2:#5F6672; --rank-muted:#A6ACB6;
  --border:#DEDCD5; --border-soft:#EFEDE7; --th-border:#CFCCC4;
  --accent:#3157D5; --accent-hover:#2646B8; --sel:#EEF2FF;
  --warn:#B66A18; --warn-text:#8A5212; --warn-bg:#FFF4DF; --warn-border:#F0DCB4;
  --chip-bg:#F1EFE9; --row-muted:#FBFAF7; --track:#EAE8E1; --bar-incomplete:#C7B284;
  --tip-bg:#16181D; --tip-text:#F7F6F2; --header-bg:rgba(247,246,242,0.86);
  --skel-a:#ECEAE3; --skel-b:#F7F6F2;
}
html[data-theme="dark"]{
  --bg:#14161A; --surface:#1C1F24; --elevated:#23272E;
  --text:#F2F3F5; --text2:#A8AFBA; --rank-muted:#6B7280;
  --border:#343942; --border-soft:#262B32; --th-border:#343942;
  --accent:#6F8CFF; --accent-hover:#8AA0FF; --sel:#202A48;
  --warn:#E0A24A; --warn-text:#E6B266; --warn-bg:#33291A; --warn-border:#54421F;
  --chip-bg:#23272E; --row-muted:#191C21; --track:#2A2F37; --bar-incomplete:#6E6450;
  --tip-bg:#23272E; --tip-text:#F2F3F5; --header-bg:rgba(20,22,26,0.88);
  --skel-a:#23272E; --skel-b:#1C1F24;
}

/* ---------- 2. base ---------- */
html,body{margin:0;background:var(--bg);}
body{
  min-height:100vh;color:var(--text);font-family:'IBM Plex Sans',sans-serif;
  -webkit-font-smoothing:antialiased;transition:background .2s ease,color .2s ease;
}
a{color:inherit;}
.mono{font-family:'IBM Plex Mono',monospace;}

/* ---------- 3. header / nav ---------- */
.sgb-header{position:sticky;top:0;z-index:40;background:var(--header-bg);backdrop-filter:blur(8px);border-bottom:1px solid var(--border);}
.sgb-header-inner{max-width:1040px;margin:0 auto;padding:14px 28px;display:flex;align-items:center;justify-content:space-between;gap:20px;}
.sgb-logo{display:flex;align-items:center;gap:11px;text-decoration:none;color:var(--text);font-family:'Space Grotesk',sans-serif;font-weight:700;font-size:18px;letter-spacing:-.01em;}
.sgb-logo-mark{width:12px;height:12px;border-radius:3px;background:var(--accent);transform:rotate(45deg);flex:none;}
.sgb-logo-sub{color:var(--text2);font-weight:500;}
.sgb-nav{display:flex;align-items:center;gap:6px;}
.sgb-nav-link{display:inline-flex;align-items:center;gap:4px;padding:7px 12px;border-radius:8px;text-decoration:none;font-size:14px;font-weight:500;color:var(--text2);}
.sgb-nav-link.active{font-weight:600;color:var(--accent);background:var(--sel);}
.sgb-ext{font-size:12px;opacity:.7;}
.sgb-theme-btn{display:grid;place-items:center;width:34px;height:34px;margin-left:4px;border:1px solid var(--border);border-radius:8px;background:transparent;color:var(--text2);cursor:pointer;}
.sgb-theme-btn svg{display:block;}

@media (max-width: 640px){
  .sgb-header-inner{flex-wrap:wrap;gap:10px;padding:12px 18px;}
  .sgb-nav{flex-wrap:wrap;}
  .sgb-nav-link{padding:6px 9px;font-size:13px;}
}

/* ---------- 4. page content + reusable components ---------- */
.sgb-main{max-width:1040px;margin:0 auto;padding:40px 28px 80px;}
.sgb-eyebrow{font-family:'IBM Plex Mono',monospace;font-size:12.5px;font-weight:600;letter-spacing:.16em;text-transform:uppercase;color:var(--accent);margin-bottom:12px;}
.sgb-title{font-family:'Space Grotesk',sans-serif;font-weight:600;font-size:34px;line-height:1.1;letter-spacing:-.02em;margin:0 0 12px;color:var(--text);}
.sgb-desc{font-size:17px;line-height:1.55;color:var(--text2);margin:0 0 30px;max-width:70ch;text-wrap:pretty;}

.sgb-section-title{font-family:'Space Grotesk',sans-serif;font-weight:600;font-size:20px;letter-spacing:-.01em;margin:34px 0 14px;color:var(--text);}

/* generic card */
.sgb-card-block{background:var(--surface);border:1px solid var(--border);border-radius:14px;padding:22px 24px;margin-bottom:16px;}
.sgb-card-block h3{font-family:'Space Grotesk',sans-serif;font-weight:600;font-size:17px;margin:0 0 6px;color:var(--text);}
.sgb-card-block p{margin:0 0 16px;font-size:14.5px;line-height:1.55;color:var(--text2);}
.sgb-card-block p:last-child{margin-bottom:0;}
.sgb-card-row{display:flex;align-items:center;justify-content:space-between;gap:18px;flex-wrap:wrap;}
.sgb-card-row > div{min-width:0;}

/* buttons / links */
.sgb-btn{display:inline-flex;align-items:center;gap:8px;font-family:'IBM Plex Sans',sans-serif;font-size:14.5px;font-weight:600;padding:10px 16px;border-radius:9px;border:1px solid var(--border);background:var(--surface);color:var(--text);text-decoration:none;cursor:pointer;transition:border-color .15s,background .15s;}
.sgb-btn:hover{border-color:var(--accent);}
.sgb-btn-primary{background:var(--accent);border-color:var(--accent);color:#fff;}
.sgb-btn-primary:hover{background:var(--accent-hover);border-color:var(--accent-hover);}
.sgb-btn[aria-disabled="true"]{opacity:.55;cursor:not-allowed;}
.sgb-btn[aria-disabled="true"]:hover{border-color:var(--border);}

/* placeholder chip — visible flag that a link/value still needs wiring up */
.sgb-chip-todo{display:inline-flex;align-items:center;gap:6px;font-family:'IBM Plex Mono',monospace;font-size:10.5px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--warn-text);background:var(--warn-bg);border:1px solid var(--warn-border);border-radius:999px;padding:3px 9px;white-space:nowrap;}
.sgb-chip-todo::before{content:"";width:6px;height:6px;border-radius:50%;background:var(--warn);}

/* inline note / callout */
.sgb-note{display:flex;gap:10px;border:1px solid var(--border);background:var(--row-muted);border-radius:11px;padding:13px 15px;font-size:13.5px;line-height:1.5;color:var(--text2);margin:14px 0;}
.sgb-note code{font-family:'IBM Plex Mono',monospace;font-size:12.5px;background:var(--chip-bg);border:1px solid var(--border);border-radius:5px;padding:1px 6px;color:var(--text);}

/* inline code + code blocks inside doc cards */
.sgb-card-block code{font-family:'IBM Plex Mono',monospace;font-size:13px;background:var(--chip-bg);border:1px solid var(--border);border-radius:5px;padding:1px 6px;color:var(--text);}
.sgb-card-block pre{background:var(--chip-bg);border:1px solid var(--border);border-radius:9px;padding:14px 16px;overflow-x:auto;margin:0 0 16px;}
.sgb-card-block pre:last-child{margin-bottom:0;}
.sgb-card-block pre code{background:none;border:none;padding:0;font-size:12.8px;line-height:1.6;color:var(--text);}

/* lists inside doc cards */
.sgb-card-block ul,.sgb-card-block ol{margin:0 0 16px;padding-left:22px;font-size:14.5px;line-height:1.6;color:var(--text2);}
.sgb-card-block ul:last-child,.sgb-card-block ol:last-child{margin-bottom:0;}
.sgb-card-block li{margin-bottom:5px;}
.sgb-card-block li code{font-size:12.8px;}

/* tables inside doc cards */
.sgb-table{width:100%;border-collapse:collapse;font-size:13.5px;margin:0 0 16px;}
.sgb-table:last-child{margin-bottom:0;}
.sgb-table th,.sgb-table td{text-align:left;padding:8px 10px;border-bottom:1px solid var(--border-soft);vertical-align:top;}
.sgb-table th{font-family:'IBM Plex Mono',monospace;font-size:11px;letter-spacing:.04em;text-transform:uppercase;color:var(--text2);border-bottom:1px solid var(--th-border);}
.sgb-table td{color:var(--text2);}
.sgb-table td code{color:var(--text);}

/* ---------- form ---------- */
.sgb-form{max-width:680px;}
.sgb-field{margin-bottom:20px;}
.sgb-field label{display:block;font-size:14px;font-weight:600;color:var(--text);margin-bottom:7px;}
.sgb-field .sgb-field-hint{font-weight:400;color:var(--text2);font-size:12.5px;margin-left:6px;}
.sgb-input,.sgb-select,.sgb-textarea{width:100%;font-family:'IBM Plex Sans',sans-serif;font-size:14.5px;color:var(--text);background:var(--surface);border:1px solid var(--border);border-radius:9px;padding:10px 12px;transition:border-color .15s;}
.sgb-input:focus,.sgb-select:focus,.sgb-textarea:focus{outline:none;border-color:var(--accent);}
.sgb-textarea{min-height:90px;resize:vertical;line-height:1.5;}
.sgb-select{appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath fill='%235F6672' d='M1 1l5 5 5-5'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 12px center;padding-right:34px;}

/* ---------- drag-and-drop dropzone ---------- */
.sgb-dropzone{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;text-align:center;border:2px dashed var(--border);border-radius:14px;background:var(--row-muted);padding:38px 24px;cursor:pointer;transition:border-color .15s,background .15s;}
.sgb-dropzone:hover{border-color:var(--accent);}
.sgb-dropzone.is-dragover{border-color:var(--accent);background:var(--sel);}
.sgb-dropzone-icon{width:34px;height:34px;color:var(--text2);}
.sgb-dropzone-title{font-weight:600;font-size:15px;color:var(--text);}
.sgb-dropzone-sub{font-size:13px;color:var(--text2);}
.sgb-dropzone-sub .sgb-link{color:var(--accent);font-weight:600;text-decoration:underline;cursor:pointer;}

/* selected-file pill */
.sgb-file-pill{display:none;align-items:center;gap:12px;margin-top:14px;border:1px solid var(--border);background:var(--surface);border-radius:11px;padding:12px 14px;}
.sgb-file-pill.show{display:flex;}
.sgb-file-pill .sgb-file-icon{width:22px;height:22px;color:var(--accent);flex:none;}
.sgb-file-meta{min-width:0;flex:1;}
.sgb-file-name{font-family:'IBM Plex Mono',monospace;font-size:13.5px;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.sgb-file-size{font-size:12px;color:var(--text2);}
.sgb-file-remove{appearance:none;border:none;background:none;color:var(--text2);font-size:18px;line-height:1;cursor:pointer;padding:4px;border-radius:6px;}
.sgb-file-remove:hover{color:var(--warn-text);background:var(--warn-bg);}

/* form footer + submit feedback */
.sgb-form-footer{display:flex;align-items:center;gap:14px;flex-wrap:wrap;margin-top:24px;}
.sgb-form-msg{font-size:13.5px;line-height:1.5;}
.sgb-form-msg.err{color:var(--warn-text);}

.sgb-footer-meta{margin-top:46px;padding-top:18px;border-top:1px solid var(--border-soft);font-size:12.5px;color:var(--text2);line-height:1.5;}
