:root{--bg: #1a1a1a;--fg: #e6e1d4;--dim: #8a8478;--line: #3a3631;--accent: #c4a96a;--danger: #b85a4a;--card: #232220;--code: "JetBrains Mono", "SF Mono", Menlo, Monaco, Consolas, monospace;--serif: "Iowan Old Style", "Palatino", Georgia, serif}*{box-sizing:border-box}body,html,#root{margin:0;padding:0;background:var(--bg);color:var(--fg);font-family:var(--code);font-size:14px;line-height:1.5;height:100%}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}.app{display:flex;flex-direction:column;min-height:100%}.masthead{display:flex;align-items:center;justify-content:space-between;padding:14px 22px;border-bottom:1px solid var(--line)}.brand-line{font-weight:700;letter-spacing:.08em;color:var(--fg)}.brand-sub{display:block;font-size:11px;color:var(--dim)}.brand-link{color:var(--accent);font-size:13px}.content{flex:1 1 auto;padding:18px}.footer{font-family:var(--serif);font-style:italic;padding:14px 22px;color:var(--dim);border-top:1px solid var(--line)}.catalog .intro{font-family:var(--serif);font-size:16px;color:var(--dim);max-width:640px;margin:6px 0 28px}.card-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:18px}.card{display:block;background:var(--card);border:1px solid var(--line);padding:16px;color:var(--fg);position:relative;transition:border-color .15s}.card:hover{border-color:var(--accent);text-decoration:none}.card-tag{font-size:10px;letter-spacing:.18em;color:var(--accent);margin-bottom:6px}.card-title{font-weight:700;font-size:16px}.card-excerpt{font-family:var(--serif);font-size:13px;color:var(--dim);margin:10px 0;max-height:5.5em;overflow:hidden;text-overflow:ellipsis}.card-meta{display:flex;gap:16px;font-size:11px;color:var(--dim)}.card-cta{margin-top:10px;font-size:12px;letter-spacing:.12em;color:var(--accent)}.loading,.error{font-family:var(--code);color:var(--dim);padding:32px}.loading-phase{color:var(--accent);margin-top:6px;font-size:12px}.error{color:var(--danger)}.case{display:grid;grid-template-columns:320px 1fr 320px;gap:18px;height:calc(100vh - 130px)}.case-side{background:var(--card);border:1px solid var(--line);padding:16px;overflow-y:auto}.case-answer{display:flex;flex-direction:column;gap:14px;min-height:0}.case-answer-top,.case-answer-bot{background:var(--card);border:1px solid var(--line);padding:16px;flex:1 1 0;min-height:0;display:flex;flex-direction:column}.case-answer-top{overflow-y:auto}.case-answer-bot{padding:0}.case-title{font-size:13px;letter-spacing:.1em;margin:0 0 4px;color:var(--accent)}.case-occurred{font-size:11px;color:var(--dim);margin:0 0 14px}.case-occurred-tz{font-style:italic;color:#6b665b;margin-left:4px}.case-briefing{font-family:var(--serif);font-size:14px;color:var(--fg);white-space:pre-wrap}.case-clues-label{font-size:11px;letter-spacing:.12em;color:var(--accent);margin-bottom:6px}.case-clues-text{font-size:12px;color:var(--dim);white-space:pre-wrap}.case-tips summary{font-size:11px;letter-spacing:.12em;color:var(--accent);cursor:pointer;margin-bottom:8px;list-style:none}.case-tips summary::-webkit-details-marker{display:none}.case-tips summary:before{content:"▸ ";color:var(--accent)}.case-tips[open] summary:before{content:"▾ "}.case-tips-list{font-size:11px;color:var(--dim);padding-left:16px;margin:0;line-height:1.55}.case-tips-list li{margin-bottom:6px}.case-tips-list code{font-family:var(--code);font-size:11px;color:var(--fg);background:#1f1e1c;padding:1px 5px;border:1px solid var(--line)}.case-main{display:flex;flex-direction:column;gap:14px;min-width:0}.qe{border:1px solid var(--line);background:var(--card);display:flex;flex-direction:column;flex:0 0 auto}.qe-bar{display:flex;align-items:center;justify-content:space-between;padding:6px 10px;border-bottom:1px solid var(--line)}.qe-label{font-size:11px;letter-spacing:.12em;color:var(--accent)}.qe-hint{color:var(--dim);letter-spacing:0;font-style:italic;margin-left:6px}.qe-editor{background:#14140f;min-height:220px;max-height:360px;overflow:auto}.qe-editor textarea,.qe-editor pre{outline:none!important;caret-color:var(--accent)}.qe-editor textarea::selection{background:#c4a96a40}.qe-editor .token.keyword,.qe-editor .token.boolean{color:var(--accent);font-weight:600}.qe-editor .token.string{color:#a5d09c}.qe-editor .token.number{color:#d8a35c}.qe-editor .token.comment{color:var(--dim);font-style:italic}.qe-editor .token.operator,.qe-editor .token.punctuation{color:var(--dim)}.qe-editor .token.function{color:#7eb6d4}.qe-editor .token.variable{color:var(--fg)}.grid{border:1px solid var(--line);background:var(--card);display:flex;flex-direction:column;flex:1 1 0;min-height:200px}.grid-bar{padding:6px 10px;border-bottom:1px solid var(--line);font-size:11px;letter-spacing:.12em;color:var(--accent)}.grid-ms{color:var(--dim);margin-left:10px}.grid-empty,.grid-error{padding:14px;font-size:12px;color:var(--dim)}.grid-error{color:var(--danger);white-space:pre-wrap;font-family:var(--code);margin:0}.grid-scroll{overflow:auto;flex:1 1 0}.grid-table{width:100%;border-collapse:collapse;font-size:12px}.grid-table th{text-align:left;padding:6px 10px;border-bottom:1px solid var(--line);background:#1f1e1c;font-weight:400;letter-spacing:.08em;color:var(--accent);font-size:11px;position:sticky;top:0}.grid-table td{padding:4px 10px;border-bottom:1px solid #292724;color:var(--fg);white-space:nowrap}.cell-null{color:var(--dim);font-style:italic}.grid-truncated{padding:8px 12px;color:var(--dim);font-size:11px}.answer{display:flex;flex-direction:column;gap:12px}.answer-bar{font-size:11px;letter-spacing:.12em;color:var(--accent);margin-bottom:4px}.answer-row{display:flex;flex-direction:column;gap:4px}.answer-label{font-size:12px;color:var(--fg)}.answer-input{background:#14140f;color:var(--fg);border:1px solid var(--line);padding:8px 10px;font-family:var(--code);font-size:13px;outline:none}.answer-input:focus{border-color:var(--accent)}.btn{background:transparent;border:1px solid var(--accent);color:var(--accent);padding:6px 14px;cursor:pointer;font-family:var(--code);font-size:12px;letter-spacing:.1em}.btn:hover{background:#c4a96a1a}.btn:disabled{opacity:.5;cursor:not-allowed}.verdict{margin-top:6px;padding:10px;border:1px solid var(--line);font-size:12px;display:flex;flex-direction:column;gap:4px}.verdict-ok{border-color:var(--accent)}.verdict-bad{border-color:var(--danger)}.verdict-final{font-family:var(--serif);font-style:italic;margin-top:6px;color:var(--accent)}.verdict-hint{font-style:italic;color:var(--dim);font-size:11px;margin-top:4px}.notes{display:flex;flex-direction:column;height:100%;min-height:0}.notes-bar{display:flex;align-items:center;justify-content:space-between;padding:8px 12px;border-bottom:1px solid var(--line)}.notes-label{font-size:11px;letter-spacing:.12em;color:var(--accent)}.notes-meta{font-size:10px;color:var(--dim);display:flex;align-items:center;gap:10px}.notes-clear{background:transparent;border:1px solid var(--line);color:var(--dim);padding:2px 6px;cursor:pointer;font-family:var(--code);font-size:10px;letter-spacing:.06em}.notes-clear:hover{color:var(--danger);border-color:var(--danger)}.notes-textarea{flex:1 1 0;background:#14140f;color:var(--fg);border:0;padding:10px 12px;font-family:var(--code);font-size:13px;line-height:1.55;resize:none;outline:none;min-height:120px}@media(max-width:1100px){.case{grid-template-columns:1fr;height:auto}}.loading-track{width:280px;height:6px;margin-top:10px;background:#14140f;border:1px solid var(--line)}.loading-fill{height:100%;background:var(--accent);transition:width .2s}.intro-progress{color:var(--accent)}.card{position:relative}.card-solved{opacity:.82}.card-stamp{position:absolute;top:14px;right:12px;font-family:var(--code);font-size:13px;letter-spacing:.22em;color:var(--danger);border:2px solid var(--danger);padding:2px 8px;transform:rotate(8deg);opacity:.85;pointer-events:none}.card-difficulty{color:var(--accent);font-size:12px;margin:2px 0 6px;letter-spacing:.15em}.card-skills{display:flex;flex-wrap:wrap;gap:5px;margin-top:8px}.chip{font-family:var(--code);font-size:9px;letter-spacing:.05em;color:var(--dim);border:1px solid var(--line);padding:2px 6px;border-radius:2px}.case-closed-stamp{margin-left:10px;font-size:10px;letter-spacing:.2em;color:var(--danger);border:1px solid var(--danger);padding:1px 6px;vertical-align:1px}.case-difficulty{font-size:11px;color:var(--accent);margin:0 0 6px;letter-spacing:.12em}.case-skills{color:var(--dim);letter-spacing:.02em}.qe-actions{display:flex;gap:8px;align-items:center}.btn-ghost{background:transparent;border:1px solid var(--line);color:var(--dim);padding:4px 10px;cursor:pointer;font-family:var(--code);font-size:10px;letter-spacing:.06em}.btn-ghost:hover{color:var(--accent);border-color:var(--accent)}.qh{background:var(--card);border:1px solid var(--line);padding:8px 12px;margin:10px 0 0;font-family:var(--code)}.qh-summary{font-size:11px;letter-spacing:.12em;color:var(--accent);cursor:pointer;list-style:none;display:flex;justify-content:space-between;align-items:center}.qh-summary::-webkit-details-marker{display:none}.qh-summary:before{content:"▸ "}.qh[open] .qh-summary:before{content:"▾ "}.qh-clear{margin-left:10px}.qh-list{list-style:none;margin:8px 0 2px;padding:0;max-height:180px;overflow-y:auto}.qh-item{display:flex;gap:8px;align-items:baseline;font-size:11px;padding:3px 4px;cursor:pointer;border-bottom:1px dotted #2c2a26}.qh-item:hover{background:#2a2825}.qh-badge{flex:0 0 38px;text-align:right;font-size:10px}.qh-ok{color:var(--accent)}.qh-bad{color:var(--danger)}.qh-sql{flex:1 1 auto;color:var(--fg);overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.qh-time{flex:0 0 auto;color:var(--dim);font-size:10px}.schema{margin:14px 0}.schema summary{font-size:11px;letter-spacing:.12em;color:var(--accent);cursor:pointer;list-style:none;margin-bottom:6px}.schema summary::-webkit-details-marker{display:none}.schema summary:before{content:"▸ "}.schema[open] summary:before{content:"▾ "}.schema-list{list-style:none;margin:0;padding:0 0 0 4px;font-family:var(--code)}.schema-row{display:flex;gap:4px;align-items:center}.schema-toggle{background:transparent;border:0;color:var(--dim);cursor:pointer;font-size:10px;padding:1px 2px;font-family:var(--code)}.schema-name{font-size:11px;color:var(--fg);cursor:pointer}.schema-name:hover{color:var(--accent)}.schema-cols{list-style:none;margin:2px 0 6px;padding:0 0 0 24px}.schema-cols li{font-size:10px;padding:1px 0}.schema-col{color:var(--fg);cursor:pointer}.schema-col:hover{color:var(--accent)}.schema-type{color:#6b665b;margin-left:6px;font-size:9px}.hints{margin:14px 0}.hints summary{font-size:11px;letter-spacing:.12em;color:var(--accent);cursor:pointer;list-style:none;margin-bottom:6px}.hints summary::-webkit-details-marker{display:none}.hints summary:before{content:"▸ "}.hints[open] summary:before{content:"▾ "}.hints-list{margin:4px 0;padding-left:18px}.hints-item{font-family:var(--serif);font-size:12.5px;color:var(--fg);margin-bottom:8px;line-height:1.5}.hints-btn{margin:4px 0 6px}.grid-bar{display:flex;justify-content:space-between;align-items:center}.grid-copy{margin-left:10px}.grid-th{cursor:pointer;user-select:none}.grid-th:hover{color:var(--accent)}.grid-table td{cursor:copy}.cell-copied{background:#3a3320!important}.answer-attempts{float:right;font-size:10px;color:var(--dim);letter-spacing:.04em}.verdict-cool{color:var(--accent);border-color:var(--accent)}.debrief{margin-top:16px;border-top:1px solid var(--line);padding-top:12px}.debrief-bar{font-size:11px;letter-spacing:.12em;color:var(--accent);font-family:var(--code);margin-bottom:8px}.debrief-text{font-family:var(--serif);font-size:13px;line-height:1.55;color:var(--fg);white-space:pre-wrap}:root{--passkey-ink: #222}.passkey-shell{max-width:34rem;margin:12vh auto;padding:2rem;border:1px solid #cfc9bc;background:#fbfaf6;color:var(--passkey-ink)}.passkey-shell h1{margin:.3rem 0 1rem;font-size:2rem}.passkey-shell button,.passkey-bar button{padding:.7rem 1rem;border:1px solid #6a4b31;background:#6a4b31;color:#fff;cursor:pointer}.passkey-shell button:disabled{opacity:.5;cursor:not-allowed}.passkey-primary{width:100%;margin:1rem 0 1.5rem}.passkey-shell details{border-top:1px solid #ddd4c6;padding-top:1rem}.passkey-shell details label{display:block;margin:.8rem 0}.passkey-shell input{display:block;width:100%;box-sizing:border-box;margin-top:.4rem;padding:.6rem}.passkey-notice{overflow-wrap:anywhere;padding:.75rem;background:#f0eadc}.passkey-bar{display:flex;align-items:center;justify-content:space-between;padding:.4rem 1rem;background:#24231f;color:#fff}
