@font-face{font-family:Self Modern;src:url(/fonts/self-modern_book_web.woff2) format("woff2");font-weight:500;font-style:normal;font-display:swap}@font-face{font-family:TWK Lausanne;src:url(/fonts/TWKLausanne-200.ttf) format("truetype");font-weight:200;font-style:normal;font-display:swap}@font-face{font-family:TWK Lausanne;src:url(/fonts/TWKLausanne-300.ttf) format("truetype");font-weight:300;font-style:normal;font-display:swap}@font-face{font-family:TWK Lausanne;src:url(/fonts/TWKLausanne-350.ttf) format("truetype");font-weight:350;font-style:normal;font-display:swap}@font-face{font-family:TWK Lausanne;src:url(/fonts/TWKLausanne-400.ttf) format("truetype");font-weight:400;font-style:normal;font-display:swap}:root{--bg:#ebebeb;--surface:#ffffff;--sunken:#f4f4f5;--line:rgba(0,0,0,0.12);--line-dot:#d9d9d9;--control-edge:#71717b;--fg:#1a1a1a;--muted:#4d4d4d;--on-ink:#ffffff;--accent:#106393;--accent-soft:#e4f1fb;--ok:#007a55;--ok-soft:#ecfdf5;--ok-edge:#a7f3d0;--warn:#b45309;--warn-soft:#fffbeb;--warn-edge:#fde68a;--bad:#be123c;--bad-soft:#fff1f2;--bad-edge:#fecdd3;--info:#52525b;--info-soft:#f4f4f5;--info-edge:#e4e4e7;--font-body:"TWK Lausanne",system-ui,sans-serif;--font-display:"Self Modern","TWK Lausanne",Georgia,serif;--font-mono:ui-monospace,"SF Mono",Menlo,monospace;--radius-control:6px;--radius:8px;--ease:cubic-bezier(0.2,0,0.2,1);--dur-micro:120ms;color-scheme:light}*{box-sizing:border-box}body,html{margin:0}body{background:var(--bg);color:var(--fg);font-family:var(--font-body);font-weight:300;font-size:14px;line-height:1.55;font-feature-settings:"ss01","ss02";-webkit-font-smoothing:antialiased}b,h1,h2,h3,label.field,strong,th{font-weight:400}b,h1,h2,h3,strong{color:var(--fg)}h1,h2,h3{letter-spacing:-.01em;text-wrap:balance;line-height:1.25;margin:0}h1{font-size:24px;letter-spacing:-.02em}h2{font-size:18px}h3{font-size:15px}p{margin:0}a{color:var(--accent);text-underline-offset:3px}button,input,select,textarea{font:inherit;color:inherit}:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:2px}.wrap{max-width:1080px;margin:0 auto;padding-left:max(24px,env(safe-area-inset-left,0px));padding-right:max(24px,env(safe-area-inset-right,0px))}.muted{color:var(--muted)}.small{font-size:12px}.mono{font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.eyebrow{font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);font-weight:350}header.top{position:-webkit-sticky;position:sticky;top:0;z-index:40;background:var(--bg);border-bottom:1px solid var(--line)}header.top:before{content:"";display:block;height:6px;background:#000}header.top .wrap{gap:24px;flex-wrap:wrap;min-height:64px;padding-block:8px}.brand,header.top .wrap{display:flex;align-items:center}.brand{gap:10px;color:var(--fg);text-decoration:none}.brand img{flex:none}.brand .wordmark{font-size:29px;font-weight:400;letter-spacing:-.4px;line-height:1;white-space:nowrap}nav.tabs{display:flex;gap:2px;flex-wrap:wrap;align-items:center;margin-left:auto}nav.tabs button{border:0;background:none;padding:8px 12px;border-radius:var(--radius-control);cursor:pointer;color:var(--muted);font-weight:350;font-size:14px}nav.tabs button:hover{color:var(--fg);background:rgb(0 0 0/.04)}nav.tabs button[aria-current=page]{color:var(--accent);background:var(--accent-soft)}.role-badge{margin-left:8px;font-size:11px;font-weight:350;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);border:1px solid var(--line);border-radius:999px;padding:2px 9px}main{padding-block:40px 64px}.stack{flex-direction:column;gap:16px}.row,.stack{display:flex}.row{gap:12px;flex-wrap:wrap;align-items:center}.spread{justify-content:space-between}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:36px;border:1px solid var(--control-edge);background:var(--surface);border-radius:var(--radius-control);padding:7px 14px;cursor:pointer;font-weight:350;font-size:14px;color:var(--fg)}.btn:hover{background:var(--accent-soft)}.btn.primary{background:var(--fg);color:var(--on-ink);border-color:var(--fg)}.btn.primary:hover{background:#000}.btn.danger{color:var(--bad);border-color:var(--bad-edge)}.btn.danger:hover{background:var(--bad-soft)}.nowrap{white-space:nowrap}.btn:disabled{opacity:.5;cursor:not-allowed}.linkbtn{border:0;background:none;color:var(--accent);cursor:pointer;padding:0;font-weight:350}.linkbtn:hover{text-decoration:underline;text-underline-offset:3px}.panel{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:20px}.empty{text-align:center;padding:40px 20px;color:var(--muted)}.empty h3{color:var(--fg);margin-bottom:6px}.chip{display:inline-flex;align-items:center;gap:6px;font-size:12px;font-weight:350;padding:1px 9px;border-radius:999px;white-space:nowrap;border:1px solid transparent}.chip:before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor}.s-new{color:var(--info)}.s-new,.s-quiz{background:var(--info-soft);border-color:var(--info-edge)}.s-quiz{color:var(--fg)}.s-retake,.s-updated{background:var(--warn-soft);color:var(--warn);border-color:var(--warn-edge)}.s-done{background:var(--ok-soft);color:var(--ok);border-color:var(--ok-edge)}.s-overdue{background:var(--bad-soft);color:var(--bad);border-color:var(--bad-edge)}.track{font-size:12px;font-weight:350;color:var(--muted);background:var(--sunken);border:1px solid var(--line);padding:1px 8px;border-radius:999px}.mod-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));grid-gap:12px;gap:12px}.mod-card{display:flex;flex-direction:column;gap:10px;text-align:left;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:18px;cursor:pointer;min-width:0}.mod-card:hover{background:var(--accent-soft)}.mod-card h3{font-size:16px}.mod-card .meta{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin-top:auto}.progress-bar{height:6px;background:var(--sunken);border-radius:999px;overflow:hidden}.progress-bar span{display:block;height:100%;background:var(--ok)}.reader{max-width:720px;margin:0 auto}.reader .content{font-size:16px;line-height:1.65}.reader .content h3{margin:24px 0 8px;font-size:18px}.reader .content p{margin:0 0 12px}.reader .content ul{margin:0 0 12px;padding-left:22px}.reader .content li{margin-bottom:4px}.callout{background:var(--surface);border:1px solid var(--line);border-left:3px solid var(--accent);border-radius:var(--radius);padding:12px 14px}.q{border-top:1px solid var(--line);padding-top:18px}.media{margin:14px 0}.media img,.media video{display:block;max-width:100%;max-height:480px;border-radius:var(--radius);background:var(--sunken)}.media figcaption{font-size:12px;color:var(--muted);margin-top:6px}.q .media{margin:10px 0 4px}.q-edit .media img,.q-edit .media video{max-height:180px}.q fieldset{border:0;padding:0;margin:10px 0 0;display:flex;flex-direction:column;gap:6px}.opt{display:flex;gap:10px;align-items:flex-start;padding:10px 12px;border:1px solid var(--line);border-radius:var(--radius-control);cursor:pointer;background:var(--surface)}.opt:hover{background:var(--accent-soft)}.opt input{margin-top:4px;accent-color:var(--accent)}.opt.right{border-color:var(--ok-edge);background:var(--ok-soft)}.opt.wrong{border-color:var(--bad-edge);background:var(--bad-soft)}.why{margin-top:8px;font-size:13px;color:var(--muted)}.score{font-size:48px;font-weight:200;letter-spacing:-.03em;line-height:1;color:var(--fg);font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.tiles{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));grid-gap:12px;gap:12px}.tile{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:14px 16px}.tile .n{font-size:32px;font-weight:200;letter-spacing:-.03em;line-height:1.15;color:var(--fg);font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.tile .eyebrow{margin-bottom:4px}.scroll-x{overflow-x:auto;border:1px solid var(--line);border-radius:var(--radius);background:var(--surface)}table{border-collapse:collapse;width:100%;font-size:13px}td,th{padding:10px 12px;border-bottom:1px solid var(--line);text-align:left;vertical-align:middle}th{color:var(--muted);font-size:11px;text-transform:uppercase;letter-spacing:.06em;font-weight:350;background:var(--sunken)}tbody tr:hover>td{background:rgb(228 241 251/.45)}.who{table-layout:fixed}.who col.c-person{width:30%}.who col.c-prog{width:24%}.twistie{display:flex;align-items:center;gap:8px;border:0;background:none;padding:0;font:inherit;color:inherit;cursor:pointer;text-align:left}.twistie .tw{width:22px;height:22px;display:grid;place-items:center;border-radius:var(--radius-control);flex:none}button.twistie .tw:before{content:"";border:5px solid transparent;border-left:7px solid var(--muted);margin-left:4px;transition:transform var(--dur-micro) var(--ease)}button.twistie[aria-expanded=true] .tw:before{transform:rotate(90deg) translateX(2px)}button.twistie:hover .tw{background:var(--accent-soft)}.who-main:has(+.who-detail:not([hidden])) td{border-bottom:0}.who-detail>td{padding:0 12px 14px 44px}.who-detail:hover>td{background:none}.who-sub{font-size:12px;border:1px solid var(--line);border-radius:var(--radius);border-collapse:separate;border-spacing:0;overflow:hidden}.who-sub td,.who-sub th{padding:8px 10px}.who .meter{height:6px;background:var(--sunken);border-radius:999px;overflow:hidden;margin-top:6px;max-width:160px}.who .meter span{display:block;height:100%;background:var(--fg)}@media (max-width:640px){.who,.who tbody,.who td,.who tr{display:block;width:100%}.who colgroup,.who thead{display:none}.who tr{border-bottom:1px solid var(--line);padding:6px 0}.who td{border-bottom:0;padding:6px 12px}.who tr[hidden]{display:none}.who-detail>td{padding:0 12px 10px}.who-sub thead{display:none}.who-sub tr{padding:8px 0;border-bottom:1px solid var(--line)}.who-sub tr:last-child{border-bottom:0}.who-sub td{display:flex;justify-content:space-between;gap:12px;padding:3px 10px}.who-sub td:before{content:attr(data-k);color:var(--muted);font-size:11px}}tbody tr:last-child td{border-bottom:0}td .score-sm{font-feature-settings:"tnum";font-variant-numeric:tabular-nums;font-size:12px;color:var(--muted);margin-left:6px}.person{display:flex;align-items:center;gap:8px;white-space:nowrap}.person img{width:26px;height:26px;border-radius:50%}.person img[src=""]{visibility:hidden}.mod-stats{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));grid-gap:12px;gap:12px}.bar-row{display:grid;grid-template-columns:1fr 52px;grid-gap:10px;gap:10px;align-items:center;font-size:13px}.bar-row .bar{height:6px;background:var(--sunken);border-radius:999px;overflow:hidden;margin-top:4px}.bar-row .bar span{display:block;height:100%;background:var(--bad)}label.field{display:flex;flex-direction:column;gap:4px;font-size:13px;min-width:0}label.field .hint{font-weight:300;color:var(--muted);font-size:12px}input[type=date],input[type=number],input[type=search],input[type=text],input[type=url],select,textarea{background:var(--surface);border:1px solid var(--control-edge);border-radius:var(--radius-control);padding:8px 10px;width:100%;font-weight:300;font-size:14px}input::placeholder,textarea::placeholder{color:#71717b}textarea{min-height:220px;font-family:var(--font-mono);font-size:13px;line-height:1.55;resize:vertical}input[type=checkbox],input[type=radio]{accent-color:var(--accent)}.grid2{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));grid-gap:14px;gap:14px}.q-edit{border:1px solid var(--line);border-radius:var(--radius);padding:14px;display:flex;flex-direction:column;gap:10px;background:var(--sunken)}.opt-edit{display:grid;grid-template-columns:auto 1fr auto;grid-gap:8px;gap:8px;align-items:center}.toast{position:fixed;bottom:calc(20px + env(safe-area-inset-bottom, 0px));left:50%;transform:translateX(-50%);background:var(--fg);color:var(--on-ink);padding:10px 16px;border-radius:var(--radius);font-weight:350;z-index:50;box-shadow:0 10px 30px rgb(0 0 0/.18)}.confirm{background:var(--bad-soft);border:1px solid var(--bad-edge);border-radius:var(--radius);padding:10px 12px}@media (prefers-reduced-motion:no-preference){.btn,.mod-card,.opt,nav.tabs button{transition:background-color var(--dur-micro) var(--ease),border-color var(--dur-micro) var(--ease),color var(--dur-micro) var(--ease)}}.top .wrap>form{margin-left:4px}.top .wrap>form .linkbtn{color:var(--muted);font-size:13px}.top .wrap>form .linkbtn:hover{color:var(--fg)}.signin{min-height:calc(100vh - 71px);display:flex;align-items:center;justify-content:center;padding:24px}.signin-inner{width:100%;max-width:448px}.signin h1{font-family:var(--font-display);font-weight:500;font-size:40px;line-height:1.1;letter-spacing:-.4px}.signin .lede{margin-top:12px;max-width:384px;font-size:14px;line-height:1.5;letter-spacing:.04px;color:var(--muted)}.signin .lede strong{color:var(--fg)}.signin form{margin-top:32px}.signin-button{display:inline-flex;align-items:center;justify-content:center;gap:8px;height:44px;padding:0 20px;border:0;border-radius:2px;background:var(--fg);color:var(--on-ink);font-size:14px;font-weight:400;letter-spacing:.16px;cursor:pointer}.signin-button:hover{background:#000}.signin .help{margin-top:40px;font-size:12px;color:var(--muted)}.form-error{margin-top:24px;padding:10px 12px;border:1px solid var(--bad-edge);background:var(--bad-soft);color:var(--bad);border-radius:var(--radius-control);font-size:13px}.preview-bar{position:fixed;left:50%;bottom:calc(14px + env(safe-area-inset-bottom, 0px));transform:translateX(-50%);z-index:30;display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:8px 14px;max-width:calc(100vw - 32px);padding:8px 14px;border-radius:999px;background:var(--fg);color:var(--on-ink);font-size:13px;box-shadow:0 6px 24px rgb(0 0 0/.18)}.preview-bar strong{color:inherit}.preview-bar select{width:auto;padding:3px 8px;background:var(--surface);color:var(--fg);border:0;font-size:13px}.preview-bar .linkbtn{color:inherit;text-decoration:underline}body:has(.preview-bar) #app{padding-bottom:80px}.compare{display:grid;grid-template-columns:max-content minmax(0,1fr) 3.2em;grid-gap:10px 12px;gap:10px 12px;align-items:center;max-width:560px}.compare-label{font-size:13px;font-weight:350}.compare-track{height:10px;border-radius:999px;background:var(--sunken);overflow:hidden}.compare-track>span{display:block;height:100%;border-radius:0 4px 4px 0}.compare-track .you{background:var(--fg)}.compare-track .team{background:var(--line-dot)}.compare-value{font-feature-settings:"tnum";font-variant-numeric:tabular-nums;text-align:right;font-weight:400}