  :root{
    --bg:#f3f2ff; --card:#ffffff; --border:#e1e4e8; --text:#450c3f; --muted:#6e7781;
    --accent:#758ad1; --accent-dark:#58359f; --green:#008c28; --amber:#efc564; --red:#cf222e; --blue:#429aff;
    --green-bg:#dafbe1; --amber-bg:#fff8c5; --red-bg:#ffebe9; --chip-bg:#f0f1f3;
  }
  *{box-sizing:border-box;}
  body{margin:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;background:var(--bg);color:var(--text);}
  header{background:linear-gradient(135deg,var(--accent),var(--accent-dark));color:white;padding:18px 24px;}
  header h1{margin:0;font-size:20px;}
  header .sub{font-size:13px;opacity:.9;margin-top:2px;}
  .scenario-switcher{margin-top:10px;display:flex;align-items:center;gap:8px;font-size:13px;}
  .scenario-switcher select{font-size:13px;padding:4px 8px;}
  .overall-bar-wrap{margin-top:12px;background:rgba(255,255,255,.25);border-radius:8px;height:10px;overflow:hidden;display:flex;}
  .overall-bar-fill{height:100%;background:white;transition:width .3s;}
  .overall-bar-planned{height:100%;background:#9fd0ff;transition:width .3s;}
  .overall-text{font-size:12px;margin-top:6px;opacity:.95;}
  nav{display:flex;gap:4px;background:var(--card);border-bottom:1px solid var(--border);padding:0 20px;position:sticky;top:0;z-index:10;}
  nav button{background:none;border:none;padding:12px 16px;font-size:14px;cursor:pointer;color:var(--muted);border-bottom:3px solid transparent;}
  nav button.active{color:var(--accent-dark);border-bottom-color:var(--accent);font-weight:600;}
  main{max-width:1100px;margin:0 auto;padding:20px;}
  .card{background:var(--card);border:1px solid var(--border);border-radius:10px;padding:16px;margin-bottom:22px;}
  .section-heading{margin:0 0 16px;font-size:18px;}
  .card h2{margin:0 0 4px;font-size:18px;}
  .card h3{margin:0 0 8px;font-size:14px;}
  .muted{color:var(--muted);font-size:12.5px;}
  .row{display:flex;gap:10px;flex-wrap:wrap;align-items:flex-end;}
  .field{display:flex;flex-direction:column;gap:4px;}
  .field label{font-size:12px;color:var(--muted);}
  input,select,textarea{font-family:inherit;font-size:13.5px;padding:7px 9px;border:1px solid var(--border);border-radius:6px;background:white;color:var(--text);}
  textarea{width:100%;resize:vertical;}
  button{font-family:inherit;}
  .btn{background:var(--accent);color:white;border:none;padding:8px 14px;border-radius:6px;font-size:13.5px;cursor:pointer;}
  .btn:hover{background:var(--accent-dark);}
  .btn.secondary{background:var(--chip-bg);color:var(--text);}
  .btn.secondary:hover{background:#e2e3e6;}
  .btn.danger{background:var(--red-bg);color:var(--red);}
  .btn.danger:hover{background:#ffd6d3;}
  .btn.small{padding:4px 9px;font-size:12px;border-radius:5px;}
  .icon-btn{background:none;border:none;cursor:pointer;font-size:14px;color:var(--muted);padding:2px 5px;}
  .icon-btn:hover{color:var(--text);}
  table{width:100%;border-collapse:collapse;}
  .semester-group{margin-bottom:24px;}
  .semester-group h3{margin:0 0 10px;font-size:14px;padding-bottom:4px;border-bottom:1px solid var(--border);}
  .year-grid{display:flex;flex-direction:column;gap:20px;margin-bottom:24px;}
  .year-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:18px;align-items:start;}
  .semester-cell{background:#ffffff;border:1px solid var(--border);border-radius:10px;padding:14px;min-height:140px;}
  .semester-cell h3{margin:0 0 10px;font-size:16px;padding-bottom:4px;}
  .semester-cell.empty{display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;border-style:dashed;color:var(--muted);}
  .semester-cell.empty h3{border-bottom:none;color:var(--muted);}
  .course-row{border:1px solid var(--border);border-radius:8px;padding:12px 14px;margin-bottom:14px;}
  .course-row:last-child{margin-bottom:0;}
  .course-row-top{display:flex;align-items:center;gap:10px;}
  .course-row-meta{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-top:8px;}
  .course-code{font-weight:700;font-size:14px;min-width:62px;flex-shrink:0;}
  .dept-tag{font-size:11px;color:var(--accent-dark);background:#f1e9ff;padding:2px 7px;border-radius:10px;flex-shrink:0;white-space:nowrap;}
  .course-name{flex:1;font-size:13.5px;min-width:0;}
  .course-units{font-size:12.5px;color:var(--muted);}
  .status-badge{font-size:11px;padding:2px 8px;border-radius:10px;font-weight:600;}
  .status-toggle{border:none;cursor:pointer;font-family:inherit;}
  .status-toggle:hover{filter:brightness(.93);}
  .status-taken{background:var(--green-bg);color:var(--green);}
  .status-planned{background:#ddeeff;color:#0969da;}
  .assign-area{margin-top:12px;padding-top:12px;border-top:1px dashed var(--border);}
  .assign-row{display:flex;gap:8px;align-items:center;margin-bottom:10px;flex-wrap:wrap;}
  .assign-row .pname{font-size:12.5px;min-width:150px;color:var(--muted);flex:1 1 150px;}
  .assign-row select{flex:0 1 240px;max-width:240px;}
  .progress-wrap{background:#eee;border-radius:6px;height:8px;overflow:hidden;flex:1;min-width:80px;}
  .progress-fill{height:100%;border-radius:6px;}
  .pf-green{background:var(--green);} .pf-amber{background:var(--amber);} .pf-gray{background:#c2c6cc;}
  .cat-row{display:flex;align-items:center;gap:10px;padding:11px 0;border-bottom:1px solid #f1f2f4;flex-wrap:wrap;}
  .cat-row:last-child{border-bottom:none;}
  .cat-name{flex:0 0 230px;font-size:13.5px;}
  .cat-stat{font-size:12px;color:var(--muted);min-width:140px;}
  .status-dot{width:10px;height:10px;border-radius:50%;display:inline-block;margin-right:5px;}
  .dot-green{background:var(--green);} .dot-amber{background:var(--amber);} .dot-gray{background:#c2c6cc;}
  .chip{display:inline-block;background:var(--chip-bg);font-size:11.5px;padding:2px 8px;border-radius:10px;margin:2px 3px 0 0;}
  .chip-taken{background:var(--green-bg);color:var(--green);}
  .chip-planned{background:#ddeeff;color:var(--blue);}
  details summary{cursor:pointer;font-weight:600;font-size:15px;padding:4px 0;}
  details[open] summary{margin-bottom:8px;}
  .section-block{margin:14px 0 10px 4px;padding-left:10px;border-left:2px solid var(--border);}
  .category-editor{background:#fafbfc;border:1px solid var(--border);border-radius:8px;padding:12px;margin:12px 0;}
  .help{font-size:11.5px;color:var(--muted);line-height:1.5;margin-top:3px;}
  .grid2{display:grid;grid-template-columns:1fr 1fr;gap:10px;}
  .program-card-header{display:flex;justify-content:space-between;align-items:center;gap:10px;padding-bottom:5px;}
  .program-toggle-list{display:flex;flex-direction:column;gap:8px;margin-top:10px;}
  .program-toggle{display:flex;align-items:center;gap:8px;font-size:13.5px;cursor:pointer;}
  .program-toggle input{cursor:pointer;}
  .scenario-list{display:flex;flex-direction:column;gap:8px;margin-top:10px;}
  .scenario-row{display:flex;justify-content:space-between;align-items:center;gap:10px;border:1px solid var(--border);border-radius:8px;padding:10px 12px;flex-wrap:wrap;}
  .scenario-row.active{border-color:var(--accent);background:#faf5ff;}
  .tag{font-size:11px;padding:2px 8px;border-radius:10px;background:var(--chip-bg);color:var(--muted);text-transform:uppercase;letter-spacing:.03em;}
  .dept-table{width:100%;}
  .dept-table td,.dept-table th{padding:9px 8px;border-bottom:1px solid var(--border);font-size:13px;}
  .empty-state{color:var(--muted);font-size:13px;padding:20px;text-align:center;border:1px dashed var(--border);border-radius:10px;}
  .toast{position:fixed;bottom:20px;right:20px;background:var(--text);color:white;padding:10px 16px;border-radius:8px;font-size:13px;opacity:0;transition:opacity .25s;pointer-events:none;z-index:100;}
  .toast.show{opacity:.95;}
  .top-actions{display:flex;justify-content:flex-end;gap:8px;margin-bottom:10px;}
  hr.sep{border:none;border-top:1px solid var(--border);margin:14px 0;}
