/* AYLOTI Formula Library 4.0 — soft multi-qualification academic interface */
.afl-wrap{
  --afl-ink:#243248;
  --afl-muted:#718096;
  --afl-line:#e3e9ef;
  --afl-paper:#fffefd;
  --afl-canvas:#f7f9fb;
  --afl-blue:#6f96bb;
  --afl-blue-soft:#eaf3fa;
  --afl-lavender:#8c84b8;
  --afl-lavender-soft:#f0eef9;
  --afl-sage:#71988b;
  --afl-sage-soft:#edf6f1;
  --afl-peach:#7f9fb4;
  --afl-peach-soft:#eef6fa;
  --afl-rose:#b77d89;
  --afl-rose-soft:#faeff1;
  position:relative;
  box-sizing:border-box;
  max-width:100%;
  width:min(1380px,100%);
  margin:0 auto;
  padding:22px 18px 60px;
  color:var(--afl-ink);
  font-family:Inter,ui-sans-serif,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;
  font-size:15px;
  line-height:1.5;
  text-rendering:optimizeLegibility;
  isolation:isolate;
}
.afl-wrap *{box-sizing:border-box}
.afl-wrap button,.afl-wrap input,.afl-wrap select{font:inherit}
.afl-wrap button{margin:0}
.afl-wrap [hidden]{display:none!important}
.afl-wrap .screen-reader-text{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}
.afl-skip-link{position:absolute;left:18px;top:-60px;z-index:999;padding:10px 14px;border-radius:10px;background:#243248;color:#fff!important;text-decoration:none;transition:top .15s}.afl-skip-link:focus{top:8px}

/* Hero */
.afl-hero{position:relative;overflow:hidden;padding:42px;border:1px solid #e0e8ef;border-radius:34px;background:linear-gradient(135deg,#fbfdfd 0%,#f2f7fb 50%,#f5f8fb 100%);box-shadow:0 24px 70px rgba(61,78,102,.09)}
.afl-hero:after{content:"";position:absolute;inset:auto -8% -52% 46%;height:420px;border-radius:50%;background:radial-gradient(circle,rgba(255,255,255,.9),rgba(255,255,255,0) 70%);pointer-events:none}
.afl-hero-shape{position:absolute;border-radius:999px;pointer-events:none;filter:blur(.2px)}
.afl-shape-one{width:190px;height:190px;right:-55px;top:-72px;background:rgba(176,205,225,.24)}
.afl-shape-two{width:94px;height:94px;left:44%;top:-38px;background:rgba(188,210,226,.22)}
.afl-hero-main{position:relative;z-index:1;display:grid;grid-template-columns:minmax(0,1.3fr) minmax(330px,.7fr);gap:36px;align-items:center}
.afl-eyebrow,.afl-mini-label{margin:0;color:#71839b;font-size:11px;font-weight:850;letter-spacing:.16em;text-transform:uppercase}
.afl-eyebrow{display:flex;align-items:center;gap:9px}.afl-eyebrow span{width:26px;height:2px;border-radius:99px;background:var(--afl-accent)}
.afl-hero h1{max-width:820px;margin:12px 0 11px;color:#25334a;font-family:Georgia,"Times New Roman",serif;font-size:clamp(38px,5vw,65px);font-weight:620;line-height:1.03;letter-spacing:-.035em}
.afl-hero-copy>p{max-width:700px;margin:0;color:#68788d;font-size:17px;line-height:1.68}
.afl-coverage-line{display:flex;gap:9px;flex-wrap:wrap;margin-top:21px}.afl-coverage-line span{padding:7px 11px;border:1px solid rgba(135,158,182,.2);border-radius:999px;background:rgba(255,255,255,.68);color:#61738a;font-size:12px;font-weight:720}
.afl-progress-card{display:flex;align-items:center;gap:20px;padding:22px;border:1px solid rgba(209,220,230,.9);border-radius:25px;background:rgba(255,255,255,.76);box-shadow:0 14px 36px rgba(62,80,105,.065);backdrop-filter:blur(9px)}
.afl-progress-ring{--value:0;flex:0 0 106px;width:106px;height:106px;padding:9px;border-radius:50%;background:conic-gradient(var(--afl-accent) calc(var(--value)*1%),#e8edf2 0);box-shadow:inset 0 0 0 1px rgba(255,255,255,.9)}
.afl-progress-ring>div{display:grid;place-content:center;width:100%;height:100%;border-radius:50%;background:#fff;text-align:center}.afl-progress-ring strong{display:block;color:#30425c;font-size:24px;line-height:1}.afl-progress-ring span{display:block;margin-top:4px;color:#8290a1;font-size:10px;font-weight:750;text-transform:uppercase;letter-spacing:.08em}
.afl-progress-copy{min-width:0}.afl-progress-copy h2{margin:5px 0 5px;color:#30405a;font-size:18px;line-height:1.25}.afl-progress-copy>p:not(.afl-mini-label){margin:0;color:#748297;font-size:13px;line-height:1.48}
.afl-mini-stats{display:flex;gap:7px;flex-wrap:wrap;margin-top:13px}.afl-mini-stats span{padding:5px 8px;border-radius:8px;background:#f5f7f9;color:#758297;font-size:10px}.afl-mini-stats b{color:#405574}
.afl-search-area{position:relative;z-index:3;margin-top:30px}.afl-search-shell{position:relative;display:flex;align-items:center;border:1px solid #d7e1ea;border-radius:18px;background:#fff;box-shadow:0 14px 34px rgba(68,87,112,.08);transition:border-color .18s,box-shadow .18s}
.afl-search-shell:focus-within{border-color:#aebfd0;box-shadow:0 0 0 4px rgba(120,149,184,.12),0 16px 42px rgba(68,87,112,.1)}
.afl-search-icon{position:absolute;left:18px;width:17px;height:17px;border:2px solid #8090a4;border-radius:50%;pointer-events:none}.afl-search-icon:after{content:"";position:absolute;width:7px;height:2px;right:-5px;bottom:-2px;border-radius:2px;background:#8090a4;transform:rotate(45deg)}
.afl-search-shell input{width:100%!important;height:62px!important;margin:0!important;padding:0 100px 0 50px!important;border:0!important;border-radius:18px!important;outline:0!important;background:transparent!important;box-shadow:none!important;color:#2c3a50!important;font-size:16px!important}.afl-search-shell input::placeholder{color:#9ba7b5}
.afl-search-shell kbd{position:absolute;right:48px;display:grid;place-items:center;width:25px;height:25px;border:1px solid #d8e0e8;border-bottom-width:2px;border-radius:7px;background:#f7f9fb;color:#7e8a99;font-family:inherit;font-size:12px}
.afl-clear-search{position:absolute;right:12px;display:none;width:31px;height:31px;border:0;border-radius:50%;background:#eef2f6;color:#69798e;font-size:20px;line-height:1;cursor:pointer}.afl-clear-search.is-visible{display:block}.afl-clear-search:hover{background:#e3eaf0;color:#35465e}
.afl-search-suggestions{position:absolute;z-index:60;left:0;right:0;top:calc(100% + 8px);overflow:hidden;padding:6px;border:1px solid #dce5ed;border-radius:18px;background:#fff;box-shadow:0 22px 60px rgba(44,61,82,.18)}
.afl-search-suggestions button{display:grid;grid-template-columns:92px minmax(0,1fr) minmax(120px,.7fr);gap:13px;align-items:center;width:100%;padding:11px 12px;border:0;border-radius:12px;background:transparent;text-align:left;cursor:pointer}.afl-search-suggestions button:hover,.afl-search-suggestions button:focus{background:#f5f8fb;outline:0}.afl-suggestion-subject{padding:5px 8px;border-radius:999px;background:#edf3f8;color:#5d7490;font-size:10px;font-weight:820;text-align:center}.afl-search-suggestions strong,.afl-search-suggestions small{display:block}.afl-search-suggestions strong{color:#33435a;font-size:13px}.afl-search-suggestions small{margin-top:2px;color:#8592a2;font-size:11px}.afl-suggestion-formula{overflow:hidden;color:#41536b;font-family:Georgia,"Times New Roman",serif;font-size:15px;text-align:right;text-overflow:ellipsis;white-space:nowrap}
.afl-quick-search{display:flex;gap:7px;align-items:center;flex-wrap:wrap;margin-top:10px;padding-left:3px}.afl-quick-search span{color:#8290a1;font-size:11px;font-weight:700}.afl-quick-search button{padding:5px 9px;border:1px solid #dde5ec;border-radius:999px;background:rgba(255,255,255,.65);color:#66778c;font-size:11px;font-weight:700;cursor:pointer}.afl-quick-search button:hover{border-color:#becbd8;background:#fff;color:#405673}
.afl-hero-actions{position:relative;z-index:2;display:flex;gap:9px;flex-wrap:wrap;margin-top:24px}.afl-hero-actions button{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:43px;padding:10px 14px;border-radius:13px;font-size:12px;font-weight:790;cursor:pointer;transition:transform .15s,box-shadow .15s,border-color .15s}.afl-hero-actions button:hover{transform:translateY(-1px)}
.afl-primary-action{border:1px solid var(--afl-accent);background:var(--afl-accent);color:#fff;box-shadow:0 10px 22px rgba(87,112,142,.18)}.afl-primary-action:hover{box-shadow:0 13px 28px rgba(87,112,142,.25)}
.afl-soft-action{border:1px solid #d6e0e8;background:rgba(255,255,255,.75);color:#53677f}.afl-soft-action:hover,.afl-soft-action.is-active{border-color:#afc0d0;background:#fff;color:#344b68}

/* Subject deck */
.afl-subject-deck{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:10px;margin:18px 0 14px;padding:0}
.afl-subject-card{--subject:#7895b8;--subject-soft:#eef4f9;position:relative;display:grid;grid-template-columns:44px minmax(0,1fr);gap:10px;align-items:center;overflow:hidden;min-height:76px;padding:12px;border:1px solid #e0e7ed;border-radius:18px;background:#fff;text-align:left;box-shadow:0 7px 20px rgba(61,78,102,.045);cursor:pointer;transition:transform .16s,border-color .16s,box-shadow .16s}.afl-subject-card:hover{transform:translateY(-2px);border-color:#c6d2dd;box-shadow:0 12px 28px rgba(61,78,102,.08)}.afl-subject-card.is-active{border-color:var(--subject);box-shadow:0 0 0 3px var(--subject-soft),0 12px 28px rgba(61,78,102,.08)}
.afl-subject-card[data-subject="Physics"]{--subject:var(--afl-blue);--subject-soft:var(--afl-blue-soft)}.afl-subject-card[data-subject="Mathematics"]{--subject:var(--afl-lavender);--subject-soft:var(--afl-lavender-soft)}.afl-subject-card[data-subject="Chemistry"]{--subject:var(--afl-sage);--subject-soft:var(--afl-sage-soft)}.afl-subject-card[data-subject="Accounting"]{--subject:var(--afl-peach);--subject-soft:var(--afl-peach-soft)}.afl-subject-card[data-subject="Economics"]{--subject:var(--afl-rose);--subject-soft:var(--afl-rose-soft)}
.afl-subject-mark{display:grid;place-items:center;width:42px;height:42px;border-radius:13px;background:var(--subject-soft);color:var(--subject);font-family:Georgia,"Times New Roman",serif;font-size:14px;font-weight:800}.afl-subject-card[data-subject="All"] .afl-subject-mark{font-family:inherit;font-size:9px;letter-spacing:.04em}
.afl-subject-copy{min-width:0}.afl-subject-copy strong,.afl-subject-copy small{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.afl-subject-copy strong{color:#35445a;font-size:12px}.afl-subject-copy small{margin-top:2px;color:#8a96a5;font-size:10px}.afl-subject-progress{position:absolute;left:12px;right:12px;bottom:7px;height:3px;border-radius:99px;background:#edf1f4}.afl-subject-progress i{display:block;width:0;height:100%;border-radius:inherit;background:var(--subject);transition:width .3s ease}

/* Toolbar */
.afl-workspace{position:relative}
.afl-toolbar{position:sticky;z-index:25;top:10px;display:flex;justify-content:space-between;gap:12px;align-items:end;margin-bottom:12px;padding:14px;border:1px solid rgba(219,227,234,.94);border-radius:20px;background:rgba(255,255,255,.93);box-shadow:0 11px 32px rgba(60,78,102,.075);backdrop-filter:blur(14px)}
.afl-filter-group{display:grid;grid-template-columns:repeat(5,minmax(125px,1fr));gap:9px;flex:1}.afl-filter-group label{display:block}.afl-filter-group label>span{display:block;margin:0 0 5px 4px;color:#7f8b9a;font-size:9px;font-weight:850;letter-spacing:.1em;text-transform:uppercase}.afl-filter-group select{width:100%!important;height:39px!important;margin:0!important;padding:0 31px 0 11px!important;border:1px solid #dee5eb!important;border-radius:11px!important;background-color:#f9fafb!important;box-shadow:none!important;color:#4a5b72!important;font-size:11px!important;font-weight:680!important;cursor:pointer}.afl-filter-group select:focus{border-color:#aebfce!important;box-shadow:0 0 0 3px rgba(120,149,184,.1)!important;outline:0!important}
.afl-toolbar-actions{display:flex;gap:8px;align-items:center}.afl-layout-switch{display:flex;padding:3px;border:1px solid #dee5eb;border-radius:11px;background:#f5f7f9}.afl-layout-switch button{display:grid;place-items:center;width:32px;height:32px;border:0;border-radius:8px;background:transparent;cursor:pointer}.afl-layout-switch button.is-active{background:#fff;box-shadow:0 2px 8px rgba(56,74,98,.09)}.afl-grid-icon,.afl-list-icon{position:relative;display:block;width:15px;height:15px;color:#697b90}.afl-grid-icon{background:linear-gradient(currentColor 0 0) 0 0/6px 6px,linear-gradient(currentColor 0 0) 100% 0/6px 6px,linear-gradient(currentColor 0 0) 0 100%/6px 6px,linear-gradient(currentColor 0 0) 100% 100%/6px 6px;background-repeat:no-repeat}.afl-list-icon{background:linear-gradient(currentColor 0 0) 0 1px/15px 3px,linear-gradient(currentColor 0 0) 0 6px/15px 3px,linear-gradient(currentColor 0 0) 0 11px/15px 3px;background-repeat:no-repeat}
.afl-reset-btn{height:38px;padding:0 12px;border:1px solid #dee5eb;border-radius:11px;background:#fff;color:#66788d;font-size:11px;font-weight:760;cursor:pointer}.afl-reset-btn:hover{border-color:#bdcbd7;color:#3f536d}
.afl-active-filters{display:flex;gap:7px;flex-wrap:wrap;margin:0 0 13px;padding:0 3px}.afl-active-filters button{padding:6px 9px;border:1px solid #dce4eb;border-radius:999px;background:#fff;color:#61738a;font-size:10px;font-weight:720;cursor:pointer}.afl-active-filters span{margin-left:4px;color:#9a6f76;font-size:13px}
.afl-results-head{display:flex;align-items:end;justify-content:space-between;gap:16px;padding:12px 3px 14px}.afl-results-head h2{margin:3px 0 0;color:#304057;font-size:22px;line-height:1.25}.afl-results-head h2 small{color:#8390a1;font-size:12px;font-weight:560}.afl-results-tools{display:flex;align-items:center;gap:9px}.afl-results-tools button{padding:7px 10px;border:1px solid #dce4eb;border-radius:999px;background:#fff;color:#5c7088;font-size:10px;font-weight:750;cursor:pointer}.afl-sync-status{display:inline-flex;align-items:center;gap:6px;color:#8490a0;font-size:10px;font-weight:690}.afl-sync-status:before{content:"";width:6px;height:6px;border-radius:50%;background:#9ab7a9}.afl-sync-status[data-state="syncing"]:before{background:#9bb7ca;animation:aflBlink 1s infinite}.afl-sync-status[data-state="offline"]:before{background:#b68a8d}
.afl-focus-banner{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:13px;padding:12px 15px;border:1px solid #d8e4ee;border-radius:15px;background:#f0f6fa;color:#526b84;font-size:12px}.afl-focus-banner>div:last-child{display:flex;gap:7px}.afl-focus-banner button{padding:6px 9px;border:1px solid #cddbe6;border-radius:999px;background:#fff;color:#536c84;font-size:10px;font-weight:750;cursor:pointer}


.afl-print-details{display:none}
/* Formula cards */
.afl-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:15px}
.afl-card{--subject:var(--afl-blue);--subject-soft:var(--afl-blue-soft);position:relative;display:flex;flex-direction:column;min-width:0;min-height:438px;padding:17px;border:1px solid #e2e8ed;border-radius:22px;background:var(--afl-paper);box-shadow:0 9px 27px rgba(62,78,100,.05);transition:transform .18s,border-color .18s,box-shadow .18s}.afl-card:hover{transform:translateY(-3px);border-color:#cad5de;box-shadow:0 18px 43px rgba(62,78,100,.09)}.afl-card:before{content:"";position:absolute;left:18px;right:18px;top:0;height:3px;border-radius:0 0 99px 99px;background:var(--subject);opacity:.65}.afl-card[data-subject="Physics"]{--subject:var(--afl-blue);--subject-soft:var(--afl-blue-soft)}.afl-card[data-subject="Mathematics"]{--subject:var(--afl-lavender);--subject-soft:var(--afl-lavender-soft)}.afl-card[data-subject="Chemistry"]{--subject:var(--afl-sage);--subject-soft:var(--afl-sage-soft)}.afl-card[data-subject="Accounting"]{--subject:var(--afl-peach);--subject-soft:var(--afl-peach-soft)}.afl-card[data-subject="Economics"]{--subject:var(--afl-rose);--subject-soft:var(--afl-rose-soft)}.afl-card.is-mastered{border-color:#c9dfd4;background:linear-gradient(180deg,#fff 0%,#fcfffd 100%)}.afl-card.is-learning{border-bottom-color:#dfcfc5}.afl-card.is-almost{border-bottom-color:#d8d3ea}.afl-card.is-pulsing{animation:aflPulse 1s ease}.afl-card.is-featured:after{content:"";position:absolute;inset:7px 7px auto auto;width:7px;height:7px;border-radius:50%;background:#8daec6;box-shadow:0 0 0 4px #eef6fb}
.afl-card-head{display:flex;align-items:center;gap:8px;min-height:29px}.afl-select-formula{display:block;flex:0 0 auto;cursor:pointer}.afl-select-formula input{position:absolute;opacity:0;pointer-events:none}.afl-select-formula span{display:block;width:18px;height:18px;border:1.5px solid #cbd5de;border-radius:6px;background:#fff;transition:.15s}.afl-select-formula input:checked+span{border-color:var(--subject);background:var(--subject);box-shadow:inset 0 0 0 4px #fff}.afl-select-formula input:focus-visible+span{outline:3px solid rgba(120,149,184,.18);outline-offset:2px}
.afl-card-badges{display:flex;gap:5px;flex-wrap:wrap;min-width:0}.afl-card-badges>span{display:inline-flex;align-items:center;min-height:23px;padding:4px 7px;border-radius:999px;font-size:9px;font-weight:800}.afl-subject-badge{background:var(--subject-soft);color:var(--subject)}.afl-difficulty-badge{background:#f3f5f7;color:#778496}.afl-featured-badge{background:#eef6fb;color:#55748c}.afl-favourite{margin-left:auto!important;padding:0!important;border:0!important;background:transparent!important;color:#86a8c1!important;font-size:25px!important;line-height:1!important;cursor:pointer}.afl-favourite:hover{transform:scale(1.07)}
.afl-card-title-row{display:flex;align-items:start;justify-content:space-between;gap:10px;margin-top:15px}.afl-topic{margin:0 0 4px;color:#8190a2;font-size:9px;font-weight:850;letter-spacing:.1em;text-transform:uppercase}.afl-card h3{margin:0;color:#2d3b51;font-size:18px;line-height:1.28}.afl-level-pill{flex:0 0 auto;max-width:115px;padding:4px 7px;border-radius:7px;background:#f5f7f9;color:#8793a2;font-size:8px;font-weight:750;text-align:center}
.afl-formula-shell{position:relative;display:grid;place-items:center;overflow:hidden;min-height:111px;margin:15px 0 12px;border:1px solid rgba(222,229,235,.72);border-radius:16px;background:linear-gradient(135deg,var(--subject-soft),#fcfdfd)}.afl-formula{display:grid;place-items:center;width:100%;min-height:109px;padding:16px 10px;color:#27374d;font-family:Cambria,Georgia,"Times New Roman",serif;font-size:clamp(22px,2.2vw,31px);font-weight:650;line-height:1.25;text-align:center;overflow-wrap:anywhere;transition:filter .18s,opacity .18s}.afl-formula .frac,.afl-modal-formula .frac,.afl-related .frac{display:inline-grid;vertical-align:middle;text-align:center;line-height:1}.afl-formula .frac>span:first-child,.afl-modal-formula .frac>span:first-child,.afl-related .frac>span:first-child{padding:0 4px 3px;border-bottom:1.4px solid}.afl-formula .frac>span:last-child,.afl-modal-formula .frac>span:last-child,.afl-related .frac>span:last-child{padding:3px 4px 0}.afl-formula-curtain{display:none;position:absolute;inset:0;border:0;background:rgba(250,252,253,.9);color:#4e657e;cursor:pointer;backdrop-filter:blur(5px)}.afl-formula-curtain span,.afl-formula-curtain small{display:block}.afl-formula-curtain span{font-size:12px;font-weight:850}.afl-formula-curtain small{margin-top:3px;color:#8895a5;font-size:10px}.is-focus-mode .afl-card:not(.is-revealed) .afl-formula{filter:blur(10px);opacity:.15;user-select:none}.is-focus-mode .afl-card:not(.is-revealed) .afl-formula-curtain{display:block}.is-focus-mode .afl-card.is-revealed .afl-formula-curtain{display:block;inset:auto 7px 7px auto;padding:5px 8px;border:1px solid #dbe3e9;border-radius:999px;background:rgba(255,255,255,.88);backdrop-filter:none}.is-focus-mode .afl-card.is-revealed .afl-formula-curtain span{font-size:0}.is-focus-mode .afl-card.is-revealed .afl-formula-curtain span:after{content:"Hide";font-size:9px}.is-focus-mode .afl-card.is-revealed .afl-formula-curtain small{display:none}
.afl-symbol-chips{display:flex;gap:5px;align-items:center;overflow:hidden;margin-bottom:10px}.afl-symbol-chips button{display:flex;align-items:center;gap:4px;min-width:0;max-width:126px;padding:5px 7px;border:1px solid #e2e7ec;border-radius:9px;background:#fff;color:#68788d;cursor:pointer}.afl-symbol-chips button:hover{border-color:#bccbd7;background:#fafcfd}.afl-symbol-chips strong{flex:0 0 auto;color:#3f526c;font-family:Cambria,Georgia,serif;font-size:13px}.afl-symbol-chips span{overflow:hidden;font-size:8px;text-overflow:ellipsis;white-space:nowrap}.afl-more-symbols{color:#8c98a6;font-size:9px;font-weight:750}
.afl-card-tip{margin:0 0 12px;padding:9px 10px;border-radius:11px;background:#f3f8fb;color:#69778a;font-size:10px;line-height:1.5}.afl-card-tip span{display:block;margin-bottom:2px;color:#628097;font-size:8px;font-weight:850;letter-spacing:.09em;text-transform:uppercase}
.afl-card-actions{display:grid;grid-template-columns:1fr auto auto;gap:6px;margin-top:auto}.afl-card-actions button{min-height:35px;padding:7px 9px;border:1px solid #dfe5ea;border-radius:10px;background:#fff;color:#62758c;font-size:9px;font-weight:780;cursor:pointer}.afl-card-actions button:hover{border-color:#bfcdd8;background:#fafcfd;color:#39516d}.afl-card-actions .afl-open-formula{display:flex;align-items:center;justify-content:space-between;background:#f2f6f9;color:#405b77;border-color:#d8e3ec;font-size:10px}
.afl-confidence{margin-top:11px;padding-top:10px;border-top:1px solid #edf0f3}.afl-confidence>span{display:block;margin-bottom:6px;color:#8793a1;font-size:8px;font-weight:760}.afl-confidence>div{display:grid;grid-template-columns:repeat(3,1fr);gap:4px}.afl-confidence button{min-height:28px;padding:4px;border:1px solid #e2e7eb;border-radius:8px;background:#f9fafb;color:#7a8796;font-size:8px;font-weight:750;cursor:pointer}.afl-confidence button:hover{border-color:#c6d2dc;background:#fff}.afl-confidence button[data-afl-confidence="1"].is-active{border-color:#c6d9e5;background:#f1f7fb;color:#5f7c92}.afl-confidence button[data-afl-confidence="2"].is-active{border-color:#c7c0df;background:#f2f0fa;color:#71679e}.afl-confidence button[data-afl-confidence="3"].is-active{border-color:#afd0be;background:#ecf7f1;color:#54806a}
/* Compact layout */
.afl-grid.is-compact{grid-template-columns:1fr;gap:9px}.afl-grid.is-compact .afl-card{display:grid;grid-template-columns:minmax(220px,.9fr) minmax(260px,1.1fr) minmax(230px,.8fr);grid-template-rows:auto auto;gap:8px 16px;align-items:center;min-height:0;padding:13px 15px}.afl-grid.is-compact .afl-card:before{top:12px;bottom:12px;left:0;right:auto;width:3px;height:auto;border-radius:0 99px 99px 0}.afl-grid.is-compact .afl-card-head{grid-column:1;grid-row:1}.afl-grid.is-compact .afl-card-title-row{grid-column:1;grid-row:2;margin:0}.afl-grid.is-compact .afl-formula-shell{grid-column:2;grid-row:1/3;min-height:80px;margin:0}.afl-grid.is-compact .afl-formula{min-height:78px;font-size:24px}.afl-grid.is-compact .afl-symbol-chips{grid-column:3;grid-row:1;margin:0}.afl-grid.is-compact .afl-card-tip{display:none}.afl-grid.is-compact .afl-card-actions{grid-column:3;grid-row:2;margin:0}.afl-grid.is-compact .afl-confidence{grid-column:1/4;grid-row:3;display:flex;align-items:center;gap:12px;margin:0;padding-top:8px}.afl-grid.is-compact .afl-confidence>span{margin:0}.afl-grid.is-compact .afl-confidence>div{display:flex}.afl-grid.is-compact .afl-confidence button{padding:4px 10px}
.afl-load-more-wrap{text-align:center;padding:24px 0 4px}.afl-load-more{padding:11px 18px;border:1px solid #d9e2e9;border-radius:999px;background:#fff;color:#536b84;font-size:11px;font-weight:800;box-shadow:0 6px 20px rgba(61,79,103,.06);cursor:pointer}.afl-load-more:hover{border-color:#b8c7d4;background:#fafdff}.afl-load-more span{margin-left:4px;color:#8b98a7;font-weight:600}
.afl-no-results{text-align:center;padding:78px 20px}.afl-empty-icon{position:relative;width:54px;height:54px;margin:0 auto 13px;border:3px solid #a8b5c3;border-radius:50%}.afl-empty-icon:after{content:"";position:absolute;width:18px;height:3px;right:-12px;bottom:2px;border-radius:4px;background:#a8b5c3;transform:rotate(45deg)}.afl-no-results h2{margin:0;color:#34445c;font-size:22px}.afl-no-results p{margin:7px 0 16px;color:#8190a0}.afl-no-results button{padding:10px 15px;border:0;border-radius:999px;background:var(--afl-accent);color:#fff;font-size:11px;font-weight:800;cursor:pointer}

/* Selection dock */
.afl-selection-dock{position:fixed;z-index:100;left:50%;bottom:18px;display:flex;align-items:center;justify-content:space-between;gap:26px;width:min(710px,calc(100% - 30px));padding:11px 12px 11px 17px;border:1px solid rgba(207,218,227,.9);border-radius:18px;background:rgba(255,255,255,.94);box-shadow:0 20px 60px rgba(42,58,78,.2);transform:translateX(-50%);backdrop-filter:blur(16px)}.afl-selection-dock>div:first-child{display:flex;align-items:baseline;gap:4px}.afl-selection-dock>div:first-child span{color:#39526f;font-size:20px;font-weight:850}.afl-selection-dock>div:first-child strong{color:#50637a;font-size:11px}.afl-selection-dock>div:first-child small{margin-left:7px;color:#8995a3;font-size:9px}.afl-selection-dock>div:last-child{display:flex;gap:6px}.afl-selection-dock button{padding:8px 11px;border:1px solid #dce4ea;border-radius:10px;background:#fff;color:#66798d;font-size:9px;font-weight:780;cursor:pointer}.afl-selection-dock button.is-primary{border-color:var(--afl-accent);background:var(--afl-accent);color:#fff}

/* Modals */
body.afl-modal-open{overflow:hidden}
.afl-modal{position:fixed;z-index:99999;inset:0;display:grid;place-items:center;padding:24px}.afl-modal-backdrop{position:absolute;inset:0;background:rgba(34,47,65,.48);backdrop-filter:blur(6px)}.afl-modal-panel{position:relative;z-index:1;overflow:auto;width:min(900px,100%);max-height:min(90vh,900px);border:1px solid rgba(223,230,236,.95);border-radius:27px;background:#fff;box-shadow:0 30px 100px rgba(25,38,54,.28);overscroll-behavior:contain}.afl-modal-close{position:sticky;z-index:20;float:right;top:13px;right:13px;display:grid;place-items:center;width:36px;height:36px;margin:13px 13px -49px 0;border:1px solid rgba(213,222,230,.9);border-radius:50%;background:rgba(255,255,255,.9);color:#68798d;font-size:22px;line-height:1;cursor:pointer;backdrop-filter:blur(8px)}.afl-modal-close:hover{background:#fff;color:#34465d}
.afl-modal-header{--subject:var(--afl-blue);--subject-soft:var(--afl-blue-soft);padding:38px 42px 31px;background:linear-gradient(135deg,var(--subject-soft),#fbfcfd);text-align:center}.afl-modal-header[data-subject="Mathematics"]{--subject:var(--afl-lavender);--subject-soft:var(--afl-lavender-soft)}.afl-modal-header[data-subject="Chemistry"]{--subject:var(--afl-sage);--subject-soft:var(--afl-sage-soft)}.afl-modal-header[data-subject="Accounting"]{--subject:var(--afl-peach);--subject-soft:var(--afl-peach-soft)}.afl-modal-header[data-subject="Economics"]{--subject:var(--afl-rose);--subject-soft:var(--afl-rose-soft)}.afl-modal-badges{display:flex;justify-content:center;gap:6px;flex-wrap:wrap}.afl-modal-badges span{padding:5px 8px;border:1px solid rgba(255,255,255,.8);border-radius:999px;background:rgba(255,255,255,.62);color:#65758a;font-size:9px;font-weight:800}.afl-modal-header>p:not(.afl-modal-syllabus){margin:15px 0 3px;color:var(--subject);font-size:10px;font-weight:850;letter-spacing:.1em;text-transform:uppercase}.afl-modal-header h2{margin:0;color:#2d3d54;font-family:Georgia,"Times New Roman",serif;font-size:31px;line-height:1.25}.afl-modal-formula{display:grid;place-items:center;min-height:112px;margin:20px auto 12px;padding:18px;border:1px solid rgba(255,255,255,.9);border-radius:18px;background:rgba(255,255,255,.7);color:#26384e;font-family:Cambria,Georgia,"Times New Roman",serif;font-size:clamp(28px,4vw,43px);font-weight:650;box-shadow:0 12px 30px rgba(70,84,104,.05)}.afl-modal-syllabus{margin:0;color:#8290a1;font-size:10px}
.afl-modal-body{padding:30px 34px 38px}.afl-modal-section+.afl-modal-section{margin-top:28px}.afl-modal-section-head{display:flex;align-items:end;justify-content:space-between;gap:15px;margin-bottom:13px}.afl-modal-section-head h3{margin:3px 0 0;color:#33445b;font-size:18px}.afl-modal-section-head button{padding:7px 10px;border:1px solid #dce4ea;border-radius:9px;background:#fff;color:#60748a;font-size:9px;font-weight:780;cursor:pointer}.afl-modal-symbol-table{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px}.afl-modal-symbol-table button{display:grid;grid-template-columns:60px 1fr auto;gap:10px;align-items:center;padding:11px;border:1px solid #e2e7ec;border-radius:13px;background:#fafbfc;text-align:left;cursor:pointer}.afl-modal-symbol-table button:hover{border-color:#c2cfda;background:#fff}.afl-modal-symbol-table strong{color:#334961;font-family:Cambria,Georgia,serif;font-size:19px}.afl-modal-symbol-table span{color:#586b80;font-size:11px}.afl-modal-symbol-table small{color:#8995a3;font-size:9px}.afl-units-line{margin:10px 0 0;padding:9px 11px;border-radius:11px;background:#f2f5f8;color:#68798d;font-size:10px}.afl-modal-empty{color:#8390a0;font-size:12px}
.afl-modal-detail-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-top:24px}.afl-modal-detail{padding:16px;border:1px solid #e5e9ed;border-radius:15px;background:#fbfcfd}.afl-modal-detail h3{margin:0 0 6px;color:#4d6076;font-size:10px;font-weight:850;letter-spacing:.08em;text-transform:uppercase}.afl-modal-detail p{margin:0;color:#627286;font-size:11px;line-height:1.65}.afl-modal-detail.is-tip{background:#f5f9fc;border-color:#dbe8f0}.afl-modal-detail.is-example{background:#f2f7fb;border-color:#dce7f0}.afl-modal-detail.is-memory{background:#f4f2fb;border-color:#e0dcf0}.afl-modal-detail.is-warning{background:#fdf2f1;border-color:#edd8d6}.afl-modal-detail.is-steps{grid-column:1/-1;background:#f4f8f5;border-color:#dce8df}
.afl-modal-confidence{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-top:24px;padding:16px;border:1px solid #dfe6eb;border-radius:16px;background:#fafbfc}.afl-modal-confidence h3{margin:3px 0 0;color:#40536b;font-size:15px}.afl-modal-confidence>div:last-child{display:flex;gap:6px}.afl-modal-confidence button{padding:8px 12px;border:1px solid #dce3e9;border-radius:10px;background:#fff;color:#697a8d;font-size:9px;font-weight:780;cursor:pointer}.afl-modal-confidence button.is-active{border-color:var(--afl-accent);background:#eef4f8;color:#405d79}
.afl-related{margin-top:28px}.afl-related>div{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin-top:9px}.afl-related button{display:grid;gap:2px;padding:12px;border:1px solid #e2e7eb;border-radius:13px;background:#fff;text-align:left;cursor:pointer}.afl-related button:hover{border-color:#bfccd7;background:#fafcfd}.afl-related span{color:#8290a0;font-size:8px;text-transform:uppercase;letter-spacing:.08em}.afl-related strong{color:#3b4c62;font-size:11px}.afl-related small{margin-top:4px;color:#53677f;font-family:Cambria,Georgia,serif;font-size:14px}

/* Quiz */
.afl-quiz-modal-panel{width:min(760px,100%);background:linear-gradient(180deg,#fbfcfd,#fff)}.afl-quiz-setup,.afl-quiz-running,.afl-quiz-results{padding:43px}.afl-quiz-setup h2,.afl-quiz-results h2{margin:6px 0 8px;color:#2e3f56;font-family:Georgia,"Times New Roman",serif;font-size:34px;line-height:1.15}.afl-quiz-setup>p:not(.afl-mini-label),.afl-quiz-results>p:not(.afl-mini-label){margin:0;color:#738196}.afl-quiz-settings{display:grid;grid-template-columns:repeat(3,1fr);gap:9px;margin-top:24px}.afl-quiz-settings label span{display:block;margin:0 0 5px 4px;color:#7e8b9a;font-size:9px;font-weight:820;text-transform:uppercase;letter-spacing:.08em}.afl-quiz-settings select{width:100%;height:43px;padding:0 10px;border:1px solid #dce4ea;border-radius:11px;background:#fff;color:#50637a;font-size:11px;font-weight:680}.afl-quiz-history{display:grid;grid-template-columns:repeat(3,1fr);gap:7px;margin-top:15px}.afl-quiz-history span{padding:11px;border-radius:11px;background:#f3f6f8;color:#7b8796;font-size:9px;text-align:center}.afl-quiz-history strong{display:block;color:#3d536e;font-size:18px}.afl-quiz-start{display:flex;align-items:center;justify-content:space-between;width:100%;margin-top:20px;padding:13px 16px;border:0;border-radius:13px;background:var(--afl-accent);color:#fff;font-size:12px;font-weight:820;cursor:pointer;box-shadow:0 11px 25px rgba(87,113,143,.2)}
.afl-quiz-topline{display:flex;justify-content:space-between;color:#748297;font-size:10px;font-weight:720}.afl-quiz-topline strong{color:#46627f}.afl-quiz-progress{overflow:hidden;height:5px;margin:9px 0 26px;border-radius:99px;background:#e8edf1}.afl-quiz-progress i{display:block;height:100%;border-radius:inherit;background:var(--afl-accent);transition:width .25s}.afl-quiz-question{text-align:center}.afl-quiz-tags{display:flex;justify-content:center;gap:5px}.afl-quiz-tags span{padding:4px 7px;border-radius:999px;background:#eef3f7;color:#6d7e91;font-size:8px;font-weight:800}.afl-quiz-question h2{margin:13px auto 9px;color:#2e3f56;font-family:Georgia,"Times New Roman",serif;font-size:27px;line-height:1.28}.afl-quiz-question p{margin:0;color:#7e8b9a;font-size:11px}.afl-quiz-options{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin-top:24px}.afl-quiz-options button{display:grid;grid-template-columns:29px 1fr;gap:10px;align-items:center;min-height:70px;padding:11px;border:1px solid #dfe5ea;border-radius:14px;background:#fff;text-align:left;cursor:pointer}.afl-quiz-options button:hover:not(:disabled){border-color:#afc0ce;background:#f9fbfc;transform:translateY(-1px)}.afl-quiz-options button>span{display:grid;place-items:center;width:28px;height:28px;border-radius:9px;background:#f1f4f7;color:#758396;font-size:10px;font-weight:850}.afl-quiz-options strong{color:#455970;font-family:Cambria,Georgia,serif;font-size:13px;line-height:1.35}.afl-quiz-options button.is-correct{border-color:#a9cfba;background:#f0f9f4}.afl-quiz-options button.is-correct>span{background:#dff2e8;color:#4b7a61}.afl-quiz-options button.is-wrong{border-color:#dfb7b2;background:#fdf3f2}.afl-quiz-options button.is-wrong>span{background:#f4dcda;color:#955e59}.afl-quiz-feedback{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-top:14px;padding:13px 14px;border-radius:13px}.afl-quiz-feedback.is-correct{background:#edf8f2;color:#4f7964}.afl-quiz-feedback.is-wrong{background:#fdf2f1;color:#8a5d59}.afl-quiz-feedback strong,.afl-quiz-feedback span{display:block}.afl-quiz-feedback strong{font-size:11px}.afl-quiz-feedback span{margin-top:2px;font-size:9px}.afl-quiz-feedback button{padding:8px 11px;border:0;border-radius:9px;background:#fff;color:inherit;font-size:9px;font-weight:820;cursor:pointer}
.afl-quiz-results{text-align:center}.afl-result-score{--score:0;display:grid;place-items:center;width:130px;height:130px;margin:0 auto 20px;padding:9px;border-radius:50%;background:conic-gradient(var(--afl-accent) calc(var(--score)*1%),#e7ecf0 0)}.afl-result-score>div{display:grid;place-content:center;width:100%;height:100%;border-radius:50%;background:#fff}.afl-result-score strong{display:block;color:#30445e;font-size:31px}.afl-result-score span{color:#8190a1;font-size:9px}.afl-quiz-review{margin-top:22px;text-align:left}.afl-quiz-review h3{margin:0 0 8px;color:#53667c;font-size:11px;text-transform:uppercase;letter-spacing:.08em}.afl-quiz-review button{display:grid;width:100%;margin-top:6px;padding:10px 12px;border:1px solid #e0e6eb;border-radius:11px;background:#fff;text-align:left;cursor:pointer}.afl-quiz-review button:hover{border-color:#bac8d4;background:#fafcfd}.afl-quiz-review span{color:#8a96a5;font-size:8px}.afl-quiz-review strong{color:#40536a;font-size:11px}.afl-quiz-review small{margin-top:3px;color:#61738a;font-family:Cambria,Georgia,serif;font-size:12px}.afl-quiz-result-actions{display:flex;justify-content:center;gap:7px;flex-wrap:wrap;margin-top:20px}.afl-quiz-result-actions button{padding:10px 13px;border:1px solid #dce3e9;border-radius:11px;background:#fff;color:#607389;font-size:10px;font-weight:790;cursor:pointer}.afl-quiz-result-actions button.is-primary{border-color:var(--afl-accent);background:var(--afl-accent);color:#fff}

/* Sheet modal */
.afl-sheet-panel{width:min(680px,100%)}.afl-sheet-options{padding:42px}.afl-sheet-options h2{margin:6px 0 8px;color:#304159;font-family:Georgia,"Times New Roman",serif;font-size:31px}.afl-sheet-options>p:not(.afl-mini-label){margin:0;color:#778599}.afl-sheet-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px;margin-top:22px}.afl-sheet-grid button{display:grid;gap:3px;min-height:90px;padding:15px;border:1px solid #dde4ea;border-radius:15px;background:#fbfcfd;text-align:left;cursor:pointer}.afl-sheet-grid button:hover{border-color:#afc0ce;background:#fff;box-shadow:0 8px 22px rgba(62,79,103,.07)}.afl-sheet-grid strong{color:#40536a;font-size:13px}.afl-sheet-grid span{color:#8390a0;font-size:10px;line-height:1.45}

/* Footer / utility */
.afl-footer{display:flex;align-items:center;justify-content:center;gap:8px;padding:36px 10px 0;color:#8a96a5;font-size:9px;letter-spacing:.12em;text-transform:uppercase}.afl-footer strong{color:#5e7188}.afl-footer span:before{content:"·";margin-right:8px}
.afl-toast{position:fixed;z-index:100000;left:50%;bottom:24px;max-width:calc(100% - 30px);padding:10px 15px;border-radius:999px;background:#2f4058;color:#fff;font-size:11px;font-weight:720;box-shadow:0 14px 45px rgba(31,45,63,.25);opacity:0;pointer-events:none;transform:translate(-50%,18px);transition:.2s}.afl-toast.is-visible{opacity:1;transform:translate(-50%,0)}
.afl-back-top{position:fixed;z-index:40;right:19px;bottom:19px;display:grid;place-items:center;width:41px;height:41px;padding:0;border:1px solid #dce4ea;border-radius:50%;background:rgba(255,255,255,.9);color:#5f738a;font-weight:850;box-shadow:0 8px 24px rgba(54,72,95,.12);cursor:pointer;backdrop-filter:blur(9px)}
.afl-empty-admin{padding:30px;border:1px dashed #ccd5dd;border-radius:15px;background:#fafbfc;color:#61748a;text-align:center}
@keyframes aflPulse{0%,100%{box-shadow:0 9px 27px rgba(62,78,100,.05)}50%{box-shadow:0 0 0 7px rgba(120,149,184,.15),0 20px 45px rgba(62,78,100,.12)}}
@keyframes aflBlink{50%{opacity:.35}}

/* Responsive */
@media(max-width:1180px){
  .afl-subject-deck{grid-template-columns:repeat(3,1fr)}
  .afl-filter-group{grid-template-columns:repeat(3,1fr)}
  .afl-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .afl-grid.is-compact .afl-card{grid-template-columns:minmax(200px,.85fr) minmax(230px,1.1fr) minmax(210px,.85fr)}
}
@media(max-width:900px){
  .afl-wrap{padding-inline:12px}.afl-hero{padding:31px}.afl-hero-main{grid-template-columns:1fr}.afl-progress-card{max-width:570px}.afl-toolbar{position:relative;top:auto;align-items:stretch;flex-direction:column}.afl-filter-group{grid-template-columns:repeat(3,1fr)}.afl-toolbar-actions{justify-content:flex-end}
  .afl-grid.is-compact .afl-card{display:flex;min-height:0}.afl-grid.is-compact .afl-card-head,.afl-grid.is-compact .afl-card-title-row,.afl-grid.is-compact .afl-formula-shell,.afl-grid.is-compact .afl-symbol-chips,.afl-grid.is-compact .afl-card-actions,.afl-grid.is-compact .afl-confidence{display:initial;grid-column:auto;grid-row:auto}.afl-grid.is-compact .afl-card-head{display:flex}.afl-grid.is-compact .afl-card-title-row{display:flex;margin-top:14px}.afl-grid.is-compact .afl-formula-shell{display:grid;margin:13px 0}.afl-grid.is-compact .afl-symbol-chips{display:flex;margin-bottom:10px}.afl-grid.is-compact .afl-card-actions{display:grid;margin-top:auto}.afl-grid.is-compact .afl-confidence{display:block;margin-top:10px}.afl-grid.is-compact .afl-confidence>div{display:grid}.afl-grid.is-compact .afl-confidence>span{margin-bottom:6px}
}
@media(max-width:680px){
  .afl-wrap{padding:8px 8px 50px}.afl-hero{padding:27px 18px;border-radius:25px}.afl-hero h1{font-size:39px}.afl-hero-copy>p{font-size:14px}.afl-progress-card{align-items:flex-start;padding:17px}.afl-progress-ring{flex-basis:82px;width:82px;height:82px}.afl-progress-ring strong{font-size:19px}.afl-search-shell input{height:57px!important;padding-left:46px!important;padding-right:45px!important}.afl-search-shell kbd{display:none}.afl-search-suggestions button{grid-template-columns:70px 1fr}.afl-suggestion-formula{display:none}.afl-hero-actions button{flex:1 1 calc(50% - 5px)}.afl-primary-action{flex-basis:100%!important}.afl-subject-deck{display:flex;overflow:auto;scroll-snap-type:x proximity;padding:2px 1px 7px}.afl-subject-card{flex:0 0 175px;scroll-snap-align:start}.afl-filter-group{grid-template-columns:repeat(2,1fr)}.afl-filter-group label:last-child{grid-column:1/-1}.afl-results-head{align-items:flex-start;flex-direction:column}.afl-results-tools{width:100%;justify-content:space-between}.afl-grid{grid-template-columns:1fr}.afl-card{min-height:0}.afl-focus-banner{align-items:flex-start;flex-direction:column}.afl-modal{padding:0}.afl-modal-panel{width:100%;max-height:100vh;height:100vh;border:0;border-radius:0}.afl-modal-header{padding:42px 19px 27px}.afl-modal-header h2{font-size:26px}.afl-modal-body,.afl-quiz-setup,.afl-quiz-running,.afl-quiz-results,.afl-sheet-options{padding:25px 18px 34px}.afl-modal-symbol-table,.afl-modal-detail-grid,.afl-related>div,.afl-quiz-options,.afl-sheet-grid{grid-template-columns:1fr}.afl-modal-confidence{align-items:flex-start;flex-direction:column}.afl-modal-confidence>div:last-child{width:100%}.afl-modal-confidence button{flex:1}.afl-quiz-settings,.afl-quiz-history{grid-template-columns:1fr}.afl-selection-dock{bottom:8px;align-items:stretch;flex-direction:column;gap:7px;padding:10px 12px}.afl-selection-dock>div:first-child small{display:none}.afl-selection-dock>div:last-child button{flex:1}.afl-toast{bottom:96px}.afl-back-top{display:none}
}
@media(max-width:430px){
  .afl-coverage-line span{font-size:10px}.afl-progress-card{display:grid;grid-template-columns:72px 1fr;gap:13px}.afl-progress-ring{width:72px;height:72px}.afl-mini-stats span{font-size:8px}.afl-filter-group{grid-template-columns:1fr}.afl-filter-group label:last-child{grid-column:auto}.afl-toolbar-actions{justify-content:space-between}.afl-card-actions{grid-template-columns:1fr auto auto}.afl-symbol-chips button:nth-child(n+4){display:none}.afl-quiz-question h2{font-size:23px}.afl-quiz-feedback{align-items:stretch;flex-direction:column}.afl-quiz-feedback button{width:100%}
}
@media(prefers-reduced-motion:reduce){.afl-wrap *{scroll-behavior:auto!important;animation:none!important;transition:none!important}}

/* Print: the selected scope is controlled by JS */
@media print{
  body{background:#fff!important}.afl-wrap{width:100%;max-width:none;padding:0;color:#000}.afl-hero{padding:0 0 15px;border:0;border-radius:0;background:#fff;box-shadow:none}.afl-hero-shape,.afl-progress-card,.afl-search-area,.afl-hero-actions,.afl-subject-deck,.afl-toolbar,.afl-active-filters,.afl-results-tools,.afl-focus-banner,.afl-load-more-wrap,.afl-no-results,.afl-selection-dock,.afl-modal,.afl-footer,.afl-toast,.afl-back-top,.afl-card-head,.afl-card-actions,.afl-confidence,.afl-symbol-chips{display:none!important}.afl-hero h1{font-size:26px}.afl-hero-copy>p{font-size:11px}.afl-coverage-line{display:none}.afl-results-head{padding:0 0 10px}.afl-results-head .afl-mini-label{display:none}.afl-results-head h2{font-size:14px}.afl-grid,.afl-grid.is-compact{display:grid;grid-template-columns:repeat(2,1fr);gap:8px}.afl-card,.afl-grid.is-compact .afl-card{display:block!important;break-inside:avoid;min-height:0;padding:12px;border:1px solid #bbb;border-radius:10px;background:#fff;box-shadow:none;transform:none}.afl-card.is-print-excluded{display:none!important}.afl-card:before,.afl-card:after{display:none}.afl-card-title-row{display:block;margin:0 0 8px}.afl-topic{font-size:7px}.afl-card h3{font-size:13px}.afl-level-pill{display:inline-block;margin-top:4px;font-size:6px}.afl-formula-shell,.afl-grid.is-compact .afl-formula-shell{min-height:58px;margin:7px 0;border-radius:7px;background:#f5f5f5}.afl-formula,.afl-grid.is-compact .afl-formula{min-height:56px;padding:7px;font-size:18px;filter:none!important;opacity:1!important}.afl-formula-curtain{display:none!important}.afl-card-tip{display:block;margin:6px 0 0;padding:6px;font-size:7px}.afl-print-details{display:block;margin:7px 0 0}.afl-print-details span{display:block;font-size:7px;line-height:1.4}.afl-wrap.is-printing .afl-card[hidden]{display:block!important}.afl-wrap.is-printing .afl-card.is-print-excluded{display:none!important}
}

/* ========================================================================== 
   V3 Formula Intelligence — adaptive revision, mastery map and comparison
   ========================================================================== */
.afl-v3{--afl-ink:#31445a;--afl-muted:#75869a;--afl-line:#dfe8ee;--afl-soft:#f7fafc;--afl-cream:#fffdf9;--afl-mint:#eaf7f1;--afl-blue:#edf5fb;--afl-lilac:#f2effb;--afl-peach:#eef6fa;--afl-rose:#fff0f3}
.afl-v3 .afl-hero{background:linear-gradient(145deg,#fffdfa 0%,#f4f8fc 48%,#f7f4fb 100%);border-color:#e4ebf0;box-shadow:0 24px 70px rgba(66,84,108,.09)}
.afl-v3 .afl-hero-copy h1{max-width:840px}.afl-v3 .afl-coverage-line{flex-wrap:wrap}.afl-v3 .afl-coverage-line span:last-child{background:#ebf6f1;color:#547966}
.afl-v3 .afl-progress-card{background:rgba(255,255,255,.78);border-color:#e2e9ee;box-shadow:0 16px 38px rgba(62,80,103,.08)}
.afl-v3 .afl-mini-stats{display:flex;flex-wrap:wrap;gap:6px 12px}.afl-v3 .afl-mini-stats span{white-space:nowrap}
.afl-daily-mission{position:relative;z-index:2;display:grid;grid-template-columns:auto minmax(250px,1fr) minmax(130px,180px) auto;align-items:center;gap:17px;margin:25px 0 19px;padding:17px 19px;border:1px solid #dfe9e5;border-radius:20px;background:linear-gradient(135deg,rgba(244,251,247,.96),rgba(251,253,255,.96));box-shadow:0 13px 34px rgba(64,89,78,.07)}
.afl-mission-icon{display:grid;place-items:center;width:48px;height:48px;border-radius:16px;background:#dff2e8;color:#477361;font-size:18px;font-weight:900;box-shadow:inset 0 0 0 1px rgba(82,124,104,.08)}
.afl-mission-copy h2{margin:2px 0 4px;color:#3d5264;font:700 18px/1.2 Georgia,"Times New Roman",serif}.afl-mission-copy>p:last-child{margin:0;color:#75869a;font-size:10px;line-height:1.45}
.afl-mission-progress{display:grid;gap:4px}.afl-mission-progress>div{color:#496477;font-size:12px;font-weight:850}.afl-mission-progress i{display:block;height:7px;overflow:hidden;border-radius:999px;background:#e4ecea}.afl-mission-progress i b{display:block;width:0;height:100%;border-radius:inherit;background:linear-gradient(90deg,#8db7a3,#7895b8);transition:width .28s ease}.afl-mission-progress small{color:#84949f;font-size:8px;text-transform:uppercase;letter-spacing:.08em}
.afl-mission-start{min-height:43px;padding:10px 15px;border:0;border-radius:13px;background:#5f7f72;color:#fff;font-size:10px;font-weight:820;cursor:pointer;box-shadow:0 9px 20px rgba(74,111,94,.17)}.afl-mission-start:hover{transform:translateY(-1px);box-shadow:0 12px 25px rgba(74,111,94,.22)}.afl-mission-start span{margin-left:5px}
.afl-v3 .afl-hero-actions{gap:7px}.afl-v3 .afl-hero-actions button b{display:inline-grid;place-items:center;min-width:17px;height:17px;margin-left:3px;padding:0 4px;border-radius:999px;background:rgba(95,116,139,.11);font-size:8px}
.afl-v3 .afl-toolbar{background:rgba(255,255,255,.91);box-shadow:0 12px 35px rgba(62,80,103,.07)}
.afl-v3 .afl-filter-group{grid-template-columns:repeat(5,minmax(118px,1fr))}
.afl-accuracy-chip{display:inline-flex;align-items:center;gap:4px;padding:7px 9px;border:1px solid #dfe6eb;border-radius:999px;background:#fff;color:#8291a1;font-size:8px;text-transform:uppercase;letter-spacing:.06em}.afl-accuracy-chip b{color:#536b82;font-size:10px}
.afl-review-badge{padding:4px 7px;border:1px solid #dce5ea;border-radius:999px;background:#f8fafb;color:#83919f;font-size:7px;font-weight:780;letter-spacing:.04em;text-transform:uppercase}.afl-review-badge[data-state="due"]{border-color:#f0cbd1;background:#fff1f3;color:#a15f69}.afl-review-badge[data-state="scheduled"]{border-color:#d4e6dd;background:#eef8f3;color:#5e806f}
.afl-card.is-due{border-color:#ead2d7;box-shadow:0 10px 30px rgba(122,75,84,.07)}.afl-card.is-due:before{background:linear-gradient(90deg,#dca4ad,#c7b4d9)}
.afl-card.is-compared{box-shadow:0 0 0 3px rgba(120,149,184,.15),0 15px 35px rgba(62,78,100,.08)}
.afl-card-signals{display:flex;flex-wrap:wrap;gap:5px;margin:-2px 0 10px}.afl-card-signals span{padding:4px 7px;border-radius:999px;background:#f3f6f8;color:#728398;font-size:7px;font-weight:760;text-transform:uppercase;letter-spacing:.04em}.afl-card-signals .is-mistake{background:#fff0f2;color:#9c5e68}.afl-card-signals .is-note{background:#f1f7fb;color:#637f94}
.afl-v3 .afl-card-actions{grid-template-columns:minmax(86px,1fr) repeat(3,auto)}.afl-v3 .afl-card-actions button.is-active{border-color:#9db4ca;background:#edf5fb;color:#4f6d87}
.afl-compare-dock{position:fixed;z-index:80;right:22px;bottom:22px;display:flex;align-items:center;gap:16px;padding:11px 13px 11px 16px;border:1px solid #dce5eb;border-radius:17px;background:rgba(255,255,255,.94);box-shadow:0 18px 48px rgba(42,59,80,.17);backdrop-filter:blur(14px)}.afl-compare-dock[hidden]{display:none}.afl-compare-dock>div:first-child{display:grid;gap:1px}.afl-compare-dock strong{color:#40566d;font-size:13px}.afl-compare-dock small{color:#8290a0;font-size:8px}.afl-compare-dock>div:last-child{display:flex;gap:5px}.afl-compare-dock button{padding:8px 10px;border:1px solid #dde5ea;border-radius:10px;background:#fff;color:#65778b;font-size:9px;font-weight:780;cursor:pointer}.afl-compare-dock button.is-primary{border-color:var(--afl-accent);background:var(--afl-accent);color:#fff}

/* Formula modal intelligence */
.afl-review-status-card{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin:0 0 25px}.afl-review-status-card>div{padding:12px;border:1px solid #e1e8ed;border-radius:13px;background:#fafcfd}.afl-review-status-card span{display:block;margin-bottom:4px;color:#8b98a5;font-size:7px;text-transform:uppercase;letter-spacing:.08em}.afl-review-status-card strong{color:#50657a;font-size:11px}
.afl-modal-smart-actions{display:flex;flex-wrap:wrap;gap:7px;margin:20px 0}.afl-modal-smart-actions button{padding:10px 13px;border:1px solid #dce4e9;border-radius:11px;background:#fff;color:#5f7388;font-size:9px;font-weight:790;cursor:pointer}.afl-modal-smart-actions button.is-primary{border-color:var(--afl-accent);background:var(--afl-accent);color:#fff}
.afl-personal-note{position:relative;margin:24px 0;padding:17px;border:1px solid #e1eaf0;border-radius:17px;background:#f8fbfd}.afl-personal-note>div{display:flex;align-items:flex-end;justify-content:space-between;gap:15px;margin-bottom:10px}.afl-personal-note small{color:#72879a;font-size:8px}.afl-personal-note textarea{display:block;width:100%;min-height:105px;resize:vertical;padding:12px;border:1px solid #dfe8ee;border-radius:11px;background:#fff;color:#4d5e70;font:11px/1.6 inherit;box-sizing:border-box}.afl-personal-note>span{display:block;margin-top:6px;color:#73889a;font-size:8px;text-align:right}

/* Adaptive review */
.afl-review-panel{width:min(780px,100%);background:linear-gradient(180deg,#fbfdfc,#fff)}
.afl-review-running>header{padding:29px 34px 0}.afl-review-running>header>div{display:flex;align-items:center;justify-content:space-between;color:#77899a;font-size:9px}.afl-review-running>header i{display:block;height:6px;margin-top:10px;overflow:hidden;border-radius:999px;background:#e7edef}.afl-review-running>header i b{display:block;height:100%;border-radius:inherit;background:linear-gradient(90deg,#8daf9f,#7895b8)}
.afl-review-card{padding:46px 45px 30px;text-align:center}.afl-review-meta{display:flex;justify-content:center;gap:6px;flex-wrap:wrap;margin-bottom:22px}.afl-review-meta span{padding:5px 8px;border-radius:999px;background:#eef4f7;color:#6b7e91;font-size:7px;font-weight:780;text-transform:uppercase;letter-spacing:.06em}.afl-review-card>p{margin:0 0 6px;color:#8996a4;font-size:10px}.afl-review-card>h2{max-width:620px;margin:0 auto;color:#33485f;font:700 35px/1.15 Georgia,"Times New Roman",serif}.afl-review-history{display:flex;justify-content:center;gap:9px;flex-wrap:wrap;margin:16px 0 25px}.afl-review-history span{padding:6px 9px;border:1px solid #e2e9ed;border-radius:999px;color:#7d8c9a;font-size:8px}.afl-review-reveal{min-width:210px;padding:14px 20px;border:0;border-radius:14px;background:#607d99;color:#fff;font-size:11px;font-weight:830;cursor:pointer;box-shadow:0 11px 25px rgba(70,96,122,.18)}
.afl-review-answer{margin-top:24px}.afl-review-formula{display:grid;place-items:center;min-height:120px;padding:23px;border:1px solid #dfe8ee;border-radius:20px;background:linear-gradient(145deg,#f8fbfd,#fff);color:#31475e;font-family:Cambria,Georgia,serif;font-size:34px;box-shadow:inset 0 0 0 1px rgba(255,255,255,.7)}.afl-review-symbols{display:flex;justify-content:center;gap:6px;flex-wrap:wrap;margin:14px 0}.afl-review-symbols span{display:flex;align-items:center;gap:5px;padding:6px 9px;border-radius:10px;background:#f2f6f8;color:#718194;font-size:9px}.afl-review-symbols b{color:#3e566d;font-family:Cambria,Georgia,serif;font-size:12px}.afl-review-tip,.afl-review-warning{max-width:620px;margin:8px auto;padding:10px 12px;border-radius:11px;background:#f0f8f4;color:#61776a;font-size:9px;line-height:1.5;text-align:left}.afl-review-warning{background:#fff1f3;color:#8d6068}
.afl-review-grade{margin-top:24px}.afl-review-grade>p{color:#64778b;font-size:10px;font-weight:760}.afl-review-grade>div{display:grid;grid-template-columns:repeat(4,1fr);gap:7px}.afl-review-grade button{display:grid;gap:3px;padding:12px 8px;border:1px solid #dfe6eb;border-radius:13px;background:#fff;color:#63768a;cursor:pointer}.afl-review-grade button:hover{transform:translateY(-2px);border-color:#aebfcd;box-shadow:0 8px 20px rgba(62,79,101,.09)}.afl-review-grade strong{font-size:10px}.afl-review-grade small{font-size:7px;color:#8c98a5}.afl-review-grade button:nth-child(1){background:#fff2f4}.afl-review-grade button:nth-child(2){background:#f2f4fb}.afl-review-grade button:nth-child(3){background:#f0f8f4}.afl-review-grade button:nth-child(4){background:#eef5fb}
.afl-review-running>footer{display:flex;justify-content:space-between;align-items:center;padding:15px 34px 25px;border-top:1px solid #edf1f3;color:#929daa;font-size:8px}.afl-review-running>footer button{border:0;background:none;color:#738599;font-size:9px;font-weight:760;cursor:pointer}
.afl-review-results{padding:48px 42px;text-align:center}.afl-celebration{display:grid;place-items:center;width:66px;height:66px;margin:0 auto 16px;border-radius:22px;background:#e5f5ed;color:#4f7c68;font-size:26px;font-weight:900}.afl-review-results h2{margin:6px 0;color:#34495f;font:700 32px/1.2 Georgia,"Times New Roman",serif}.afl-review-results>p:not(.afl-mini-label){color:#7e8d9d;font-size:11px}.afl-review-result-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin:22px 0}.afl-review-result-stats span{padding:13px;border:1px solid #e0e7ec;border-radius:13px;background:#fafcfd;color:#8290a0;font-size:8px}.afl-review-result-stats b{display:block;margin-bottom:3px;color:#4f657a;font-size:15px}.afl-review-result-list{display:grid;gap:6px;max-height:280px;overflow:auto;text-align:left}.afl-review-result-list button{display:grid;grid-template-columns:65px 1fr auto;align-items:center;gap:9px;padding:10px 12px;border:1px solid #e1e7eb;border-radius:11px;background:#fff;cursor:pointer}.afl-review-result-list span{font-size:8px;color:#8492a0}.afl-review-result-list strong{font-size:10px;color:#4b6176}.afl-review-result-list small{font-size:8px;color:#8b98a5}.afl-review-result-actions{display:flex;justify-content:center;gap:7px;margin-top:22px}.afl-review-result-actions button{padding:10px 15px;border:1px solid #dbe4e9;border-radius:11px;background:#fff;color:#617489;font-size:9px;font-weight:790;cursor:pointer}.afl-review-result-actions button.is-primary{background:var(--afl-accent);border-color:var(--afl-accent);color:#fff}

/* Comparison */
.afl-compare-panel{width:min(1180px,100%)}.afl-compare-header{padding:42px 44px 18px;text-align:center}.afl-compare-header h2{margin:6px 0;color:#34495f;font:700 33px/1.2 Georgia,"Times New Roman",serif}.afl-compare-header>p:last-child{color:#8190a0;font-size:11px}.afl-compare-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;padding:15px 28px 35px}.afl-compare-grid.count-1{grid-template-columns:minmax(280px,620px);justify-content:center}.afl-compare-grid.count-2{grid-template-columns:repeat(2,minmax(0,1fr));max-width:850px;margin:auto}.afl-compare-column{position:relative;padding:21px;border:1px solid #e0e7ec;border-radius:18px;background:#fff;box-shadow:0 10px 28px rgba(62,79,100,.05)}.afl-compare-remove{position:absolute;top:11px;right:11px;display:grid;place-items:center;width:27px;height:27px;border:1px solid #e1e6ea;border-radius:50%;background:#fff;color:#8794a0;cursor:pointer}.afl-compare-column>p{margin:15px 0 3px;color:#8392a1;font-size:8px;text-transform:uppercase;letter-spacing:.07em}.afl-compare-column h3{min-height:48px;margin:0;color:#40566c;font:700 20px/1.25 Georgia,"Times New Roman",serif}.afl-compare-formula{display:grid;place-items:center;min-height:100px;margin:15px 0;padding:15px;border-radius:14px;background:#f4f8fa;color:#354d65;font-family:Cambria,Georgia,serif;font-size:25px}.afl-compare-column dl{display:grid;gap:5px;margin:0}.afl-compare-column dl div{display:flex;justify-content:space-between;gap:12px;padding:8px 0;border-bottom:1px solid #edf1f3}.afl-compare-column dt{color:#8995a2;font-size:8px}.afl-compare-column dd{margin:0;color:#52687d;font-size:8px;font-weight:740;text-align:right}.afl-compare-column ul{display:grid;gap:5px;margin:16px 0;padding:0;list-style:none}.afl-compare-column li{display:grid;grid-template-columns:34px 1fr auto;gap:7px;padding:7px;border-radius:9px;background:#f8fafb}.afl-compare-column li b{color:#3e566d;font-family:Cambria,Georgia,serif}.afl-compare-column li span,.afl-compare-column li small{color:#7d8b99;font-size:8px}.afl-compare-column section{margin-top:10px;padding:10px;border-radius:10px;background:#f2f8f5}.afl-compare-column section.is-warning{background:#fff1f3}.afl-compare-column section>span{color:#789083;font-size:7px;font-weight:800;text-transform:uppercase}.afl-compare-column section p{margin:4px 0 0;color:#617568;font-size:8px;line-height:1.45}.afl-compare-open{width:100%;margin-top:14px;padding:10px;border:1px solid #dce4e9;border-radius:10px;background:#fff;color:#5f7489;font-size:9px;font-weight:780;cursor:pointer}.afl-empty-modal{padding:60px 34px;text-align:center}.afl-empty-modal h2{color:#3e5369;font:700 30px Georgia,"Times New Roman",serif}.afl-empty-modal p{color:#8190a0}.afl-empty-modal button{padding:10px 14px;border:0;border-radius:11px;background:var(--afl-accent);color:#fff;font-weight:760;cursor:pointer}

/* Mastery map */
.afl-map-panel{width:min(1050px,100%)}.afl-map-header{padding:40px 42px 18px}.afl-map-header h2{margin:6px 0;color:#354a61;font:700 32px/1.2 Georgia,"Times New Roman",serif}.afl-map-header>p:last-child{color:#7e8e9f;font-size:10px}.afl-map-overview{display:grid;grid-template-columns:repeat(5,1fr);gap:8px;padding:0 42px 18px}.afl-map-overview>div{padding:13px;border:1px solid #e0e7ec;border-radius:13px;background:#fafcfd}.afl-map-overview span{display:block;margin-bottom:3px;color:#8c98a5;font-size:7px;text-transform:uppercase}.afl-map-overview strong{color:#4b6278;font-size:15px}.afl-activity-section{display:grid;grid-template-columns:180px 1fr;align-items:center;gap:20px;margin:0 42px 20px;padding:14px 16px;border:1px solid #e1e8ec;border-radius:15px;background:#fff}.afl-activity-section strong{color:#536a80;font-size:11px}.afl-activity-heatmap{display:grid;grid-template-columns:repeat(14,1fr);gap:4px}.afl-activity-heatmap span{display:grid;place-items:center;aspect-ratio:1;border-radius:5px;background:#eff3f5;color:#99a3ad;font-size:6px}.afl-activity-heatmap span[data-strength="1"]{background:#e5f2ec;color:#759486}.afl-activity-heatmap span[data-strength="2"]{background:#cfe7dc;color:#60816f}.afl-activity-heatmap span[data-strength="3"]{background:#a9cebd;color:#486a59}.afl-activity-heatmap span[data-strength="4"]{background:#78a892;color:#fff}.afl-map-list{display:grid;gap:12px;padding:0 42px 40px}.afl-map-subject{overflow:hidden;border:1px solid #dfe7ec;border-radius:17px;background:#fff}.afl-map-subject>header{display:flex;align-items:center;justify-content:space-between;padding:14px 16px;background:#f7fafb}.afl-map-subject header div{display:grid;gap:2px}.afl-map-subject header span{color:#8190a0;font-size:8px;text-transform:uppercase;letter-spacing:.08em}.afl-map-subject header strong{color:#496177;font-size:12px}.afl-map-subject header button{padding:8px 10px;border:1px solid #dce4e9;border-radius:10px;background:#fff;color:#60758a;font-size:8px;font-weight:780;cursor:pointer}.afl-map-topic{display:grid;grid-template-columns:minmax(180px,1fr) minmax(120px,300px) 42px;align-items:center;gap:13px;width:100%;padding:11px 16px;border:0;border-top:1px solid #edf1f3;background:#fff;text-align:left;cursor:pointer}.afl-map-topic:hover{background:#fbfcfd}.afl-map-topic>span{display:grid;gap:2px}.afl-map-topic strong{color:#50677d;font-size:10px}.afl-map-topic small{color:#8a97a4;font-size:7px}.afl-map-topic i{display:block;height:7px;overflow:hidden;border-radius:999px;background:#e9eef1}.afl-map-topic i b{display:block;height:100%;border-radius:inherit;background:linear-gradient(90deg,#9ebdac,#7895b8)}.afl-map-topic em{color:#718397;font-size:9px;font-style:normal;font-weight:800;text-align:right}

/* Quiz timer and setup polish */
.afl-v3 .afl-quiz-settings{grid-template-columns:repeat(2,1fr)}.afl-quiz-running>header em{display:block;height:3px;margin-top:7px;overflow:hidden;border-radius:999px;background:#f1e8e9}.afl-quiz-running>header em b{display:block;height:100%;background:#d89ca6;transition:width 1s linear}.afl-quiz-running>header>div strong{color:#a86670}

@media(max-width:980px){.afl-daily-mission{grid-template-columns:auto 1fr auto}.afl-mission-progress{grid-column:2}.afl-mission-start{grid-column:3;grid-row:1/3}.afl-v3 .afl-filter-group{grid-template-columns:repeat(3,1fr)}.afl-map-overview{grid-template-columns:repeat(3,1fr)}.afl-compare-grid{grid-template-columns:1fr}.afl-compare-grid.count-2{grid-template-columns:1fr;max-width:none}.afl-compare-column h3{min-height:0}}
@media(max-width:700px){.afl-daily-mission{grid-template-columns:auto 1fr;margin-top:20px;padding:14px}.afl-mission-progress{grid-column:1/-1}.afl-mission-start{grid-column:1/-1;grid-row:auto;width:100%}.afl-v3 .afl-filter-group{grid-template-columns:repeat(2,1fr)}.afl-review-status-card{grid-template-columns:repeat(2,1fr)}.afl-review-card{padding:38px 18px 25px}.afl-review-card>h2{font-size:28px}.afl-review-formula{font-size:27px}.afl-review-grade>div{grid-template-columns:repeat(2,1fr)}.afl-review-result-stats{grid-template-columns:1fr}.afl-review-result-list button{grid-template-columns:55px 1fr}.afl-review-result-list small{display:none}.afl-review-running>footer{align-items:flex-start;flex-direction:column;gap:6px;padding-inline:18px}.afl-map-header,.afl-map-list{padding-left:18px;padding-right:18px}.afl-map-overview{grid-template-columns:repeat(2,1fr);padding-left:18px;padding-right:18px}.afl-activity-section{grid-template-columns:1fr;margin-left:18px;margin-right:18px}.afl-activity-heatmap{grid-template-columns:repeat(7,1fr)}.afl-map-topic{grid-template-columns:1fr 45px}.afl-map-topic i{grid-column:1/-1;grid-row:2}.afl-map-topic em{grid-column:2;grid-row:1}.afl-compare-header{padding-inline:20px}.afl-compare-grid{padding-inline:12px}.afl-compare-dock{right:8px;left:8px;bottom:8px;justify-content:space-between}.afl-compare-dock+ .afl-selection-dock{bottom:80px}.afl-personal-note>div{align-items:flex-start;flex-direction:column}.afl-v3 .afl-quiz-settings{grid-template-columns:1fr}}
@media(max-width:430px){.afl-v3 .afl-filter-group{grid-template-columns:1fr}.afl-review-status-card{grid-template-columns:1fr 1fr}.afl-map-overview{grid-template-columns:1fr 1fr}.afl-review-results{padding:38px 18px}.afl-review-result-actions{flex-direction:column}.afl-review-result-actions button{width:100%}.afl-v3 .afl-card-actions{grid-template-columns:1fr 1fr}.afl-v3 .afl-card-actions .afl-open-formula{grid-column:1/-1}.afl-compare-dock>div:first-child small{display:none}}
@media print{.afl-daily-mission,.afl-compare-dock,.afl-card-signals,.afl-review-badge,.afl-accuracy-chip{display:none!important}}

/* AYLOTI Formula Library 3.1 — softer, calmer and easier to use */
.afl-v31{
  --afl-accent:#89a9c3;
  --afl-paper:#ffffff;
  --afl-canvas:#f7fafc;
  --afl-peach:#7f9fb4;
  --afl-peach-soft:#eef6fa;
  background:transparent;
}
.afl-v31 .afl-hero{
  border-color:#e4ecf2;
  background:linear-gradient(145deg,#ffffff 0%,#f5f9fc 48%,#f7f6fc 100%);
  box-shadow:0 18px 50px rgba(71,91,116,.065);
}
.afl-v31 .afl-shape-two{background:rgba(188,210,226,.22)}
.afl-v31 .afl-primary-action{background:#89a9c3;border-color:#89a9c3;box-shadow:0 8px 20px rgba(93,126,151,.14)}
.afl-v31 .afl-soft-action{background:#fbfdfe;border-color:#dfe8ef;color:#5d7287}
.afl-v31 .afl-soft-action:hover{background:#fff;border-color:#c8d8e4}
.afl-v31 .afl-subject-card{box-shadow:0 5px 16px rgba(61,78,102,.035);border-color:#e5ebf0}
.afl-v31 .afl-subject-card[data-subject="Accounting"],
.afl-v31 .afl-card[data-subject="Accounting"],
.afl-v31 .afl-modal-header[data-subject="Accounting"]{--subject:#7f9fb4;--subject-soft:#eef6fa}
.afl-v31 .afl-card.is-featured:after{background:#8daec6;box-shadow:0 0 0 4px #eef6fb}
.afl-v31 .afl-featured-badge{background:#eef6fb;color:#55748c}
.afl-v31 .afl-favourite{color:#86a8c1!important}
.afl-v31 .afl-card-tip{background:#f3f8fb;color:#65788a}
.afl-v31 .afl-card-tip span{color:#628097}
.afl-v31 .afl-card.is-learning{border-bottom-color:#c6d9e5}

/* One-tap views */
.afl-quick-browse{display:flex;align-items:center;gap:7px;overflow-x:auto;margin:0 0 13px;padding:3px 2px 6px;scrollbar-width:thin}
.afl-quick-browse>span{flex:0 0 auto;margin-right:2px;color:#7e8d9d;font-size:10px;font-weight:800;text-transform:uppercase;letter-spacing:.08em}
.afl-quick-browse button{flex:0 0 auto;min-height:34px;padding:7px 11px;border:1px solid #e0e8ee;border-radius:999px;background:#fff;color:#64788c;font-size:10px;font-weight:760;cursor:pointer;transition:.15s}
.afl-quick-browse button:hover{border-color:#c8d8e4;background:#f8fbfd}
.afl-quick-browse button.is-active{border-color:#b8cedd;background:#edf5fa;color:#486780;box-shadow:0 0 0 2px rgba(137,169,195,.09)}

/* Progressive disclosure: only the useful everyday controls show first */
.afl-v31 .afl-filter-group{grid-template-columns:repeat(2,minmax(150px,1fr));max-width:660px}
.afl-v31 .afl-advanced-filter{display:none!important}
.afl-v31.is-advanced-filters .afl-advanced-filter{display:block!important}
.afl-v31.is-advanced-filters .afl-filter-group{grid-template-columns:repeat(5,minmax(125px,1fr));max-width:none}
.afl-v31.is-advanced-filters .afl-layout-switch{display:flex!important}
.afl-more-filters{display:inline-flex;align-items:center;gap:7px;height:38px;padding:0 12px;border:1px solid #dce6ed;border-radius:11px;background:#f7fafc;color:#5e7488;font-size:11px;font-weight:780;cursor:pointer}
.afl-more-filters b{font-size:15px;line-height:1;transition:transform .16s}
.afl-more-filters[aria-expanded="true"] b{transform:rotate(180deg)}
.afl-v31 .afl-toolbar{border-color:#e2eaf0;background:rgba(255,255,255,.96);box-shadow:0 8px 25px rgba(60,78,102,.055)}

/* Less crowded formula cards */
.afl-v31 .afl-card{min-height:410px;border-color:#e6ebef;box-shadow:0 6px 20px rgba(62,78,100,.035)}
.afl-v31 .afl-card:hover{transform:translateY(-2px);box-shadow:0 13px 32px rgba(62,78,100,.07)}
.afl-v31 .afl-card-actions{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:7px;position:relative}
.afl-v31 .afl-card-actions .afl-open-formula{width:100%}
.afl-card-more-menu{position:relative}
.afl-card-more-menu>summary{display:flex;align-items:center;justify-content:center;gap:6px;min-height:35px;padding:6px 10px;border:1px solid #dfe7ed;border-radius:10px;background:#fff;color:#66798d;font-size:9px;font-weight:760;cursor:pointer;list-style:none}
.afl-card-more-menu>summary::-webkit-details-marker{display:none}
.afl-card-more-menu[open]>summary{border-color:#bfd2df;background:#f4f9fc;color:#4f6d84}
.afl-card-more-menu>div{position:absolute;z-index:12;right:0;bottom:calc(100% + 7px);display:grid;min-width:150px;padding:6px;border:1px solid #dce6ed;border-radius:12px;background:#fff;box-shadow:0 16px 38px rgba(45,64,86,.15)}
.afl-card-more-menu>div button{width:100%;min-height:33px;padding:7px 9px;border:0;border-radius:8px;background:transparent;color:#5d7185;font-size:10px;text-align:left;cursor:pointer}
.afl-card-more-menu>div button:hover,.afl-card-more-menu>div button.is-active{background:#f1f7fb;color:#42637d}

.afl-v31 .afl-confidence-panel{margin-top:10px;padding-top:0;border:1px solid #e6edf2;border-radius:11px;background:#fbfdfe}
.afl-confidence-panel>summary{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:9px 10px;color:#718296;font-size:9px;font-weight:760;cursor:pointer;list-style:none}
.afl-confidence-panel>summary::-webkit-details-marker{display:none}
.afl-confidence-panel>summary b{color:#577188;font-size:9px}
.afl-confidence-panel[open]>summary{border-bottom:1px solid #e8eef2}
.afl-v31 .afl-confidence-panel>div{padding:8px}
.afl-v31 .afl-confidence button[data-afl-confidence="1"].is-active{border-color:#bfd4e2;background:#eef6fb;color:#55748c}
.afl-v31 .afl-confidence button[data-afl-confidence="2"].is-active{border-color:#c7c0df;background:#f2f0fa;color:#71679e}
.afl-v31 .afl-confidence button[data-afl-confidence="3"].is-active{border-color:#afd0be;background:#ecf7f1;color:#54806a}
.afl-v31 .afl-review-grade button:nth-child(2){background:#f2f4fb}

@media(max-width:980px){
  .afl-v31.is-advanced-filters .afl-filter-group{grid-template-columns:repeat(3,1fr)}
}
@media(max-width:700px){
  .afl-v31 .afl-hero{padding:24px 16px;border-radius:24px}
  .afl-v31 .afl-toolbar{position:relative;top:auto;align-items:stretch;flex-direction:column;padding:11px;border-radius:16px}
  .afl-v31 .afl-filter-group,.afl-v31.is-advanced-filters .afl-filter-group{grid-template-columns:1fr 1fr;max-width:none}
  .afl-v31 .afl-toolbar-actions{flex-wrap:wrap}
  .afl-v31 .afl-toolbar-actions .afl-more-filters{flex:1 1 auto}
  .afl-v31 .afl-reset-btn{flex:1 1 auto}
  .afl-quick-browse{margin-inline:-2px}
  .afl-card-more-menu>div{position:fixed;right:14px;left:14px;bottom:14px;min-width:0;padding:9px;border-radius:16px;box-shadow:0 22px 70px rgba(35,52,73,.22)}
  .afl-card-more-menu>div button{min-height:42px;font-size:12px;text-align:center}
}
@media(max-width:430px){
  .afl-v31 .afl-filter-group,.afl-v31.is-advanced-filters .afl-filter-group{grid-template-columns:1fr}
  .afl-v31 .afl-card-actions{grid-template-columns:1fr auto}
}
/* Keep subscripts and superscripts inline inside grid-centred formula boxes. */
.afl-formula-inline{display:inline-block;max-width:100%}
.afl-formula-inline sub,.afl-formula-inline sup{font-size:.62em;line-height:0;position:relative;vertical-align:baseline}
.afl-formula-inline sup{top:-.52em}
.afl-formula-inline sub{bottom:-.18em}


/* V4 qualification navigation and additional cool-toned subjects */
.afl-v40 .afl-qualification-deck{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:9px;margin:15px 0 12px;padding:8px;border:1px solid #e3ebf0;border-radius:20px;background:#f8fbfd;box-shadow:0 8px 24px rgba(68,88,108,.04)}
.afl-v40 .afl-qualification-deck button{display:flex;align-items:center;justify-content:space-between;gap:9px;min-height:58px;padding:10px 13px;border:1px solid transparent;border-radius:15px;background:transparent;color:#52677e;text-align:left;cursor:pointer;transition:.18s ease}
.afl-v40 .afl-qualification-deck button:hover{background:#fff;border-color:#dce8ef}.afl-v40 .afl-qualification-deck button.is-active{background:#fff;border-color:#cbdde8;box-shadow:0 7px 18px rgba(70,97,119,.07);color:#2f4d66}
.afl-v40 .afl-qualification-deck strong,.afl-v40 .afl-qualification-deck small{display:block}.afl-v40 .afl-qualification-deck strong{font-size:12px}.afl-v40 .afl-qualification-deck small{color:#8a9aaa;font-size:9px;white-space:nowrap}
.afl-v40 .afl-subject-deck{grid-template-columns:repeat(auto-fit,minmax(172px,1fr))}
.afl-v40 .afl-subject-card[data-subject="Additional Mathematics"],.afl-v40 .afl-card[data-subject="Additional Mathematics"],.afl-v40 .afl-modal-header[data-subject="Additional Mathematics"]{--subject:#7f98bd;--subject-soft:#eef3fb}
.afl-v40 .afl-subject-card[data-subject="Further Mathematics"],.afl-v40 .afl-card[data-subject="Further Mathematics"],.afl-v40 .afl-modal-header[data-subject="Further Mathematics"]{--subject:#9188b4;--subject-soft:#f3f0fa}
.afl-v40 .afl-subject-card[data-subject="Biology"],.afl-v40 .afl-card[data-subject="Biology"],.afl-v40 .afl-modal-header[data-subject="Biology"]{--subject:#719b91;--subject-soft:#eef8f5}
.afl-v40 .afl-subject-card[data-subject="Computer Science"],.afl-v40 .afl-card[data-subject="Computer Science"],.afl-v40 .afl-modal-header[data-subject="Computer Science"]{--subject:#708fa9;--subject-soft:#edf5f9}
.afl-v40 .afl-subject-card[data-subject="Business"],.afl-v40 .afl-card[data-subject="Business"],.afl-v40 .afl-modal-header[data-subject="Business"]{--subject:#8296a8;--subject-soft:#f0f5f8}
@media(max-width:760px){.afl-v40 .afl-qualification-deck{grid-template-columns:1fr 1fr}.afl-v40 .afl-qualification-deck button{min-height:52px;padding:9px 10px}.afl-v40 .afl-qualification-deck small{font-size:8px}}
