@font-face {
  font-family: 'DM Sans';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(assets/fonts/rP2tp2ywxg089UriI5-g4vlH9VoD8CmcqZG40F9JadbnoEwAopxhTg.ttf) format('truetype');
}
@font-face {
  font-family: 'DM Sans';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(assets/fonts/rP2tp2ywxg089UriI5-g4vlH9VoD8CmcqZG40F9JadbnoEwAkJxhTg.ttf) format('truetype');
}
@font-face {
  font-family: 'DM Sans';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(assets/fonts/rP2tp2ywxg089UriI5-g4vlH9VoD8CmcqZG40F9JadbnoEwAfJthTg.ttf) format('truetype');
}
@font-face {
  font-family: 'DM Sans';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(assets/fonts/rP2tp2ywxg089UriI5-g4vlH9VoD8CmcqZG40F9JadbnoEwARZthTg.ttf) format('truetype');
}
@font-face {
  font-family: 'IBM Plex Mono';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(assets/fonts/-F63fjptAgt5VM-kVkqdyU8n5ig.ttf) format('truetype');
}
@font-face {
  font-family: 'IBM Plex Mono';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(assets/fonts/-F6qfjptAgt5VM-kVkqdyU8n3twJ8lc.ttf) format('truetype');
}
@font-face {
  font-family: 'IBM Plex Mono';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(assets/fonts/-F6qfjptAgt5VM-kVkqdyU8n3vAO8lc.ttf) format('truetype');
}

:root{--bg:#f7f8f4;--paper:#fff;--ink:#292b35;--muted:#74786f;--line:#e4e7dd;--green:#476a31;--lime:#d9efaa;--sidebar:#242532;--purple:#bdc4dc;--amber:#996b25;--mono:'IBM Plex Mono',monospace;--sans:'DM Sans',system-ui,sans-serif}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink);font:14px/1.55 var(--sans)}button,input,textarea{font:inherit}button,a,input,textarea{touch-action:manipulation}button{cursor:pointer}button:disabled{cursor:default;opacity:.45}button{color:inherit}button:focus-visible,a:focus-visible,input:focus-visible,textarea:focus-visible,summary:focus-visible{outline:3px solid #8caa60;outline-offset:3px}button{border:0;background:none}a{color:inherit}.skip{position:fixed;top:-80px;z-index:50;padding:10px;background:var(--lime)}.skip:focus{top:5px}#sidebar{position:fixed;inset:0 auto 0 0;width:266px;background:var(--sidebar);color:#e8e9f0;display:flex;flex-direction:column;z-index:25}.brand{display:flex;align-items:center;gap:12px;text-decoration:none;padding:30px 25px 32px;font-size:19px;font-weight:650;letter-spacing:-.5px}.brand strong{font-weight:450;color:#bdc5d7}.brand small{display:block;font-size:8px;font-weight:550;letter-spacing:2.2px;color:#9093a4;margin-top:1px}.brand-icon{font:600 34px var(--mono);width:43px;height:43px;border:1px solid #555b54;color:var(--lime);border-radius:12px;line-height:40px;text-align:center;letter-spacing:-9px;padding-right:6px}.brand-icon span{font-size:25px}.side-intro{padding:0 25px;display:flex;justify-content:space-between;align-items:center}.eyebrow{font-size:10px;font-weight:700;letter-spacing:1.7px;color:var(--muted)}.side-intro .eyebrow{color:#9a9dad;font-size:9px}.count{font:10px var(--mono);color:#a3a7b9;border:1px solid #454754;padding:1px 6px;border-radius:5px}.search-wrap{display:flex;align-items:center;gap:8px;margin:17px 17px 19px;padding:10px;background:#30323f;border:1px solid #3e414e;border-radius:7px}.search-wrap svg{width:16px;fill:none;stroke:#9499ad;stroke-width:1.5;flex-shrink:0}.search-wrap input{min-width:0;width:100%;background:none;border:0;outline:0;color:white;font-size:11px}.search-wrap input::placeholder{color:#a1a4b4}#library{overflow:auto;padding:0 13px 25px;scrollbar-width:thin;scrollbar-color:#4d5061 transparent;flex:1}details.chapter{margin-bottom:10px}summary{cursor:pointer;list-style:none;padding:10px 11px 9px;display:flex;align-items:center;gap:9px;color:#a8abba;font-size:10px;font-weight:600}summary::-webkit-details-marker{display:none}summary:after{content:'⌄';margin-left:auto;color:#7c8094}details:not([open]) summary:after{content:'›'}summary .chapter-num{font:10px var(--mono);color:#848a9c;width:18px}summary .chapter-name{font-size:10px;letter-spacing:.2px}.nav-table{width:100%;text-align:left;display:flex;gap:10px;align-items:flex-start;padding:10px 12px 10px 20px;border-radius:7px;font-size:11px;line-height:1.5;color:#b2b5c4;margin:2px 0}.nav-table .nav-dot{display:block;flex-shrink:0;border:1px solid #72788b;border-radius:50%;width:5px;height:5px;margin-top:6px}.nav-table:hover{background:#313341;color:#fff}.nav-table.active{background:#d9efaa;color:#253220;font-weight:650}.nav-table.active .nav-dot{border-color:#415b2c;background:#415b2c}.nav-table small{display:block;font:8px var(--mono);opacity:.65;margin-bottom:2px}.side-bottom{padding:17px 19px;display:flex;align-items:center;gap:7px;border-top:1px solid #3b3d4b;font-size:9px;color:#9c9faf}.local-dot{display:inline-block;width:5px;height:5px;border-radius:50%;background:#87a366;flex-shrink:0}.icon-button{font-size:20px;line-height:1;border-radius:6px;padding:6px}.side-bottom .icon-button{margin-left:auto;color:#b7bbca;font-size:17px}.workspace{margin-left:266px}.topbar{height:75px;padding:0 4.5%;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;background:#fcfcfa}.topbar-label{font-size:9px;letter-spacing:1.8px;color:#868a80;font-weight:650}.topbar-right{display:flex;align-items:center;gap:23px}.version-chip{font:9px var(--mono);border:1px solid #dfe3d7;border-radius:4px;padding:3px 7px;color:#6f7964;background:#f3f5ee}.text-button{font-size:11px;color:#73796c;display:flex;gap:12px}.mobile-menu{display:none}main{max-width:1450px;margin:auto;padding:43px 4.5% 23px;outline:none}.welcome{display:flex;align-items:center;justify-content:space-between;margin-bottom:32px}.accent{color:#71865c;font-size:9px;letter-spacing:1.8px}h1{font-size:clamp(36px,4vw,53px);font-weight:550;letter-spacing:-2px;line-height:1.2;margin:9px 0 10px}h1 span{color:#91ad65}.welcome p{color:#7b8174;font-size:13px;margin:0}.welcome-art{width:230px;position:relative;transform:rotate(-3deg);margin-right:10px}.art-code{border:1px solid #dce2d2;background:#eef1e8;border-radius:10px;padding:12px 15px;box-shadow:6px 6px 0 #e7ebdf;font:10px/1.9 var(--mono)}.art-dot{display:inline-block;width:5px;height:5px;border-radius:50%;background:#c3cbb7;margin-right:3px}.art-code>div{margin-top:7px}.green{color:#6b8953}.muted{color:#9ba18f}.art-label{font:8px var(--mono);color:#8d9b7c;display:block;text-align:right;margin-top:11px}.stats{display:grid;grid-template-columns:repeat(4,1fr);background:white;border:1px solid var(--line);border-radius:10px;padding:19px 0;margin-bottom:37px;box-shadow:0 3px 8px #292b3503}.stats>div,.stats>button{display:flex;align-items:center;gap:13px;padding:0 22px;border-right:1px solid var(--line);text-align:left}.stats>button{border:0}.stat-icon{font-size:22px;color:#8b91a3;width:30px;height:35px;display:grid;place-items:center}.stat-icon.green{color:#79965b}.stat-icon.amber{color:#bd985b}.stats strong{font-size:22px;font-weight:550;line-height:1.2;display:block;letter-spacing:-.5px}.stats small{font-size:10px;color:#898e83;display:block;margin-top:3px;white-space:nowrap}.stat-arrow{margin-left:auto;color:#a0a78e}.section-top{display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line);margin-bottom:26px;gap:12px}.mode-tabs{display:flex;gap:25px}.mode-tabs button{padding:0 0 13px;font-size:12px;color:#888e81;position:relative;white-space:nowrap}.mode-tabs button[aria-selected=true]{color:#34422b;font-weight:650}.mode-tabs button[aria-selected=true]:after{content:'';position:absolute;bottom:-1px;height:3px;background:#90a96f;left:0;right:0;border-radius:3px}.keyboard-hint{font-size:9px;color:#959b8e;padding-bottom:12px}kbd{border:1px solid #dce1d3;background:#fff;padding:1px 4px;border-radius:3px;font:9px var(--mono);margin-right:3px}.study-heading{display:flex;align-items:center;justify-content:space-between;margin-bottom:19px;gap:20px}.study-heading .eyebrow{font-size:8px;color:#849272;letter-spacing:1.4px}h2{font-size:22px;letter-spacing:-.6px;font-weight:550;line-height:1.35;margin:7px 0 0}.table-controls{display:flex;gap:12px;white-space:nowrap}.subtle-button{font-size:11px;color:#89917e;display:flex;gap:6px;align-items:center;padding:5px 0}.subtle-button:hover{color:#304b24}.table-shell{overflow:auto;border:1px solid var(--line);border-radius:9px;background:white}.memory-table{border-collapse:collapse;width:100%;table-layout:fixed;font-size:12px;line-height:1.7}.memory-table th{background:#f0f3e9;text-align:left;font-size:9px;font-weight:650;letter-spacing:.5px;color:#7c876c;padding:12px 18px;border-bottom:1px solid #dfe5d4}.memory-table td{padding:17px 18px;vertical-align:top;border-bottom:1px solid #e9ece3;border-right:1px solid #edf0e8;overflow-wrap:anywhere}.memory-table tr:last-child td{border-bottom:0}.memory-table td:last-child{border-right:0}.memory-table.two-col th:first-child{width:32%}.memory-table th code{font:inherit}.cell-content{color:#646b5e}.memory-table td:first-child .cell-content{font-family:var(--mono);color:#62695b;font-size:11px}.answer-input{width:100%;min-height:37px;resize:vertical;border:1px dashed #cdd6be;border-radius:5px;padding:8px 11px;background:#fafcf6;color:#314327;font:12px/1.6 var(--mono);display:block;transition:border-color .15s}.answer-input::placeholder{color:#a6ae9b;font-size:10px}.answer-input:focus{border:1px solid #91aa71;outline:2px solid #e7efda;background:#fff}.answer-input.exact{border:1px solid #a8c88d;background:#f5faef}.answer-input.compare{border:1px solid #d8caa5;background:#fffdf7}.cell-hint{font:9px var(--mono);color:#a0a991;margin-top:4px}.answer-reveal{margin-top:9px;color:#36452b;font:11px/1.7 var(--mono)}.answer-reveal small{display:block;font:8px var(--sans);letter-spacing:.8px;color:#8c997b;margin-bottom:3px}.match-label{font:9px var(--sans);color:#67814f;margin-top:6px}.grade-buttons{display:flex;gap:5px;margin-top:9px;flex-wrap:wrap}.grade-buttons button{padding:3px 7px;border:1px solid #dfe4d6;color:#7f8874;border-radius:4px;font:9px var(--sans)}.grade-buttons button:hover,.grade-buttons button.selected{background:#e6efd9;border-color:#afc590;color:#4a6735}.grade-buttons .again.selected{background:#fbf0dd;border-color:#d4b77f;color:#996b25}.table-footer{display:flex;align-items:center;justify-content:space-between;margin-top:19px;gap:16px;flex-wrap:wrap}.table-footer .foot-note{font-size:10px;color:#969c8f;max-width:54%}.action-group{display:flex;align-items:center;gap:16px}.primary{background:#d9efaa;color:#3b4e2d;border:1px solid #c7df95;border-radius:6px;padding:10px 16px;font-size:11px;font-weight:650;display:inline-flex;align-items:center;justify-content:center;gap:20px}.primary:hover{background:#cce594}.secondary{border:1px solid #dce2d0;border-radius:6px;padding:10px 15px;color:#6f7e5f;font-size:11px;background:#fff;display:inline-flex;align-items:center;gap:15px}.secondary:hover{background:#f0f4e8}.revealed-count{font:9px var(--mono);color:#889876}.page-foot{border-top:1px solid var(--line);margin-top:42px;padding-top:18px;display:flex;justify-content:space-between;color:#a0a497;font-size:9px;gap:14px}.page-foot .local-dot{margin-right:6px}.correction{margin:12px 0;padding:11px 15px;border:1px solid #e8dfc5;background:#fbf8ee;border-radius:6px;font-size:10px;color:#8b7d58}.correction summary{padding:0;color:inherit;font-size:10px;display:block}.correction summary:after{display:none}.correction p{margin:8px 0}.correction a{color:#6f7d59}.row-note{font:8px var(--sans);color:#aa8b52;margin-top:7px}.flash-toolbar{display:flex;align-items:center;justify-content:space-between;font-size:10px;color:#8d9780;margin:2px 0 13px}.flash-toolbar label{display:flex;gap:7px;align-items:center}.flash-toolbar input{accent-color:#87a366}.flash-card{min-height:320px;border:1px solid var(--line);border-radius:10px;background:#fff;padding:32px;box-shadow:0 5px 20px #262b3003;display:flex;flex-direction:column;align-items:center;text-align:center}.flash-card .eyebrow{color:#8b987b;font-size:8px}.flash-clue{font-size:18px;line-height:1.7;max-width:680px;margin:22px 0 25px;color:#59604f}.flash-clue small{display:block;font:9px var(--mono);letter-spacing:.6px;color:#a2aa96;margin-top:10px}.flash-answer{font:500 21px/1.6 var(--mono);color:#486232;margin:10px 0 18px;padding:16px 30px;border-radius:8px;background:#f4f8ec;max-width:100%;overflow-wrap:anywhere}.flash-grades{display:flex;gap:12px;margin-top:10px}.flash-grades .secondary{color:#aa8449}.flash-progress{height:3px;background:#e8ecdf;border-radius:3px;margin-top:17px;overflow:hidden}.flash-progress div{height:100%;background:#a6bf80;transition:width .2s}.empty-state{text-align:center;background:#fff;border:1px solid var(--line);border-radius:9px;padding:55px 25px;color:#8a937f}.empty-state h3{color:#586a46;font-size:22px;margin:0 0 10px}.empty-state .primary{margin-top:15px}.reference-note{color:#8f977f;font-size:10px;margin-bottom:15px}.no-results{padding:20px;font-size:12px;color:#999fb1}dialog{border:1px solid #dce2d2;border-radius:14px;padding:35px;max-width:560px;width:calc(100% - 32px);color:var(--ink);box-shadow:0 25px 100px #171a2750;background:#fafcf6}dialog::backdrop{background:#20242b80;backdrop-filter:blur(3px)}dialog h2{font-size:27px;margin-top:7px}dialog>p{font-size:13px;color:#7b846f}dialog .primary{margin-top:15px}.dialog-close{position:absolute;right:15px;top:12px;font-size:25px;color:#9ba58c}.how-list{padding-left:23px;margin:25px 0}.how-list li{padding-left:6px;margin-bottom:16px;color:#65744f}.how-list b{font-size:13px}.how-list p{font-size:12px;line-height:1.65;margin:3px 0;color:#7b846f}.info-box{padding:14px;border-radius:7px;background:#edf2e4;font-size:11px;color:#7b8869}.source-note{font-size:10px!important;line-height:1.8;margin-top:18px}hr{border:0;border-top:1px solid var(--line);margin:24px 0}h3{font-size:15px}.settings-actions{display:flex;gap:10px;margin:20px 0;flex-wrap:wrap}.settings-actions .primary{margin:0}.import-label{cursor:pointer}.import-label input{display:none}.danger-button{border:1px solid #d8b9a7;color:#a47154;background:#fff7f0;border-radius:6px;padding:9px 15px;font-size:11px}#toast{position:fixed;bottom:25px;left:calc(50% + 100px);transform:translateX(-50%) translateY(100px);background:#303b28;color:#eef5e6;padding:12px 22px;border-radius:8px;font-size:12px;box-shadow:0 6px 30px #2222;z-index:80;opacity:0;transition:transform .2s,opacity .2s;max-width:85vw}#toast.show{opacity:1;transform:translateX(-50%) translateY(0)}#scrim{display:none}@media(min-width:1600px){main{padding-top:55px}.welcome{margin-bottom:40px}.stats{margin-bottom:45px}}@media(max-width:1150px){#sidebar{width:235px}.workspace{margin-left:235px}.brand{padding-left:20px}.welcome-art{width:190px;margin-right:0}.stats>div,.stats>button{padding:0 15px;gap:8px}.keyboard-hint{display:none}h2{font-size:20px}.table-controls{gap:10px}.memory-table td{padding:13px}.memory-table th{padding:12px 13px}.stats strong{font-size:20px}}@media(max-width:850px){#sidebar{width:256px;transform:translateX(-100%);transition:transform .2s}.workspace{margin-left:0}.nav-open #sidebar{transform:translateX(0)}.nav-open #scrim{display:block;position:fixed;inset:0;background:#24253277;z-index:20}.mobile-menu{display:inline-block;margin-right:15px;font-size:17px}.topbar{height:65px}.topbar>div:first-child{display:flex;align-items:center}.topbar-label{font-size:8px}.topbar-right{gap:15px}main{padding-top:30px}.stats{margin-bottom:29px}.page-foot{margin-top:35px}#toast{left:50%}}@media(max-width:560px){main{padding:26px 18px 20px}.topbar{padding:0 16px}.topbar-label{display:none}.topbar-right{gap:16px}.welcome-art{display:none}.welcome{margin-bottom:25px}h1{font-size:42px}.welcome p{font-size:11px}.accent{font-size:8px}.stats{padding:15px 0;grid-template-columns:repeat(4,1fr)}.stats>div,.stats>button{padding:0 9px;gap:0;justify-content:center}.stat-icon{display:none}.stats strong{font-size:21px}.stats small{font-size:8px}.stat-arrow{display:none}.mode-tabs{gap:22px}.mode-tabs button{font-size:11px}.study-heading{align-items:flex-start;gap:10px}.study-heading h2{font-size:19px}.table-controls{gap:10px;margin-top:10px}.table-controls span{display:none}.subtle-button{font-size:17px}.memory-table{font-size:11px;table-layout:auto}.memory-table.two-col th:first-child{width:37%}.memory-table td{padding:12px 10px;min-width:110px}.memory-table th{padding:10px;font-size:8px;white-space:normal;min-width:110px}.memory-table td:first-child .cell-content{font-size:10px}.answer-input{font-size:11px;padding:6px 8px;min-width:90px}.answer-input::placeholder{font-size:9px}.answer-reveal{font-size:10px}.table-footer{align-items:flex-start}.table-footer .foot-note{max-width:100%;font-size:9px}.action-group{width:100%;justify-content:space-between;gap:10px}.action-group button{flex:1;font-size:10px}.page-foot{font-size:8px;display:block}.page-foot>span{display:block;margin:6px 0}.flash-card{padding:25px 18px;min-height:340px}.flash-clue{font-size:16px}.flash-answer{font-size:18px;padding:14px}.flash-toolbar{font-size:9px}dialog{padding:28px 22px}.source-note{font-size:9px!important}}@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important}}

[hidden]{display:none!important}.answer-input::placeholder{color:#7b886b}.keyboard-hint,.table-footer .foot-note,.reference-note{color:#737e66}
