*,*:before,*:after{box-sizing:border-box}body{margin:0;font-family:Georgia,Times New Roman,serif;color:#1a1a1a;background:#fafafa;line-height:1.6;font-size:18px}#app{max-width:48em;margin:0 auto;padding:2em 1.5em 5em}header{margin-bottom:3em}header h1{font-size:1.8em;font-weight:400;margin:0 0 .3em}header p{color:#555;margin:0}.hdl-guide{margin-bottom:2em;border:1px solid #ddd;border-radius:4px;padding:0 1em}.hdl-guide summary{cursor:pointer;padding:.5em 0;font-weight:700;color:#555}.hdl-guide pre{background:#f5f5f5;padding:.8em;border-radius:4px;font-size:.85em;overflow-x:auto}.hdl-guide code{font-family:SF Mono,Consolas,Liberation Mono,monospace}.hdl-guide p{color:#555;line-height:1.5}.bool-ref-table{font-family:SF Mono,Consolas,Liberation Mono,monospace;font-size:.9em;margin:.5em 0;border-spacing:0 .3em}.bool-ref-table td:first-child{padding-right:1.5em;white-space:nowrap}.bool-ref-table td:last-child{color:#555}.exercise{margin-bottom:3em;padding-bottom:3em;border-bottom:1px solid #ddd}.exercise:last-child{border-bottom:none}.exercise h2{font-weight:400;font-size:1.4em;margin:0 0 .3em}.exercise-description{color:#333;margin:.2em 0}.exercise-analogy{color:#666;font-style:italic;margin:.2em 0}.available-chips{font-family:SF Mono,Consolas,Liberation Mono,monospace;font-size:.85em;color:#2aa198;margin:.5em 0}.exercise h3{font-weight:400;font-size:1em;color:#555;margin:1.5em 0 .5em}.editor-container{border:2px solid #2aa198;border-radius:4px;overflow:hidden;margin:1em 0}.cm-editor{max-height:300px}.cm-editor.cm-focused{outline:none}.exercise-buttons{display:flex;gap:.5em}.run-btn{background:#2aa198;color:#fff;border:none;padding:.5em 1.5em;font-size:.9em;font-family:inherit;cursor:pointer;border-radius:4px}.run-btn:hover{background:#1a8a80}.reset-exercise-btn{background:none;border:1px solid #ccc;color:#888;padding:.5em 1.5em;font-size:.9em;font-family:inherit;cursor:pointer;border-radius:4px}.reset-exercise-btn:hover{border-color:#c00;color:#c00}.hint-btn{background:none;border:1px solid #ccc;color:#888;padding:.5em 1.5em;font-size:.9em;font-family:inherit;cursor:pointer;border-radius:4px}.hint-btn:hover:not(:disabled){border-color:#e8a317;color:#e8a317}.hint-btn:disabled{opacity:.5;cursor:default}.hint-area{margin:.5em 0}.hint{background:#fdf8e8;border-left:3px solid #e8a317;padding:.5em .8em;margin:.3em 0;font-size:.95em;color:#555}.vim-toggle{float:right;margin-right:.5em;background:none;border:1px solid #ccc;color:#888;padding:.3em .8em;font-size:.8em;font-family:inherit;cursor:pointer;border-radius:4px}.vim-toggle:hover{border-color:#2aa198;color:#2aa198}.reset-btn{float:right;background:none;border:1px solid #ccc;color:#888;padding:.3em .8em;font-size:.8em;font-family:inherit;cursor:pointer;border-radius:4px}.reset-btn:hover{border-color:#c00;color:#c00}.repo-link{float:right;display:inline-block;margin-right:.5em;background:none;border:1px solid #ccc;color:#888;padding:.3em .8em;font-size:.8em;line-height:normal;font-family:inherit;cursor:pointer;border-radius:4px;text-decoration:none}.repo-link:hover{border-color:#2aa198;color:#2aa198}.results-area{margin-top:1em}.truth-table-wrapper{margin:.5em 0}.format-toggle{display:inline-flex;align-items:center;gap:.25em;margin-bottom:.35em;font-family:SF Mono,Consolas,Liberation Mono,monospace;font-size:12px}.format-toggle-label{color:#666;margin-right:.3em}.format-toggle-btn{border:1px solid #bbb;background:#f5f5f5;color:#333;padding:.15em .55em;cursor:pointer;font-family:inherit;font-size:inherit;border-radius:3px}.format-toggle-btn:hover{background:#e8e8e8}.format-toggle-btn.active{background:#2b6cb0;border-color:#2b6cb0;color:#fff;font-weight:700}.nibble-legend{display:flex;flex-direction:column;gap:.15em;margin:.15em 0 .4em;font-size:11px;color:#555}.nibble-legend-caption{font-style:italic;color:#666}.nibble-legend-row{display:flex;flex-wrap:wrap;gap:.35em}.nibble-legend-chip{font-family:SF Mono,Consolas,Liberation Mono,monospace;border:1px solid #ddd;background:#fafafa;padding:.05em .4em;border-radius:3px}.truth-table{border-collapse:collapse;font-family:SF Mono,Consolas,Liberation Mono,monospace;font-size:14px;margin:0}.truth-table th,.truth-table td{border:1px solid #ccc;padding:.3em .8em;text-align:center}.truth-table thead th{background:#eee;font-weight:700}.truth-table tbody tr:nth-child(2n){background:#f5f5f5}.truth-table .expected-header{background:#e0f0e0}.truth-table .yours-header{background:#e0e8f0}.truth-table .computes-header{background:#efe8dc}.truth-table .computes-cell{font-weight:700;text-align:left;border-right:2px solid #bbb}.truth-table td.match{background:#d4edda}.truth-table td.mismatch{background:#f5a5a5;color:#5a0000;font-weight:700;box-shadow:inset 0 0 0 2px #c00}.failure-banner{background:#fff0f0;border-left:4px solid #c00;color:#3a0000;padding:.7em 1em;margin:.6em 0;border-radius:4px;font-weight:500}.failure-banner__cta{background:none;border:none;color:#c00;font-weight:700;text-decoration:underline;cursor:pointer;padding:0;font:inherit}.failure-banner__cta:hover{color:#800}.failure-diagnosis{margin:.4em 0 0;font-weight:400;font-style:italic}@keyframes success-pop{0%{opacity:0;transform:scale(.6)}60%{opacity:1;transform:scale(1.15)}to{opacity:1;transform:scale(1)}}.success-indicator{position:relative;color:#28a745;font-weight:700;font-size:1.4em;margin:.5em 0}.success-indicator.playing{animation:success-pop .5s ease-out}.confetti{position:absolute;pointer-events:none;width:260px;height:260px;left:50%;top:0;transform:translate(-50%);overflow:visible}.confetti rect{animation:confetti-fly .9s ease-out forwards;transform-origin:center}@keyframes confetti-fly{0%{transform:translate(0) rotate(0);opacity:1}to{transform:translate(var(--dx),var(--dy)) rotate(540deg);opacity:0}}@keyframes new-exercise-flash{0%{background:#fff9d6}to{background:transparent}}.exercise.is-new{animation:new-exercise-flash 1.6s ease-out}pre.error{background:#fff0f0;border:1px solid #ffcccc;color:#c00;padding:.8em;border-radius:4px;font-family:SF Mono,Consolas,Liberation Mono,monospace;font-size:13px;white-space:pre-wrap;margin:0}.error-panel{background:#fff0f0;border:1px solid #ffcccc;border-left:4px solid #c00;color:#3a0000;padding:.8em 1em;border-radius:4px;margin:.5em 0}.error-panel__header{display:flex;align-items:center;gap:.6em;margin-bottom:.4em}.error-panel__badge{background:#c00;color:#fff;font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;padding:2px 8px;border-radius:3px}.error-panel--chip .error-panel__badge{background:#a15c00}.error-panel--sim .error-panel__badge{background:#8a1c8a}.error-panel--validation .error-panel__badge{background:#1d6f8c}.error-panel__location{color:#6a1a1a;font-size:13px;font-family:SF Mono,Consolas,Liberation Mono,monospace}.error-panel__message{margin:0 0 .5em;color:#3a0000;font-size:14px}.error-panel__suggestion{margin:0 0 .5em;color:#3a3a3a;font-size:13px;background:#fff7e6;border-left:3px solid #f0a020;padding:.4em .6em;border-radius:0 3px 3px 0}.error-panel__suggestion code,.error-panel__message code{font-family:SF Mono,Consolas,Liberation Mono,monospace;font-size:12px;background:#0000000f;padding:0 3px;border-radius:2px}.error-panel__raw summary{cursor:pointer;font-size:12px;color:#6a1a1a;-webkit-user-select:none;user-select:none}.error-panel__raw pre{margin:.4em 0 0;padding:.6em;background:#fff;border:1px solid #ffcccc;border-radius:3px;color:#c00;font-family:SF Mono,Consolas,Liberation Mono,monospace;font-size:12px;white-space:pre-wrap}.cm-error-line{background:#fff0f0!important;box-shadow:inset 3px 0 #c00}.exercise-top-row{display:flex;gap:1.5em;align-items:flex-start;margin:1em 0;min-height:280px}.exercise-spec-pane,.exercise-diagram-pane{flex:1 1 0;min-width:0;overflow-x:auto}.exercise-spec-pane>h3,.exercise-diagram-pane>h3{margin-top:0}.circuit-diagram-placeholder{color:#888;font-style:italic;padding:1em;border:1px dashed #ccc;border-radius:4px}@media(max-width:760px){.exercise-top-row{flex-direction:column;min-height:0}.exercise-spec-pane,.exercise-diagram-pane{flex:0 0 auto;width:100%}}.circuit-diagram{margin:1em 0;overflow-x:auto}.circuit-diagram svg{display:block;max-width:100%;height:auto}.exercise--tutorial{background:#f0f8f6;border:1px solid #c8e0da;border-radius:6px;padding:1.5em}.tutorial-badge{display:inline-block;background:#2aa198;color:#fff;font-size:.5em;font-weight:700;padding:.15em .5em;border-radius:3px;vertical-align:middle;margin-left:.5em;text-transform:uppercase}.tutorial-lead-in{color:#2aa198;font-style:italic}.walkthrough-btn{background:none;border:1px solid #2aa198;color:#2aa198;padding:.5em 1.5em;font-size:.9em;font-family:inherit;cursor:pointer;border-radius:4px}.walkthrough-btn:hover:not(:disabled){background:#2aa198;color:#fff}.walkthrough-btn:disabled{opacity:.5;cursor:default}.tutorial-explanation{background:#e8f5f3;border-left:3px solid #2aa198;padding:.5em .8em;margin:.5em 0;color:#555;line-height:1.5}@media(max-width:600px){#app{padding:1em .75em 3em}.truth-table{font-size:12px}.truth-table th,.truth-table td{padding:.2em .4em}}
