/* Synaptic Sync brand palette and semantic theme tokens. */
:root{--brand-indigo:#252477;--brand-violet:#8055D9;--brand-blue:#4B9BF5;--brand-lavender:#B3A0F5;color-scheme:light;--bg:#F8F9FE;--panel:#FFFFFF;--panel2:#F3F1FB;--border:#D3D2E5;--control-border:#80839A;--text:#20233B;--muted:#626781;--accent:#51319E;--accent-secondary:#254E9A;--hover:#EFEBFC;--input:#FFFFFF;--focus:#41318F;--primary-bg:#55349F;--primary-text:#FFFFFF;--danger:#A12640;--notice-bg:#F1EEFC;--notice-border:#D8CFF2;--badge-bg:#EEE9FB;--shadow:0 8px 32px rgba(37,36,119,.08);--cyan:var(--accent);--purple:var(--accent-secondary);}
html[data-theme=light]{color-scheme:light;--bg:#F8F9FE;--panel:#FFFFFF;--panel2:#F3F1FB;--border:#D3D2E5;--control-border:#80839A;--text:#20233B;--muted:#626781;--accent:#51319E;--accent-secondary:#254E9A;--hover:#EFEBFC;--input:#FFFFFF;--focus:#41318F;--primary-bg:#55349F;--primary-text:#FFFFFF;--danger:#A12640;--notice-bg:#F1EEFC;--notice-border:#D8CFF2;--badge-bg:#EEE9FB;--shadow:0 8px 32px rgba(37,36,119,.08);--cyan:var(--accent);--purple:var(--accent-secondary);}
html[data-theme=dark]{color-scheme:dark;--bg:#111326;--panel:#20233B;--panel2:#292D49;--border:#515772;--control-border:#878DB0;--text:#F3F2FF;--muted:#B8BDD4;--accent:#D2C3FF;--accent-secondary:#A8CFFF;--hover:#343957;--input:#292D49;--focus:#D2C3FF;--primary-bg:#C5B4FF;--primary-text:#17142B;--danger:#FFB7C3;--notice-bg:#292845;--notice-border:#656184;--badge-bg:#373450;--shadow:0 8px 32px rgba(8,10,24,.28);--cyan:var(--accent);--purple:var(--accent-secondary);}
@media(prefers-color-scheme:dark){html:not([data-theme]){color-scheme:dark;--bg:#111326;--panel:#20233B;--panel2:#292D49;--border:#515772;--control-border:#878DB0;--text:#F3F2FF;--muted:#B8BDD4;--accent:#D2C3FF;--accent-secondary:#A8CFFF;--hover:#343957;--input:#292D49;--focus:#D2C3FF;--primary-bg:#C5B4FF;--primary-text:#17142B;--danger:#FFB7C3;--notice-bg:#292845;--notice-border:#656184;--badge-bg:#373450;--shadow:0 8px 32px rgba(8,10,24,.28);--cyan:var(--accent);--purple:var(--accent-secondary);}}
*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text);font:14px/1.5 -apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;min-height:100vh}button,input,select,textarea{font:inherit}button{cursor:pointer;color:inherit}button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:2px solid var(--cyan);outline-offset:2px}.shell{display:grid;grid-template-columns:230px minmax(0,1fr) 300px;gap:16px;max-width:1900px;margin:auto;padding:16px;height:100vh}.glass{background:var(--panel);border:1px solid var(--border);box-shadow:var(--shadow);backdrop-filter:blur(24px);border-radius:24px}.sidebar{padding:17px 12px;display:flex;flex-direction:column;min-height:0}.brand{display:flex;gap:12px;align-items:center;padding:8px 8px 22px;font-size:18px;font-weight:750;letter-spacing:.02em}.nav{overflow:auto;flex:1}.nav button{display:flex;align-items:center;gap:12px;width:100%;text-align:left;border:1px solid transparent;background:none;border-radius:13px;padding:9px 11px;color:var(--muted);font-size:13px}.nav button:hover,.nav button.active{background:var(--panel);color:var(--cyan);border-color:var(--border)}.nav-icon{font-size:17px;width:20px;text-align:center}.sidefoot{margin:12px 4px 0;padding:12px;background:var(--panel2);border:1px solid var(--border);border-radius:15px}.workspace{min-width:0;overflow:auto;padding-right:2px}.topbar{padding:16px 22px;display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:16px}.topbar h1{font-size:19px;margin:0}.sub,.muted{color:var(--muted)}.sub{font-size:12px}.content{display:grid;gap:16px}.panel{padding:22px}.panel h2,.panel h3{margin:0 0 7px}.panel h2{font-size:20px}.panel h3{font-size:16px}.eyebrow{text-transform:uppercase;letter-spacing:.13em;color:var(--cyan);font-size:10px;font-weight:800}.hero{background:var(--panel);min-height:190px;display:flex;flex-direction:column;justify-content:space-between}.hero h2{font-size:27px;max-width:500px;line-height:1.2;margin:10px 0}.grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.grid.three{grid-template-columns:repeat(3,minmax(0,1fr))}.row{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.between{justify-content:space-between}.stack{display:grid;gap:12px}.stat{font-size:29px;font-weight:800}.button{border:1px solid var(--border);background:var(--panel);padding:9px 13px;border-radius:11px;font-weight:650;font-size:12px}.button:hover{border-color:var(--cyan)}.button.primary{background:var(--primary-bg);border:1px solid var(--primary-bg);color:var(--primary-text)}.button.danger{color:var(--danger)}.button:disabled{opacity:.45;cursor:not-allowed}.pill{display:inline-block;border:1px solid var(--notice-border);border-radius:30px;background:var(--badge-bg);color:var(--accent);font-size:11px;padding:4px 9px}.badge{font-size:10px;color:var(--accent);background:var(--badge-bg);border:1px solid var(--notice-border);border-radius:20px;padding:4px 8px}.tutor{padding:20px;display:flex;flex-direction:column;min-height:0}.tutor-head{display:flex;align-items:center;gap:10px}.tutor-head h2{font-size:15px;margin:0}.orb{width:38px;height:38px;display:grid;place-items:center;border-radius:13px;background:var(--badge-bg);color:var(--accent)}.chat{flex:1;overflow:auto;margin:24px 0}.bubble{padding:13px;border-radius:15px;background:var(--panel);font-size:12px;margin:10px 0;line-height:1.6}.bubble.user{background:var(--badge-bg);margin-left:25px}.input,textarea,select{background:var(--input);color:var(--text);border:1px solid var(--border);border-radius:11px;padding:10px;width:100%}select option{background:var(--bg);color:var(--text)}textarea{min-height:100px;resize:vertical}.form{display:grid;gap:10px}.form label{display:grid;gap:5px;color:var(--muted);font-size:12px}.item{padding:14px 0;border-bottom:1px solid var(--border)}.item:last-child{border:0}.empty{padding:25px;text-align:center;color:var(--muted)}.flashcard{min-height:230px;display:grid;place-items:center;text-align:center;cursor:pointer;background:var(--panel);font-size:20px}.flashcard small{display:block;color:var(--muted);font-size:11px;margin-top:20px}.progress{height:6px;border-radius:10px;background:var(--border);overflow:hidden}.progress span{display:block;height:100%;background:var(--accent)}.notice{padding:13px 15px;border-radius:13px;background:var(--notice-bg);border:1px solid var(--notice-border);color:var(--text);font-size:12px}.canvas-wrap{overflow:auto;border:1px solid var(--border);border-radius:15px;background:#fff;touch-action:none}.canvas-wrap canvas{display:block;touch-action:none;max-width:none;cursor:crosshair}.toolbar{display:flex;gap:6px;flex-wrap:wrap;align-items:center}.toolbar button.active{border-color:var(--cyan);color:var(--cyan)}.toolbar input[type=color]{width:35px;height:35px;padding:2px;border:0;background:none}.toolbar input[type=range]{width:90px}.hidden{display:none!important}.mobile-toggle{display:none}.editor{min-height:240px;padding:16px;border:1px solid var(--border);border-radius:13px;background:var(--input);outline-color:var(--cyan)}a{color:var(--cyan)}@media(max-width:1200px){.shell{grid-template-columns:200px minmax(0,1fr)}.tutor{display:none}.tutor.open{display:flex;position:fixed;right:16px;top:16px;bottom:16px;width:min(320px,90vw);z-index:5}.mobile-toggle{display:inline-flex}}@media(max-width:700px){.shell{display:block;padding:10px;height:auto;min-height:100vh}.sidebar{display:none;position:fixed;z-index:10;top:10px;bottom:10px;left:10px;width:240px}.sidebar.open{display:flex}.workspace{overflow:visible}.topbar{padding:14px}.grid,.grid.three{grid-template-columns:1fr}.panel{padding:18px}.mobile-toggle{display:inline-flex}.hero h2{font-size:23px}}@media(prefers-reduced-motion:no-preference){button,.glass{transition:border-color .2s,background .2s,transform .2s}.button:hover{transform:translateY(-1px)}}
.theme-control{display:flex;align-items:center;gap:5px;color:var(--muted)}.theme-control select{width:auto;padding:6px}.progress-ring{width:130px;height:130px;border-radius:50%;display:grid;place-items:center;background:radial-gradient(closest-side,var(--bg) 78%,transparent 80%),conic-gradient(var(--cyan) var(--progress),var(--border) 0);font-size:26px}.activity{height:160px;display:flex;align-items:end;justify-content:space-around;gap:8px}.activity>div{display:flex;flex-direction:column;align-items:center;gap:7px}.bar{width:20px;border-radius:6px 6px 0 0;background:var(--accent-secondary)}.activity small{font-size:10px;color:var(--muted)}.calendar-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:4px;text-align:center}.calendar-day{background:none;border:1px solid transparent;color:var(--text);border-radius:9px;min-height:32px;position:relative}.calendar-day:hover,.calendar-day.today{border-color:var(--cyan);color:var(--cyan)}.calendar-day i{position:absolute;bottom:-5px;left:45%;color:var(--purple)}
.chat-layout{display:grid;grid-template-columns:230px minmax(0,1fr);min-height:75vh;overflow:hidden}.chat-list{padding:20px;border-right:1px solid var(--border);overflow:auto}.chat-list h3{margin:0}.conversation-item{padding:10px 0;border-bottom:1px solid var(--border)}.conversation-item.active .chat-name{color:var(--cyan)}.chat-name{display:block;width:100%;text-align:left;border:0;background:none;padding:8px 0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.conversation-item .button{font-size:10px;padding:4px 7px}.chat-main{display:flex;flex-direction:column;min-width:0;padding:22px;gap:12px}.chat-main h2{margin:2px 0;font-size:19px}.chat-context select{width:auto;max-width:180px}.chat-thread{height:50vh;min-height:300px;overflow:auto;display:flex;flex-direction:column;gap:16px;padding:10px 4px}.chat-message{max-width:85%;padding:15px;border-radius:18px;background:var(--panel);line-height:1.65;overflow-wrap:anywhere}.chat-message.human{align-self:flex-end;background:var(--badge-bg)}.chat-role{color:var(--cyan);font-weight:700;font-size:11px;margin-bottom:6px}.chat-text pre{white-space:pre-wrap;background:var(--input);padding:10px;border-radius:10px}.chat-text code{font-family:monospace}.chat-compose{padding:12px;border:1px solid var(--border);border-radius:17px;background:var(--input)}.chat-compose textarea{border:0;background:none;min-height:70px;resize:vertical}.chat-error{color:var(--danger)}.chat-welcome{margin:auto;text-align:center}.chat-welcome .row{justify-content:center}@media(max-width:700px){.chat-layout{display:flex;flex-direction:column}.chat-list{border-right:0;border-bottom:1px solid var(--border);max-height:180px}.chat-main{padding:16px}.chat-thread{height:45vh}.chat-message{max-width:95%}}
.course-control{display:grid;gap:8px;min-width:0}.course-control label{display:grid;gap:5px}.course-control select{width:100%;min-width:160px}.course-control>button{justify-self:start}.course-create-box{display:grid;gap:8px;padding:12px;border:1px solid var(--border);border-radius:12px;background:var(--panel)}.course-create-box[hidden],.course-empty[hidden]{display:none}.course-empty,.course-create-status{font-size:12px;color:var(--muted)}
.generation-dialog{color:var(--text);width:min(600px,95vw);max-height:90vh;overflow:auto;padding:24px}.generation-dialog::backdrop{background:#0009}.generation-dialog fieldset{border:1px solid var(--border);border-radius:12px}.generation-dialog input[type=checkbox]{width:auto}
.deck-list{margin:18px 0}.deck-row{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;padding:10px 0;border-bottom:1px solid var(--border)}.flashcard-controls{margin:16px 0}.flashcard-controls .button{min-width:105px;min-height:44px}.card-navigator{display:flex;gap:6px;flex-wrap:wrap;margin:12px 0}.card-navigator .button{min-width:40px;min-height:40px}.card-navigator .active{border-color:var(--cyan);color:var(--cyan);background:var(--panel)}

/* Course cards keep the whole card usable as a navigation control. */
.course-card { display:block; width:100%; border:0; background:transparent; color:inherit; text-align:left; cursor:pointer; font:inherit; }
.course-card:focus-visible { outline:2px solid currentColor; outline-offset:4px; border-radius:8px; }

/* Compact Canvas assignment cards */
.assignment-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;flex-wrap:wrap;margin-bottom:16px}
.assignment-heading h2,.assignment-heading p{margin:0}.assignment-heading p{margin-top:4px}.assignment-search{display:grid;gap:4px;min-width:min(240px,100%);font-size:12px}
.assignment-page{margin-top:18px}.assignment-section{margin-top:22px}.assignment-section h3,.assignment-collapsed summary{font-size:15px;font-weight:700;margin:0 0 10px}.assignment-count{font-size:11px;color:var(--muted);font-weight:600;margin-left:4px}.assignment-list{display:grid;gap:8px}.assignment-section-past{border-top:1px solid var(--border);padding-top:18px}.assignment-collapsed summary{cursor:pointer;list-style-position:inside}.assignment-collapsed[open] summary{margin-bottom:10px}
.assignment-card{display:flex;align-items:center;justify-content:space-between;gap:12px;width:100%;min-width:0;padding:13px 15px;border:1px solid var(--border);border-radius:14px;background:var(--panel2);color:var(--text);font:inherit;text-align:left;text-decoration:none;cursor:pointer;transition:background .18s,border-color .18s,transform .18s}
.assignment-card:hover{border-color:var(--cyan);background:var(--hover);transform:translateY(-1px)}.assignment-card:focus-visible{outline:2px solid var(--cyan);outline-offset:3px}.assignment-main{display:grid;gap:3px;min-width:0}.assignment-title{font-size:14px;line-height:1.3;overflow-wrap:anywhere}.assignment-context,.assignment-meta{color:var(--muted);font-size:12px;overflow-wrap:anywhere}.assignment-meta{display:flex;gap:6px 13px;flex-wrap:wrap}.assignment-side{display:flex;align-items:center;gap:10px;flex-shrink:0}.assignment-label{border-radius:20px;padding:4px 8px;font-size:11px;font-weight:700;white-space:nowrap;color:var(--accent);background:var(--badge-bg);border:1px solid var(--notice-border)}.assignment-past{color:var(--danger);background:var(--notice-bg);border-color:var(--notice-border)}.assignment-undated,.assignment-completed{color:var(--muted);background:var(--panel);border-color:var(--border)}.assignment-icon{color:var(--purple);font-size:17px;line-height:1}.assignment-dialog{color:var(--text);width:min(600px,95vw);max-height:85vh;overflow:auto;padding:24px}.assignment-dialog::backdrop{background:#0009}.assignment-description{white-space:pre-wrap;overflow-wrap:anywhere}
@media(max-width:700px){.assignment-card{align-items:flex-start;padding:12px}.assignment-side{gap:5px}.assignment-label{white-space:normal;text-align:center}.assignment-search{width:100%}.assignment-heading .button{width:100%}}
@media(prefers-reduced-motion:reduce){.assignment-card{transition:none}.assignment-card:hover{transform:none}}
.assignment-extra{margin:3px 12px 6px;color:var(--muted);font-size:12px}.assignment-extra summary{cursor:pointer}.assignment-extra p{margin:6px 0}
.course-workspace-header{align-items:flex-start;margin-bottom:16px;gap:18px}.course-grade{display:grid;gap:3px;text-align:right;min-width:130px}.course-grade span{font-size:11px;color:var(--muted);text-transform:uppercase;letter-spacing:.08em}.course-grade strong{font-size:14px;color:var(--cyan)}.course-tabs{gap:6px}.course-tabs .button.active{border-color:var(--cyan);color:var(--cyan)}.course-overview-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,230px),1fr));gap:20px}.course-overview-grid section{min-width:0}.course-overview-grid p{margin:6px 0;color:var(--muted)}#course-institution-filter{width:auto;min-width:160px}@media(max-width:700px){.course-workspace-header{align-items:flex-start}.course-grade{text-align:left;min-width:0}.course-tabs{overflow-x:auto}}
.source-dialog{width:min(900px,96vw)}.source-categories{display:flex;gap:8px 14px;flex-wrap:wrap}.source-categories label,.source-resource label{display:flex;align-items:center;gap:6px}.source-resource{display:grid;gap:5px;padding:10px;border-bottom:1px solid var(--border)}.source-resource select{width:auto;max-width:220px}.source-module input[type=checkbox],.source-dialog fieldset input[type=checkbox]{width:auto}.source-module[hidden]{display:none}
.source-resource[hidden],.source-module-content[hidden]{display:none}
.canvas-universities{display:grid;gap:16px}.canvas-university-head h2{margin:2px 0 4px}.canvas-university-head p{margin:0}.canvas-course-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,200px),1fr));gap:10px;margin-top:16px}.canvas-course-card{display:grid;gap:5px;align-content:start;min-width:0;padding:14px;border:1px solid var(--border);border-radius:14px;background:var(--panel2)}.canvas-course-card strong{overflow-wrap:anywhere}.canvas-course-card .button{justify-self:start;margin-top:4px}#canvas-connections{scroll-margin-top:16px}#theme{width:auto;min-width:120px}

/* Shared theme controls and accessible interaction states. */
a{color:var(--accent);text-underline-offset:.18em}
button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,summary:focus-visible{outline:3px solid var(--focus);outline-offset:3px}
.button:hover:not(:disabled),.nav button:hover,.course-card:hover{background:var(--hover);border-color:var(--accent);color:var(--text)}
.button.primary:hover:not(:disabled){background:var(--primary-bg);color:var(--primary-text);filter:brightness(.92)}
.button.danger{color:var(--danger)}.button:disabled{opacity:1;cursor:not-allowed;background:var(--panel2);color:var(--muted);border:1px solid var(--border)}
.nav button.active,.toolbar button.active,.card-navigator .active,.course-tabs .button.active{background:var(--hover);color:var(--accent);border-color:var(--accent)}
.brand{color:var(--text);text-decoration:none}.brand-name{font-weight:780;letter-spacing:-.025em;line-height:1.15}
input::placeholder,textarea::placeholder{color:var(--muted);opacity:1}select option{background:var(--panel);color:var(--text)}
.assignment-card:focus-visible,.course-card:focus-visible{outline:3px solid var(--focus);outline-offset:3px}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{scroll-behavior:auto!important;transition-duration:0.01ms!important;animation-duration:0.01ms!important;animation-iteration-count:1!important}}

.input,textarea,select,.button{border-color:var(--control-border)}

/* Display the supplied, uncropped source images at their native aspect ratio. */
.brand-wordmark{display:block;width:min(220px,100%);height:auto;object-fit:contain}
.brand-icon{display:block;width:44px;height:44px;flex:0 0 44px;object-fit:contain}
