:root{--bg:#f6f7f9;--panel:#fff;--border:#dfe3e8;--text:#1f2933;--muted:#6b7280;--primary:#2563eb;--correct:#15803d;--incorrect:#b91c1c;--warn:#b45309;color:var(--text);background:var(--bg);font-family:system-ui,-apple-system,Segoe UI,Roboto,Hiragino Sans,Noto Sans JP,sans-serif}*{box-sizing:border-box}body{margin:0}.app{flex-direction:column;height:100vh;display:flex}.app__header{background:var(--panel);border-bottom:1px solid var(--border);align-items:center;gap:1.5rem;padding:.6rem 1rem;display:flex}.app__title{letter-spacing:.02em;margin:0;font-size:1.1rem}.app__category{color:var(--muted);align-items:center;gap:.4rem;font-size:.9rem;display:flex}.app__category select{padding:.2rem .4rem;font-size:.9rem}.progress{font-variant-numeric:tabular-nums;gap:1rem;margin-left:auto;display:flex}.progress__streak{color:var(--warn);font-weight:600}.app__main{flex:1;grid-template-columns:minmax(280px,1fr) minmax(0,2fr);gap:1rem;min-height:0;padding:1rem;display:grid}@media (width<=900px){.app{height:auto;min-height:100vh}.app__main{grid-template-columns:1fr}.app__side,.app__bottom{overflow:visible}}.app__empty{color:var(--muted);padding:2rem}.app__side,.app__work{flex-direction:column;gap:1rem;min-width:0;min-height:0;display:flex}.app__side{overflow-y:auto}.exercise-panel,.app__schema,.app__editor,.result-table{background:var(--panel);border:1px solid var(--border);border-radius:6px}.exercise-panel{padding:1rem}.exercise-panel__meta{color:var(--muted);gap:.75rem;font-size:.8rem;display:flex}.exercise-panel__solved{color:var(--correct);font-weight:600}.exercise-panel__title{margin:.4rem 0;font-size:1.15rem}.exercise-panel__prompt{margin:0 0 .75rem;line-height:1.6}.exercise-panel__tags{flex-wrap:wrap;gap:.4rem;display:flex}.tag{color:#3730a3;background:#eef2ff;border-radius:999px;padding:.1rem .5rem;font-size:.75rem}.exercise-panel__hints{color:var(--muted);margin-top:.75rem;font-size:.9rem}.exercise-panel__hints ul{margin:.4rem 0 0;padding-left:1.2rem}.app__schema{padding:.75rem 1rem}.app__schema h3{color:var(--muted);margin:0 0 .5rem;font-size:.85rem;font-weight:600}.schema-viewer details{margin-bottom:.4rem}.schema-viewer summary{cursor:pointer;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.9rem;font-weight:600}.schema-viewer pre{background:#f8fafc;border-radius:4px;margin:.3rem 0 0;padding:.5rem .75rem;font-size:.78rem;line-height:1.45;overflow-x:auto}.app__editor{flex-shrink:0;overflow:hidden}.sql-editor .cm-editor{outline:none}.app__toolbar{gap:.5rem;display:flex}.btn{border:1px solid var(--border);background:var(--panel);cursor:pointer;border-radius:6px;padding:.45rem .9rem;font-size:.9rem}.btn:hover:not(:disabled){background:#f1f5f9}.btn:disabled{opacity:.5;cursor:default}.btn--primary{background:var(--primary);border-color:var(--primary);color:#fff}.btn--primary:hover:not(:disabled){background:#1d4ed8}.btn kbd{opacity:.8;margin-left:.4rem;font-size:.75rem}.run-status{margin:0;font-weight:600}.run-status small{color:var(--muted);margin-left:.4rem;font-weight:400}.run-status--idle,.run-status--running{color:var(--muted);font-weight:400}.run-status--correct{color:var(--correct)}.run-status--incorrect{color:var(--incorrect)}.run-status--error{color:var(--warn);white-space:pre-wrap;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.85rem}.app__results{flex-direction:column;gap:1rem;display:flex}.result-table__caption{color:var(--muted);border-bottom:1px solid var(--border);padding:.5rem .75rem;font-size:.8rem;font-weight:600}.result-table__scroll{max-height:360px;overflow:auto}.result-table table{border-collapse:collapse;font-variant-numeric:tabular-nums;width:100%;font-size:.85rem}.result-table th,.result-table td{border-bottom:1px solid var(--border);text-align:left;white-space:nowrap;padding:.3rem .75rem}.result-table th{background:#f8fafc;font-weight:600;position:sticky;top:0}.result-table td.is-null{color:var(--muted);font-style:italic}.result-table__footer,.result-table__empty{color:var(--muted);padding:.4rem .75rem;font-size:.78rem}.app__bottom{flex:1;grid-template-columns:minmax(0,1fr) minmax(0,1fr);align-items:start;gap:1rem;min-height:0;display:grid;overflow-y:auto}@media (width<=1200px){.app__bottom{grid-template-columns:1fr}}.app__er{background:var(--panel);border:1px solid var(--border);border-radius:6px;padding:.75rem 1rem}.app__er h3{color:var(--muted);margin:0 0 .5rem;font-size:.85rem;font-weight:600}.er{width:100%;max-width:960px;height:auto;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:14px;display:block}.er__box{fill:#fff;stroke:var(--border)}.er__header{fill:#eef2ff}.er__name{fill:#3730a3;font-weight:700}.er__row text{fill:var(--text)}.er__row--pk text{font-weight:700}.er__type{fill:var(--muted)}.er__key{fill:var(--primary);font-size:11px;font-weight:700}.er__edge{fill:none;stroke:var(--primary);stroke-width:1.5px;opacity:.8}#er-arrow path{fill:var(--primary)}
