:root{--color-bg: #0f1115;--color-surface: #1a1d24;--color-surface-2: #23272f;--color-border: #2e333d;--color-text: #e8eaed;--color-text-dim: #9aa1ac;--color-primary: #4f8cff;--color-primary-text: #ffffff;--color-correct: #2fbf71;--color-incorrect: #ef5b5b;--radius: 12px;--gap: clamp(.5rem, 1.5vw, 1rem);--container-max: 960px;--touch-min: 44px}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;background:var(--color-bg);color:var(--color-text);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif;font-size:clamp(14px,1.4vw + 8px,17px);-webkit-tap-highlight-color:transparent}button{font:inherit;color:inherit}.app{min-height:100vh;min-height:100dvh;display:grid;grid-template-rows:1fr auto;padding:env(safe-area-inset-top) env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left)}.app>:not(.app__credit){width:100%;min-width:0}.app__credit{padding:1.25rem 1rem calc(1.25rem + env(safe-area-inset-bottom));border-top:1px solid var(--color-border);text-align:center;font-size:.8rem;color:var(--color-text-dim)}.app__credit-link{color:var(--color-text-dim);text-decoration:underline}.app__credit-link:hover{color:var(--color-primary)}.btn{min-height:var(--touch-min);padding:.5rem 1.1rem;border-radius:var(--radius);border:1px solid var(--color-border);background:var(--color-surface-2);cursor:pointer;font-size:clamp(.9rem,1vw + .6rem,1rem)}.btn:disabled{opacity:.4;cursor:not-allowed}.btn--primary{background:var(--color-primary);color:var(--color-primary-text);border-color:var(--color-primary)}.btn--ghost{background:transparent}.catalog{max-width:min(1400px,95vw);margin:0 auto;padding:clamp(1rem,3vw,2.5rem)}.catalog__title{font-size:clamp(1.5rem,3vw,2.2rem);margin-bottom:1rem}.catalog__list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:var(--gap)}.catalog__card{display:flex;align-items:stretch;gap:.5rem;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);overflow:hidden}.catalog__card-main{flex:1 1 auto;min-width:0;text-align:left;background:transparent;border:none;color:inherit;cursor:pointer;padding:.9rem 1.1rem;display:flex;flex-direction:column;gap:.5rem}.catalog__card-head{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap}.catalog__card-name{font-weight:600;font-size:1.05rem}.catalog__mode{margin-left:auto;flex:0 0 auto;font-size:.7rem;font-weight:700;color:var(--color-primary);border:1px solid var(--color-primary);border-radius:999px;padding:.05rem .55rem;white-space:nowrap}.catalog__card-meta{font-size:.85rem;color:var(--color-text-dim)}.catalog__progress{display:flex;align-items:center;gap:.6rem}.catalog__progress-bar{flex:1 1 auto;height:8px;border-radius:4px;background:var(--color-surface-2);overflow:hidden}.catalog__progress-fill{height:100%;background:var(--color-primary);transition:width .2s ease}.catalog__progress-text{flex:0 0 auto;font-size:.75rem;color:var(--color-text-dim);white-space:nowrap}.catalog__card-reset{flex:0 0 auto;align-self:center;margin-right:.75rem;padding:.4rem .85rem;border-radius:var(--radius);border:1px solid var(--color-border);background:var(--color-surface-2);color:var(--color-text-dim);cursor:pointer;min-height:var(--touch-min);white-space:nowrap}.catalog__card-reset:hover:not(:disabled){border-color:var(--color-incorrect);color:var(--color-incorrect)}.catalog__card-reset:disabled{opacity:.35;cursor:not-allowed}.catalog--loading,.catalog--error,.runner--loading,.runner--error{padding:2rem;text-align:center;color:var(--color-text-dim)}.runner{max-width:var(--container-max);margin:0 auto;padding:clamp(.75rem,2.5vw,2rem);display:flex;flex-direction:column;gap:var(--gap)}.runner__header{display:flex;align-items:center;gap:var(--gap);flex-wrap:wrap}.runner__progress{flex:1;min-width:180px}.runner__progress-bar{height:6px;border-radius:3px;background:var(--color-surface-2);overflow:hidden}.runner__progress-fill{height:100%;background:var(--color-primary);transition:width .2s ease}.runner__progress-text{font-size:.8rem;color:var(--color-text-dim)}.runner__card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);padding:clamp(1rem,3vw,1.75rem);display:flex;flex-direction:column;gap:1rem}.runner__question{font-size:clamp(1rem,1.4vw + .7rem,1.25rem);font-weight:600;white-space:pre-wrap}.runner__question .q-line{display:block}.runner__question .q-line+.q-line{margin-top:.4rem}.runner__unsupported{color:var(--color-incorrect);padding:1rem;border:1px dashed var(--color-incorrect);border-radius:var(--radius)}.runner__footer{display:flex;justify-content:space-between;gap:var(--gap)}.question-body{display:flex;flex-direction:column;gap:1rem}.option-list{display:flex;flex-direction:column;gap:.6rem}.option{display:flex;align-items:center;gap:.75rem;min-height:var(--touch-min);padding:.65rem .9rem;border-radius:var(--radius);border:1px solid var(--color-border);background:var(--color-surface-2);text-align:left;cursor:pointer}.option__letter{flex:0 0 auto;width:1.6rem;height:1.6rem;display:flex;align-items:center;justify-content:center;border-radius:50%;background:var(--color-bg);font-weight:700;font-size:.85rem}.option__text{flex:1}.option__line{display:block}.option__line+.option__line{margin-top:.2rem}.option:has(.option__text--config){align-items:flex-start}.option__text--config{white-space:pre-wrap;overflow-wrap:anywhere;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:.82em;line-height:1.5;text-align:left;-moz-tab-size:4;tab-size:4}.config{width:100%;max-width:640px;margin:0 auto}.config__header{margin-bottom:1rem}.config__card{border:1px solid var(--color-border);background:var(--color-surface);border-radius:var(--radius);padding:1.25rem}.config__title{margin:0 0 .25rem;font-size:clamp(1.2rem,4vw,1.6rem)}.config__meta{color:var(--color-muted, #8a8f98);font-size:.9rem;margin-bottom:1.25rem}.config__options{display:flex;flex-direction:column;gap:1rem;margin-bottom:1.5rem}.config__option{display:flex;flex-wrap:wrap;align-items:center;gap:.75rem;justify-content:space-between}.config__start{width:100%}.switch{display:flex;align-items:flex-start;gap:.75rem;cursor:pointer;flex:1 1 auto;min-width:0}.switch input{position:absolute;opacity:0;width:0;height:0}.switch__track{flex:0 0 auto;position:relative;width:2.6rem;height:1.5rem;border-radius:999px;background:var(--color-border);transition:background .15s ease;margin-top:.1rem}.switch__track:after{content:"";position:absolute;top:2px;left:2px;width:calc(1.5rem - 4px);height:calc(1.5rem - 4px);border-radius:50%;background:#fff;transition:transform .15s ease}.switch input:checked+.switch__track{background:var(--color-primary)}.switch input:checked+.switch__track:after{transform:translate(1.1rem)}.switch input:focus-visible+.switch__track{outline:2px solid var(--color-primary);outline-offset:2px}.switch__label{display:flex;flex-direction:column;gap:.15rem}.switch__name{font-weight:600}.switch__desc{font-size:.82rem;color:var(--color-muted, #8a8f98)}.option--chosen{border-color:var(--color-primary)}.option--correct{border-color:var(--color-correct);background:color-mix(in srgb,var(--color-correct) 18%,var(--color-surface-2))}.option--incorrect{border-color:var(--color-incorrect);background:color-mix(in srgb,var(--color-incorrect) 18%,var(--color-surface-2))}.option:disabled{cursor:default}.question-actions{display:flex;align-items:center;justify-content:space-between;gap:var(--gap);flex-wrap:wrap}.question-hint{font-size:.85rem;color:var(--color-text-dim)}.dnd-root{gap:1.25rem}.dnd-section__title{font-size:.85rem;color:var(--color-text-dim);margin-bottom:.4rem;text-transform:uppercase;letter-spacing:.04em}.dnd-pool{display:flex;flex-wrap:wrap;gap:.5rem;min-height:calc(var(--touch-min) + .5rem);padding:.6rem;border:1px dashed var(--color-border);border-radius:var(--radius);background:var(--color-surface-2)}.dnd-pool--over{border-color:var(--color-primary)}.dnd-pool__empty{color:var(--color-text-dim);font-size:.85rem;padding:.4rem}.dnd-zones{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,200px),1fr));gap:.75rem}.dnd-zone{border:1px solid var(--color-border);border-radius:var(--radius);background:var(--color-surface);padding:.6rem;min-height:5rem}.dnd-zone__label{font-weight:600;font-size:.9rem;margin-bottom:.4rem}.dnd-zone__items{display:flex;flex-wrap:wrap;gap:.4rem;min-height:var(--touch-min)}.dnd-zone--over{border-color:var(--color-primary)}.dnd-zone--full{opacity:.7}.dnd-zone--correct{border-color:var(--color-correct)}.dnd-zone--incorrect{border-color:var(--color-incorrect)}.dnd-chip{min-height:var(--touch-min);display:inline-flex;align-items:center;padding:.4rem .75rem;border-radius:8px;background:var(--color-primary);color:var(--color-primary-text);cursor:grab;touch-action:none;-webkit-user-select:none;user-select:none;font-size:.9rem}.dnd-chip--overlay{cursor:grabbing;box-shadow:0 6px 16px #00000059}.dnd-chip--correct{background:var(--color-correct)}.dnd-chip--incorrect{background:var(--color-incorrect)}.image-zoom__inline{cursor:zoom-in;border-radius:var(--radius);overflow:hidden;max-width:100%}.image-zoom__inline img{display:block;width:100%;max-height:320px;object-fit:contain;background:var(--color-bg)}.image-zoom__overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#000000e6;display:flex;align-items:center;justify-content:center;z-index:1000;overflow:hidden;touch-action:none;padding:env(safe-area-inset-top) env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left)}.image-zoom__img{max-width:92vw;max-height:92vh;transition:transform .05s linear;touch-action:none}.image-zoom__close{position:absolute;top:max(1rem,env(safe-area-inset-top));right:max(1rem,env(safe-area-inset-right));width:var(--touch-min);height:var(--touch-min);border-radius:50%;border:1px solid rgba(255,255,255,.45);background:#0000008c;backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px);box-shadow:0 2px 8px #00000073;color:#fff;font-size:1.1rem;line-height:1;cursor:pointer;z-index:1001;transition:background .15s ease}.image-zoom__close:hover,.image-zoom__close:focus-visible{background:#000000bf;outline:none}.result-badge{display:flex;align-items:center;gap:.6rem;padding:.6rem .9rem;border-radius:var(--radius);font-size:.9rem}.result-badge--correct{background:color-mix(in srgb,var(--color-correct) 20%,transparent);color:var(--color-correct)}.result-badge--incorrect{background:color-mix(in srgb,var(--color-incorrect) 20%,transparent);color:var(--color-incorrect)}.lab-tag{display:inline-block;margin-left:.5rem;padding:.1rem .4rem;font-size:.7rem;font-weight:700;letter-spacing:.04em;color:var(--color-primary-text);background:var(--color-primary);border-radius:4px;vertical-align:middle}.lab-exam{height:100%;display:flex;flex-direction:column;gap:0;padding:clamp(.5rem,2vw,1rem);max-width:1400px;margin:0 auto}.lab-exam__topbar{display:flex;align-items:center;gap:var(--gap);flex-wrap:wrap;padding-bottom:.75rem;border-bottom:1px solid var(--color-border)}.lab-exam__title{font-weight:600}.lab-exam__progress-text,.lab-exam__autosave{font-size:.85rem;color:var(--color-text-dim)}.lab-exam__autosave{margin-left:auto}.lab-exam__body{flex:1;min-height:0;display:grid;grid-template-columns:1fr 1fr;gap:var(--gap);padding:.75rem 0}.lab-exam__col{min-height:0;overflow-y:auto;display:flex;flex-direction:column;gap:.75rem}.lab-panel{border:1px solid var(--color-border);border-radius:var(--radius);background:var(--color-surface);padding:.9rem 1rem}.lab-panel__title{margin:0 0 .5rem;font-size:.85rem;text-transform:uppercase;letter-spacing:.04em;color:var(--color-text-dim)}.lab-pre{white-space:pre-wrap;overflow-wrap:anywhere;line-height:1.5}.lab-exam__bottombar{display:flex;flex-wrap:wrap;gap:.5rem;padding-top:.75rem;border-top:1px solid var(--color-border)}.lab-devtabs{display:flex;flex-wrap:wrap;align-items:center;gap:.35rem;overflow-x:auto;padding-bottom:.5rem;margin-bottom:.5rem;border-bottom:1px solid var(--color-border)}.lab-devtabs__tab{display:flex;align-items:center;gap:.2rem;border:1px solid var(--color-border);border-radius:var(--radius);background:var(--color-surface-2);padding:.15rem .25rem .15rem .6rem}.lab-devtabs__tab--active{border-color:var(--color-primary);background:var(--color-surface)}.lab-devtabs__tab-btn{border:none;background:transparent;color:var(--color-text);font-size:.85rem;padding:.2rem 0;cursor:pointer}.lab-devtabs__tab--active .lab-devtabs__tab-btn{color:var(--color-primary);font-weight:600}.lab-devtabs__rename-input{font-size:.85rem;padding:.1rem .3rem;border:1px solid var(--color-primary);border-radius:4px;background:var(--color-bg);color:var(--color-text);width:6rem}.lab-devtabs__rename-btn,.lab-devtabs__remove-btn{border:none;background:transparent;color:var(--color-text-dim);cursor:pointer;font-size:.75rem;line-height:1;padding:.2rem .3rem;border-radius:4px}.lab-devtabs__rename-btn:hover,.lab-devtabs__remove-btn:hover{background:var(--color-border);color:var(--color-text)}.lab-devtabs__add-btn{border:1px dashed var(--color-border);border-radius:var(--radius);background:transparent;color:var(--color-text-dim);font-size:.8rem;padding:.25rem .6rem;cursor:pointer;white-space:nowrap}.lab-devtabs__add-btn:hover{color:var(--color-primary);border-color:var(--color-primary)}.lab-editor{display:flex;border:1px solid var(--color-border);border-radius:var(--radius);background:var(--color-bg);overflow:hidden;height:min(420px,50vh)}.lab-editor__gutter{flex:0 0 auto;overflow:hidden;padding:.6rem .5rem;text-align:right;color:var(--color-text-dim);font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:.85rem;line-height:1.5;background:var(--color-surface-2);-webkit-user-select:none;user-select:none}.lab-editor__gutter-line{min-width:2ch}.lab-editor__textarea{flex:1;min-width:0;border:none;outline:none;resize:none;padding:.6rem .75rem;background:transparent;color:var(--color-text);font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:.85rem;line-height:1.5;white-space:pre;overflow:auto;-moz-tab-size:2;tab-size:2}.lab-answer{display:flex;flex-direction:column;gap:.6rem}.lab-answer__block{border:1px solid var(--color-border);border-radius:var(--radius);background:var(--color-surface-2);padding:.5rem .75rem;font-size:.85rem;line-height:1.5;color:var(--color-text);margin-bottom:.6rem}.lab-answer__device{font-family:inherit;font-weight:700;font-size:.9rem;color:var(--color-primary);border-bottom:1px solid var(--color-border);padding-bottom:.3rem;margin-bottom:.4rem}.lab-answer__line{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;overflow-wrap:anywhere}.lab-answer__line+.lab-answer__line{margin-top:.1rem}.lab-results__list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.5rem}.lab-check{border:1px solid var(--color-border);border-radius:var(--radius);padding:.6rem .8rem}.lab-check--pass{border-color:var(--color-correct)}.lab-check--fail{border-color:var(--color-incorrect);background:color-mix(in srgb,var(--color-incorrect) 10%,transparent)}.lab-check__row{display:flex;align-items:center;gap:.6rem}.lab-check__desc{flex:1}.lab-check__message{margin-top:.4rem;font-size:.85rem;color:var(--color-incorrect)}.lab-badge{flex:0 0 auto;padding:.15rem .5rem;border-radius:4px;font-size:.75rem;font-weight:700;letter-spacing:.03em}.lab-badge--pass{background:color-mix(in srgb,var(--color-correct) 25%,transparent);color:var(--color-correct)}.lab-badge--fail{background:color-mix(in srgb,var(--color-incorrect) 25%,transparent);color:var(--color-incorrect)}@media (min-width: 901px){.lab-exam{height:100vh;height:100dvh}}@media (max-width: 900px){.lab-exam{height:auto;min-height:100dvh}.lab-exam__body{grid-template-columns:1fr}.lab-exam__col{overflow-y:visible}.lab-exam__topbar{position:sticky;top:0;z-index:5;background:color-mix(in srgb,var(--color-bg) 92%,transparent);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px)}.lab-exam__bottombar{position:sticky;bottom:0;z-index:5;background:color-mix(in srgb,var(--color-bg) 92%,transparent);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);padding-bottom:max(.75rem,env(safe-area-inset-bottom))}}@media (pointer: coarse){.lab-devtabs__tab-btn{min-height:2rem;font-size:.9rem}.lab-devtabs__rename-btn,.lab-devtabs__remove-btn{min-width:2rem;min-height:2rem;display:inline-flex;align-items:center;justify-content:center;font-size:.95rem}.lab-devtabs__add-btn{min-height:2.25rem}}@media (min-width: 481px) and (max-width: 768px){.dnd-zones{grid-template-columns:repeat(auto-fill,minmax(180px,1fr))}}@media (min-width: 769px) and (max-width: 1024px){.runner{padding:2rem}}@media (min-width: 1025px){.runner__card{padding:2rem 2.25rem}.option{padding:.75rem 1.1rem}}.qjump{display:flex;align-items:center;gap:.4rem}.qjump__input{width:4.5rem;min-height:var(--touch-min);padding:.3rem .5rem;border-radius:8px;border:1px solid var(--color-border);background:var(--color-surface-2);color:var(--color-text);font-size:.9rem;text-align:center}.qjump__total{font-size:.85rem;color:var(--color-text-dim)}@media (max-width: 480px){.catalog__card-reset{margin-right:.5rem;padding:.4rem .6rem}}
