:root{--bg: #f8fafc;--bg-subtle: #f1f5f9;--card: #ffffff;--card-hi: #f8fafc;--border: #e2e8f0;--border-soft: #cbd5e1;--text: #0f172a;--dim: #475569;--faint: #64748b;--primary: #4f46e5;--primary-hover: #4338ca;--primary-tint: rgba(79, 70, 229, .08);--primary-line: rgba(79, 70, 229, .4);--green: #16a34a;--green-strong: #15803d;--green-tint: rgba(22, 163, 74, .09);--green-line: rgba(22, 163, 74, .45);--danger: #dc2626;--danger-tint: rgba(220, 38, 38, .08);--radius: 12px;--radius-sm: 8px;--shadow-sm: 0 1px 3px 0 rgba(0, 0, 0, .06), 0 1px 2px -1px rgba(0, 0, 0, .06);--shadow-md: 0 4px 6px -1px rgba(0, 0, 0, .07), 0 2px 4px -2px rgba(0, 0, 0, .05);--shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, .08), 0 4px 6px -4px rgba(0, 0, 0, .04);--font: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;color-scheme:light}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;background:var(--bg);color:var(--text);font-family:var(--font);font-size:14px;line-height:1.5;-webkit-font-smoothing:antialiased}button{font:inherit;color:inherit;cursor:pointer}input,textarea,select{font:inherit;color:inherit}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:#cbd5e1;border-radius:6px;border:2px solid var(--bg)}::-webkit-scrollbar-thumb:hover{background:#94a3b8}.app{display:flex;flex-direction:column;height:100%}.topbar{display:flex;align-items:center;gap:14px;padding:12px 24px;background:#fff;border-bottom:1px solid var(--border);box-shadow:var(--shadow-sm);flex:none;z-index:10}.topbar__mark{width:36px;height:36px;border-radius:10px;background:linear-gradient(135deg,#4f46e5,#06b6d4);display:grid;place-items:center;color:#fff;box-shadow:0 2px 6px #4f46e54d;flex:none}.topbar__title{font-size:16px;font-weight:700;color:#0f172a;letter-spacing:-.01em}.topbar__sub{font-size:12px;color:var(--faint);margin-top:1px}.topbar__spacer{flex:1}.layout{display:grid;grid-template-columns:350px 1fr;flex:1;min-height:0;overflow:hidden}.sidebar{background:#fff;border-right:1px solid var(--border);padding:24px 18px 40px;overflow-x:hidden;overflow-y:auto;display:flex;flex-direction:column;gap:24px;min-width:0;max-width:100%;box-sizing:border-box}.main{background:var(--bg);overflow-y:auto;padding:32px 40px 80px;min-width:0}.main__head{margin-bottom:24px}.main__title{font-size:26px;font-weight:800;color:#0f172a;letter-spacing:-.02em;margin:0}.main__desc{color:var(--dim);font-size:14px;margin:6px 0 0}.label{font-size:11px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--dim);margin-bottom:10px}.segmented{display:grid;grid-auto-flow:column;grid-auto-columns:1fr;gap:3px;background:#f1f5f9;border:1px solid var(--border);border-radius:var(--radius);padding:3px;max-width:100%;box-sizing:border-box}.segmented__btn{display:flex;align-items:center;justify-content:center;gap:7px;padding:8px 10px;border:0;border-radius:9px;background:transparent;color:var(--dim);font-size:12.5px;font-weight:600;white-space:nowrap;transition:all .14s ease}.segmented__btn:hover:not(.is-active){color:#0f172a;background:#fff9}.segmented__btn.is-active{background:#fff;color:#0f172a;box-shadow:var(--shadow-sm);font-weight:700}.segmented__btn:disabled{opacity:.4;cursor:not-allowed}.segmented--sm .segmented__btn{padding:6px 8px;font-size:12px}.dropzone{border:1.5px dashed #cbd5e1;border-radius:var(--radius);background:#f8fafc;padding:24px 18px;text-align:center;color:var(--dim);transition:all .14s ease;cursor:pointer;display:block;width:100%}.dropzone:hover,.dropzone.is-over{border-color:var(--primary);background:#eef2ff;color:var(--primary)}.dropzone.is-done{border-color:var(--green-line);background:var(--green-tint);color:var(--green-strong);font-weight:600}.dropzone.is-error{border-color:#f87171;background:var(--danger-tint);color:var(--danger)}.dropzone__title{font-size:13.5px;font-weight:650;margin-top:8px}.dropzone__hint{font-size:11.5px;color:var(--faint);margin-top:3px}.dropzone.is-done .dropzone__hint{color:#166534}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;width:100%;padding:11px 14px;border-radius:var(--radius-sm);border:1px solid var(--border);background:#fff;color:#0f172a;font-size:13.5px;font-weight:600;box-shadow:var(--shadow-sm);transition:all .14s ease}.btn:hover:not(:disabled){background:#f8fafc;border-color:#cbd5e1;box-shadow:var(--shadow-md)}.btn:disabled{opacity:.45;cursor:not-allowed;box-shadow:none}.btn--primary{background:linear-gradient(135deg,#4f46e5,#6366f1);color:#fff;border-color:#4f46e5;box-shadow:0 2px 6px #4f46e547}.btn--primary:hover:not(:disabled){background:linear-gradient(135deg,#4338ca,#4f46e5);border-color:#4338ca;color:#fff;box-shadow:0 4px 10px #4f46e559}.btn--ghost{background:transparent;box-shadow:none;border-color:transparent}.btn--ghost:hover:not(:disabled){background:#f1f5f9;border-color:var(--border)}.btn--auto{width:auto}.btn--sm{padding:7px 11px;font-size:12px}.btn--danger{color:var(--danger);border-color:#fecaca;background:#fff5f5;box-shadow:none}.btn--danger:hover:not(:disabled){background:#fee2e2;border-color:#fca5a5}.icon-btn{background:transparent;border:0;padding:5px;border-radius:6px;color:var(--faint);display:grid;place-items:center;transition:all .12s ease}.icon-btn:hover{color:var(--danger);background:var(--danger-tint)}.field{display:block;margin-bottom:12px}.field__label{display:block;font-size:11.5px;color:var(--dim);margin-bottom:5px;font-weight:600}.input,.textarea,.select{width:100%;background:#fff;border:1px solid var(--border-soft);border-radius:var(--radius-sm);padding:8px 10px;font-size:13px;color:#0f172a;outline:none;transition:all .12s ease}.input:focus,.textarea:focus,.select:focus{border-color:var(--primary);box-shadow:0 0 0 3px #4f46e51f}.input::placeholder,.textarea::placeholder{color:#94a3b8}.textarea{resize:vertical;line-height:1.6}.input--sm{padding:6px 8px;font-size:12.5px}.checkbox{display:flex;align-items:center;gap:8px;font-size:12.5px;color:var(--dim);cursor:pointer;padding:3px 0;font-weight:500}.checkbox input{accent-color:var(--primary);width:15px;height:15px;cursor:pointer}.disclosure{border-top:1px solid var(--border);padding-top:16px}.disclosure__toggle{display:flex;align-items:center;justify-content:space-between;width:100%;background:none;border:0;padding:0 0 12px;color:var(--dim);font-size:11px;font-weight:700;letter-spacing:.08em;text-transform:uppercase}.disclosure__toggle:hover{color:var(--text)}.note{font-size:12px;color:var(--faint);line-height:1.55}.note--warn{color:#b45309}.note--error{color:var(--danger)}.badge{display:inline-flex;align-items:center;gap:8px;padding:9px 12px;border-radius:var(--radius-sm);font-size:11.5px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;width:100%;justify-content:center}.badge--ready{background:var(--green-tint);color:var(--green-strong);border:1px solid var(--green-line)}.badge--review{background:#d977061a;color:#b45309;border:1px solid rgba(217,119,6,.35)}.items{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:20px;align-items:start}.item{border:1px solid var(--border);border-radius:var(--radius);background:var(--card);padding:18px;display:flex;flex-direction:column;gap:14px;box-shadow:var(--shadow-sm);transition:all .14s ease}.item:hover{border-color:#cbd5e1;box-shadow:var(--shadow-md)}.item__head{display:flex;align-items:center;justify-content:space-between}.item__name{font-size:11px;font-weight:750;letter-spacing:.09em;text-transform:uppercase;color:var(--dim);background:none;border:0;padding:0;text-align:left;width:100%}.item__name:focus{outline:none;color:var(--text)}.item__body{min-height:165px;display:flex;flex-direction:column;gap:12px}.item__thumb{width:100%;height:150px;object-fit:contain;border-radius:var(--radius-sm);border:1px solid var(--border);background:#f8fafc}.item__filemeta{display:flex;align-items:center;gap:8px;font-size:12.5px;color:var(--dim);word-break:break-all}.item-add{border:1.5px dashed #cbd5e1;border-radius:var(--radius);background:#fff;color:var(--faint);min-height:200px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;font-size:13.5px;font-weight:600;box-shadow:var(--shadow-sm);transition:all .14s ease}.item-add:hover{border-color:var(--primary);color:var(--primary);background:#f5f3ff}.spinner{width:15px;height:15px;flex:none;border:2px solid rgba(255,255,255,.4);border-top-color:#fff;border-radius:50%;animation:spin .7s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.busy{display:flex;align-items:center;gap:10px;font-size:12.5px;color:var(--dim)}.modal-backdrop{position:fixed;inset:0;background:#0f172a73;display:flex;align-items:center;justify-content:center;padding:32px;z-index:60;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.modal{background:#fff;border:1px solid var(--border);border-radius:18px;width:min(940px,100%);max-height:100%;display:flex;flex-direction:column;overflow:hidden;box-shadow:var(--shadow-lg)}.modal__head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;padding:18px 24px;border-bottom:1px solid var(--border);flex:none}.modal__title{font-size:17px;font-weight:700;color:#0f172a;margin:0}.modal__sub{font-size:12.5px;color:var(--faint);margin:3px 0 0}.modal__body{overflow-y:auto;padding:22px 24px;display:flex;flex-direction:column;gap:20px;background:#f8fafc}.modal__foot{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px 24px;border-top:1px solid var(--border);flex:none;background:#fff}.modal__foot .btn{width:auto}.grid-2{display:grid;grid-template-columns:1fr 1fr;gap:0 14px}.grid-3{display:grid;grid-template-columns:repeat(3,1fr);gap:0 10px}.part-block{border:1px solid var(--border);border-radius:var(--radius-sm);padding:16px;background:#fff;box-shadow:var(--shadow-sm)}.part-block__head{display:flex;gap:10px;align-items:center;margin-bottom:14px}.q-row{display:grid;grid-template-columns:52px 1fr 62px 58px 62px auto;gap:8px;align-items:start;padding:8px 0;border-top:1px solid var(--border)}.q-row--sub{padding-left:26px;grid-template-columns:44px 1fr 62px 58px 62px auto}.q-row__ctl{display:flex;gap:2px}.q-head{display:grid;grid-template-columns:52px 1fr 62px 58px 62px auto;gap:8px;font-size:10.5px;letter-spacing:.07em;text-transform:uppercase;color:var(--faint);padding-bottom:6px}.or-tag{font-size:10.5px;letter-spacing:.1em;color:#b45309;padding:6px 0 2px;font-weight:700}.preview{display:flex;flex-direction:column;align-items:center;gap:26px;padding:24px 20px 60px;background:#cbd5e1;border-radius:var(--radius)}.preview__page{box-shadow:0 20px 45px #00000042,0 6px 16px #00000024;border:1.5px solid #475569;border-radius:4px;transform-origin:top center;background:#fff}.preview__caption{font-size:12px;color:var(--faint);letter-spacing:.05em;font-weight:500}.preview__empty{text-align:center;color:var(--faint);padding:90px 20px}.export-stage{position:fixed;top:0;left:0;width:794px;height:1123px;overflow:hidden;pointer-events:none;z-index:-1;opacity:0}.export-stage>*{position:absolute;top:0;left:0}.toast{position:fixed;bottom:22px;left:50%;transform:translate(-50%);background:#0f172a;border:1px solid #1e293b;color:#fff;padding:10px 20px;border-radius:999px;font-size:13px;font-weight:550;box-shadow:0 10px 25px #0003;z-index:80;display:flex;align-items:center;gap:10px}.toast--error{background:#991b1b;border-color:#b91c1c;color:#fff}@media(max-width:900px){.layout{grid-template-columns:1fr}.sidebar{border-right:0;border-bottom:1px solid var(--border)}.main{padding:24px 20px 60px}}.preview__warn{max-width:794px;text-align:center;border:1px solid rgba(217,119,6,.35);background:#fffbeb;color:#92400e;border-radius:var(--radius-sm);padding:10px 16px;margin:0;font-size:12.5px}.chip-row{display:flex;flex-wrap:wrap;gap:6px;margin-top:6px}.chip{padding:5px 12px;border-radius:999px;border:1px solid var(--border-soft);background:#f1f5f9;color:#334155;font-size:12px;font-weight:600;cursor:pointer;transition:all .14s ease}.chip:hover{border-color:#94a3b8;background:#e2e8f0;color:#0f172a}.chip--on{background:#4f46e5;border-color:#4f46e5;color:#fff;font-weight:700;box-shadow:0 1px 3px #4f46e54d}.preview__toolbar{display:flex;align-items:center;gap:16px;flex-wrap:wrap;margin-bottom:14px;padding:10px 16px;background:#fff;border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-sm);width:100%;max-width:900px}.preview__hint{flex:1;min-width:200px;font-size:12px;color:#64748b}.preview__sizer{display:flex;align-items:center;gap:7px}.preview__sizer-label{font-size:10.5px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:#64748b}.preview__sizer-value{min-width:42px;text-align:center;font-size:12.5px;font-weight:700;color:#0f172a}.width-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin-top:6px}.width-field{display:flex;flex-direction:column;gap:4px}.width-field__label{font-size:11px;font-weight:650;letter-spacing:.05em;text-transform:uppercase;color:#475569}.width-field__row{display:flex;align-items:center;border:1px solid #cbd5e1;background:#f8fafc;border-radius:8px;overflow:hidden;height:34px;transition:all .12s ease}.width-field__row:focus-within{border-color:var(--primary);box-shadow:0 0 0 3px #4f46e51f;background:#fff}.width-field__step{width:28px;height:100%;border:0;background:#f1f5f9;color:#334155;font-size:16px;font-weight:700;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .12s ease}.width-field__step:hover{background:#e2e8f0;color:var(--primary)}.width-field__input{flex:1;min-width:0;height:100%;border:0;background:transparent;color:#0f172a;font-size:13px;font-weight:700;text-align:center;padding:0 4px;-moz-appearance:textfield}.width-field__input::-webkit-outer-spin-button,.width-field__input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.width-field__input:focus{outline:none}.field__note{margin:6px 0 0;font-size:11px;line-height:1.5;color:#64748b;word-break:break-word}.type-row{display:flex;align-items:center;gap:6px;margin-top:6px;max-width:100%;box-sizing:border-box}.type-row__value{min-width:42px;text-align:center;font-size:12px;font-weight:700;color:#0f172a}.type-row__gap{flex:1}.chip--sq{width:30px;padding:5px 0;text-align:center;border-radius:8px;flex:none}.linkish{background:none;border:0;padding:0;color:#22c55e;font:inherit;text-decoration:underline;cursor:pointer}.linkish:hover{color:#4ade80}.sheet{--fs: 14.6px;--ink: #000000;--rule: #000000;--muted: #000000;width:794px;height:1123px;background:#fff;color:#000;font-family:Times New Roman,Times,Georgia,serif;--fit: 1;--pm-top: 42px;--pm-right: 46px;--pm-bottom: 42px;--pm-left: 46px;--cp-top: 5px;--cp-right: 7px;--cp-bottom: 5px;--cp-left: 7px;--cut-display: block;--off-header-x: 0px;--off-header-y: 0px;--off-body-x: 0px;--off-body-y: 0px;--row-min-h: 0px;--lh: 1.36;--part-fs: 1;--part-weight: bold;--part-style: normal;--instr-fs: 1;--instr-weight: bold;--instr-style: normal;font-size:calc(var(--fs) * var(--fit));line-height:var(--lh);padding:calc(var(--pm-top) * var(--fit)) calc(var(--pm-right) * var(--fit)) calc(var(--pm-bottom) * var(--fit)) calc(var(--pm-left) * var(--fit));overflow:hidden;display:flex;flex-direction:column}.sheet--sans{font-family:Arial,Helvetica,Segoe UI,sans-serif}.sheet--split{padding:0;display:block}.sheet__half{height:561px;padding:calc(var(--pm-top) * .62 * var(--fit, 1)) calc(var(--pm-right) * .87 * var(--fit, 1)) calc(var(--pm-bottom) * .62 * var(--fit, 1)) calc(var(--pm-left) * .87 * var(--fit, 1));overflow:hidden;display:flex;flex-direction:column}.sheet__cut{display:var(--cut-display, block);height:1px;border-top:1px dashed #999999;position:relative}.sheet__cut-label{display:var(--cut-display, block);position:absolute;top:-8px;right:40px;background:#fff;padding:0 8px;font-family:Arial,Helvetica,sans-serif;font-size:8px;letter-spacing:.14em;color:#999;text-transform:uppercase}.sheet__header{flex:none;position:relative;left:calc(var(--off-header-x) * var(--fit, 1));top:calc(var(--off-header-y) * var(--fit, 1))}.sheet__header--left{text-align:left}.sheet__header--center{text-align:center}.sheet__institution{font-size:calc(var(--inst-fs, 1.25) * 1em * var(--heading-scale, 1));font-weight:var(--inst-weight, bold);font-style:var(--inst-style, normal);letter-spacing:.01em;line-height:1.3}.sheet__department,.sheet__examtitle,.sheet__coursetitle{font-size:calc(1.06em * var(--heading-scale, 1));font-weight:700;margin-top:1px}.sheet__header--caps .sheet__institution,.sheet__header--caps .sheet__department,.sheet__header--caps .sheet__examtitle,.sheet__header--caps .sheet__coursetitle{text-transform:uppercase}.sheet__dateline{display:flex;justify-content:space-between;align-items:baseline;gap:16px;margin:calc(6px * var(--fit, 1)) 0 calc(3px * var(--fit, 1));font-weight:700;text-align:left;color:#000}.sheet__dateline-right{text-align:right;font-weight:700;color:#000}.sheet__regrow{text-align:right;margin-bottom:8px}.sheet__reglabel{font-size:.84em;vertical-align:middle}.sheet__regbox{display:inline-block;width:calc(168px * var(--fit, 1));height:1.55em;border:1px solid var(--rule);margin-left:7px;vertical-align:middle}.sheet__rule{border-top:1.5px solid var(--rule);margin:9px 0}.sheet__rule--thin{border-top:1px solid var(--rule);margin:7px 0}.sheet__meta{display:flex;justify-content:space-between;gap:16px;font-size:.92em;margin-top:2px}.sheet__meta-col{display:flex;flex-direction:column;gap:2px}.sheet__meta-col--right{text-align:right}.sheet__course{font-weight:700}.sheet__body{flex:1;min-height:0;overflow:hidden;position:relative;left:calc(var(--off-body-x) * var(--fit, 1));top:calc(var(--off-body-y) * var(--fit, 1))}.sheet__part{text-align:center;font-weight:700;font-size:1.02em;letter-spacing:.05em;margin:12px 0 3px}.sheet__instruction{text-align:center;font-size:.88em;font-style:italic;margin-bottom:7px}.sheet__table{width:100%;border-collapse:collapse}.sheet__table td,.sheet__table th{vertical-align:top;padding:calc(var(--cp-top) * var(--fit, 1)) calc(var(--cp-right) * var(--fit, 1)) calc(var(--cp-bottom) * var(--fit, 1)) calc(var(--cp-left) * var(--fit, 1))}.sheet__q-row{height:calc(var(--row-min-h) * var(--fit, 1))}.sheet__q-row td{height:calc(var(--row-min-h) * var(--fit, 1));box-sizing:border-box}.sheet__table--grid td,.sheet__table--grid th{border:1.2px solid #000000}.sheet__table--lines td,.sheet__table--lines th{border-bottom:1.2px solid #000000}.sheet__table--none td,.sheet__table--none th{border:0;padding:4px 7px 4px 0}.sheet__table th{font-size:.84em;letter-spacing:.02em;text-align:center;font-weight:800;color:#000;background:#e5e7eb}.sheet__part-cell{text-align:center;font-size:calc(1em * var(--part-fs));font-weight:800;font-style:var(--part-style);color:#000}.sheet__part-meta{text-align:center;font-weight:800;color:#000}.sheet__instr-cell{display:table-cell;font-size:calc(1em * var(--instr-fs));font-weight:700;font-style:var(--instr-style);color:#000}.sheet__instr-text{display:inline-block;color:#000}.sheet__instr-formula{float:right;font-weight:800;font-style:var(--instr-style);color:#000;padding-left:18px}.sheet__part{font-size:calc(1.02em * var(--part-fs));font-weight:800;font-style:var(--part-style);color:#000}.sheet__instruction{font-size:calc(.88em * var(--instr-fs));font-weight:700;font-style:var(--instr-style);color:#000}.sheet__col-no,.sheet__col-marks{text-align:center;font-weight:800;color:#000;font-size:1.04em}.sheet__col-level,.sheet__col-co,.sheet__col-po{text-align:center;font-weight:700;color:#000}.sheet__q-text{text-align:justify;color:#000;font-weight:500;line-height:var(--lh, 1.36)}.sheet__sub{display:flex;gap:7px;margin-top:4px}.sheet__sub-label{flex:none;font-weight:700;color:#000}.sheet__or{text-align:center;font-weight:800;letter-spacing:.08em;padding:3px 0;color:#000}.sheet__inline-marks{float:right;font-weight:800;color:#000;padding-left:12px}.sheet__footer{flex:none;margin-top:auto;padding-top:10px;font-size:.8em;color:var(--muted);display:flex;justify-content:space-between;border-top:1px solid #dddddd}.sheet__overflow{font-size:.8em;color:#b45252;text-align:center;padding-top:6px}.sheet__half .sheet__rule{margin:6px 0}.sheet__half .sheet__part{margin:8px 0 2px}.sheet__half .sheet__table td{padding:calc(var(--cp-top) * var(--fit, 1)) calc(var(--cp-right) * var(--fit, 1)) calc(var(--cp-bottom) * var(--fit, 1)) calc(var(--cp-left) * var(--fit, 1))}.sheet__half .sheet__footer{padding-top:6px}.sheet__sub-inline{display:inline}.sheet__editable{outline:none;border-radius:2px;transition:background-color .12s ease,box-shadow .12s ease;cursor:text}.sheet__editable:hover{background:#22c55e21}.sheet__editable:focus{background:#22c55e29;box-shadow:0 0 0 1px #15803d8c}.sheet__editable:empty:before{content:attr(data-placeholder);color:#a0a0a0;font-style:italic}.sheet--move .sheet__editable{cursor:inherit}.sheet--move .sheet__editable:hover,.sheet--move .sheet__editable:focus{background:none;box-shadow:none}.sheet__group{cursor:grab;outline:1px dashed rgba(34,197,94,.55);outline-offset:3px}.sheet__group:hover{outline-color:#22c55ee6}.sheet__group--on{cursor:grabbing;outline:2px solid #16a34a;background:#22c55e12}
