@font-face{font-family:Paperlogy;font-weight:500;font-display:swap;src:url(/fonts/Paperlogy-5Medium.woff2)format("woff2")}@font-face{font-family:Paperlogy;font-weight:600;font-display:swap;src:url(/fonts/Paperlogy-6SemiBold.woff2)format("woff2")}:root{--font:"Pretendard Variable", Pretendard, "Malgun Gothic", "Apple SD Gothic Neo", system-ui, sans-serif;--title:"Paperlogy", var(--font);--bg:#f5f7fa;--surface:#fff;--sunk:#f9fafc;--ink:#292b35;--ink-2:#60636f;--ink-3:#777b88;--faint:#a2a8b6;--line:#e3e8ef;--line-2:#eef1f6;--brand:#346bdd;--brand-2:#2757b5;--brand-soft:#edf3ff;--brand-line:#c9d6ee;--gold:#936d22;--gold-soft:#faf4e7;--done:#42846d;--done-ink:#2f6a55;--done-soft:#edf6f1;--done-line:#cfe5d9;--part:#b18538;--part-ink:#8a6420;--part-soft:#fff7e8;--bad:#b86461;--bad-soft:#fcf0ef;--pen:#1d2b53;--grid:#e8eef8;--shadow:0 5px 20px #292d4210}*{box-sizing:border-box}html,body,#root{min-height:100%;margin:0}body{font-family:var(--font);color:var(--ink);background:var(--bg);letter-spacing:-.02em;-webkit-font-smoothing:antialiased}button,input,select,textarea{font:inherit;color:inherit;letter-spacing:inherit}h1,h2,h3,p{margin:0}:focus-visible{outline:3px solid var(--brand);outline-offset:2px}.sr{clip:rect(0 0 0 0);width:1px;height:1px;position:absolute;overflow:hidden}.muted{color:var(--ink-3)}.small{font-size:13px}.btn{border:1px solid var(--line);background:var(--surface);min-height:40px;color:var(--ink-2);cursor:pointer;white-space:nowrap;border-radius:10px;justify-content:center;align-items:center;gap:6px;padding:0 14px;font-size:14px;font-weight:700;display:inline-flex}.btn:hover:not(:disabled){background:var(--sunk)}.btn:disabled{opacity:.45;cursor:not-allowed}.btn.primary{background:var(--brand);border-color:var(--brand);color:#fff}.btn.primary:hover:not(:disabled){background:var(--brand-2)}.btn.green{background:var(--done);border-color:var(--done);color:#fff}.btn.ghost{background:0 0;border-color:#0000}.btn.icon{width:40px;padding:0}.btn.big{min-height:52px;font-size:17px}.btn.full{width:100%}.btn.grow{flex-grow:1}.fr{vertical-align:middle;flex-direction:column;align-items:center;margin:0 .08em;font-size:.7em;line-height:1.04;display:inline-flex}.fr>span{padding:0 .16em}.fr>span+span{border-top:.08em solid}.mixed{white-space:nowrap}.problem-expr{font-variant-numeric:tabular-nums;white-space:nowrap;font-weight:700}.grid-paper{background-color:#fff;background-image:linear-gradient(var(--grid) 1px, transparent 1px), linear-gradient(90deg, var(--grid) 1px, transparent 1px);background-position:-1px -1px;background-size:40px 40px}.grid-paper.small{background-size:20px 20px}.inkpad{touch-action:none;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;position:relative;overflow:hidden}.inkpad-c{pointer-events:none;width:100%;height:100%;position:absolute;inset:0}.brand,.logo{font-family:var(--title);color:var(--brand);font-weight:600}.landing{flex-direction:column;justify-content:center;align-items:center;gap:18px;min-height:100vh;padding:24px 16px;display:flex}.landing .brand{font-size:22px}.landing h1{font-family:var(--title);text-align:center;font-size:34px;font-weight:600}.landing-links{flex-wrap:wrap;justify-content:center;gap:16px;margin-top:12px;display:flex}.land-card{border:1px solid var(--line);background:var(--surface);width:260px;box-shadow:var(--shadow);color:var(--ink);border-radius:18px;flex-direction:column;gap:6px;padding:26px 24px;text-decoration:none;display:flex}.land-card b{font-size:20px}.land-card span{color:var(--ink-3);font-size:14px}.land-card:hover{border-color:var(--brand)}.form-err{color:var(--bad);font-size:14px;font-weight:600}.form-ok{color:var(--done-ink);font-size:14px;font-weight:600}.modal-back{z-index:50;background:#1d23304d;justify-content:center;align-items:center;padding:16px;display:flex;position:fixed;inset:0}.modal{background:var(--surface);border-radius:18px;flex-direction:column;gap:20px;width:min(560px,100%);max-height:calc(100vh - 32px);padding:22px 24px;display:flex;overflow:auto;box-shadow:0 20px 60px #1d233040}.modal-head{justify-content:space-between;align-items:center;display:flex}.modal-head h2{font-size:19px}.field{flex-direction:column;gap:8px;display:flex}.field label{font-weight:700}.field input,.field textarea{border:1px solid var(--line);background:#fff;border-radius:10px;min-width:0;padding:10px 12px;font-size:15px}.field textarea{resize:vertical;line-height:1.6}.row{gap:8px;display:flex}.row input{flex-grow:1}.row.end{justify-content:flex-end}.figure{width:100%;max-width:560px;height:auto;display:block}.problem-prompt,.ask-label,.cover-msg,.form-note{word-break:keep-all;overflow-wrap:anywhere}.chip.gold{color:var(--gold);background:var(--gold-soft);margin-left:auto}.chip.gold+.chip{margin-left:calc(var(--px,1px) * 8)}.gold-tag{color:var(--gold);background:var(--gold-soft);border-radius:999px;margin-left:6px;padding:1px 7px;font-size:12px;font-weight:750}.gold-pop{color:var(--gold);background:var(--gold-soft);border-radius:999px;margin-left:10px;padding:4px 10px;font-size:16px;font-weight:800;animation:.5s ease-out gold-pop;display:inline-block}@keyframes gold-pop{0%{opacity:0;transform:scale(1.6)}}.row.wrap{flex-wrap:wrap}.row.wrap select{border:1px solid var(--line);background:#fff;border-radius:10px;flex:200px;height:40px;padding:0 10px;font-size:14px}.gold-rule{background:var(--gold-soft);border-radius:12px;flex-wrap:wrap;align-items:center;gap:10px 14px;padding:10px 12px;display:flex}.gold-star{color:var(--ink-2);align-items:center;gap:6px;font-size:14px;font-weight:600;display:flex}.gold-star span{color:var(--gold);letter-spacing:-.1em}.gold-star input{border:1px solid var(--line);background:#fff;border-radius:8px;width:64px;height:36px;padding:0 8px;font-size:15px}.gold-rule .btn{margin-left:auto}.ibb{--px:min(calc(100vw / 1920), calc(100dvh / 1080));background:var(--bg);padding:calc(var(--px) * 24) calc(var(--px) * 36);flex-direction:column;display:flex;position:fixed;inset:0}.ibb-cards{gap:calc(var(--px) * 24);flex:1 1 0;min-height:0;display:grid}.ibb-card{border:1px solid var(--line);border-radius:calc(var(--px) * 20);box-shadow:var(--shadow);background:#fff;flex-direction:column;min-width:0;display:flex;overflow:hidden}.ibb-card.st-correct{border:2px solid var(--done)}.ibb-head{height:calc(var(--px) * 64);padding:0 calc(var(--px) * 24);border-bottom:1px solid var(--line-2);flex-shrink:0;align-items:center;display:flex}.ibb-label{font-family:var(--title);font-weight:600;font-size:calc(var(--px) * 28)}.ibb-problem{padding:calc(var(--px) * 14) calc(var(--px) * 24) 0;gap:calc(var(--px) * 6);flex-direction:column;flex-shrink:0;display:flex}.ibb-problem .problem-prompt{font-size:calc(var(--px) * 28);word-break:keep-all;color:var(--ink-2);line-height:1.45}.ibb-problem .problem-expr{font-size:calc(var(--px) * 56)}.ibb-problem .figure{max-width:calc(var(--px) * 420)}.ibb-work{min-height:0;margin:calc(var(--px) * 14) calc(var(--px) * 18) 0;border-radius:calc(var(--px) * 12);background-size:calc(var(--px) * 36) calc(var(--px) * 36);flex:1 1 0;display:flex;position:relative}.ibb-work .clean{margin:calc(var(--px) * 10) calc(var(--px) * 16)}.ibb-ink{width:100%;height:100%}.ibb-answer{height:calc(var(--px) * 100);margin:calc(var(--px) * 14) calc(var(--px) * 18) calc(var(--px) * 18);align-items:center;gap:calc(var(--px) * 14);padding:0 calc(var(--px) * 18);background:var(--brand-soft);border-radius:calc(var(--px) * 14);flex-shrink:0;display:flex}.ibb.wait{justify-content:center;align-items:center}.ibb-wait{width:min(calc(var(--px) * 1200), 100%);border:1px solid var(--line);border-radius:calc(var(--px) * 24);box-shadow:var(--shadow);padding:calc(var(--px) * 48) calc(var(--px) * 56);align-items:center;gap:calc(var(--px) * 22);text-align:center;background:#fff;flex-direction:column;display:flex}.ibb-set{font-size:calc(var(--px) * 22);color:var(--ink-3);white-space:pre;font-weight:600}.ibb-title{font-family:var(--title);font-weight:600;font-size:calc(var(--px) * 56)}.ibb-now{align-items:flex-start;gap:calc(var(--px) * 18);text-align:left;background:var(--sunk);border-radius:calc(var(--px) * 18);padding:calc(var(--px) * 22) calc(var(--px) * 28);width:100%;display:flex}.ibb-num{width:calc(var(--px) * 48);height:calc(var(--px) * 48);border-radius:calc(var(--px) * 12);background:var(--brand);color:#fff;font-family:var(--title);font-weight:600;font-size:calc(var(--px) * 26);flex-shrink:0;justify-content:center;align-items:center;display:flex}.ibb-problem.big{padding:0}.ibb-problem.big .problem-prompt{font-size:calc(var(--px) * 30);color:var(--ink);font-weight:600}.ibb-problem.big .problem-expr{font-size:calc(var(--px) * 64)}.ibb-count{gap:calc(var(--px) * 64);display:flex}.ibb-count div{flex-direction:column;align-items:center;display:flex}.ibb-count b{font-family:var(--title);font-weight:600;font-size:calc(var(--px) * 72);line-height:1.1}.ibb-count div:first-child b{color:var(--done)}.ibb-count span{font-size:calc(var(--px) * 22);color:var(--ink-3);font-weight:700}.ibb-bar{width:100%;height:calc(var(--px) * 14);background:var(--line-2);border-radius:999px;overflow:hidden}.ibb-bar span{background:var(--done);border-radius:999px;height:100%;transition:width .4s;display:block}.board,.board-login,.board-blank{--px:min(calc(100vw / 1920), calc(100dvh / 1080))}.board-blank{color:var(--ink-3);justify-content:center;align-items:center;font-size:20px;display:flex;position:fixed;inset:0}.board{background:var(--bg);gap:calc(var(--px) * 24);padding:calc(var(--px) * 20) calc(var(--px) * 36);-webkit-user-select:none;user-select:none;overscroll-behavior:none;grid-template-columns:repeat(3,minmax(0,1fr));display:grid;position:fixed;inset:0;overflow:hidden}.zone{gap:calc(var(--px) * 16);flex-direction:column;min-width:0;min-height:0;display:flex}.view{height:calc(var(--px) * 372);background:var(--surface);border:1px solid var(--line);border-radius:calc(var(--px) * 20);box-shadow:var(--shadow);flex-direction:column;flex-shrink:0;display:flex;overflow:hidden}.zone.st-correct .view{border:2px solid var(--done)}.view-head{height:calc(var(--px) * 60);align-items:center;gap:calc(var(--px) * 12);padding:0 calc(var(--px) * 20);border-bottom:1px solid var(--line-2);flex-shrink:0;display:flex}.num{width:calc(var(--px) * 36);height:calc(var(--px) * 36);border-radius:calc(var(--px) * 10);background:var(--brand);color:#fff;font-family:var(--title);font-weight:600;font-size:calc(var(--px) * 20);justify-content:center;align-items:center;display:flex}.num.off{background:var(--line);color:var(--ink-3)}.who{font-size:calc(var(--px) * 26);text-overflow:ellipsis;white-space:nowrap;min-width:0;font-weight:700;overflow:hidden}.who.off{color:var(--ink-3);font-size:calc(var(--px) * 22)}.chip{font-size:calc(var(--px) * 16);padding:calc(var(--px) * 6) calc(var(--px) * 14);border-radius:999px;flex-shrink:0;margin-left:auto;font-weight:700}.chip.blue{color:var(--brand-2);background:var(--brand-soft)}.chip.amber{color:var(--part-ink);background:var(--part-soft)}.chip.green{color:var(--done);background:var(--done-soft)}.view-body{min-height:0;padding:0 calc(var(--px) * 32);flex-direction:column;flex-grow:1;justify-content:center;display:flex;position:relative}.view .problem{gap:calc(var(--px) * 12);flex-direction:column;display:flex}.view .problem.dim{opacity:.5}.view .problem-prompt{font-size:calc(var(--px) * 22);color:var(--ink-2);line-height:1.45}.view .problem:not(:has(.problem-expr)) .problem-prompt{font-size:calc(var(--px) * 33);color:var(--ink);font-weight:650;line-height:1.5}.view .problem-expr{font-size:calc(var(--px) * 76);line-height:1.15}.shown{inset:calc(var(--px) * 12) calc(var(--px) * 20);gap:calc(var(--px) * 8);flex-direction:column;display:flex;position:absolute}.shown-work{flex-grow:1;width:100%;min-height:0}.shown-answer{height:calc(var(--px) * 84);align-items:center;gap:calc(var(--px) * 14);padding:0 calc(var(--px) * 16);background:var(--brand-soft);border-radius:calc(var(--px) * 14);flex-shrink:0;display:flex}.shown-ans{flex-grow:1;min-width:0;height:100%}.stamp{right:calc(var(--px) * 12);bottom:calc(var(--px) * 100);width:calc(var(--px) * 116);height:calc(var(--px) * 116);border:calc(var(--px) * 5) solid var(--done);color:var(--done);font-family:var(--title);font-weight:600;font-size:calc(var(--px) * 34);background:#fffc;border-radius:50%;justify-content:center;align-items:center;animation:.35s ease-out stamp;display:flex;position:absolute;transform:rotate(-12deg)}@keyframes stamp{0%{opacity:0;transform:rotate(-12deg)scale(1.8)}}.write{background:var(--surface);border:1px solid var(--line);border-radius:calc(var(--px) * 20);min-height:0;box-shadow:var(--shadow);flex-direction:column;flex-grow:1;display:flex;overflow:hidden}.board .grid-paper{background-size:calc(var(--px) * 40) calc(var(--px) * 40)}.board .grid-paper.small{background-size:calc(var(--px) * 21) calc(var(--px) * 21)}.inkpad.work{flex-grow:1;min-height:0}.pad-cover{padding:calc(var(--px) * 20);background:#ffffffa6;justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.zone.st-closed .pad-cover{background:#fffffff0}.cover-msg{font-size:calc(var(--px) * 22);color:var(--ink-2);text-align:center;border:1px solid var(--line);padding:calc(var(--px) * 12) calc(var(--px) * 24);box-shadow:var(--shadow);background:#fff;border-radius:999px;font-weight:700;line-height:1.45}.zone.st-correct .cover-msg{color:var(--done-ink);border-color:var(--done-line)}.retry-note{top:calc(var(--px) * 12);right:calc(var(--px) * 12);font-size:calc(var(--px) * 17);color:var(--part-ink);background:var(--part-soft);padding:calc(var(--px) * 6) calc(var(--px) * 14);pointer-events:none;border-radius:999px;font-weight:700;position:absolute}.answer-row{height:calc(var(--px) * 112);align-items:center;gap:calc(var(--px) * 16);padding:0 calc(var(--px) * 20);border-top:1px solid var(--line-2);flex-shrink:0;display:flex;position:relative}.ans-label{font-family:var(--title);font-weight:600;font-size:calc(var(--px) * 28);color:var(--brand);flex-shrink:0}.inkpad.answer{width:calc(var(--px) * 300);height:calc(var(--px) * 84);border:2px dashed var(--brand-line);border-radius:calc(var(--px) * 14)}.zone.st-correct .inkpad.answer{border:2px solid var(--done)}.unit{font-size:calc(var(--px) * 26);color:var(--ink-2);font-weight:700}.hint{left:calc(var(--px) * 70);top:calc(var(--px) * -26);background:var(--ink);color:#fff;font-size:calc(var(--px) * 18);padding:calc(var(--px) * 8) calc(var(--px) * 16);pointer-events:none;border-radius:999px;font-weight:700;position:absolute}.tools{height:calc(var(--px) * 84);align-items:center;gap:calc(var(--px) * 10);padding:0 calc(var(--px) * 16);background:var(--sunk);border-top:1px solid var(--line-2);flex-shrink:0;display:flex}.tool{width:calc(var(--px) * 66);height:calc(var(--px) * 64);border-radius:calc(var(--px) * 14);border:1px solid var(--line);color:var(--ink-2);justify-content:center;align-items:center;gap:calc(var(--px) * 2);font-size:calc(var(--px) * 13);cursor:pointer;touch-action:manipulation;background:#fff;flex-direction:column;font-weight:700;display:flex}.tool svg,.submit svg{width:calc(var(--px) * 26);height:calc(var(--px) * 26)}.tool.on{border:2px solid var(--brand);background:var(--brand-soft);color:var(--brand-2)}.tool.warn{border:2px solid var(--bad);background:var(--bad-soft);color:var(--bad)}.tool:disabled,.submit:disabled{opacity:.4}.submit{height:calc(var(--px) * 64);padding:0 calc(var(--px) * 30);border-radius:calc(var(--px) * 14);background:var(--brand);color:#fff;align-items:center;gap:calc(var(--px) * 8);font-size:calc(var(--px) * 22);cursor:pointer;touch-action:manipulation;border:0;margin-left:auto;font-weight:700;display:flex}.board-conn,.board-notice{left:50%;top:calc(var(--px) * 10);background:var(--ink);color:#fff;font-size:calc(var(--px) * 18);padding:calc(var(--px) * 8) calc(var(--px) * 18);z-index:10;border-radius:999px;font-weight:700;position:fixed;transform:translate(-50%)}.board-notice{top:auto;bottom:calc(var(--px) * 110);background:var(--bad)}.fs-btn{top:calc(var(--px) * 4);right:calc(var(--px) * 4);width:calc(var(--px) * 40);height:calc(var(--px) * 40);border-radius:calc(var(--px) * 10);color:var(--ink-3);z-index:10;background:#fffc;border:0;justify-content:center;align-items:center;display:flex;position:fixed}.fs-btn svg{width:60%;height:60%}.debug{z-index:20;color:#fff;background:#1d2330e6;border-radius:8px;flex-direction:column;gap:2px;max-width:260px;padding:8px 10px;font:12px/1.5 ui-monospace,monospace;display:flex;position:fixed;bottom:8px;left:8px}.debug label{flex-direction:column;display:flex}.debug .no{color:#ffb3a8}.debug .ok{color:#a8e6c3}.board-login{justify-content:center;align-items:center;padding:16px;display:flex;position:fixed;inset:0}.login-card{background:var(--surface);border:1px solid var(--line);width:min(460px,100%);box-shadow:var(--shadow);border-radius:20px;flex-direction:column;gap:14px;padding:30px 28px;display:flex}.login-card h1{font-family:var(--title);font-size:28px;font-weight:600}.login-card p{color:var(--ink-2);line-height:1.5}.login-card input{border:1px solid var(--line);border-radius:12px;height:52px;padding:0 16px;font-size:18px}.ask-wrap{left:calc(var(--px) * 16);right:calc(var(--px) * 16);bottom:calc(var(--px) * 14);z-index:3;position:absolute}.ask{border:2px solid var(--brand);border-radius:calc(var(--px) * 18);box-shadow:0 calc(var(--px) * -6) calc(var(--px) * 26) #292d4220;padding:calc(var(--px) * 16) calc(var(--px) * 20);align-items:center;gap:calc(var(--px) * 16);background:#fff;animation:.18s ease-out ask-in;display:flex}@keyframes ask-in{0%{opacity:0;transform:translateY(12px)}}.ask.warn{border-color:var(--part)}.ask-reading{align-items:center;gap:calc(var(--px) * 14);font-size:calc(var(--px) * 24);color:var(--ink-2);padding:calc(var(--px) * 10) 0;font-weight:700;display:flex}.spinner{width:calc(var(--px) * 28);height:calc(var(--px) * 28);border:calc(var(--px) * 4) solid var(--brand-soft);border-top-color:var(--brand);border-radius:50%;animation:.8s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.ask-main{gap:calc(var(--px) * 2);flex-direction:column;min-width:0;display:flex}.ask-label{font-size:calc(var(--px) * 18);color:var(--ink-2);font-weight:700}.ask.warn .ask-label{color:var(--part-ink);font-size:calc(var(--px) * 22)}.ask-sub{font-size:calc(var(--px) * 16);color:var(--ink-3)}.ask-text{font-size:calc(var(--px) * 58);color:var(--brand-2);white-space:nowrap;font-weight:750;line-height:1.15}.ask-unit{font-size:calc(var(--px) * 26);color:var(--ink-2);font-weight:700}.ask-btns{align-items:stretch;gap:calc(var(--px) * 8);flex-direction:column;flex-shrink:0;margin-left:auto;display:flex}.ask-go,.ask-alt{height:calc(var(--px) * 52);padding:0 calc(var(--px) * 22);border-radius:calc(var(--px) * 12);font-size:calc(var(--px) * 19);touch-action:manipulation;font-weight:700}.ask-go{background:var(--brand);color:#fff;border:0}.ask-alt{border:1px solid var(--line);color:var(--ink-2);background:#fff}.ask-link{color:var(--brand-2);font-size:calc(var(--px) * 16);padding:calc(var(--px) * 4);background:0 0;border:0;font-weight:700;text-decoration:underline}.ask.keypad{align-items:stretch;gap:calc(var(--px) * 10);flex-direction:column}.kp-top{align-items:center;gap:calc(var(--px) * 10);display:flex}.kp-show{height:calc(var(--px) * 70);border:2px solid var(--brand-line);border-radius:calc(var(--px) * 12);background:var(--brand-soft);padding:0 calc(var(--px) * 18);font-size:calc(var(--px) * 44);color:var(--brand-2);white-space:nowrap;flex-grow:1;align-items:center;font-weight:750;display:flex;overflow:hidden}.kp-show.bad{border-color:var(--bad)}.kp-ph{font-size:calc(var(--px) * 18);color:var(--faint);font-weight:600}.kp-close{width:calc(var(--px) * 48);height:calc(var(--px) * 48);border:1px solid var(--line);border-radius:calc(var(--px) * 12);color:var(--ink-3);background:#fff;justify-content:center;align-items:center;display:flex}.kp-keys{gap:calc(var(--px) * 7);grid-template-columns:repeat(5,minmax(0,1fr));display:grid}.kp-key{height:calc(var(--px) * 50);border:1px solid var(--line);border-radius:calc(var(--px) * 10);background:var(--sunk);font-size:calc(var(--px) * 24);color:var(--ink);touch-action:manipulation;font-weight:700}.kp-key.soft{font-size:calc(var(--px) * 17);color:var(--ink-2);background:#fff}.kp-key.go{background:var(--brand);border-color:var(--brand);color:#fff;font-size:calc(var(--px) * 19)}.kp-help{font-size:calc(var(--px) * 14);color:var(--ink-3)}.form-note{left:calc(var(--px) * 12);right:calc(var(--px) * 12);top:calc(var(--px) * 12);font-size:calc(var(--px) * 21);color:#6e4f15;background:var(--part-soft);padding:calc(var(--px) * 10) calc(var(--px) * 16);border-radius:calc(var(--px) * 14);pointer-events:none;text-align:center;border:1px solid #efd9ae;font-weight:700;position:absolute}.clean{flex-grow:1;min-height:0;position:relative}.clean-ink{width:100%;height:100%;animation:.9s ease-in forwards ink-out;position:absolute;inset:0}@keyframes ink-out{60%{opacity:.25;filter:blur(1px)}to{opacity:0;filter:blur(3px)}}.clean-lines{padding:0 calc(var(--px) * 8);font-variant-numeric:tabular-nums;flex-direction:column;justify-content:center;gap:.18em;font-weight:650;line-height:1.2;display:flex;position:absolute;inset:0}.cline{white-space:nowrap;opacity:0;animation:.45s ease-out forwards line-in}@keyframes line-in{0%{opacity:0;background:var(--brand-soft);transform:translateY(.25em)}to{opacity:1;background:0 0;transform:none}}.tidying{font-size:calc(var(--px) * 15);color:var(--brand-2);background:var(--brand-soft);padding:calc(var(--px) * 4) calc(var(--px) * 12);border-radius:999px;font-weight:700;position:absolute;top:0;right:0}.shown-read{font-size:calc(var(--px) * 50);color:var(--brand-2);white-space:nowrap;font-weight:750}.view .figure{max-width:100%;margin-top:calc(var(--px) * -4)}.view .problem.long:not(:has(.problem-expr)) .problem-prompt{font-size:calc(var(--px) * 28)}.code-pill{color:var(--ink-2);background:var(--brand-soft);border:1px solid var(--brand-line);white-space:nowrap;border-radius:999px;padding:6px 12px;font-size:13px}.code-pill b{color:var(--brand-2);margin:0 4px}.ib-start{flex:1 1 0;justify-content:center;align-items:center;padding:20px;display:flex}.start-card{border:1px solid var(--line);width:min(560px,100%);box-shadow:var(--shadow);background:#fff;border-radius:18px;flex-direction:column;gap:16px;padding:26px 28px;display:flex}.start-card h2{font-size:20px}.start-card select,.restart select{border:1px solid var(--line);background:#fff;border-radius:10px;height:42px;padding:0 10px;font-size:15px}.start-opts{flex-wrap:wrap;gap:10px;display:flex}.restart{flex-direction:column;gap:8px;display:flex}.filters{flex-wrap:wrap;gap:6px;display:flex}.chipbtn{border:1px solid var(--line);height:30px;color:var(--ink-2);cursor:pointer;background:#fff;border-radius:999px;padding:0 12px;font-size:13px;font-weight:700}.chipbtn.on{border-color:var(--brand);background:var(--brand-soft);color:var(--brand-2)}.tiles{flex:1 1 0;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));grid-auto-rows:138px;align-content:start;gap:10px;min-height:0;padding:2px;display:grid;overflow-y:auto}.tile{border:1px solid var(--line);background:#fff;border-radius:12px;position:relative;overflow:hidden}.tile.picked{border:2px solid var(--brand)}.tile.st-submitted{box-shadow:inset 0 0 0 2px #efd9ae}.tile.st-correct{box-shadow:inset 0 0 0 2px var(--done-line)}.tile-main{text-align:left;cursor:pointer;background:0 0;border:0;flex-direction:column;gap:4px;width:100%;height:100%;padding:6px 8px;display:flex}.tile-head{justify-content:space-between;align-items:center;padding-right:26px;font-size:13px;display:flex}.tile-head b{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.tile-at{color:var(--ink-3);flex-shrink:0;font-size:11px}.tile-ink{background-size:12px 12px;border-radius:6px;flex:1 1 0;justify-content:center;align-items:center;min-height:0;display:flex;overflow:hidden}.tile-ink svg{width:100%;height:100%}.tile-empty{color:var(--faint);font-size:12px}.tile-foot{justify-content:space-between;align-items:center;gap:6px;min-height:22px;font-size:12px;display:flex}.tile-st{color:var(--brand-2);font-weight:700}.tile-st.st-submitted{color:var(--part-ink)}.tile-st.st-correct{color:var(--done)}.tile-read{font-size:15px;font-weight:750}.tile-read.wrong{color:var(--bad)}.tile-read.correct{color:var(--done-ink)}.tile-pick{border:2px solid var(--line);color:#fff;cursor:pointer;background:#fff;border-radius:7px;justify-content:center;align-items:center;width:24px;height:24px;padding:0;display:flex;position:absolute;top:5px;right:5px}.tile-pick.on{background:var(--brand);border-color:var(--brand)}.pickbar{border:1px solid var(--line);background:#fff;border-radius:14px;flex-wrap:wrap;flex-shrink:0;align-items:center;gap:10px;padding:10px 14px;font-size:14px;display:flex}.pickbar.on{border:2px solid var(--brand);padding:9px 13px}.pickbar .grow{flex:1 1 0}.check-inline{color:var(--ink-2);align-items:center;gap:6px;font-size:13px;display:flex}.modal.detail{width:min(860px,100%)}.modal.detail .modal-head{gap:12px}.modal.detail .modal-head h2{margin-right:auto}.detail-ink{border:1px solid var(--line);background-size:20px 20px;border-radius:12px;height:min(52vh,460px);display:flex}.detail-ink svg{width:100%;height:100%}.detail-clean{flex-direction:column;gap:6px;padding:16px 22px;font-size:30px;font-weight:650;display:flex}.t-msg{min-height:100vh;color:var(--ink-2);text-align:center;justify-content:center;align-items:center;padding:16px;display:flex}.t{flex-direction:column;height:100dvh;display:flex;overflow:hidden}.t-top{background:var(--surface);border-bottom:1px solid var(--line);z-index:5;flex-shrink:0;align-items:center;gap:16px;height:64px;padding:0 20px;display:flex}.t-top .logo{margin-right:4px;font-size:21px}.seg{background:var(--bg);border:1px solid var(--line);border-radius:12px;gap:4px;padding:4px;display:flex}.seg button{height:36px;color:var(--ink-2);cursor:pointer;background:0 0;border:0;border-radius:9px;padding:0 16px;font-size:14px;font-weight:700}.seg button.on{background:var(--brand);color:#fff}.seg button:disabled{opacity:.45;cursor:not-allowed}.seg.small{border-radius:10px;padding:3px}.seg.small button{height:32px;padding:0 12px;font-size:13px}.seg.small button.on{color:var(--brand-2);background:#fff;box-shadow:0 1px 3px #292d4220}.seg.full button{flex:1 1 0}.pick select{border:1px solid var(--line);background:#fff;border-radius:10px;height:40px;padding:0 10px;font-size:14px;font-weight:600}.conn{color:var(--ink-2);align-items:center;gap:7px;margin-left:auto;font-size:14px;display:flex}.dot{border-radius:50%;width:9px;height:9px}.dot.ok{background:var(--done)}.dot.bad{background:var(--part)}.t-banner{background:var(--part-soft);color:var(--part-ink);padding:10px 20px;font-size:14px;font-weight:600}.t-banner button{color:var(--brand-2);cursor:pointer;background:0 0;border:0;font-weight:700;text-decoration:underline}.t-main{flex:1 1 0;grid-template-columns:270px minmax(0,1fr) 320px;gap:16px;min-height:0;padding:16px 20px;display:grid}.t-panel{background:var(--surface);border:1px solid var(--line);border-radius:16px;flex-direction:column;min-height:0;display:flex;overflow:hidden}.panel-head{justify-content:space-between;align-items:center;padding:16px 18px 10px;display:flex}.panel-head h2,.t-center-head h2{font-size:17px}.panel-foot{border-top:1px solid var(--line-2);flex-direction:column;gap:10px;padding:14px 16px 16px;display:flex}.count{color:var(--part-ink);background:var(--part-soft);border-radius:999px;padding:2px 9px;font-size:13px;font-weight:700}.pad{padding:4px 18px 16px}.plist{flex-direction:column;flex:1 1 0;gap:4px;min-height:0;margin:0;padding:0 10px 10px;list-style:none;display:flex;overflow-y:auto}.pitem{text-align:left;cursor:pointer;background:#fff;border:1px solid #0000;border-radius:10px;align-items:center;gap:10px;width:100%;padding:9px 10px;display:flex}.pitem:hover{background:var(--sunk)}.pitem.now{background:var(--brand-soft);border-color:var(--brand);cursor:default}.pnum{width:28px;height:28px;font-family:var(--title);background:var(--bg);color:var(--ink-3);border-radius:8px;flex-shrink:0;justify-content:center;align-items:center;font-size:14px;font-weight:600;display:flex}.pitem.done .pnum{background:var(--done-soft);color:var(--done)}.pitem.now .pnum{background:var(--brand);color:#fff}.ptext{flex-direction:column;flex-grow:1;min-width:0;display:flex}.ptitle{font-size:14px;font-weight:650;line-height:1.35}.pmeta{color:var(--ink-3);align-items:center;gap:6px;font-size:12px;display:flex}.stars{gap:1px;display:inline-flex}.pstate{color:var(--brand-2);font-size:12px;font-weight:700}.t-center{flex-direction:column;gap:12px;min-width:0;min-height:0;display:flex}.t-center-head{justify-content:space-between;align-items:baseline;display:flex}.zones{flex:1 1 0;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;min-height:0;display:grid}.zcard{background:var(--surface);border:1px solid var(--line);border-radius:14px;flex-direction:column;gap:8px;min-width:0;min-height:0;padding:12px;display:flex;overflow:hidden}.zcard.st-correct{border:2px solid var(--done);padding:11px}.zcard.st-submitted{border:2px solid var(--part);padding:11px}.zhead{justify-content:space-between;font-size:13px;font-weight:700;display:flex}.zname{color:var(--ink-3)}.zstate{color:var(--faint)}.zstate.st-open{color:var(--brand-2)}.zstate.st-submitted,.zstate.st-retry{color:var(--part-ink)}.zstate.st-correct{color:var(--done)}.zselect{border:1px solid var(--line);background:#fff;border-radius:9px;width:100%;height:40px;padding:0 10px;font-size:15px;font-weight:700}.zselect.empty{border-color:var(--brand);background:var(--brand-soft);color:var(--brand-2)}.problem.mini{flex-wrap:wrap;flex-shrink:0;align-items:baseline;gap:6px;min-height:40px;display:flex}.problem.mini .problem-prompt{color:var(--ink-3);font-size:13px;line-height:1.45}.problem.mini:not(:has(.problem-expr)) .problem-prompt{-webkit-line-clamp:2;color:var(--ink);-webkit-box-orient:vertical;font-size:14px;font-weight:600;display:-webkit-box;overflow:hidden}.problem.mini .problem-expr{font-size:26px}.zpreview{border:1px solid var(--line-2);background-size:16px 16px;border-radius:10px;flex:1 1 0;min-height:56px;position:relative;overflow:hidden}.zpreview svg{width:100%;height:100%;position:absolute;inset:0}.zanswer{align-items:center;gap:8px;display:flex}.zanswer .ans-label,.check .ans-label{font-family:var(--title);color:var(--brand);font-weight:600}.zans{border:1px solid var(--line);background-size:11px 11px;border-radius:8px;width:96px;height:44px}.zans svg,.check-ans svg{width:100%;height:100%;display:block}.zright{color:var(--ink-3);align-items:center;gap:6px;margin-left:auto;font-size:12px;display:flex}.answer-text{color:var(--ink);font-size:17px;font-weight:750}.answer-text .unit{color:var(--ink-2);font-size:13px}.zactions{flex-wrap:wrap;align-items:center;gap:6px;min-height:40px;display:flex}.zactions .ghost{margin-left:auto}.t-strip{background:var(--surface);border:1px solid var(--line);border-radius:14px;flex-shrink:0;align-items:center;gap:12px;padding:10px 14px;font-size:14px;display:flex}.checks{flex-direction:column;flex:1 1 0;gap:12px;min-height:0;padding:0 14px 14px;display:flex;overflow-y:auto}.check{border:2px solid var(--part);border-radius:12px;flex-direction:column;gap:10px;padding:12px;display:flex}.check.done{border:1px solid var(--line);background:var(--sunk)}.check-head{justify-content:space-between;font-size:14px;display:flex}.check-head .ok{color:var(--done);font-weight:700}.check-body{align-items:center;gap:12px;display:flex}.check-ans{border:1px solid var(--line);background-size:16px 16px;border-radius:8px;width:140px;height:64px}.check-key{color:var(--ink-3);font-size:13px;line-height:1.6}.check-actions{gap:8px;display:flex}.t-toast{background:var(--ink);color:#fff;z-index:60;border-radius:999px;padding:10px 18px;font-size:14px;font-weight:600;position:fixed;bottom:24px;left:50%;transform:translate(-50%)}@media (width<=1180px){.t{height:auto;min-height:100vh;overflow:visible}.t-main{grid-template-columns:1fr}.plist,.checks,.zones{flex:none}.zpreview{aspect-ratio:4/3;flex:none}}@media (width<=760px){.zones{grid-template-columns:1fr}.t-top{flex-wrap:wrap;height:auto;padding:10px 16px}}.zcard>:not(.zpreview){flex-shrink:0}.zactions{flex-wrap:nowrap}.zactions .btn{padding:0 10px}.readline{background:var(--sunk);border-radius:8px;justify-content:space-between;align-items:center;gap:8px;padding:6px 10px;font-size:13px;display:flex}.read-val{color:var(--ink-3)}.read-val .fr,.read-val span{color:var(--ink);font-weight:750}.read-val{font-size:13px}.read-val>span:not(.fr){font-size:16px}.read-check{font-weight:700}.read-check.ok{color:var(--done)}.read-check.bad{color:var(--bad)}.read-check.part{color:var(--part-ink)}.read-check.muted{color:var(--ink-3)}.switch-row{color:var(--ink-2);cursor:pointer;justify-content:space-between;align-items:center;gap:12px;font-size:14px;font-weight:600;display:flex}.switch{appearance:none;cursor:pointer;background:#c9d1de;border-radius:999px;flex-shrink:0;width:44px;height:26px;transition:background .15s;position:relative}.switch:after{content:"";background:#fff;border-radius:50%;width:20px;height:20px;transition:transform .15s;position:absolute;top:3px;left:3px}.switch:checked{background:var(--brand)}.switch:checked:after{transform:translate(18px)}.problem.mini .figure{flex-basis:100%;max-width:100%}.ibk,.ibk-login,.ibk-msg{--px:min(calc(100vw / 1700), calc(100dvh / 900))}.ibk-msg{min-height:100vh;color:var(--ink-3);justify-content:center;align-items:center;display:flex}.ibk{background:var(--bg);overscroll-behavior:none;flex-direction:column;display:flex;position:fixed;inset:0}.ibk-top{background:var(--surface);border-bottom:1px solid var(--line);flex-shrink:0;align-items:center;gap:16px;height:56px;padding:0 18px;display:flex}.ibk-title{white-space:nowrap;text-overflow:ellipsis;flex:1 1 0;min-width:0;font-size:15px;overflow:hidden}.ibk-title b{font-family:var(--title);margin-left:4px;font-size:16px;font-weight:600}.dots{flex-shrink:0;gap:6px;display:flex}.dot-n{border:1px solid var(--line);width:28px;height:28px;color:var(--faint);font-family:var(--title);background:#fff;border-radius:8px;justify-content:center;align-items:center;font-size:13px;font-weight:600;display:flex}.dot-n.ok{background:var(--done-soft);border-color:var(--done-line);color:var(--done)}.dot-n.sent{background:var(--part-soft);color:var(--part-ink);border-color:#efd9ae}.dot-n.now{background:var(--brand);border-color:var(--brand);color:#fff}.ibk-me{text-align:right;white-space:nowrap;flex:1 1 0;font-size:15px;font-weight:700}.ibk-conn{color:var(--part-ink);background:var(--part-soft);border-radius:999px;margin-left:8px;padding:3px 8px;font-size:12px;font-weight:700}.ibk-main{flex:1 1 0;grid-template-columns:minmax(320px,.82fr) minmax(0,1.18fr);gap:14px;min-height:0;padding:14px;display:grid}.ibk-left{flex-direction:column;gap:12px;min-height:0;display:flex;overflow-y:auto}.pcard,.acard,.ibk-right{background:var(--surface);border:1px solid var(--line);box-shadow:var(--shadow);border-radius:16px}.pcard{flex-direction:column;gap:10px;padding:16px 18px;display:flex}.pcard-head{align-items:center;gap:10px;display:flex}.pnum-big{background:var(--brand);color:#fff;width:36px;height:36px;font-family:var(--title);border-radius:10px;justify-content:center;align-items:center;font-size:19px;font-weight:600;display:flex}.pkind{color:var(--ink-2);background:var(--bg);border:1px solid var(--line);border-radius:999px;padding:3px 9px;font-size:12px;font-weight:700}.ibk-problem{flex-direction:column;gap:8px;display:flex}.ibk-problem .problem-prompt{color:var(--ink-2);font-size:17px;line-height:1.55}.ibk-problem:not(:has(.problem-expr)) .problem-prompt{color:var(--ink);font-size:20px;font-weight:600}.ibk-problem .problem-expr{font-size:40px;line-height:1.2}.acard{flex-direction:column;gap:8px;padding:4px 6px 12px;display:flex}.acard.st-correct{border:2px solid var(--done)}.answer-row.ibk-ans{border-top:0;gap:12px;height:96px;padding:0 12px}.answer-row.ibk-ans .ans-label{font-size:22px}.answer-row.ibk-ans .inkpad.answer{border-radius:12px;flex:1 1 0;width:auto;max-width:340px;height:80px}.answer-row.ibk-ans .unit{font-size:20px}.answer-row.ibk-ans .hint{padding:6px 12px;font-size:14px;top:-18px;left:50px}.after{justify-content:space-between;align-items:center;gap:12px;padding:0 12px;display:flex}.after-msg{color:var(--part-ink);font-size:17px;font-weight:700}.after-msg.correct{color:var(--done);font-size:20px}.after-sub{color:var(--ink-3);padding:0 12px;font-size:14px;font-weight:600}.after-sub.warn{color:var(--part-ink)}.ibk-right{flex-direction:column;min-height:0;display:flex;overflow:hidden}.ibk-right .inkpad.work{flex:1 1 0;min-height:0}.ibk .grid-paper{background-size:32px 32px}.ibk .grid-paper.small{background-size:20px 20px}.ibk .tools{height:auto;padding:10px 12px}.ibk-wait{flex:1 1 0;justify-content:center;align-items:center;padding:16px;display:flex}.wait-card{border:1px solid var(--line);box-shadow:var(--shadow);color:var(--ink-2);text-align:center;word-break:keep-all;background:#fff;border-radius:18px;padding:28px 34px;font-size:20px;font-weight:700}.ibk-notice{background:var(--bad);color:#fff;z-index:10;border-radius:999px;padding:9px 16px;font-size:14px;font-weight:700;position:fixed;bottom:20px;left:50%;transform:translate(-50%)}.ibk-login{justify-content:center;align-items:center;min-height:100vh;padding:16px;display:flex}.login-card.wide{width:min(760px,100%)}.name-grid{grid-template-columns:repeat(auto-fill,minmax(130px,1fr));gap:8px;max-height:60vh;display:grid;overflow-y:auto}.name-btn{border:1px solid var(--line);cursor:pointer;background:#fff;border-radius:12px;align-items:center;gap:8px;height:52px;padding:0 12px;font-size:16px;font-weight:700;display:flex}.name-btn:hover{border-color:var(--brand);background:var(--brand-soft)}.name-num{font-family:var(--title);color:var(--brand);min-width:20px;font-size:14px}@media (width<=760px){.ibk-main{grid-template-rows:auto minmax(320px,1fr);grid-template-columns:1fr;overflow-y:auto}.dots{display:none}}
