:root{--canvas:#F5F4F0;--surface:#FFFFFF;--surface2:#F7F6F2;--surface3:#EFEDE8;--surface4:#E6E4DE;--ink:#1C1B18;--ink2:#524F47;--ink3:#8C8880;--ink4:#B8B5AF;--brand:#0D6B4A;--brand-mid:#1A9068;--brand-light:#E8F5EF;--brand-muted:rgba(13,107,74,0.10);--amber:#9A5F0A;--amber-light:#FDF4E7;--red:#B93232;--red-light:#FDF0F0;--line:rgba(28,27,24,0.08);--line2:rgba(28,27,24,0.14);--font-sans:"Instrument Sans",system-ui,sans-serif;--font-serif:"Instrument Serif",Georgia,serif;--font-mono:"JetBrains Mono",monospace;--r-sm:4px;--r-md:8px;--r-lg:12px;--sidebar-w:240px;--tab-h:48px;--topbar-h:44px}@tailwind base;@tailwind components;@tailwind utilities;@layer base{*,:after,:before{box-sizing:border-box}body,html{font-family:var(--font-sans);background:var(--canvas);color:var(--ink);font-size:14px;line-height:1.5;-webkit-font-smoothing:antialiased;height:100%;margin:0;padding:0}}.upmodel-tab-bar{position:fixed;top:0;left:0;right:0;z-index:100;height:var(--tab-h);background:var(--surface);border-bottom:1px solid var(--line);display:flex;align-items:stretch;padding:0 4px;gap:0}.upmodel-tab-bar-logo{gap:9px;padding:0 16px 0 12px;border-right:1px solid var(--line);text-decoration:none}.upmodel-logo-mark,.upmodel-tab-bar-logo{display:flex;align-items:center;flex-shrink:0}.upmodel-logo-mark{width:26px;height:26px;border-radius:7px;background:var(--ink);justify-content:center}.upmodel-logo-name{font-family:var(--font-serif);font-size:16px;color:var(--ink);letter-spacing:-.3px;font-style:italic}.upmodel-tab-items{display:flex;align-items:stretch;flex:1 1;padding:0 8px;gap:2px}.upmodel-tab-btn{display:flex;align-items:center;gap:6px;padding:0 14px;border:none;border-bottom:2px solid transparent;margin-bottom:-1px;background:none;cursor:pointer;font-family:var(--font-sans);font-size:13px;font-weight:500;color:var(--ink3);white-space:nowrap;transition:color .12s,border-color .12s}.upmodel-tab-btn:hover{color:var(--ink)}.upmodel-tab-btn--active{color:var(--ink);border-bottom-color:var(--ink)}.upmodel-tab-btn--admin{margin-left:auto;color:var(--ink4)}.upmodel-tab-btn--admin:hover{color:var(--amber)}.upmodel-tab-btn--admin-active{margin-left:auto;color:var(--amber);border-bottom-color:var(--amber)}.upmodel-tab-bar-right{display:flex;align-items:center;gap:8px;padding:0 12px;border-left:1px solid var(--line);flex-shrink:0}.upmodel-streak-chip{gap:4px;color:var(--amber);background:var(--amber-light);padding:4px 9px}.upmodel-plan-chip,.upmodel-streak-chip{display:flex;align-items:center;font-size:11px;font-weight:600;border-radius:20px}.upmodel-plan-chip{gap:5px;padding:4px 10px;cursor:pointer;transition:opacity .12s}.upmodel-plan-chip:hover{opacity:.85}.upmodel-plan-chip--free{color:var(--ink3);background:var(--surface3)}.upmodel-plan-chip--pro{color:var(--brand);background:var(--brand-light)}.upmodel-sidebar-toggle{display:none;align-items:center;justify-content:center;width:34px;height:34px;border:none;background:none;cursor:pointer;color:var(--ink2);border-radius:var(--r-md);flex-shrink:0;align-self:center;margin:0 4px}.upmodel-sidebar-toggle:hover{background:var(--surface3)}.upmodel-app-shell{display:flex;padding-top:var(--tab-h);min-height:100vh}.upmodel-sidebar{position:fixed;top:var(--tab-h);left:0;bottom:0;display:flex;flex-direction:column;background:var(--surface);border-right:1px solid var(--line);overflow-y:auto;overflow-x:hidden;z-index:90;scrollbar-width:none;transition:width .22s cubic-bezier(.4,0,.2,1),transform .22s cubic-bezier(.4,0,.2,1)}.upmodel-sidebar::-webkit-scrollbar{display:none}.upmodel-sidebar-overlay{position:fixed;inset:0;background:rgba(0,0,0,.3);-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);z-index:85}.upmodel-sb-collapse-btn{display:flex;align-items:center;justify-content:flex-end;padding:10px 10px 6px;border-bottom:1px solid var(--line);flex-shrink:0}.upmodel-sb-collapse-btn button{display:flex;align-items:center;justify-content:center;width:28px;height:28px;border:none;background:none;cursor:pointer;color:var(--ink3);border-radius:var(--r-sm);transition:background .12s,color .12s;flex-shrink:0}.upmodel-sb-collapse-btn button:hover{background:var(--surface3);color:var(--ink)}.upmodel-sb-nav{padding:8px;flex:1 1;overflow:hidden}.upmodel-sb-group-label{font-size:10px;font-weight:600;color:var(--ink4);text-transform:uppercase;letter-spacing:.08em;padding:10px 8px 4px;white-space:nowrap;overflow:hidden;transition:opacity .15s}.upmodel-sb-divider{height:1px;background:var(--line);margin:6px 0}.upmodel-sb-item{display:flex;align-items:center;gap:9px;padding:7px 8px;border-radius:var(--r-md);cursor:pointer;color:var(--ink2);font-size:13px;font-weight:500;white-space:nowrap;overflow:hidden;position:relative;transition:background .12s,color .12s}.upmodel-sb-item--active,.upmodel-sb-item:hover{background:var(--surface3);color:var(--ink)}.upmodel-sb-item--admin-active,.upmodel-sb-item--admin:hover{background:var(--amber-light);color:var(--amber)}.upmodel-sb-icon{font-size:17px;flex-shrink:0;width:20px;text-align:center;color:var(--ink3);display:flex;align-items:center;justify-content:center}.upmodel-sb-item--active .upmodel-sb-icon{color:var(--ink)}.upmodel-sb-item--admin .upmodel-sb-icon,.upmodel-sb-item--admin-active .upmodel-sb-icon{color:var(--amber)}.upmodel-sb-label{flex:1 1;overflow:hidden;text-overflow:ellipsis;transition:opacity .15s,width .15s}.upmodel-badge{font-size:10px;font-weight:600;padding:2px 6px;border-radius:3px;flex-shrink:0}.upmodel-sb-item[data-tooltip]:hover:after{content:attr(data-tooltip);position:absolute;left:calc(100% + 10px);top:50%;transform:translateY(-50%);background:var(--ink);color:white;font-size:12px;font-weight:500;padding:5px 10px;border-radius:var(--r-md);white-space:nowrap;pointer-events:none;z-index:200;box-shadow:0 4px 12px rgba(0,0,0,.15)}.upmodel-sb-footer{padding:12px;border-top:1px solid var(--line);flex-shrink:0;overflow:hidden}.upmodel-sb-cta-btn{width:100%;padding:9px 14px;background:var(--ink);color:white;border:none;border-radius:var(--r-md);font-family:var(--font-sans);font-size:12px;font-weight:600;cursor:pointer;display:flex;align-items:center;justify-content:center;gap:6px;transition:opacity .12s;white-space:nowrap;overflow:hidden}.upmodel-sb-cta-btn:hover{opacity:.88}.upmodel-sb-cta-note{font-size:11px;color:var(--ink4);text-align:center;margin-top:6px;white-space:nowrap;overflow:hidden}.upmodel-main-wrap{flex:1 1;display:flex;flex-direction:column;min-height:calc(100vh - var(--tab-h));transition:margin-left .22s cubic-bezier(.4,0,.2,1)}.upmodel-page-topbar{height:var(--topbar-h);display:flex;align-items:center;padding:0 24px;gap:8px;background:var(--surface);border-bottom:1px solid var(--line);position:-webkit-sticky;position:sticky;top:var(--tab-h);z-index:50}.upmodel-bc{font-size:13px;color:var(--ink3);text-decoration:none;cursor:pointer}.upmodel-bc:hover{color:var(--ink)}.upmodel-bc--cur{color:var(--ink);font-weight:500;cursor:default}.upmodel-bc-sep{color:var(--ink4);margin:0 2px}.upmodel-topbar-right{margin-left:auto;display:flex;align-items:center;gap:8px}@media (max-width:1024px){.upmodel-sidebar-toggle{display:flex!important}.upmodel-tab-label{display:none!important}.upmodel-tab-btn{padding:0 12px!important}.upmodel-logo-name{display:none!important}.upmodel-main-wrap{margin-left:0!important}.upmodel-sidebar{transform:translateX(calc(-1 * var(--sidebar-w)));width:var(--sidebar-w)!important}.upmodel-sidebar--mobile-open{transform:translateX(0);box-shadow:4px 0 24px rgba(0,0,0,.12)}}.upmodel-dashboard-grid{display:grid;grid-template-columns:minmax(0,1fr) 280px;grid-gap:20px;gap:20px;align-items:start}.upmodel-journey-strip{display:flex;align-items:flex-start;width:100%}.upmodel-journey-node{display:flex;align-items:flex-start;flex:1 1;min-width:0}@media (max-width:1024px){.upmodel-dashboard-grid{grid-template-columns:minmax(0,1fr)}.upmodel-journey-strip{overflow-x:auto;padding-bottom:12px;margin-bottom:-12px;scrollbar-width:none}.upmodel-journey-strip::-webkit-scrollbar{display:none}.upmodel-journey-node{flex:0 0 140px}.upmodel-dashboard-subgrid{grid-template-columns:minmax(0,1fr)!important}}.upmodel-dashboard-subgrid{display:grid;grid-template-columns:1fr 1fr;grid-gap:14px;gap:14px;margin-bottom:18px}.upmodel-3col-grid{display:grid;grid-template-columns:1fr 1fr 1fr;grid-gap:10px;gap:10px}.upmodel-card-3col-grid{display:grid;grid-template-columns:1fr 1fr 1fr}.upmodel-card-col{padding:16px 18px;border-right:1px solid var(--line)}.upmodel-card-col:last-child{border-right:none}@media (max-width:1024px){.upmodel-3col-grid,.upmodel-card-3col-grid{grid-template-columns:minmax(0,1fr)}.upmodel-card-col{border-right:none;border-bottom:1px solid var(--line)}.upmodel-card-col:last-child{border-bottom:none}}.upmodel-auth-shell{min-height:100vh;background:var(--canvas);display:flex;align-items:center;justify-content:center;padding:40px 16px}.upmodel-auth-card{background:var(--surface);border:1px solid var(--line2);border-radius:var(--r-lg);padding:36px 32px;width:100%;max-width:420px}.upmodel-auth-logo{display:flex;flex-direction:column;align-items:center;margin-bottom:20px}.upmodel-auth-wordmark{font-size:20px;margin-top:10px}.upmodel-auth-title,.upmodel-auth-wordmark{font-family:var(--font-serif);color:var(--ink);font-style:italic}.upmodel-auth-title{font-size:22px;text-align:center;margin-bottom:6px;font-weight:400}.upmodel-auth-sub{font-size:13px;color:var(--ink3);text-align:center;margin-bottom:20px;line-height:1.5}.upmodel-sso-btn{width:100%;display:flex;align-items:center;justify-content:center;gap:10px;padding:10px 16px;border:1px solid var(--line2);border-radius:var(--r-md);background:var(--surface);font-family:var(--font-sans);font-size:13px;font-weight:500;color:var(--ink);cursor:pointer;transition:background .12s;margin-bottom:10px}.upmodel-sso-btn:hover{background:var(--surface2)}.upmodel-auth-divider{display:flex;align-items:center;gap:10px;margin:16px 0}.upmodel-auth-divider-line{flex:1 1;height:1px;background:var(--line)}.upmodel-auth-divider-text{font-size:11px;color:var(--ink4);white-space:nowrap}.upmodel-form-input{width:100%;padding:9px 12px;border:1px solid var(--line2);border-radius:var(--r-md);font-family:var(--font-sans);font-size:13px;color:var(--ink);background:var(--surface);outline:none;transition:border-color .12s;display:block}.upmodel-form-input:focus{border-color:var(--ink3)}.upmodel-form-input::placeholder{color:var(--ink4)}.upmodel-form-label{font-size:12px;font-weight:500;color:var(--ink2);margin-bottom:8px}.upmodel-btn-dark{width:100%;padding:10px 16px;background:var(--ink);color:white;border:none;border-radius:var(--r-md);font-family:var(--font-sans);font-size:13px;font-weight:600;cursor:pointer;transition:opacity .12s}.upmodel-btn-dark:hover{opacity:.88}.upmodel-btn-dark:disabled{opacity:.4;cursor:not-allowed}.upmodel-btn-brand{width:100%;padding:10px 16px;background:var(--brand);color:white;border:none;border-radius:var(--r-md);font-family:var(--font-sans);font-size:13px;font-weight:600;cursor:pointer;transition:opacity .12s}.upmodel-btn-brand:hover{opacity:.88}.upmodel-btn-brand:disabled{opacity:.4;cursor:not-allowed}.upmodel-auth-link{color:var(--brand);cursor:pointer;text-decoration:none}.upmodel-auth-link:hover{text-decoration:underline}.upmodel-auth-footer{text-align:center;margin-top:16px;font-size:12px;color:var(--ink3)}.upmodel-geo-option{border:1px solid var(--line2);border-radius:var(--r-md);padding:12px;cursor:pointer;transition:border-color .12s,background .12s}.upmodel-geo-option:hover{background:var(--surface2)}.upmodel-geo-option--selected{border-color:var(--brand);background:var(--brand-light)}.upmodel-geo-flag{font-size:18px;margin-bottom:4px}.upmodel-geo-label{font-size:13px;font-weight:600;color:var(--ink)}.upmodel-geo-sub{font-size:11px;color:var(--ink3);margin-top:2px}.upmodel-module-page{display:flex;flex-direction:column;height:100%;min-height:0;overflow:hidden;background:var(--canvas,#F5F4F0)}.upmodel-module-topbar{display:flex;align-items:center;justify-content:space-between;padding:0 20px;height:44px;border-bottom:1px solid rgba(28,27,24,.08);background:#fff;flex-shrink:0;gap:12px}.upmodel-module-breadcrumb{display:flex;align-items:center;gap:6px;font-size:12px;color:var(--ink3,#8C8880);min-width:0;flex:1 1}.upmodel-bc-link{display:flex;align-items:center;gap:5px;color:var(--ink2,#524F47);text-decoration:none;font-weight:500;transition:color .15s;white-space:nowrap}.upmodel-bc-link:hover{color:var(--ink,#1C1B18)}.upmodel-bc-link .ti{font-size:13px}.upmodel-bc-sep{color:rgba(28,27,24,.2);font-size:11px}.upmodel-bc-cur{color:var(--ink,#1C1B18);font-weight:600;font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.upmodel-module-topbar-right{display:flex;align-items:center;gap:8px;flex-shrink:0}.upmodel-module-body{display:flex;flex:1 1;min-height:0;overflow:hidden}.upmodel-module-main{flex:1 1;min-width:0;display:flex;flex-direction:column;overflow-y:auto}.upmodel-module-tutor{width:320px;flex-shrink:0;border-left:1px solid rgba(28,27,24,.08);display:flex;flex-direction:column;background:#fff;overflow:hidden}.upmodel-module-video-wrap{position:relative;background:#0d0d0d;flex-shrink:0}.upmodel-module-iframe{width:100%;aspect-ratio:16/9;border:none;display:block}.upmodel-video-progress-bar{height:3px;background:rgba(255,255,255,.08)}.upmodel-video-progress-fill{height:100%;background:#0D6B4A;transition:width .5s ease}.upmodel-video-meta-clean{display:flex;align-items:center;gap:12px;padding:6px 14px;font-size:11px;color:var(--ink3);background:var(--surface2);border-bottom:1px solid var(--line)}.upmodel-cc-badge{display:inline-flex;align-items:center;padding:2px 7px;background:var(--brand-light);color:var(--brand);border-radius:20px;font-size:10px;font-weight:600}.upmodel-video-milestones{display:flex;align-items:center;gap:5px;padding:6px 14px;background:#111;border-bottom:1px solid rgba(255,255,255,.06)}.upmodel-video-milestone-label{font-size:10px;color:rgba(255,255,255,.3);order:-1;margin-right:4px}.upmodel-module-tabs{display:flex;align-items:stretch;gap:0;padding:0 16px;background:#fff;border-bottom:1px solid rgba(28,27,24,.08);flex-shrink:0;overflow-x:auto;scrollbar-width:none}.upmodel-module-tabs::-webkit-scrollbar{display:none}.upmodel-tab{display:flex;align-items:center;gap:6px;padding:0 14px;height:42px;font-size:12px;font-weight:500;color:var(--ink3,#8C8880);background:transparent;border:none;cursor:pointer;white-space:nowrap;transition:color .15s;outline:none;box-shadow:none}.upmodel-tab:hover{color:var(--ink,#1C1B18)}.upmodel-tab:active,.upmodel-tab:focus{outline:none;box-shadow:none}.upmodel-tab .ti{font-size:13px}.upmodel-tab--active{color:var(--ink);font-weight:600}.upmodel-tab--active,.upmodel-tab--active:active,.upmodel-tab--active:focus{border-left:.8px solid #e7e5e1;border-right:.8px solid #e7e5e1;outline:none;box-shadow:none}.upmodel-module-content{flex:1 1;overflow-y:auto;padding:28px 32px;max-width:100%}.upmodel-prose{max-width:100%;font-size:13.5px;line-height:1.8;color:var(--ink2,#524F47)}.upmodel-md-h1,.upmodel-md-h2,.upmodel-md-h3,.upmodel-prose h1,.upmodel-prose h2,.upmodel-prose h3{font-family:"Instrument Serif",Georgia,serif;color:var(--ink,#1C1B18);margin:1.6em 0 .6em;line-height:1.3}.upmodel-md-h1,.upmodel-prose h1{font-size:22px}.upmodel-md-h2,.upmodel-prose h2{font-size:17px}.upmodel-md-h3,.upmodel-prose h3{font-size:14px;font-weight:600}.upmodel-md-p,.upmodel-prose p{margin:0 0 1.1em}.upmodel-md-ul,.upmodel-prose ul{margin:0 0 1.1em 1.4em;padding:0}.upmodel-md-li,.upmodel-prose li{margin-bottom:6px}.upmodel-md-code,.upmodel-prose code{font-family:JetBrains Mono,monospace;font-size:11.5px;background:#F0EDE8;padding:2px 6px;border-radius:4px;color:var(--ink,#1C1B18)}.upmodel-md-pre,.upmodel-prose pre{background:#1C1B18;color:#E8E6E0;padding:16px 20px;border-radius:8px;font-family:JetBrains Mono,monospace;font-size:12px;line-height:1.7;overflow-x:auto;margin:0 0 1.2em}.upmodel-prose pre code{background:none;padding:0;color:inherit;font-size:inherit}.upmodel-link,.upmodel-prose a{color:#0D6B4A;text-decoration:underline;text-underline-offset:2px}.upmodel-link:hover{opacity:.8}.upmodel-prose strong{color:var(--ink,#1C1B18);font-weight:600}.upmodel-concepts-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));grid-gap:12px;gap:12px;margin-top:4px}.upmodel-concept-card{padding:16px 18px;background:#fff;border-radius:10px;border:1px solid rgba(28,27,24,.1);border-left:3px solid #0d6b4a;transition:box-shadow .15s}.upmodel-concept-card:hover{box-shadow:0 2px 12px rgba(0,0,0,.07)}.upmodel-concept-term{font-family:JetBrains Mono,monospace;font-size:11.5px;font-weight:600;color:var(--ink,#1C1B18);margin-bottom:7px}.upmodel-concept-def{font-size:12px;color:var(--ink2,#524F47);line-height:1.65}.upmodel-badge{display:inline-flex;align-items:center;gap:4px;padding:3px 8px;border-radius:20px;font-size:11px;font-weight:500;white-space:nowrap}.upmodel-badge .ti{font-size:11px}.upmodel-badge-muted{background:#EFEDE8;color:#524F47}.upmodel-badge-blue{background:#EBF4FF;color:#1A4FA0}.upmodel-badge-warn{background:#FDF4E7;color:#9A5F0A}.upmodel-badge-success{background:#E8F5EF;color:#0D6B4A}.upmodel-badge-xs{font-size:10px;padding:2px 6px}.upmodel-btn{display:inline-flex;align-items:center;gap:6px;padding:0 14px;height:34px;font-size:12px;font-weight:500;border-radius:7px;border:none;cursor:pointer;text-decoration:none;transition:background .15s,opacity .15s;white-space:nowrap;font-family:inherit}.upmodel-btn:disabled{opacity:.5;cursor:not-allowed}.upmodel-btn .ti{font-size:13px}.upmodel-btn-ghost{background:transparent;color:var(--ink2,#524F47);border:1px solid rgba(28,27,24,.14)}.upmodel-btn-ghost:hover:not(:disabled){background:#F0EDE8;color:var(--ink,#1C1B18)}.upmodel-btn-ink{background:var(--ink,#1C1B18);color:#fff}.upmodel-btn-ink:hover:not(:disabled){opacity:.88}.upmodel-btn-brand{background:#0D6B4A;color:#fff}.upmodel-btn-brand:hover:not(:disabled){background:#0a5a3e}.upmodel-btn-sm{height:30px;padding:0 11px;font-size:11.5px}.upmodel-btn-xs{height:26px;padding:0 9px;font-size:11px}.upmodel-tutor-panel{display:flex;flex-direction:column;height:100%;overflow:hidden}.upmodel-tutor-header{padding:13px 16px;border-bottom:1px solid rgba(28,27,24,.08);flex-shrink:0;background:#FAFAF8}.upmodel-tutor-title{display:flex;align-items:center;gap:7px;font-size:12.5px;font-weight:600;color:var(--ink,#1C1B18);margin-bottom:2px}.upmodel-tutor-title .ti{font-size:14px;color:#0D6B4A}.upmodel-tutor-context{font-size:10.5px;color:var(--ink4,#B8B5AF)}.upmodel-tutor-quick{display:grid;grid-template-columns:1fr 1fr;grid-gap:5px;gap:5px;padding:10px 12px;border-bottom:1px solid rgba(28,27,24,.08);flex-shrink:0;background:#FAFAF8}.upmodel-tutor-qp{display:flex;align-items:center;gap:5px;padding:6px 9px;font-size:11px;font-weight:500;color:var(--ink2,#524F47);background:#fff;border:1px solid rgba(28,27,24,.1);border-radius:6px;cursor:pointer;transition:all .15s;text-align:left;font-family:inherit;line-height:1.3}.upmodel-tutor-qp .ti{font-size:12px;color:#0D6B4A;flex-shrink:0}.upmodel-tutor-qp:hover:not(:disabled){background:#0D6B4A;color:#fff;border-color:#0D6B4A}.upmodel-tutor-qp:hover:not(:disabled) .ti{color:#fff}.upmodel-tutor-qp:disabled{opacity:.45;cursor:not-allowed}.upmodel-tutor-messages{flex:1 1;overflow-y:auto;padding:12px;display:flex;flex-direction:column;gap:10px}.upmodel-tutor-empty{font-size:12px;color:var(--ink4,#B8B5AF);text-align:center;padding:28px 12px;line-height:1.7}.upmodel-tutor-msg{display:flex}.upmodel-tutor-msg-user{justify-content:flex-end}.upmodel-tutor-msg-assistant{justify-content:flex-start}.upmodel-tutor-bubble{max-width:88%;font-size:12px;line-height:1.65;padding:10px 13px;border-radius:12px}.upmodel-tutor-msg-user .upmodel-tutor-bubble{background:#1C1B18;color:#fff;border-bottom-right-radius:3px;padding:8px 12px 5px;margin-bottom:0}.upmodel-tutor-msg-assistant .upmodel-tutor-bubble{background:#F7F6F2;color:#1C1B18;border:1px solid rgba(28,27,24,.08);border-bottom-left-radius:3px}.upmodel-tutor-typing{display:flex;gap:5px;align-items:center;padding:10px 14px!important}.upmodel-tutor-typing span{width:6px;height:6px;border-radius:50%;background:#B8B5AF;animation:upmodel-typing 1.2s infinite}.upmodel-tutor-typing span:nth-child(2){animation-delay:.2s}.upmodel-tutor-typing span:nth-child(3){animation-delay:.4s}@keyframes upmodel-typing{0%,60%,to{transform:translateY(0);opacity:.4}30%{transform:translateY(-5px);opacity:1}}.upmodel-tutor-input-row{padding:10px 12px;flex-shrink:0}.upmodel-tutor-input{flex:1 1;height:36px;padding:0 11px;font-size:12px;font-family:inherit;background:#fff;border:1px solid rgba(28,27,24,.14);border-radius:7px;color:#1C1B18;outline:none;transition:border-color .15s}.upmodel-tutor-input:focus{border-color:#0D6B4A}.upmodel-tutor-input::placeholder{color:#B8B5AF}.upmodel-module-bottombar{display:flex;align-items:center;justify-content:space-between;padding:10px 20px;border-top:1px solid rgba(28,27,24,.08);background:#fff;flex-shrink:0;gap:10px}.upmodel-module-bottombar-center,.upmodel-module-bottombar-left,.upmodel-module-bottombar-right{display:flex;align-items:center;gap:8px}.upmodel-module-loading{display:flex;align-items:center;justify-content:center;gap:10px;height:200px;font-size:13px;color:#8C8880}.upmodel-spinner{width:18px;height:18px;border:2px solid rgba(28,27,24,.12);border-top-color:#0d6b4a;border-radius:50%;animation:upmodel-spin .7s linear infinite;flex-shrink:0}.upmodel-spinner-sm{width:14px;height:14px;border-width:2px}@keyframes upmodel-spin{to{transform:rotate(1turn)}}.upmodel-module-error{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;height:200px;font-size:13px;color:#8C8880;text-align:center}.upmodel-module-error .ti{font-size:28px;color:#9A5F0A}.upmodel-module-error-toast{position:fixed;bottom:24px;left:50%;transform:translateX(-50%);background:#B93232;color:white;padding:10px 18px;border-radius:8px;font-size:12px;display:flex;align-items:center;gap:7px;z-index:9999;box-shadow:0 4px 20px rgba(0,0,0,.2)}.upmodel-mobile-tutor{margin:16px;border:1px solid rgba(28,27,24,.1);border-radius:10px;height:420px;overflow:hidden;background:#fff}.upmodel-hide-mobile{display:flex}.upmodel-show-mobile{display:none}@media (max-width:768px){.upmodel-hide-mobile{display:none!important}.upmodel-show-mobile{display:flex!important}.upmodel-module-tutor{display:none}.upmodel-module-content{padding:16px}.upmodel-module-topbar{padding:0 12px}.upmodel-module-bottombar{flex-wrap:wrap;gap:8px;padding:8px 12px}.upmodel-concepts-grid{grid-template-columns:1fr}}.upmodel-logout-btn{display:flex;align-items:center;justify-content:center;width:30px;height:30px;border:none;background:none;cursor:pointer;color:var(--ink3);border-radius:var(--r-md);transition:background .12s,color .12s}.upmodel-logout-btn:hover{background:var(--surface3);color:var(--ink)}.upmodel-quiz-overlay{position:fixed;inset:0;background:rgba(0,0,0,.5);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:200;display:flex;align-items:center;justify-content:center;padding:20px}.upmodel-quiz-modal{background:#fff;border-radius:14px;width:100%;max-width:660px;max-height:90vh;display:flex;flex-direction:column;box-shadow:0 20px 60px rgba(0,0,0,.2);overflow:hidden}.upmodel-quiz-header{display:flex;align-items:flex-start;justify-content:space-between;padding:20px 24px 16px;border-bottom:1px solid rgba(28,27,24,.08);flex-shrink:0}.upmodel-quiz-title{font-size:15px;font-weight:700;color:#1C1B18;margin-bottom:3px}.upmodel-quiz-meta{font-size:11px;color:#8C8880}.upmodel-quiz-close{background:none;border:none;font-size:16px;color:#8C8880;cursor:pointer;padding:4px;border-radius:6px;line-height:1}.upmodel-quiz-close:hover{background:#F0EDE8;color:#1C1B18}.upmodel-quiz-progress{height:3px;background:#EFEDE8;flex-shrink:0}.upmodel-quiz-progress-fill{height:100%;background:#0D6B4A;transition:width .3s ease}.upmodel-quiz-body{flex:1 1;overflow-y:auto;padding:24px}.upmodel-quiz-loading{display:flex;align-items:center;gap:10px;justify-content:center;padding:40px;color:#8C8880;font-size:13px}.upmodel-quiz-q-meta{display:flex;align-items:center;gap:8px;margin-bottom:14px}.upmodel-quiz-topic{font-size:11px;color:#8C8880;font-family:JetBrains Mono,monospace}.upmodel-quiz-q-text{font-size:14px;font-weight:600;color:#1C1B18;line-height:1.6;margin-bottom:20px}.upmodel-quiz-options{display:flex;flex-direction:column;gap:8px}.upmodel-quiz-option{display:flex;align-items:flex-start;gap:12px;padding:12px 16px;background:#F7F6F2;border:2px solid transparent;border-radius:10px;cursor:pointer;text-align:left;font-family:inherit;font-size:13px;color:#524F47;transition:all .15s;width:100%}.upmodel-quiz-option:hover{background:#EFEDE8;color:#1C1B18}.upmodel-quiz-option--selected{border-color:#0D6B4A;background:#E8F5EF;color:#1C1B18}.upmodel-quiz-opt-id{width:22px;height:22px;border-radius:50%;background:#fff;border:1px solid rgba(28,27,24,.15);display:flex;align-items:center;justify-content:center;font-size:11px;font-weight:700;flex-shrink:0;color:#1C1B18}.upmodel-quiz-option--selected .upmodel-quiz-opt-id{background:#0D6B4A;color:#fff;border-color:#0D6B4A}.upmodel-quiz-opt-text{flex:1 1;line-height:1.5}.upmodel-quiz-footer{display:flex;align-items:center;justify-content:space-between;padding:14px 24px;border-top:1px solid rgba(28,27,24,.08);flex-shrink:0}.upmodel-quiz-answered{font-size:11px;color:#8C8880}.upmodel-quiz-score{text-align:center;padding:28px;border-radius:12px;margin-bottom:20px}.upmodel-quiz-score--pass{background:#E8F5EF}.upmodel-quiz-score--fail{background:#FDF0F0}.upmodel-quiz-score-pct{font-family:JetBrains Mono,monospace;font-size:48px;font-weight:700;color:#1C1B18;line-height:1;margin-bottom:6px}.upmodel-quiz-score-label{font-size:16px;font-weight:600;color:#1C1B18;margin-bottom:4px}.upmodel-quiz-score-sub{font-size:12px;color:#8C8880}.upmodel-quiz-breakdown{display:flex;flex-direction:column;gap:8px;margin-bottom:20px}.upmodel-quiz-result-row{padding:12px 14px;border-radius:8px;border-left:3px solid transparent}.upmodel-quiz-result-row--correct{background:#E8F5EF;border-left-color:#0D6B4A}.upmodel-quiz-result-row--wrong{background:#FDF0F0;border-left-color:#B93232}.upmodel-quiz-result-q{font-size:12px;color:#1C1B18;display:flex;gap:8px;align-items:flex-start;margin-bottom:4px}.upmodel-quiz-result-icon{font-weight:700;flex-shrink:0}.upmodel-quiz-result-exp{font-size:11.5px;color:#524F47;line-height:1.6;margin-left:20px;margin-top:4px;padding:8px 10px;background:rgba(0,0,0,.04);border-radius:6px}.upmodel-quiz-result-actions{display:flex;justify-content:center;gap:10px}.upmodel-tutor-input-row{display:flex;gap:8px;padding:12px;border-top:1px solid var(--line);background:var(--surface);position:-webkit-sticky;position:sticky;bottom:0;z-index:10}