.app{flex-direction:column;min-height:100vh;display:flex}.app-header{border-bottom:2px solid var(--gold);padding:1rem 1.5rem}.app-title{font-family:var(--font-display);color:var(--ink);cursor:pointer;background:0 0;border:none;padding:0;font-size:clamp(1.75rem,4vw,2.75rem);font-weight:400}.rubric{font-variant:small-caps;letter-spacing:.12em;color:var(--rubric);margin:0 0 .75rem}.catalog{width:100%;max-width:56rem;margin:0 auto;padding:2rem 1.5rem}.catalog-filter{width:100%;font-family:var(--font-body);color:var(--ink);border:1px solid var(--gold);background-color:#fff6;border-radius:4px;margin-bottom:1.25rem;padding:.6rem .8rem;font-size:1.05rem}.catalog-list{gap:.5rem;margin:0;padding:0;list-style:none;display:grid}.catalog-item{text-align:left;width:100%;font-family:var(--font-body);color:var(--ink);cursor:pointer;background-color:#ffffff40;border:1px solid #b8860b80;border-radius:4px;justify-content:space-between;align-items:center;gap:1rem;padding:.85rem 1rem;font-size:1.15rem;transition:background-color .12s;display:flex}.catalog-item:hover{background-color:#b8860b29}.catalog-item-title{font-weight:600}.catalog-item-meta{flex-shrink:0;align-items:center;gap:.5rem;display:flex}.complexity{font-family:var(--font-mono);color:var(--rubric);font-size:.85rem}.lang-badge{font-size:.72rem;font-family:var(--font-mono);border:1px solid;border-radius:3px;padding:.1rem .4rem}.lang-badge.active{color:var(--ink);background-color:#b8860b40}.lang-badge.soon{color:#8a7a55;opacity:.7}.catalog-empty{color:var(--rubric);padding:1rem;font-style:italic}.workspace-loading{text-align:center;color:var(--ink-muted,inherit);flex:1;padding:1.5rem}.workspace{background-color:var(--gold);flex:1;grid-template-columns:minmax(20rem,30rem) 1fr;gap:1px;min-height:0;display:grid}.workspace-pane{background-color:var(--parchment);padding:1.25rem 1.5rem;overflow:auto}.editor-pane{flex-direction:column;gap:.75rem;display:flex}.link-button{color:var(--rubric);font-family:var(--font-body);cursor:pointer;background:0 0;border:none;margin-bottom:1rem;padding:0;font-size:1rem}.statement-title{font-family:var(--font-display);margin:0 0 .5rem;font-size:2rem;font-weight:400}.statement-complexity{color:var(--rubric);margin:0 0 1rem}.statement-complexity code,.statement-description{font-size:1.05rem;line-height:1.6}.statement-complexity code{font-family:var(--font-mono)}.editor-toolbar{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1rem;display:flex}.lang-selector{gap:.25rem;display:flex}.lang-option{font-family:var(--font-body);border:1px solid var(--gold);color:var(--ink);cursor:pointer;background-color:#ffffff4d;border-radius:4px;padding:.3rem .7rem;font-size:.95rem}.lang-option.active{background-color:#b8860b40;font-weight:600}.lang-option.disabled{opacity:.5;cursor:not-allowed}.ruby-loading{color:var(--gold);margin:0;font-style:italic}.ruby-error{color:var(--rubric);margin:0;font-weight:600}.toolbar-actions{align-items:center;gap:.75rem;display:flex}.vim-toggle{align-items:center;gap:.3rem;font-size:.9rem;display:flex}.ghost-button{font-family:var(--font-body);border:1px solid var(--gold);color:var(--ink);cursor:pointer;background:0 0;border-radius:4px;padding:.35rem .8rem;font-size:.95rem}.run-button{font-family:var(--font-body);border:1px solid var(--rubric);background-color:var(--rubric);color:var(--parchment);cursor:pointer;border-radius:4px;padding:.4rem 1.1rem;font-size:1rem;font-weight:600}.run-button:disabled{opacity:.6;cursor:default}.cm-host{border:1px solid var(--gold);border-radius:4px;overflow:hidden}.cm-host .cm-editor{max-height:24rem}.cm-host .cm-scroller{font-family:var(--font-mono);font-size:.95rem}.results{border-top:1px dashed var(--gold);padding-top:.75rem}.results-status.muted{color:#8a7a55;font-style:italic}.results-summary{margin:0 0 .6rem;font-size:1.1rem;font-weight:600}.results-summary.pass{color:#2f6b2f}.results-summary.fail{color:var(--rubric)}.results-duration{font-family:var(--font-mono);color:#8a7a55;font-size:.85rem;font-weight:400}.case-list{gap:.4rem;margin:0;padding:0;list-style:none;display:grid}.case{border:1px solid #0000;border-radius:4px;padding:.5rem .7rem}.case.pass{background-color:#2f6b2f14}.case.fail{background-color:#8b2e2e14;border-color:#8b2e2e4d}.case-head{align-items:baseline;gap:.5rem;display:flex}.case-icon{font-family:var(--font-mono);font-weight:700}.case.pass .case-icon{color:#2f6b2f}.case.fail .case-icon{color:var(--rubric)}.case-diff{border-collapse:collapse;font-family:var(--font-mono);margin-top:.4rem;font-size:.85rem}.case-diff th{text-align:right;color:var(--rubric);vertical-align:top;padding-right:.6rem}.case-error,.runtime-error pre,.stdout pre{font-family:var(--font-mono);white-space:pre-wrap;word-break:break-word;margin:.3rem 0 0;font-size:.85rem}.runtime-error{color:var(--rubric)}.stdout{border-top:1px dotted var(--gold);margin-top:.9rem;padding-top:.5rem}.stdout-label{font-variant:small-caps;letter-spacing:.08em;color:#8a7a55;margin:0 0 .2rem}.hints{border-top:1px dashed var(--gold);border-left:3px solid var(--gold);margin-top:1.25rem;padding:.5rem 0 .5rem .9rem;font-style:italic}.hints-heading{margin:.4rem 0 .5rem}.hints-list{font-family:var(--font-body);margin:0 0 .6rem;padding-left:1.2rem;line-height:1.6}.hint-item{margin-bottom:.4rem}.hints-exhausted{margin:0}.predefined{border-top:1px dashed var(--gold);border-left:3px solid var(--gold);margin:.75rem 0 1rem;padding:.5rem 0 .5rem .9rem}.predefined-heading{margin:.4rem 0 .5rem}.predefined-block{border:1px solid var(--gold);background:var(--parchment);color:var(--ink);font-family:var(--font-mono);border-radius:4px;margin:0 0 .6rem;padding:.6rem .75rem;font-size:.9rem;overflow-x:auto}.solved-seal{color:var(--gold);font-weight:700;font-family:var(--font-mono);justify-content:center;align-items:center;display:inline-flex}.catalog-item .solved-seal{border:1px solid var(--gold);border-radius:50%;flex-shrink:0;width:1.25rem;height:1.25rem;margin-right:.45rem;font-size:.8rem}.solved-seal.inline{font-variant:small-caps;letter-spacing:.06em;margin-bottom:.5rem;font-style:normal}.catalog-item.solved{border-color:var(--gold)}.lang-chip{font-size:.72rem;font-family:var(--font-mono);border:1px solid var(--gold);color:var(--ink);background-color:#b8860b2e;border-radius:3px;padding:.1rem .4rem}.solved-banner{border:2px solid var(--gold);background:linear-gradient(#b8860b29,#ffffff2e);border-radius:4px;align-items:center;gap:.6rem;margin:0 0 .7rem;padding:.6rem .9rem;display:flex}.solved-banner-seal{color:var(--gold);font-size:1.6rem;line-height:1}.solved-banner-text{font-family:var(--font-display);color:#2f6b2f;font-size:1.35rem}@media (prefers-reduced-motion:no-preference){.catalog-item .solved-seal,.solved-seal.inline{animation:.32s ease-out both seal-pop}.hint-item{animation:.28s ease-out both hint-in}.solved-banner{animation:.5s ease-out both banner-glow}.solved-banner-seal{animation:.45s ease-out both seal-pop}@keyframes seal-pop{0%{opacity:0;transform:scale(.4)}70%{transform:scale(1.12)}to{opacity:1;transform:scale(1)}}@keyframes hint-in{0%{opacity:0;transform:translateY(-.3rem)}to{opacity:1;transform:translateY(0)}}@keyframes banner-glow{0%{opacity:0;box-shadow:0 0 #b8860b00}60%{box-shadow:0 0 18px #b8860b8c}to{opacity:1;box-shadow:0 0 6px #b8860b40}}}@media (width<=860px){.workspace{grid-template-columns:1fr}}:root{--parchment:#f4ecd8;--ink:#2b2117;--gold:#b8860b;--rubric:#8b2e2e;--font-display:"UnifrakturMaguntia", "EB Garamond", serif;--font-body:"EB Garamond", Georgia, serif;--font-mono:"JetBrains Mono", "SFMono-Regular", Consolas, monospace;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;color:var(--ink);background-color:var(--parchment);font-family:var(--font-body);font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased}*{box-sizing:border-box}html,body{min-height:100%;margin:0;padding:0}body{background-color:var(--parchment);color:var(--ink)}code,pre{font-family:var(--font-mono)}
