:root{
  --fg:#111827; --muted:#6b7280; --border:#d1d5db;
  --accent:#4f46e5; --accent2:#16a34a;
  --card:#ffffff; --bg:#ffffff;
  --s1:#eef2ff; --s2:#fff7ed; --s3:#e8faef; --result:#f0f4f8;
}
*{box-sizing:border-box}
body{margin:0;font:15px/1.55 system-ui,-apple-system,Segoe UI,Roboto,Ubuntu;background:var(--bg);color:var(--fg)}
#app{max-width:1100px;margin:0 auto;padding:20px}

h1{font-size:24px;margin:.2rem 0}
h2{margin:.5rem 0}
.muted{color:var(--muted)}
.small{font-size:13px}
.card{background:var(--card);border:1px solid var(--border);border-radius:12px;padding:14px;margin:16px 0}
.header-flex{display:flex;justify-content:space-between;align-items:center;gap:10px;flex-wrap:wrap}
.controls{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin:8px 0}
.pill{display:inline-flex;gap:8px;align-items:center;border:1px solid var(--border);border-radius:999px;padding:6px 10px;background:#fff}

select,input,button,label{font:inherit}
input[type="text"],input[type="number"],select{width:100%;padding:8px;border:1px solid var(--border);border-radius:8px;background:#fff;color:var(--fg)}
input[type="checkbox"]{transform:translateY(1px)}

.btn{cursor:pointer;border:none;padding:10px 14px;border-radius:10px;font-weight:700}
.btn.primary{background:var(--accent);color:#fff}
.btn.warn{background:#f59e0b;color:#111827}
.btn.reset{background:#ef4444;color:#fff}
.btn.ghost{background:#fff;border:1px solid var(--border)}

.row{display:grid;gap:8px}
.row.header{font-weight:600;background:#f3f4f6;padding:10px;border-radius:8px}
.row.course{grid-template-columns:1.4fr .8fr 1fr 1fr .6fr .7fr}
.result{background:var(--result);border:1px dashed #cbd5e1;border-radius:10px;padding:12px;display:none;margin-top:10px}

.section-1{background:var(--s1)}
.section-2{background:var(--s2)}

.grid2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
.grid3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}
.grid4{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}

.toolbar{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-top:10px;flex-wrap:wrap}
.legend{margin-top:12px}

.divider{height:1px;background:var(--border);margin:12px 0}

.examples{display:grid;gap:12px}
.example{display:grid;grid-template-columns:1.4fr .8fr 1fr 1fr;gap:8px;border:1px solid var(--border);border-radius:8px;padding:10px}
.example .sep{grid-column:1/-1;height:1px;background:#e5e7eb;margin:6px 0}
.example .full{grid-column:1/-1;font-weight:700}

.drawer{position:fixed;inset:0;display:none;align-items:flex-start;justify-content:flex-end;background:rgba(0,0,0,.25)}
.drawer.show{display:flex}
.drawer-inner{width:min(720px,95vw);max-height:95vh;overflow:auto}

@media (max-width: 980px){
  .row.course{grid-template-columns:1fr .7fr 1fr 1fr .6fr .7fr}
  .grid4{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media (max-width: 680px){
  .row.course{grid-template-columns:1fr 1fr}
  .row.header.course{display:none}
}
@media print{
  body{background:#fff;color:#000}
  .controls,.toolbar,.legend summary,.drawer{display:none!important}
  .card{page-break-inside:avoid}
}
