@import"https://fonts.googleapis.com/css2?family=Fraunces:ital,opsz,wght@0,9..144,400;0,9..144,500;0,9..144,600;1,9..144,400&family=Hanken+Grotesk:wght@400;500;600;700;800&display=swap";.portal{--maxw: 1180px;color:var(--ink);font-family:var(--sans);font-size:15px;line-height:1.55}.portal h1,.portal h2,.portal h3,.portal h4{margin:0;font-family:var(--serif);font-weight:500;letter-spacing:-.015em;line-height:1.15}.portal a{color:inherit;text-decoration:none}.portal .container{max-width:var(--maxw);margin:0 auto;padding:0 24px}.portal .muted{color:var(--ink-3)}.portal .grow{flex:1}.portal .center{text-align:center}.portal .pnav{position:sticky;top:0;z-index:50;background:color-mix(in srgb,var(--paper) 88%,transparent);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-bottom:1px solid var(--line)}.portal .pnav-inner{max-width:var(--maxw);margin:0 auto;padding:12px 24px;display:flex;align-items:center;gap:22px}.portal .brand{display:flex;align-items:center;gap:11px}.portal .brand .mark{width:36px;height:36px;border-radius:9px;background:var(--ink);color:var(--paper);display:grid;place-items:center;font-family:var(--serif);font-size:21px;font-weight:600;transform:rotate(-4deg);box-shadow:2px 3px 0 var(--accent)}.portal .brand b{font-family:var(--serif);font-size:22px;font-weight:600;letter-spacing:-.02em}.portal .pnav-links{display:flex;gap:4px}.portal .pnav-links a{padding:7px 13px;border-radius:8px;font-weight:600;font-size:14px;color:var(--ink-2);transition:.15s}.portal .pnav-links a:hover{background:var(--card-2);color:var(--ink)}.portal .pnav-links a.active{color:var(--accent)}.portal .pnav-right{display:flex;align-items:center;gap:10px;margin-left:auto}.portal .iconbtn{width:38px;height:38px;border-radius:10px;border:1px solid var(--line);background:var(--card);display:grid;place-items:center;color:var(--ink-2);cursor:pointer;transition:.15s}.portal .iconbtn:hover{color:var(--ink);border-color:var(--ink-3)}.portal .iconbtn svg{width:18px;height:18px;stroke-width:1.8;fill:none;stroke:currentColor}.portal .btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;border:1px solid var(--line);background:var(--card);color:var(--ink);padding:9px 16px;border-radius:10px;font-weight:700;font-size:14px;transition:.15s;white-space:nowrap;cursor:pointer;font-family:inherit}.portal .btn:hover{border-color:var(--ink-3)}.portal .btn:disabled{opacity:.5;cursor:not-allowed}.portal .btn svg{width:16px;height:16px;stroke-width:2;fill:none;stroke:currentColor}.portal .btn-primary{background:var(--accent);border-color:var(--accent);color:#fff;box-shadow:0 1px 0 var(--accent-ink)}.portal .btn-primary:hover{background:var(--accent-ink);border-color:var(--accent-ink)}.portal .btn-ghost{background:transparent;border-color:transparent;color:var(--ink-2)}.portal .btn-ghost:hover{background:var(--card-2);color:var(--ink)}.portal .btn-lg{padding:13px 24px;font-size:16px;border-radius:12px}.portal .btn-sm{padding:6px 11px;font-size:13px;border-radius:8px}.portal .btn-block{width:100%}.portal .chip{display:inline-flex;align-items:center;gap:6px;font-size:12.5px;font-weight:700;padding:5px 11px;border-radius:20px;background:var(--card);border:1px solid var(--line)}.portal .chip.flame{background:var(--warn-tint);color:var(--warn);border-color:transparent}.portal .chip.pts{background:var(--ink);color:var(--paper);border-color:transparent}.portal .tag{display:inline-flex;align-items:center;font-size:11px;font-weight:700;padding:3px 10px;border-radius:20px;background:var(--card-2);border:1px solid var(--line);color:var(--ink-2)}.portal .tag.marks{background:var(--ink);color:var(--paper);border-color:transparent}.portal .tag.gcse{background:var(--accent-tint);color:var(--accent-ink);border-color:transparent}.portal .tag.free{background:var(--good-tint);color:var(--good);border-color:transparent}.portal .card{background:var(--card);border:1px solid var(--line);border-radius:16px}.portal .card-pad{padding:20px}.portal .section{padding:48px 0}.portal .section-h{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;margin-bottom:22px}.portal .section-h h2{font-size:28px}.portal .section-h p{color:var(--ink-3);font-size:14px}.portal .eyebrow{font-size:12px;font-weight:800;letter-spacing:.14em;text-transform:uppercase;color:var(--accent)}.portal .page-head{padding:36px 0 8px}.portal .page-head h1{font-size:38px}.portal .page-head p{color:var(--ink-2);margin-top:8px;font-size:15px}.portal .crumbs{font-size:13px;color:var(--ink-3);margin-bottom:10px;display:flex;gap:7px;align-items:center;flex-wrap:wrap}.portal .crumbs a{cursor:pointer}.portal .crumbs a:hover{color:var(--ink-2)}.portal .guest-cta{display:flex;align-items:center;gap:16px;background:var(--accent-tint);border:1px dashed var(--accent);border-radius:14px;padding:14px 18px;color:var(--accent-ink);font-weight:600;font-size:14px;flex-wrap:wrap}.portal .guest-cta .btn{margin-left:auto}.portal .hero{padding:64px 0 40px}.portal .hero-grid{display:grid;grid-template-columns:1.15fr .85fr;gap:40px;align-items:center}.portal .hero h1{font-size:54px;line-height:1.02;letter-spacing:-.03em}.portal .hero h1 em{font-style:italic;color:var(--accent)}.portal .hero .lead{font-size:18px;color:var(--ink-2);margin:20px 0 28px;max-width:520px}.portal .hero-actions{display:flex;gap:12px;flex-wrap:wrap;align-items:center}.portal .hero-note{font-size:13px;color:var(--ink-3);margin-top:14px;display:flex;align-items:center;gap:8px}.portal .paper-card{background:var(--card);border:1px solid var(--line);border-radius:18px;padding:22px;box-shadow:0 24px 50px -24px rgba(var(--shadow),.4);background-image:repeating-linear-gradient(var(--card),var(--card) 33px,var(--line-2) 34px)}.portal .paper-card .q-no{font-family:var(--serif);color:var(--accent);font-weight:600;font-size:14px}.portal .paper-card h3{font-size:20px;margin:6px 0 16px;font-weight:500}.portal .paper-opt{display:flex;align-items:center;gap:12px;padding:11px 14px;border:1.5px solid var(--line);border-radius:11px;margin-bottom:9px;background:var(--card-2);font-size:15px}.portal .paper-opt .k{width:26px;height:26px;border-radius:50%;border:1.5px solid var(--ink-3);display:grid;place-items:center;font-weight:700;font-size:13px;color:var(--ink-2)}.portal .paper-opt.correct{border-color:var(--good);background:var(--good-tint)}.portal .paper-opt.correct .k{background:var(--good);border-color:var(--good);color:#fff}.portal .hero-stats{display:flex;gap:30px;margin-top:36px;padding-top:28px;border-top:1px solid var(--line);flex-wrap:wrap}.portal .hero-stats .n{font-family:var(--serif);font-size:30px;font-weight:600}.portal .hero-stats .l{font-size:12.5px;color:var(--ink-3)}.portal .subj-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:16px}.portal .subj-card{background:var(--card);border:1px solid var(--line);border-radius:16px;padding:18px;transition:.15s;display:block;cursor:pointer}.portal .subj-card:hover{transform:translateY(-3px);border-color:var(--ink-3);box-shadow:0 12px 26px -16px rgba(var(--shadow),.4)}.portal .subj-card .ic{width:46px;height:46px;border-radius:13px;display:grid;place-items:center;font-family:var(--serif);font-size:24px;font-weight:600;margin-bottom:14px;background:var(--accent-tint);color:var(--accent)}.portal .subj-card b{font-size:16px;display:block}.portal .subj-card small{color:var(--ink-3);font-size:12.5px}.portal .course-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:20px}.portal .course-card{background:var(--card);border:1px solid var(--line);border-radius:16px;overflow:hidden;transition:.15s;display:flex;flex-direction:column;cursor:pointer}.portal .course-card:hover{transform:translateY(-3px);box-shadow:0 14px 30px -18px rgba(var(--shadow),.45);border-color:var(--ink-3)}.portal .course-band{height:96px;position:relative;display:flex;align-items:flex-end;padding:12px;background:linear-gradient(135deg,var(--accent),var(--accent-ink))}.portal .course-band .sym{position:absolute;right:14px;top:8px;font-family:var(--serif);font-size:46px;font-weight:600;opacity:.35;color:#fff}.portal .course-body{padding:16px;flex:1;display:flex;flex-direction:column;gap:8px}.portal .course-body h3{font-size:18px;font-weight:600}.portal .course-meta{display:flex;gap:8px;flex-wrap:wrap;margin-top:auto}.portal .course-foot{display:flex;align-items:center;gap:10px;padding:13px 16px;border-top:1px solid var(--line-2);font-size:13px;color:var(--ink-3)}.portal .progress{height:7px;border-radius:6px;background:var(--card-2);overflow:hidden}.portal .progress i{display:block;height:100%;border-radius:6px;background:var(--accent)}.portal .filters{display:flex;gap:10px;flex-wrap:wrap;align-items:center;background:var(--card);border:1px solid var(--line);border-radius:14px;padding:12px}.portal .select,.portal .input{background:var(--card-2);border:1px solid var(--line);border-radius:9px;padding:9px 12px;font-size:14px;color:var(--ink);font-family:inherit}.portal .select{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%239a9082' stroke-width='2.5'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 12px center;padding-right:32px;cursor:pointer}.portal .search{flex:1;min-width:180px;display:flex;align-items:center;gap:8px;background:var(--card-2);border:1px solid var(--line);border-radius:9px;padding:0 12px}.portal .search input{flex:1;border:none;background:none;padding:10px 0;font-size:14px;color:var(--ink);outline:none}.portal .search svg{width:16px;height:16px;stroke:var(--ink-3);stroke-width:2;fill:none}.portal .detail-grid{display:grid;grid-template-columns:1fr 320px;gap:28px;align-items:start;padding:28px 0 60px}.portal .module-t{font-family:var(--serif);font-size:18px;font-weight:600;margin:20px 0 8px}.portal .lesson-item{display:flex;align-items:center;gap:14px;padding:13px 16px;border:1px solid var(--line);border-radius:12px;background:var(--card);margin-bottom:8px;transition:.15s;cursor:pointer}.portal .lesson-item:hover{border-color:var(--ink-3)}.portal .lesson-item .num{width:30px;height:30px;border-radius:9px;background:var(--card-2);display:grid;place-items:center;font-family:var(--serif);font-weight:600;font-size:14px;color:var(--ink-2);flex:none}.portal .lesson-item .ti{flex:1}.portal .lesson-item .ti b{font-size:15px;display:block;font-weight:600}.portal .lesson-item .ti small{color:var(--ink-3);font-size:12px}.portal .lesson-item .type{font-size:11px;font-weight:700;padding:3px 9px;border-radius:20px;background:var(--card-2);color:var(--ink-2)}.portal .lesson-item .type.quiz{background:var(--accent-tint);color:var(--accent-ink)}.portal .side-card{position:sticky;top:88px}.portal .quiz-head{display:flex;align-items:center;gap:16px;padding:16px 0;flex-wrap:wrap}.portal .timer{display:inline-flex;align-items:center;gap:8px;font-family:var(--serif);font-size:19px;font-weight:600;padding:6px 14px;border-radius:12px;background:var(--ink);color:var(--paper)}.portal .progress-line{height:5px;border-radius:5px;background:var(--line-2);overflow:hidden;margin-bottom:20px}.portal .progress-line i{display:block;height:100%;background:linear-gradient(90deg,var(--accent),var(--accent-ink))}.portal .quiz-grid{display:grid;grid-template-columns:1fr 240px;gap:24px;align-items:start;padding-bottom:60px}.portal .qcard{background:var(--card);border:1px solid var(--line);border-radius:16px;overflow:hidden}.portal .qcard-top{display:flex;align-items:center;gap:12px;padding:16px 22px;border-bottom:1px solid var(--line-2);background:var(--card-2);flex-wrap:wrap}.portal .qbody{padding:24px}.portal .qtext{font-family:var(--serif);font-size:20px;line-height:1.5;margin-bottom:20px}.portal .opts{display:flex;flex-direction:column;gap:11px}.portal .opt{display:flex;align-items:center;gap:14px;padding:14px 18px;border:1.5px solid var(--line);border-radius:12px;background:var(--card-2);transition:.14s;font-size:16px;cursor:pointer}.portal .opt:hover{border-color:var(--ink-3)}.portal .opt.sel{border-color:var(--accent);background:var(--accent-tint)}.portal .opt .key{width:30px;height:30px;flex:none;border:1.5px solid var(--ink-3);border-radius:50%;display:grid;place-items:center;font-weight:700;font-size:14px;color:var(--ink-2)}.portal .opt.sq .key{border-radius:8px}.portal .opt.sel .key{background:var(--accent);border-color:var(--accent);color:#fff}.portal .num-in{display:flex;max-width:320px;border:1.5px solid var(--line);border-radius:12px;overflow:hidden;background:var(--card-2)}.portal .num-in .unit{padding:13px 16px;background:var(--card);font-family:var(--serif);font-size:19px;color:var(--ink-2);border-right:1px solid var(--line)}.portal .num-in input{flex:1;border:none;background:transparent;padding:13px 16px;font-size:19px;font-family:var(--serif);color:var(--ink);outline:none;width:100%}.portal .txt-in{width:100%;max-width:420px;border:1.5px solid var(--line);border-radius:12px;background:var(--card-2);padding:14px 16px;font-size:17px;outline:none;color:var(--ink)}.portal .nav-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:8px}.portal .gn{aspect-ratio:1;border:1.5px solid var(--line);border-radius:9px;background:var(--card-2);font-weight:700;font-family:var(--serif);color:var(--ink-2);display:grid;place-items:center;cursor:pointer}.portal .gn.answered{background:var(--good-tint);border-color:var(--good);color:var(--good)}.portal .gn.current{border-color:var(--accent);border-width:2px;color:var(--accent);background:var(--accent-tint)}.portal .result-hero{display:flex;align-items:center;gap:34px;background:var(--card);border:1px solid var(--line);border-radius:20px;padding:34px;margin:28px 0;flex-wrap:wrap}.portal .score-ring{position:relative;width:150px;height:150px;flex:none}.portal .score-ring .v{position:absolute;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;font-family:var(--serif);font-size:42px;font-weight:700}.portal .result-breakdown .row{display:flex;align-items:center;gap:14px;padding:14px 0;border-bottom:1px solid var(--line-2)}.portal .result-breakdown .st{width:28px;height:28px;border-radius:50%;flex:none;display:grid;place-items:center;color:#fff;font-weight:800;font-size:13px}.portal .st.ok{background:var(--good)}.portal .st.no{background:var(--accent)}.portal .auth-wrap{min-height:calc(100vh - 66px);display:grid;place-items:center;padding:40px 20px}.portal .auth-card{width:100%;max-width:420px;background:var(--card);border:1px solid var(--line);border-radius:18px;padding:34px;box-shadow:0 24px 50px -28px rgba(var(--shadow),.4)}.portal .auth-card h1{font-size:28px;text-align:center}.portal .auth-card .sub{text-align:center;color:var(--ink-3);font-size:14px;margin:6px 0 24px}.portal .field{display:flex;flex-direction:column;gap:6px;margin-bottom:16px}.portal .field label{font-size:12.5px;font-weight:700;color:var(--ink-2)}.portal .field input,.portal .field select{width:100%;background:var(--card-2);border:1px solid var(--line);border-radius:10px;padding:12px 14px;font-size:15px;color:var(--ink);font-family:inherit}.portal .field input:focus,.portal .field select:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-tint)}.portal .auth-alt{text-align:center;font-size:13.5px;color:var(--ink-3);margin-top:18px}.portal .auth-alt a{color:var(--accent);font-weight:700;cursor:pointer}.portal .err{background:var(--accent-tint);color:var(--accent-ink);border-radius:9px;padding:10px 13px;font-size:13px;font-weight:600;margin-bottom:14px}.portal .ring{position:relative;flex:none}.portal .ring svg{transform:rotate(-90deg)}.portal .ring .val{position:absolute;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;font-family:var(--serif);font-weight:600}.portal .tiles{display:grid;grid-template-columns:repeat(4,1fr);gap:16px}.portal .tile{background:var(--card);border:1px solid var(--line);border-radius:16px;padding:18px}.portal .tile .n{font-family:var(--serif);font-size:30px;font-weight:600;line-height:1}.portal .tile .l{font-size:12.5px;color:var(--ink-3);margin-top:6px}.portal .tile .d{font-size:11px;font-weight:700;margin-top:6px}.portal .d.up{color:var(--good)}.portal .bars{display:flex;align-items:flex-end;gap:12px;height:150px;padding:8px 0}.portal .bars .b{flex:1;display:flex;flex-direction:column;align-items:center;gap:8px;justify-content:flex-end;height:100%}.portal .bars .b i{width:100%;max-width:34px;border-radius:7px 7px 3px 3px;background:var(--accent);opacity:.85}.portal .bars .b.today i{opacity:1;box-shadow:0 0 0 3px var(--accent-tint)}.portal .bars .b span{font-size:11px;color:var(--ink-3);font-weight:600}.portal .acc-row{display:flex;align-items:center;gap:12px;margin-bottom:14px}.portal .acc-row .nm{font-size:13.5px;font-weight:600;width:110px;flex:none}.portal .acc-row .track{flex:1;height:9px;border-radius:6px;background:var(--card-2);overflow:hidden}.portal .acc-row .track i{display:block;height:100%;border-radius:6px;background:var(--accent)}.portal .acc-row .pct{font-family:var(--serif);font-size:14px;font-weight:600;width:40px;text-align:right}.portal .profile-top{display:flex;align-items:center;gap:24px;background:var(--card);border:1px solid var(--line);border-radius:20px;padding:28px;margin:24px 0;flex-wrap:wrap}.portal .profile-top .av{width:96px;height:96px;border-radius:50%;background:linear-gradient(135deg,var(--accent),var(--accent-ink));color:#fff;display:grid;place-items:center;font-family:var(--serif);font-size:38px;font-weight:600;flex:none;box-shadow:0 12px 26px -10px var(--accent)}.portal .profile-top h1{font-size:30px}.portal .profile-top .role{color:var(--ink-2);margin-top:4px}.portal .profile-stats{display:flex;gap:34px;margin-left:auto;text-align:center;flex-wrap:wrap}.portal .profile-stats .n{font-family:var(--serif);font-size:24px;font-weight:600}.portal .profile-stats .l{font-size:11.5px;color:var(--ink-3)}.portal .dash-grid{display:grid;grid-template-columns:1.6fr 1fr;gap:22px;align-items:start;padding:24px 0 60px}.portal .cont-card{background:linear-gradient(135deg,var(--accent),var(--accent-ink));color:#fff;border-radius:18px;padding:26px;position:relative;overflow:hidden}.portal .cont-card .eyebrow{color:#ffffffd9}.portal .cont-card h2{color:#fff;font-size:26px;margin:6px 0}.portal .cont-card p{opacity:.9;margin-bottom:18px}.portal .cont-card .progress{background:#ffffff40}.portal .cont-card .progress i{background:#fff}.portal .quick-links{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:16px}.portal .ql{display:flex;align-items:center;gap:12px;background:var(--card);border:1px solid var(--line);border-radius:14px;padding:14px;font-weight:600;font-size:14px;cursor:pointer}.portal .ql .ic{width:38px;height:38px;border-radius:11px;display:grid;place-items:center;flex:none;background:var(--accent-tint);color:var(--accent);font-family:var(--serif)}.portal .badge-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:16px}.portal .badge{background:var(--card);border:1px solid var(--line);border-radius:16px;padding:20px;text-align:center;transition:.15s}.portal .badge:hover{transform:translateY(-3px)}.portal .badge .em{font-size:40px;line-height:1;margin-bottom:10px}.portal .badge b{font-size:14px;display:block}.portal .badge small{color:var(--ink-3);font-size:11.5px}.portal .badge.locked{opacity:.5;filter:grayscale(.7)}.portal .friend-row{display:flex;align-items:center;gap:14px;padding:14px 16px;border:1px solid var(--line);border-radius:14px;background:var(--card);margin-bottom:10px}.portal .friend-row .av{width:46px;height:46px;border-radius:50%;background:var(--card-2);display:grid;place-items:center;font-weight:800;color:var(--ink-2);flex:none}.portal .friend-row .who{flex:1}.portal .friend-row .who b{font-size:15px;display:block}.portal .friend-row .who small{color:var(--ink-3);font-size:12.5px}.portal .podium{display:flex;align-items:flex-end;justify-content:center;gap:18px;margin:20px 0 24px}.portal .pod{display:flex;flex-direction:column;align-items:center;gap:8px}.portal .pod .av{width:60px;height:60px;border-radius:50%;display:grid;place-items:center;font-weight:800;color:#fff;font-size:20px;border:4px solid var(--card)}.portal .pod .base{border-radius:14px 14px 0 0;width:90px;display:flex;align-items:flex-start;justify-content:center;padding-top:12px;font-family:var(--serif);font-size:28px;font-weight:700;color:#fff}.portal .pod.p1 .av{width:74px;height:74px;background:var(--warn)}.portal .pod.p1 .base{height:100px;background:var(--warn)}.portal .pod.p2 .av{background:var(--ink-3)}.portal .pod.p2 .base{height:74px;background:var(--ink-3)}.portal .pod.p3 .av{background:#b07a4a}.portal .pod.p3 .base{height:56px;background:#b07a4a}.portal .pod .who{font-weight:700;font-size:13.5px}.portal .pod .who small{display:block;color:var(--ink-3)}.portal .lb-table{background:var(--card);border:1px solid var(--line);border-radius:16px;overflow:hidden}.portal .lb-row{display:flex;align-items:center;gap:16px;padding:14px 20px;border-bottom:1px solid var(--line-2)}.portal .lb-row:last-child{border:none}.portal .lb-row .rk{font-family:var(--serif);font-weight:600;width:26px;color:var(--ink-3);text-align:center;font-size:16px}.portal .lb-row .av{width:38px;height:38px;border-radius:50%;background:var(--card-2);display:grid;place-items:center;font-weight:800;font-size:13px;color:var(--ink-2)}.portal .lb-row .nm{flex:1;font-weight:600}.portal .lb-row .pt{font-family:var(--serif);font-weight:600;font-size:16px}.portal .lb-row.me{background:var(--accent-tint)}.portal .lb-row.me .rk,.portal .lb-row.me .nm,.portal .lb-row.me .pt{color:var(--accent-ink)}.portal .lb-row.me .av{background:var(--accent);color:#fff}.portal .footer{border-top:1px solid var(--line);background:var(--card);margin-top:40px}.portal .footer-inner{max-width:var(--maxw);margin:0 auto;padding:40px 24px;display:grid;grid-template-columns:2fr 1fr 1fr 1fr;gap:30px}.portal .footer h4{font-family:var(--sans);font-size:12px;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-3);margin-bottom:12px}.portal .footer a{display:block;color:var(--ink-2);font-size:14px;padding:4px 0;cursor:pointer}.portal .footer a:hover{color:var(--ink)}.portal .footer .disclaimer{font-size:12px;color:var(--ink-3);max-width:320px;margin-top:14px;line-height:1.5}.portal .footer-bottom{border-top:1px solid var(--line-2);text-align:center;padding:16px;font-size:12.5px;color:var(--ink-3)}.portal .spinner{width:34px;height:34px;border:3px solid var(--line);border-top-color:var(--accent);border-radius:50%;animation:spin .8s linear infinite;margin:60px auto}.portal .empty-state{text-align:center;padding:60px 20px;color:var(--ink-3)}.portal .empty-state .em{font-size:40px;margin-bottom:12px}.portal .reveal{opacity:0;transform:translateY(12px);animation:rise .6s cubic-bezier(.2,.7,.3,1) forwards}@keyframes rise{to{opacity:1;transform:none}}@media (max-width:900px){.portal .hero-grid,.portal .detail-grid,.portal .quiz-grid,.portal .dash-grid{grid-template-columns:1fr}.portal .hero h1{font-size:40px}.portal .subj-grid,.portal .course-grid,.portal .tiles{grid-template-columns:repeat(2,1fr)}.portal .side-card{position:static}.portal .pnav-links{display:none}.portal .footer-inner{grid-template-columns:1fr 1fr}.portal .profile-stats{margin-left:0}}@media (max-width:560px){.portal .subj-grid,.portal .course-grid{grid-template-columns:1fr}}:root{--paper:#efe9db;--card:#fbf8f1;--card-2:#f4efe3;--card-3:#f0e9d9;--ink:#221d16;--ink-2:#6b6255;--ink-3:#9a9082;--line:#ded6c4;--line-2:#e9e1d1;--accent:#c23b34;--accent-ink:#a12f29;--accent-tint:#f7e3e0;--good:#3f7a4e;--good-tint:#e4efe3;--warn:#b7841c;--warn-tint:#f4ead0;--blue:#3f6ea5;--blue-tint:#e2eaf3;--focus:rgba(194,59,52,.22);--shadow:56 44 28;--sans:"Hanken Grotesk",-apple-system,BlinkMacSystemFont,sans-serif;--serif:"Fraunces",Georgia,serif}:root[data-theme=dark]{--paper:#12211b;--card:#1a2d26;--card-2:#213a31;--card-3:#1f352c;--ink:#eef1e7;--ink-2:#a9b4a4;--ink-3:#788378;--line:#2c4339;--line-2:#274036;--accent:#e2564e;--accent-ink:#ef6f68;--accent-tint:#33241f;--good:#6fbf7f;--good-tint:#1e3527;--warn:#d8a63f;--warn-tint:#33301c;--blue:#6b9ed4;--blue-tint:#1e2f42;--focus:rgba(226,86,78,.3);--shadow:0 0 0}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;background:var(--paper);color:var(--ink);font-family:var(--sans);font-size:14.5px;line-height:1.5;-webkit-font-smoothing:antialiased;background-image:radial-gradient(rgba(0,0,0,.018) 1px,transparent 1px);background-size:22px 22px}:root[data-theme=dark] body{background-image:radial-gradient(rgba(255,255,255,.02) 1px,transparent 1px)}::selection{background:var(--accent);color:#fff}h1,h2,h3,h4{margin:0;font-family:var(--serif);font-weight:500;letter-spacing:-.01em}button{font-family:inherit}input,select,textarea{font-family:inherit;color:inherit}a{color:inherit;text-decoration:none}.app{display:grid;grid-template-columns:236px 1fr;min-height:100vh}.side{position:sticky;top:0;height:100vh;border-right:1px solid var(--line);background:linear-gradient(180deg,var(--card),var(--paper));padding:22px 16px;display:flex;flex-direction:column;gap:6px}.brand{display:flex;align-items:center;gap:11px;padding:4px 8px 20px}.brand .mark{width:36px;height:36px;border-radius:9px;background:var(--ink);color:var(--paper);display:grid;place-items:center;font-family:var(--serif);font-size:21px;font-weight:600;transform:rotate(-4deg);box-shadow:2px 3px 0 var(--accent)}.brand b{font-family:var(--serif);font-size:22px;font-weight:600;letter-spacing:-.02em}.brand span{display:block;font-size:11px;color:var(--ink-3);letter-spacing:.14em;text-transform:uppercase;margin-top:-2px}.nav-label{font-size:10.5px;letter-spacing:.16em;text-transform:uppercase;color:var(--ink-3);padding:14px 10px 6px}.nav a{display:flex;align-items:center;gap:11px;padding:8px 10px;border-radius:8px;color:var(--ink-2);font-weight:500;font-size:13.5px;transition:.15s}.nav a svg{width:17px;height:17px;stroke-width:1.8;opacity:.8;fill:none;stroke:currentColor}.nav a:hover{background:var(--card-2);color:var(--ink)}.nav a.active{background:var(--ink);color:var(--paper)}.nav a.active svg{opacity:1}.side-foot{margin-top:auto;padding-top:16px;border-top:1px solid var(--line);display:flex;align-items:center;gap:10px}.avatar{width:32px;height:32px;border-radius:50%;background:var(--accent-tint);color:var(--accent-ink);display:grid;place-items:center;font-weight:700;font-size:13px}.side-foot .who{font-size:12.5px;line-height:1.25}.side-foot .who small{color:var(--ink-3);font-size:11px}.logout{margin-left:auto;border:none;background:none;color:var(--ink-3);cursor:pointer}.logout:hover{color:var(--accent)}.logout svg{width:17px;height:17px;stroke-width:1.9;fill:none;stroke:currentColor}.main{min-width:0;display:flex;flex-direction:column}.topbar{position:sticky;top:0;z-index:20;background:color-mix(in srgb,var(--paper) 88%,transparent);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-bottom:1px solid var(--line);padding:16px 30px;display:flex;align-items:center;gap:18px;flex-wrap:wrap}.crumbs{font-size:12px;color:var(--ink-3);display:flex;gap:7px;align-items:center}.crumbs b{color:var(--ink-2);font-family:var(--sans);font-weight:600}.topbar h1{font-size:25px}.topbar .grow{flex:1}.content{padding:26px 30px 60px}.two-col{display:grid;grid-template-columns:minmax(0,1.7fr) minmax(320px,1fr);gap:22px;align-items:start;max-width:1320px}.pill{display:inline-flex;align-items:center;gap:6px;font-size:11.5px;font-weight:600;padding:4px 10px;border-radius:20px;border:1px solid var(--line)}.pill.draft{background:var(--warn-tint);color:var(--warn);border-color:transparent}.pill.review{background:var(--blue-tint);color:var(--blue);border-color:transparent}.pill.published{background:var(--good-tint);color:var(--good);border-color:transparent}.pill .dot{width:6px;height:6px;border-radius:50%;background:currentColor}.iconbtn{width:34px;height:34px;border-radius:9px;border:1px solid var(--line);background:var(--card);display:grid;place-items:center;cursor:pointer;color:var(--ink-2);transition:.15s}.iconbtn:hover{color:var(--ink);border-color:var(--ink-3)}.iconbtn svg{width:17px;height:17px;stroke-width:1.8;fill:none;stroke:currentColor}.btn{border:1px solid var(--line);background:var(--card);color:var(--ink);padding:8px 15px;border-radius:9px;font-weight:600;font-size:13.5px;cursor:pointer;transition:.15s;white-space:nowrap;display:inline-flex;align-items:center;gap:8px}.btn:hover{border-color:var(--ink-3)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn.primary{background:var(--accent);border-color:var(--accent);color:#fff;box-shadow:0 1px 0 var(--accent-ink)}.btn.primary:hover{background:var(--accent-ink)}.btn.ghost{background:transparent;border-color:transparent;color:var(--ink-2)}.btn.ghost:hover{color:var(--ink);background:var(--card-2)}.btn.lg{padding:12px 22px;font-size:15px;border-radius:11px}.btn.block{width:100%;justify-content:center}.btn.danger{color:var(--accent);border-color:var(--line)}.btn.danger:hover{border-color:var(--accent);background:var(--accent-tint)}.card{background:var(--card);border:1px solid var(--line);border-radius:14px;box-shadow:0 1px 2px rgba(var(--shadow),.04)}.card+.card{margin-top:20px}.card-h{display:flex;align-items:center;gap:11px;padding:15px 18px;border-bottom:1px solid var(--line-2)}.card-h .n{width:24px;height:24px;border-radius:7px;background:var(--ink);color:var(--paper);font-family:var(--serif);font-weight:600;display:grid;place-items:center;font-size:13px}.card-h h3{font-size:16.5px}.card-h p{margin:0;font-size:11.5px;color:var(--ink-3)}.card-h .grow{flex:1}.card-b{padding:18px}.grid{display:grid;gap:14px}.grid.c2{grid-template-columns:1fr 1fr}.grid.c3{grid-template-columns:1fr 1fr 1fr}.field{display:flex;flex-direction:column;gap:6px}.field>label{font-size:11.5px;font-weight:700;letter-spacing:.03em;text-transform:uppercase;color:var(--ink-2);display:flex;gap:6px;align-items:center}.field .req{color:var(--accent)}.hint{font-size:11.5px;color:var(--ink-3)}input[type=text],input[type=number],input[type=email],input[type=password],select,textarea{width:100%;background:var(--card-2);border:1px solid var(--line);border-radius:9px;padding:9px 12px;font-size:14px;transition:.15s;color:var(--ink)}input:focus,select:focus,textarea:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--focus);background:var(--card)}textarea{resize:vertical;min-height:96px;line-height:1.55}select{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%239a9082' stroke-width='2.5'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 12px center;padding-right:32px;cursor:pointer}.seg{display:flex;background:var(--card-2);border:1px solid var(--line);border-radius:9px;padding:3px;gap:3px}.seg button{flex:1;border:none;background:transparent;padding:7px 6px;border-radius:6px;font-weight:600;font-size:12.5px;color:var(--ink-2);cursor:pointer;transition:.15s}.seg button.on{background:var(--card);color:var(--ink);box-shadow:0 1px 2px rgba(var(--shadow),.08)}.switch{display:inline-flex;align-items:center;gap:9px;cursor:pointer;-webkit-user-select:none;user-select:none;font-weight:600;font-size:13px}.switch .track{width:38px;height:22px;border-radius:20px;background:var(--line);position:relative;transition:.18s;flex:none}.switch .track:after{content:"";position:absolute;top:2px;left:2px;width:18px;height:18px;border-radius:50%;background:#fff;transition:.18s;box-shadow:0 1px 2px #00000040}.switch input{display:none}.switch input:checked+.track{background:var(--accent)}.switch input:checked+.track:after{transform:translate(16px)}.gcse-box{margin-top:14px;border:1px dashed var(--line);border-radius:11px;padding:15px;background:var(--card-2)}.rt-toolbar{display:flex;gap:2px;flex-wrap:wrap;background:var(--card-2);border:1px solid var(--line);border-bottom:none;border-radius:9px 9px 0 0;padding:5px}.rt-toolbar button{border:none;background:transparent;width:30px;height:28px;border-radius:6px;cursor:pointer;color:var(--ink-2);font-weight:700;display:grid;place-items:center;font-size:13px}.rt-toolbar button:hover{background:var(--card);color:var(--ink)}.rt-toolbar .sep{width:1px;background:var(--line);margin:4px 3px}.rt-toolbar+textarea{border-radius:0 0 9px 9px}.drop{margin-top:14px;border:1.5px dashed var(--line);border-radius:11px;padding:22px;text-align:center;color:var(--ink-3);cursor:pointer;transition:.15s;background:var(--card-2)}.drop:hover{border-color:var(--accent);color:var(--accent);background:var(--accent-tint)}.types{display:flex;flex-wrap:wrap;gap:8px}.type-chip{border:1px solid var(--line);background:var(--card-2);border-radius:10px;padding:9px 13px;cursor:pointer;display:flex;align-items:center;gap:9px;transition:.15s}.type-chip:hover{border-color:var(--ink-3)}.type-chip .ic{width:26px;height:26px;border-radius:7px;background:var(--card);display:grid;place-items:center;color:var(--ink-2);font-weight:700}.type-chip .tt{font-weight:600;font-size:13px}.type-chip .td{font-size:10.5px;color:var(--ink-3)}.type-chip.on{border-color:var(--accent);background:var(--accent-tint)}.type-chip.on .ic{background:var(--accent);color:#fff}.type-chip.on .tt{color:var(--accent-ink)}.builder{margin-top:18px;padding-top:18px;border-top:1px dashed var(--line)}.builder-label{font-size:11.5px;font-weight:700;text-transform:uppercase;letter-spacing:.03em;color:var(--ink-2)}.opt-row{display:flex;align-items:center;gap:10px;margin-bottom:9px}.opt-mark{width:26px;height:26px;border:1.6px solid var(--line);border-radius:50%;flex:none;cursor:pointer;display:grid;place-items:center;transition:.15s;background:var(--card-2)}.opt-mark.square{border-radius:7px}.opt-mark.on{border-color:var(--good);background:var(--good);color:#fff}.opt-mark svg{width:14px;height:14px;stroke:#fff;stroke-width:3;fill:none}.opt-row input{flex:1}.opt-del{width:30px;height:30px;flex:none;border:1px solid var(--line);background:var(--card-2);border-radius:8px;color:var(--ink-3);cursor:pointer;display:grid;place-items:center}.opt-del:hover{color:var(--accent);border-color:var(--accent)}.opt-del svg{width:14px;height:14px;stroke-width:2;fill:none;stroke:currentColor}.add-opt{margin-top:4px;font-size:13px;font-weight:600;color:var(--accent);background:none;border:none;cursor:pointer;display:inline-flex;align-items:center;gap:6px;padding:4px 0}.mark-note{font-size:11.5px;color:var(--ink-3);margin:2px 0 12px}.tf-row{display:flex;gap:12px}.tf-btn{flex:1;padding:16px;border:1.6px solid var(--line);background:var(--card-2);border-radius:11px;cursor:pointer;text-align:center;font-family:var(--serif);font-size:18px;font-weight:600;color:var(--ink-2);transition:.15s}.tf-btn.on{border-color:var(--good);background:var(--good-tint);color:var(--good)}.pair-row{display:grid;grid-template-columns:1fr 22px 1fr 30px;gap:8px;align-items:center;margin-bottom:9px}.pair-row .arw{color:var(--ink-3);text-align:center}.side-col{position:sticky;top:88px;display:flex;flex-direction:column;gap:20px}.preview .card-h{background:var(--ink);border-radius:14px 14px 0 0;border-bottom:none}.preview .card-h h3,.preview .card-h .n{color:var(--paper)}.preview .card-h .n{background:var(--accent);color:#fff}.paper-q{padding:20px;background:repeating-linear-gradient(var(--card),var(--card) 31px,var(--line-2) 32px)}.q-meta{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:14px}.tag{font-size:10.5px;font-weight:600;padding:3px 9px;border-radius:20px;background:var(--card-2);border:1px solid var(--line);color:var(--ink-2)}.tag.marks{background:var(--ink);color:var(--paper);border-color:transparent}.q-body{font-size:15px;line-height:1.6;min-height:24px}.q-body .empty{color:var(--ink-3);font-style:italic}.q-answers{margin-top:16px;display:flex;flex-direction:column;gap:9px}.pv-opt{display:flex;align-items:center;gap:11px;padding:10px 13px;border:1px solid var(--line);border-radius:10px;background:var(--card-2);font-size:14px}.pv-opt .bub{width:20px;height:20px;border:1.6px solid var(--ink-3);border-radius:50%;flex:none}.pv-opt.sq .bub{border-radius:6px}.pv-opt.correct{border-color:var(--good);background:var(--good-tint)}.pv-opt.correct .bub{background:var(--good);border-color:var(--good);position:relative}.pv-opt.correct .bub:after{content:"";position:absolute;left:6px;top:2px;width:5px;height:10px;border:2px solid #fff;border-top:0;border-left:0;transform:rotate(43deg)}.meta-list{display:flex;flex-direction:column;gap:14px}.chips-in{display:flex;flex-wrap:wrap;gap:6px;padding:6px;background:var(--card-2);border:1px solid var(--line);border-radius:9px}.chip{display:inline-flex;align-items:center;gap:6px;background:var(--card);border:1px solid var(--line);padding:3px 5px 3px 9px;border-radius:16px;font-size:12px;font-weight:600}.chip button{border:none;background:none;color:var(--ink-3);cursor:pointer;font-size:14px;line-height:1;padding:0 2px}.chips-in input{border:none;background:none;flex:1;min-width:80px;padding:4px}.chips-in input:focus{box-shadow:none}.login-wrap{min-height:100vh;display:grid;place-items:center;padding:40px 20px}.login-card{width:100%;max-width:400px;background:var(--card);border:1px solid var(--line);border-radius:18px;padding:34px;box-shadow:0 24px 50px -28px rgba(var(--shadow),.4)}.login-card .brand{justify-content:center;padding-bottom:8px}.login-card h1{font-size:25px;text-align:center}.login-card .sub{text-align:center;color:var(--ink-3);font-size:13px;margin:6px 0 22px}.err{background:var(--accent-tint);color:var(--accent-ink);border-radius:9px;padding:10px 13px;font-size:13px;font-weight:600;margin-bottom:14px}.qtable{width:100%;border-collapse:collapse;background:var(--card);border:1px solid var(--line);border-radius:14px;overflow:hidden}.qtable th{text-align:left;font-size:11px;font-weight:700;letter-spacing:.03em;text-transform:uppercase;color:var(--ink-2);padding:12px 14px;background:var(--card-2);border-bottom:1px solid var(--line)}.qtable td{padding:11px 14px;border-bottom:1px solid var(--line-2);font-size:13.5px;vertical-align:middle}.qtable tr:last-child td{border-bottom:none}.qtable tr:hover td{background:var(--card-2)}.qtable .qtext-cell{max-width:420px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.filters{display:flex;gap:10px;flex-wrap:wrap;align-items:center;margin-bottom:18px}.empty-state{text-align:center;padding:60px 20px;color:var(--ink-3)}.empty-state .em{font-size:40px;margin-bottom:12px}.spinner{width:34px;height:34px;border:3px solid var(--line);border-top-color:var(--accent);border-radius:50%;animation:spin .8s linear infinite;margin:60px auto}@keyframes spin{to{transform:rotate(360deg)}}@media (max-width:1080px){.two-col{grid-template-columns:1fr}.side-col{position:static}}@media (max-width:720px){.app{grid-template-columns:1fr}.side{display:none}.grid.c2,.grid.c3{grid-template-columns:1fr}}.blk-editor{display:flex;flex-direction:column;gap:12px}.blk{border:1px solid var(--line);border-radius:12px;background:var(--card-2);overflow:hidden}.blk-bar{display:flex;align-items:center;gap:8px;padding:7px 10px;background:var(--card);border-bottom:1px solid var(--line-2)}.blk-tag{display:inline-flex;align-items:center;gap:6px;font-size:11.5px;font-weight:700;color:var(--ink-2)}.blk-tag .d{width:20px;height:20px;border-radius:6px;background:var(--accent-tint);color:var(--accent-ink);display:grid;place-items:center;font-size:12px}.blk-mini{width:26px;height:26px;border:1px solid var(--line);background:var(--card-2);border-radius:7px;color:var(--ink-3);cursor:pointer;font-size:13px}.blk-mini:hover{color:var(--ink);border-color:var(--ink-3)}.blk-mini:disabled{opacity:.4;cursor:not-allowed}.blk-mini.del:hover{color:var(--accent);border-color:var(--accent)}.blk-body{padding:12px}.blk-body textarea,.blk-body input[type=text]{width:100%;background:var(--card);border:1px solid var(--line);border-radius:8px;padding:9px 11px;font-size:14px;color:var(--ink);font-family:inherit}.blk-body textarea{resize:vertical;min-height:70px;line-height:1.55}.blk-task{border-left:3px solid var(--accent);background:var(--accent-tint);border-radius:8px;padding:10px}.blk-task-lbl{font-size:11px;font-weight:800;color:var(--accent-ink);text-transform:uppercase;letter-spacing:.05em;margin-bottom:6px}.blk-task textarea{background:var(--card);font-family:var(--serif);font-size:15px}.blk-formula-prev,.blk-svg-prev{margin-top:8px;border:1px solid var(--line);border-radius:8px;padding:10px;background:var(--card);text-align:center;min-height:36px}.blk-svg-prev svg{max-width:100%;height:auto}.blk-drop{display:block;border:1.5px dashed var(--line);border-radius:10px;padding:20px;text-align:center;color:var(--ink-3);cursor:pointer;background:var(--card);font-size:13px}.blk-drop:hover{border-color:var(--accent);color:var(--accent)}.blk-mtable{border-collapse:collapse;width:100%}.blk-mtable td{border:1px solid var(--line);padding:0}.blk-mtable input{border:none;border-radius:0;background:var(--card);width:100%;padding:7px 9px}.blk-add{position:relative}.blk-addbtn{border:1.5px dashed var(--line);background:var(--card);color:var(--ink-2);border-radius:10px;padding:10px 18px;font-weight:700;font-size:13.5px;cursor:pointer}.blk-addbtn:hover{border-color:var(--accent);color:var(--accent)}.blk-menu{position:absolute;z-index:30;margin-top:6px;background:var(--card);border:1px solid var(--line);border-radius:12px;box-shadow:0 16px 40px -18px rgba(var(--shadow),.5);padding:6px;width:280px}.blk-menu button{width:100%;display:flex;align-items:center;gap:11px;padding:9px 11px;border:none;background:none;border-radius:8px;cursor:pointer;text-align:left;color:var(--ink)}.blk-menu button:hover{background:var(--card-2)}.blk-menu .mi{width:30px;height:30px;border-radius:8px;background:var(--card-2);display:grid;place-items:center;font-size:15px;flex:none}.blk-menu b{font-size:13.5px;display:block}.blk-menu small{font-size:11px;color:var(--ink-3)}.qtabs{display:flex;gap:6px;margin-bottom:18px;border-bottom:1px solid var(--line)}.qtabs button{border:none;background:none;padding:10px 14px;font-weight:700;font-size:14px;color:var(--ink-3);cursor:pointer;border-bottom:2px solid transparent;margin-bottom:-1px;display:flex;align-items:center;gap:8px}.qtabs button:hover{color:var(--ink)}.qtabs button.on{color:var(--accent);border-bottom-color:var(--accent)}.cat-chip{display:inline-flex;align-items:center;gap:8px;background:var(--accent-tint);color:var(--accent-ink);border-radius:20px;padding:5px 6px 5px 12px;font-size:12.5px;font-weight:600}.cat-chip button{border:none;background:none;color:var(--accent-ink);cursor:pointer;font-size:15px;line-height:1;padding:0 4px}.cnt{font-family:var(--serif);font-weight:600;font-size:13px;color:var(--ink-2);background:var(--card-2);border:1px solid var(--line);border-radius:20px;padding:1px 9px;min-width:32px;text-align:center}.cnt.acc{background:var(--accent);color:#fff;border-color:transparent}.qcats{display:flex;flex-direction:column;gap:10px}.qcat{border:1px solid var(--line);border-radius:12px;overflow:hidden;background:var(--card-2)}.qcat-h{display:flex;align-items:center;gap:11px;padding:11px 14px;background:var(--card)}.qcat-tog{width:24px;height:24px;border:none;background:none;cursor:pointer;color:var(--ink-3);font-size:12px;border-radius:6px;flex:none}.qcat-tog:hover{background:var(--line-2);color:var(--ink)}.qcat-ic{width:34px;height:34px;border-radius:9px;background:var(--accent-tint);color:var(--accent-ink);display:grid;place-items:center;font-family:var(--serif);font-size:17px;flex:none}.qcat-name{border:none;background:none;font-family:var(--serif);font-size:16px;font-weight:600;color:var(--ink);cursor:pointer;text-align:left;padding:0}.qcat-name:hover{color:var(--accent)}.qcat-body{padding:8px 14px 12px}.qcat-row{display:flex;align-items:center;gap:9px;padding:7px 6px;border-radius:8px;font-size:13.5px;cursor:pointer}.qcat-row:hover{background:var(--card-2)}.qcat-row.sub{padding-left:22px;color:var(--ink-2);font-size:13px}.qcat-row .leafdot{width:5px;height:5px;border-radius:50%;background:var(--ink-3);flex:none}.qcat-row b{font-weight:600}.qcat-acts{display:flex;gap:2px;margin-left:auto;opacity:0;transition:.12s}.qcat-h:hover .qcat-acts,.qcat-row:hover .qcat-acts{opacity:1}.qcat-acts .btn{padding:3px 8px;font-size:12.5px;line-height:1}.qcat-add{display:flex;gap:8px;align-items:center;padding:6px}.qcat-add input{flex:1;max-width:300px;background:var(--card);border:1px solid var(--line);border-radius:8px;padding:7px 10px;font-size:13.5px;color:var(--ink)}.qcat-add input:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--focus)}.ctree{display:flex;flex-direction:column;gap:2px}.ctree-row{display:flex;align-items:center;gap:8px;padding:6px 8px;border-radius:8px}.ctree-row:hover{background:var(--card-2)}.ctree-row:hover .ctree-actions{opacity:1}.ctree-tog{width:22px;height:22px;border:none;background:none;cursor:pointer;color:var(--ink-3);font-size:12px;flex:none;border-radius:5px}.ctree-tog:hover{background:var(--line-2);color:var(--ink)}.ctree-tog.leaf{cursor:default;color:var(--ink-3);opacity:.5}.ctree-ic{width:22px;text-align:center}.ctree-name{flex:1;font-size:14px;font-weight:600}.ctree-actions{display:flex;gap:2px;opacity:0;transition:.12s}.ctree-actions .btn{padding:3px 8px;font-size:13px;line-height:1}.ctree-actions .btn.danger:hover{color:var(--accent)}.ctree-add{display:flex;gap:8px;align-items:center;padding:6px 8px}.ctree-add input{flex:1;max-width:320px;background:var(--card-2);border:1px solid var(--line);border-radius:8px;padding:7px 10px;font-size:14px;color:var(--ink)}.ctree-add input:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--focus)}.fig-editor{width:100%}.fig-wrap{display:grid;grid-template-columns:168px 1fr;gap:14px;align-items:start}.fig-pal{display:flex;flex-direction:column;gap:6px}.fig-pal-lbl{font-size:11px;font-weight:800;letter-spacing:.05em;text-transform:uppercase;color:var(--ink-3);margin:2px 0}.fig-pal button{border:1px solid var(--line);background:var(--card);border-radius:9px;padding:8px 10px;font-size:12.5px;font-weight:600;color:var(--ink-2);cursor:pointer;display:flex;align-items:center;gap:8px;text-align:left}.fig-pal button:hover{border-color:var(--accent);color:var(--accent-ink);background:var(--accent-tint)}.fig-pal button .g{width:20px;text-align:center;font-size:15px;color:var(--ink)}.fig-stage{border:1px solid var(--line);border-radius:10px;background:#fff;padding:8px}:root[data-theme=dark] .fig-stage{background:#0f1d18}.fig-cv{width:100%;height:auto;touch-action:none;display:block;cursor:crosshair}.fig-bar{display:flex;gap:8px;margin-top:10px;flex-wrap:wrap;align-items:center}.fig-status{margin-top:6px}.fig-cv .gGrid{stroke:var(--line);stroke-width:1}.fig-cv .gGrid.maj{stroke:var(--line-2)}.fig-cv .shape{fill:color-mix(in srgb,var(--accent-tint) 70%,transparent);stroke:var(--ink);stroke-width:2.5;stroke-linejoin:round}.fig-cv .shape.sel{stroke:var(--accent)}.fig-cv .shline{stroke:var(--ink);stroke-width:2.5;fill:none;stroke-linecap:round}.fig-cv .shline.sel{stroke:var(--accent)}.fig-cv .scirc{fill:none;stroke:var(--ink);stroke-width:2.5}.fig-cv .scirc.sel{stroke:var(--accent)}.fig-cv .axis{stroke:var(--ink);stroke-width:2}.fig-cv .axis.sel{stroke:var(--accent)}.fig-cv .ahead{fill:var(--ink)}.fig-cv .figarc{stroke:var(--accent);stroke-width:2;fill:none}.fig-cv .gdot{fill:var(--ink)}.fig-cv .gdot.sel{fill:var(--accent)}.fig-cv .handle{fill:var(--card);stroke:var(--accent);stroke-width:2}.fig-cv .handle.o{fill:var(--accent)}.fig-cv .elabel{fill:var(--ink);font-size:14px;font-family:var(--sans);font-weight:600}.fig-cv .elabel.acc{fill:var(--accent-ink)}.fig-cv .axnum{fill:var(--ink-2);font-size:11px;font-family:var(--sans)}.btn.on{border-color:var(--accent);background:var(--accent-tint);color:var(--accent-ink)}.q-task{border-left:3px solid var(--accent);background:var(--accent-tint);border-radius:8px;padding:10px 12px;font-family:var(--serif);font-size:15px;margin:8px 0}.q-formula,.q-figure{text-align:center;margin:10px 0}.q-figure svg,.q-img{max-width:100%;height:auto}.q-img{border-radius:10px;margin:8px 0}.q-table{border-collapse:collapse;margin:8px 0}.q-table td{border:1px solid var(--line);padding:6px 12px}@media (max-width:720px){.fig-wrap{grid-template-columns:1fr}.fig-pal{flex-direction:row;flex-wrap:wrap}}
