:root{
  --bg:#F3F4F1;
  --panel:#FFFFFF;
  --line:#DBE0DB;
  --ink:#1E2723;
  --muted:#5B6660;
  --accent:#3B6E5C;
  --accent-dark:#2A4F42;
  --accent-ink:#FFFFFF;
  --error:#9B2C2C;
  --error-bg:#FBEEEE;
  --warn:#8A6D1D;
  --warn-bg:#FBF6E7;
  --pk:#2A4F42;
  --pk-bg:#E4EEE9;
  --fk:#7A4E1D;
  --fk-bg:#FBF1E4;
  --radius:5px;
}
*{box-sizing:border-box;}
body{margin:0;background:var(--bg);color:var(--ink);font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;line-height:1.45;}
header{background:var(--panel);border-bottom:1px solid var(--line);padding:1.1rem 1.5rem;}
.header-inner{max-width:960px;margin:0 auto;}
.title-row{display:flex;align-items:center;justify-content:space-between;gap:1rem;margin-bottom:0.85rem;}
.title-row h1{margin:0;font-size:1.4rem;font-weight:650;letter-spacing:-0.01em;}
button,.file-label{font:inherit;font-size:0.88rem;border:1px solid var(--line);background:var(--panel);color:var(--ink);padding:0.5rem 0.9rem;border-radius:var(--radius);cursor:pointer;}
button:hover:not(:disabled),.file-label:hover{border-color:var(--accent);}
button:disabled{opacity:0.45;cursor:not-allowed;}
button.primary{background:var(--accent);border-color:var(--accent);color:var(--accent-ink);}
button.primary:hover:not(:disabled){background:var(--accent-dark);border-color:var(--accent-dark);}
input[type=file]{display:none;}
.row{display:flex;flex-wrap:wrap;align-items:center;gap:0.6rem;}
.row+.row{margin-top:0.6rem;}
.row-subtle{margin-top:0.6rem;}
.row-subtle button,.row-subtle .file-label{font-size:0.8rem;color:var(--muted);background:transparent;border-color:transparent;padding:0.3rem 0.4rem;}
.row-subtle button:hover:not(:disabled),.row-subtle .file-label:hover{color:var(--ink);border-color:var(--line);}
#status{margin:0.7rem 0 0;font-size:0.85rem;color:var(--muted);}
#status.is-ok{color:var(--accent-dark);}
#status.is-bad{color:var(--error);}
#schema-panel{max-width:960px;margin:0 auto;padding:1rem 1.5rem 1.5rem;}
#blocks > #schema-panel{max-width:none;margin:0;padding:0;}
#schema-panel[hidden]{display:none;}
@media (min-width:961px){
  #blocks > #schema-panel{width:calc(100vw - 3rem);margin-left:0;align-self:center;}
}
.schema-empty{color:var(--muted);font-size:0.88rem;}
.schema-grid{display:flex;flex-wrap:wrap;align-items:flex-start;justify-content:center;gap:1rem;}
.schema-table{flex:0 1 auto;width:max-content;max-width:100%;background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:0.85rem 0.9rem;box-shadow:0 2px 8px rgba(30,39,35,0.04);overflow-x:auto;}
.schema-table h3{margin:0 -0.9rem 0.65rem;padding:0 0.9rem 0.7rem;border-bottom:2px solid var(--accent);font-size:0.95rem;font-weight:650;overflow-wrap:anywhere;}
table.schema-cols{border-collapse:collapse;width:max-content;max-width:none;table-layout:auto;font-size:0.82rem;}
table.schema-cols td{padding:0.35rem 0.3rem;border-top:1px solid var(--line);vertical-align:middle;white-space:nowrap;}
table.schema-cols tr:first-child td{border-top:none;}
.col-name{font-family:"SFMono-Regular",Consolas,"Liberation Mono",Menlo,monospace;}
.cell-value{display:block;white-space:nowrap;}
.col-type{color:var(--muted);}
.col-badges{white-space:nowrap;}
.badge{display:inline-block;font-size:0.65rem;font-weight:650;line-height:1.3;padding:0.12rem 0.35rem;border-radius:3px;margin:0.08rem 0.3rem 0.08rem 0;white-space:nowrap;}
.badge-pk{color:var(--pk);background:var(--pk-bg);}
.badge-fk{color:var(--fk);background:var(--fk-bg);}
@media (max-width:420px){
  .schema-table{width:100%;padding-left:0.7rem;padding-right:0.7rem;}
  .schema-table h3{margin-left:-0.7rem;margin-right:-0.7rem;padding-left:0.7rem;padding-right:0.7rem;}
  table.schema-cols{font-size:0.78rem;}
}
main{max-width:960px;margin:1.5rem auto;padding:0 1.5rem;display:flex;flex-direction:column;gap:1.25rem;}
.block{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;}
.block-head{display:flex;align-items:center;justify-content:space-between;padding:0.6rem 0.9rem;border-bottom:1px solid var(--line);background:#FAFBFA;}
.block-title{font-size:0.85rem;font-weight:600;color:var(--muted);}
.block-actions{display:flex;gap:0.5rem;}
.block-actions button{padding:0.35rem 0.7rem;font-size:0.82rem;}
.btn-remove{color:var(--error);}
.CodeMirror{height:auto;min-height:100px;font-family:"SFMono-Regular",Consolas,"Liberation Mono",Menlo,monospace;font-size:14px;padding:0.25rem 0;}
.result{border-top:1px solid var(--line);padding:0.75rem 0.9rem;}
.result:empty{display:none;}
.table-wrap{overflow-x:auto;}
table{border-collapse:collapse;width:100%;font-size:0.88rem;}
th,td{text-align:left;padding:0.4rem 0.6rem;border-bottom:1px solid var(--line);white-space:nowrap;}
th{color:var(--muted);font-weight:600;background:#FAFBFA;}
tbody tr:hover{background:#F7F9F7;}
.result-info{margin:0.5rem 0 0;font-size:0.82rem;color:var(--muted);}
.result-info.is-error{color:var(--error);background:var(--error-bg);padding:0.5rem 0.7rem;border-radius:var(--radius);margin-top:0;font-family:"SFMono-Regular",Consolas,"Liberation Mono",Menlo,monospace;}
.result-info.is-warn{color:var(--warn);background:var(--warn-bg);padding:0.5rem 0.7rem;border-radius:var(--radius);margin-top:0;}
.pager{display:flex;align-items:center;gap:0.7rem;margin-top:0.6rem;font-size:0.82rem;color:var(--muted);}
.pager button{padding:0.3rem 0.6rem;font-size:0.8rem;}
.bottom-bar{display:flex;flex-wrap:wrap;gap:0.75rem;align-items:center;}
.footer{max-width:960px;margin:0 auto;padding:0 1.5rem min(50vh,24rem);}
