@import "https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@400;500&family=Source+Serif+4:opsz,wght@8..60,500;8..60,700&family=DM+Sans:ital,opsz,wght@0,9..40,400;0,9..40,600;1,9..40,400&display=swap";.hero.home-raymond{grid-template-columns:minmax(0,1.15fr) minmax(0,.85fr);gap:clamp(1.5rem,5vw,4.5rem);min-height:min(760px,100svh - 8rem);padding:1.5rem 0}.home-raymond-eyebrow{color:var(--accent);letter-spacing:.08em;text-transform:uppercase;margin:0 0 1rem;font-size:.78rem;font-weight:700}.hero.home-raymond h1{letter-spacing:-.035em;max-width:17ch;margin:0 0 1.2rem;font-size:clamp(2.1rem,4.3vw,3.65rem);line-height:1.13}.home-raymond .lede{max-width:44ch;line-height:1.7}.home-raymond-intro{border-top:1px solid var(--line);max-width:30rem;margin-top:1.75rem;padding-top:1.25rem}.home-raymond-intro p{color:var(--muted);margin:0 0 .65rem;font-size:.94rem;line-height:1.6}.home-raymond-intro strong{color:var(--ink)}.home-raymond-tour{color:var(--accent);cursor:pointer;background:0 0;border:0;border-bottom:1px solid;align-items:center;gap:.75rem;padding:.25rem 0;font-weight:700;display:inline-flex}.home-raymond-tour:hover{color:var(--ink)}.home-raymond-access{color:var(--muted);margin:1rem 0 0;font-size:.78rem}.home-raymond-visual{min-width:0}.home-raymond-professor{text-align:center;margin:0}.home-raymond-professor img{mix-blend-mode:multiply;width:min(100%,430px);height:auto;margin:0 auto;display:block}.home-raymond-professor figcaption{color:var(--muted);font-family:var(--font-serif);margin-top:.35rem;font-size:.95rem}.home-raymond-query{border:1px solid var(--line);background:#f7faf5cc;border-radius:12px;width:min(100%,380px);margin:1.1rem auto 0;padding:.9rem 1.1rem}.home-raymond-query-label{color:var(--muted);margin-bottom:.5rem;font-size:.72rem;display:block}.home-raymond-query pre{font-family:var(--font-mono);white-space:pre-wrap;overflow-wrap:anywhere;margin:0;font-size:.8rem;line-height:1.65}.raymond-onboarding{border:1px solid var(--line);background:var(--panel);width:min(760px,100vw - 2rem);max-height:calc(100dvh - 2rem);color:var(--ink);overscroll-behavior:contain;border-radius:18px;padding:0;overflow:auto;box-shadow:0 24px 80px #15201838}.raymond-onboarding::backdrop{-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);background:#15201875}.raymond-onboarding-header{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;gap:1rem;padding:.9rem 1.25rem;display:flex}.raymond-onboarding-header p{color:var(--muted);margin:0;font-size:.8rem;font-weight:600}.raymond-onboarding-close{width:36px;height:36px;color:var(--muted);cursor:pointer;background:0 0;border:1px solid #0000;border-radius:8px;flex:0 0 36px;place-items:center;font-size:1.6rem;line-height:1;display:grid}.raymond-onboarding-close:hover{border-color:var(--line);color:var(--ink);background:#1f6b4a12}.raymond-onboarding-steps{grid-template-columns:repeat(4,minmax(0,1fr));gap:.6rem;margin:0;padding:1.25rem 1.5rem 0;list-style:none;display:grid}.raymond-onboarding-steps li{color:var(--muted);align-items:center;gap:.45rem;font-size:.72rem;line-height:1.3;display:flex}.raymond-onboarding-step-number{border:1px solid var(--line);border-radius:50%;flex:0 0 25px;place-items:center;width:25px;height:25px;font-size:.72rem;font-weight:700;display:grid}.raymond-onboarding-steps li[aria-current=step]{color:var(--accent);font-weight:700}.raymond-onboarding-steps li[aria-current=step] .raymond-onboarding-step-number{border-color:var(--accent);background:var(--accent);color:#fff}.raymond-onboarding-body{grid-template-columns:160px minmax(0,1fr);align-items:start;gap:1.25rem;min-height:342px;padding:1.75rem 1.75rem 1.5rem 1.25rem;display:grid}.raymond-onboarding-portrait{justify-content:center;align-items:center;min-height:160px;padding-top:.8rem;display:flex}.raymond-onboarding-portrait>img{mix-blend-mode:multiply;max-width:100%;height:auto;display:block}.raymond-onboarding-content{min-width:0}.raymond-onboarding-counter{color:var(--accent);letter-spacing:.06em;text-transform:uppercase;margin:0 0 .5rem;font-size:.72rem;font-weight:700}.raymond-onboarding-content h2{font-family:var(--font-serif);letter-spacing:-.02em;margin:0 0 1rem;font-size:clamp(1.5rem,3vw,1.85rem);line-height:1.2}.raymond-onboarding-content h2:focus{outline:none}.raymond-onboarding-content p:not(.raymond-onboarding-counter){margin:.75rem 0;font-size:.92rem;line-height:1.65}.raymond-onboarding-welcome{font-weight:600}.raymond-onboarding-aside{border-left:2px solid var(--line);color:var(--muted);padding-left:.8rem}.raymond-onboarding-points{margin:.75rem 0 1rem;padding-left:1.2rem;font-size:.9rem;line-height:1.6}.raymond-onboarding-points li+li{margin-top:.35rem}.raymond-onboarding-link{color:var(--accent);text-underline-offset:3px;padding:.25rem 0;font-size:.88rem;font-weight:600;text-decoration:underline;display:inline-block}.raymond-onboarding-code{border:1px solid var(--line);background:var(--paper);border-radius:10px;padding:.75rem .85rem}.raymond-onboarding-code>span{color:var(--muted);margin-bottom:.4rem;font-size:.72rem;display:block}.raymond-onboarding-code pre{font-family:var(--font-mono);white-space:pre-wrap;overflow-wrap:anywhere;margin:0;font-size:.77rem}.raymond-onboarding-footer{border-top:1px solid var(--line);justify-content:space-between;align-items:center;gap:.85rem;padding:1rem 1.5rem;display:flex}.raymond-onboarding-skip{color:var(--muted);cursor:pointer;text-underline-offset:3px;background:0 0;border:0;padding:.45rem 0;font-size:.83rem;text-decoration:underline}.raymond-onboarding-actions{align-items:center;gap:.5rem;display:flex}.raymond-onboarding-actions .btn{text-align:center;font-size:.85rem}.home-raymond-tour:focus-visible,.raymond-onboarding button:focus-visible,.raymond-onboarding a:focus-visible{outline:2px solid var(--accent);outline-offset:4px}@media (width<=900px){.hero.home-raymond{grid-template-columns:minmax(0,1.15fr) minmax(0,.85fr);gap:1.25rem;min-height:0}.home-raymond-professor img{width:100%}}@media (width<=680px){.raymond-platform .topbar{grid-template-columns:auto minmax(0,1fr);gap:.7rem .8rem;padding:.8rem 1rem .7rem;display:grid}.raymond-platform .topbar nav{grid-area:2/1/auto/-1;justify-content:space-between;gap:.9rem;min-width:0}.raymond-platform .topbar nav a{white-space:nowrap;font-size:.8rem}.raymond-platform .auth-slot{justify-self:end;gap:.35rem;min-width:0}.raymond-platform .auth-slot .btn{flex-shrink:0;padding:.4rem .6rem;font-size:.8rem}.raymond-platform .user-chip{white-space:nowrap;text-overflow:ellipsis;min-width:0;max-width:8rem;padding:.3rem .4rem;font-size:.8rem;overflow:hidden}.hero.home-raymond{grid-template-columns:1fr;gap:1.75rem;padding:.75rem 0 1.5rem}.hero.home-raymond h1{max-width:17ch;font-size:clamp(2.15rem,8vw,2.8rem)}.home-raymond .cta-row{gap:.5rem}.home-raymond .cta-row .btn{padding:.55rem .75rem;font-size:.9rem}.home-raymond-professor img{width:min(100%,300px)}.home-raymond-query{margin-top:1rem}.raymond-onboarding{border-radius:14px;width:calc(100vw - 1.25rem);max-height:calc(100dvh - 1.25rem)}.raymond-onboarding-header{padding:.65rem .9rem}.raymond-onboarding-steps{gap:.35rem;padding:1rem 1rem 0}.raymond-onboarding-steps li{text-align:center;flex-direction:column;gap:.35rem;font-size:.65rem}.raymond-onboarding-body{grid-template-columns:1fr;gap:.5rem;min-height:0;padding:.8rem 1.1rem 1.2rem}.raymond-onboarding-portrait{height:108px;min-height:0;padding-top:0}.raymond-onboarding-portrait>img{object-fit:contain;width:108px;max-height:108px}.raymond-onboarding-portrait>:not(img){max-width:116px;max-height:108px}.raymond-onboarding-footer{flex-wrap:wrap;justify-content:flex-end;padding:.85rem 1rem}.raymond-onboarding-skip{margin-right:auto}}@media (prefers-reduced-motion:reduce){.hero.home-raymond{animation:none}}.raymond-avatar{vertical-align:middle;flex:none;display:inline-block;position:relative;overflow:hidden}.raymond-avatar img{width:100%;height:auto;position:absolute;top:50%;left:0;transform:translateY(-50%)}.raymond-note{border:1px solid var(--line);background:#f7faf5e6;border-left:3px solid #537e9d;border-radius:12px;align-items:flex-start;gap:1rem;margin:1.1rem 0;padding:1.1rem;display:flex}.raymond-note--compact{gap:.85rem;padding:.8rem 1rem;font-size:.88rem}.raymond-note-copy{flex:1;min-width:0}.raymond-note-title{color:#284d68;margin-bottom:.25rem;font-size:.9rem;display:block}.raymond-note p{margin:.3rem 0 .5rem;line-height:1.6}.raymond-note p:last-child{margin-bottom:0}.raymond-note .btn{padding:.35rem .65rem;font-size:.8rem}.raymond-note ul,.raymond-note ol{margin:.4rem 0;padding-left:1.15rem}.raymond-note--error{border-left-color:var(--danger)}.raymond-note--warning{border-left-color:#b17a26}.raymond-note--success,.raymond-note--celebration{border-left-color:var(--ok)}.raymond-editor-note{flex:none;max-height:min(220px,26vh);margin:.35rem 0;overflow:auto}.raymond-editor-note.raymond-note--compact{gap:.65rem;padding:.5rem .65rem;font-size:.78rem}.raymond-editor-note .raymond-note-title{font-size:.8rem}.raymond-editor-note p{line-height:1.4}.raymond-editor-note details{margin-top:.3rem}.raymond-launcher{right:1.25rem;bottom:max(1rem, env(safe-area-inset-bottom));z-index:50;color:var(--ink);cursor:pointer;text-align:left;background:#f9fcf7;border:1px solid #a6beb0;border-radius:999px;align-items:center;gap:.6rem;padding:.6rem .9rem .6rem .65rem;font-size:.85rem;font-weight:700;display:flex;position:fixed;box-shadow:0 4px 22px #15201818}.raymond-launcher:hover,.raymond-launcher.is-open{border-color:var(--accent);background:#f0f7ed}.raymond-launcher-sub{color:var(--muted);font-size:.68rem;font-weight:400;display:block}.raymond-launcher-symbol{border:1px solid var(--line);border-radius:50%;place-items:center;width:1.45rem;height:1.45rem;margin-left:.3rem;font-size:.9rem;display:grid}.raymond-panel{z-index:49;background:#f9fbf7;border:1px solid #b4c6b4;border-radius:18px;flex-direction:column;width:min(420px,100vw - 2rem);max-height:min(720px,100dvh - 7rem);display:flex;position:fixed;bottom:5.8rem;right:1.25rem;overflow:hidden;box-shadow:0 15px 65px #15201828}.raymond-panel-head{flex:none;align-items:center;gap:.55rem;padding:.4rem .8rem;display:flex}.raymond-panel-head h2{font:700 1.05rem/1.25 var(--font-serif);margin:0}.raymond-close{width:2rem;height:2rem;color:var(--muted);cursor:pointer;background:0 0;border:1px solid #0000;border-radius:50%;margin-left:auto;font-size:1.6rem;line-height:1}.raymond-close:hover{background:#e5eee0}.raymond-tabs{border-bottom:1px solid var(--line);flex:none;gap:.2rem;padding:0 .8rem .4rem;display:flex}.raymond-tabs button{min-width:0;font:inherit;white-space:nowrap;color:var(--muted);cursor:pointer;background:0 0;border:1px solid #0000;border-radius:6px;flex:1;padding:.3rem .25rem;font-size:.72rem;line-height:1.3}.raymond-tabs button.active{color:var(--accent);background:#e5efdf;border-color:#cbd9c5;font-weight:600}.raymond-panel-content{overscroll-behavior:contain;min-height:0;padding:1.2rem;font-size:.88rem;line-height:1.65;overflow-y:auto}.raymond-panel-content h3{font-family:var(--font-serif);margin:.2rem 0 .7rem;font-size:1.25rem;line-height:1.3}.raymond-panel-content p{margin:.4rem 0 1rem}.raymond-eyebrow{color:var(--muted);text-transform:uppercase;letter-spacing:.07em;font-size:.65rem}.raymond-steps{margin:1rem 0;padding-left:1.3rem}.raymond-steps li{margin-bottom:.7rem;padding-left:.2rem}.raymond-steps li::marker{color:var(--accent);font-weight:600}.raymond-reflection{background:#eaf0f1;border-left:2px solid #7299b4;border-radius:0 8px 8px 0;margin:1rem 0;padding:.8rem 1rem}.raymond-reflection strong{color:#365c76;font-size:.73rem}.raymond-reflection p{margin:.25rem 0 0}.raymond-panel summary{cursor:pointer;padding:.6rem 0;font-weight:600}.raymond-example pre{max-width:100%;font-family:var(--font-mono);background:#e8eee4;border-radius:8px;padding:.8rem;font-size:.73rem;overflow-x:auto}.raymond-example p{color:var(--muted);font-size:.73rem}.raymond-source{color:var(--accent);text-underline-offset:3px;margin:.8rem 0 1.2rem;font-size:.75rem;text-decoration:underline;display:inline-block}.raymond-faq{border-top:1px solid var(--line);padding-top:1rem}.raymond-faq h3{font-size:1rem}.raymond-faq details{border-bottom:1px solid var(--line)}.raymond-faq summary{font-size:.8rem}.raymond-faq p{color:var(--muted);font-size:.8rem}.raymond-inline-actions{flex-wrap:wrap;align-items:center;gap:.5rem;margin-top:.9rem;display:flex}.raymond-inline-actions .btn{padding:.45rem .65rem;font-size:.78rem}.raymond-panel-content label{margin-bottom:.4rem;font-weight:600;display:block}.raymond-panel-content textarea{box-sizing:border-box;resize:vertical;width:100%;min-height:100px;max-height:250px;color:var(--ink);border:1px solid var(--line);font:.76rem/1.55 var(--font-mono);background:#fff;border-radius:8px;margin-bottom:.7rem;padding:.7rem}.raymond-footnote{color:var(--muted);font-size:.72rem;margin-top:1rem!important}.raymond-error-explanation{border-top:1px solid var(--line);margin-top:1.4rem;padding-top:1.2rem}.raymond-error-explanation h3{margin-top:.8rem}.raymond-about-portrait{border-radius:14px;width:200px;max-width:100%;height:auto;margin:-.7rem auto .8rem;display:block}.raymond-introduction{color:#365c76;font-family:var(--font-serif);font-size:1.1rem}.raymond-tributes{padding-left:1.2rem}.raymond-tributes li{margin-bottom:.7rem}.raymond-tributes a{color:var(--accent);text-decoration:underline}.raymond-welcome{z-index:48;background:#fbfcf7;border:1px solid #b7cbb4;border-radius:14px;align-items:flex-start;gap:.85rem;width:min(365px,100vw - 2rem);padding:1.1rem;font-size:.84rem;display:flex;position:fixed;bottom:5.8rem;right:1.25rem;box-shadow:0 8px 35px #15201818}.raymond-welcome p{color:var(--muted);margin:.3rem 0;font-size:.76rem}.raymond-welcome .btn{font-size:.73rem}.raymond-launcher:focus-visible,.raymond-panel button:focus-visible,.raymond-panel summary:focus-visible,.raymond-panel textarea:focus-visible{outline-offset:3px;outline:3px solid #537e9d}@media (width<=600px){.raymond-launcher{right:.65rem;bottom:max(.6rem, env(safe-area-inset-bottom));padding:.5rem .7rem}.raymond-launcher-sub,.raymond-launcher-symbol{display:none}.raymond-panel{width:calc(100% - 1rem);max-height:calc(100dvh - 5rem);bottom:4.3rem;right:.5rem}.raymond-welcome{bottom:4.3rem;right:.65rem}.raymond-note{gap:.6rem;padding:.8rem}.raymond-note>.raymond-avatar{width:50px!important;height:33px!important}.raymond-panel-content{padding:1rem}}@media (prefers-reduced-motion:reduce){.raymond-panel,.raymond-launcher{scroll-behavior:auto;transition:none}}.raymond-panel[hidden],.raymond-chat-slot[hidden]{display:none}.raymond-panel--chat{height:min(740px,100dvh - 7rem)}.raymond-panel--chat .raymond-panel-content{flex-direction:column;padding:0;display:flex;overflow:hidden}.raymond-chat-slot{flex:1;min-height:0;display:flex}.raymond-chat{flex-direction:column;flex:1;min-width:0;min-height:0;display:flex}.raymond-chat-toolbar{border-bottom:1px solid var(--line);flex:none;justify-content:space-between;align-items:center;gap:.7rem;padding:.4rem .85rem;display:flex}.raymond-chat-context{color:#365c76;white-space:nowrap;text-overflow:ellipsis;background:#eaf0f1;border-radius:5px;min-width:0;padding:.15rem .4rem;font-size:.75rem;overflow:hidden}.raymond-chat-reset{color:var(--muted);font:inherit;text-underline-offset:3px;cursor:pointer;background:0 0;border:0;flex:none;padding:.2rem 0;font-size:.75rem;text-decoration:underline}.raymond-chat-reset:disabled{opacity:.45;cursor:default}.raymond-chat-transcript{overscroll-behavior:contain;scrollbar-width:thin;flex:1;min-height:80px;padding:1rem;overflow:hidden auto}.raymond-chat-login{text-align:center;align-self:center;padding:1.7rem 1.2rem}.raymond-chat-login h3,.raymond-chat-empty h3{font:700 1.3rem/1.25 var(--font-serif);margin:.8rem 0 .6rem}.raymond-chat-login p{font-size:.85rem;line-height:1.65}.raymond-chat-login .btn{margin:.5rem 0;font-size:.85rem}.raymond-chat-muted{color:var(--muted);font-size:.73rem!important}.raymond-chat-empty{text-align:center;padding:.35rem .35rem .7rem}.raymond-chat-empty p{color:var(--muted);font-size:.82rem;line-height:1.6}.raymond-chat-empty button{border:1px solid var(--line);color:var(--accent);font:inherit;cursor:pointer;background:#eff5eb;border-radius:8px;margin-top:.35rem;padding:.55rem .75rem;font-size:.76rem}.raymond-chat-message{min-width:0;font-size:.875rem;line-height:1.6}.raymond-chat-message+.raymond-chat-message{margin-top:1rem}.raymond-chat-message--user{background:#eef4e9;border:1px solid #d5dfcf;border-radius:11px 11px 3px;margin-left:1.5rem;padding:.7rem .85rem}.raymond-panel-content .raymond-chat-speaker{color:var(--muted);letter-spacing:.04em;text-transform:uppercase;margin:0 0 .3rem;font-size:.65rem;font-weight:700}.raymond-panel-content .raymond-chat-question{white-space:pre-wrap;overflow-wrap:anywhere;margin:0}.raymond-chat-markdown{overflow-wrap:anywhere}.raymond-chat-markdown>:first-child{margin-top:0!important}.raymond-chat-markdown>:last-child{margin-bottom:0!important}.raymond-chat-markdown h1,.raymond-chat-markdown h2,.raymond-panel-content .raymond-chat-markdown h3,.raymond-chat-markdown h4{font:700 1.05rem/1.35 var(--font-serif);margin:1rem 0 .5rem}.raymond-panel-content .raymond-chat-markdown p{margin:.45rem 0 .75rem}.raymond-chat-markdown ul,.raymond-chat-markdown ol{padding-left:1.25rem}.raymond-chat-markdown li+li{margin-top:.35rem}.raymond-chat-markdown pre{max-width:100%;font:.73rem/1.6 var(--font-mono);background:#e9efe5;border:1px solid #d2ddd0;border-radius:8px;margin:.75rem 0;padding:.8rem;overflow:auto}.raymond-chat-markdown code{font-family:var(--font-mono);font-size:.86em}.raymond-chat-markdown pre code{font-size:inherit;white-space:pre}.raymond-chat-markdown :not(pre)>code{background:#e9efe5;border-radius:3px;padding:.1em .25em}.raymond-chat-markdown a,.raymond-chat-sources a{color:var(--accent);text-underline-offset:3px;text-decoration:underline}.raymond-chat-markdown blockquote{color:var(--muted);border-left:2px solid #9ab29a;margin:.8rem 0;padding-left:.75rem}.raymond-chat-markdown table{border-collapse:collapse;max-width:100%;font-size:.75rem;display:block;overflow-x:auto}.raymond-chat-markdown th,.raymond-chat-markdown td{border:1px solid var(--line);padding:.35rem .5rem}.raymond-chat-sources{border-top:1px solid var(--line);margin-top:.5rem;font-size:.8rem}.raymond-panel-content .raymond-chat-sources>summary{color:var(--muted);cursor:pointer;padding:.4rem 0;font-size:.76rem;font-weight:600}.raymond-chat-sources ul{margin:.2rem 0 .4rem;padding:0;list-style:none}.raymond-chat-sources li+li{margin-top:.3rem}.raymond-chat-pending{color:var(--muted);align-items:center;gap:.6rem;padding:.8rem 0 .2rem;font-size:.76rem;display:flex}.raymond-chat-pending button{color:var(--muted);font:inherit;cursor:pointer;background:0 0;border:0;margin-left:auto;padding:.4rem 0;font-size:.72rem;text-decoration:underline}.raymond-chat-dots{animation:1.3s ease-in-out infinite raymond-thinking}.raymond-chat-failure{background:#fff6f0;border:1px solid #dcb6ac;border-radius:8px;margin-top:.85rem;padding:.75rem .85rem;font-size:.77rem}.raymond-panel-content .raymond-chat-failure p{margin:0 0 .55rem}.raymond-chat-failure.is-cancelled{border-color:var(--line);background:#f0f4ed}.raymond-chat-failure .btn{padding:.35rem .6rem;font-size:.72rem}.raymond-panel-content .raymond-chat-retry-context{color:var(--muted);font-size:.68rem}.raymond-chat-compose{border-top:1px solid var(--line);background:#f4f8f0;flex:none;padding:.6rem .85rem .35rem}.raymond-chat-compose-row{grid-template-columns:minmax(0,1fr) auto;align-items:end;gap:.5rem;display:grid}.raymond-chat-compose-row .btn{min-height:40px;padding:.5rem .7rem;font-size:.8rem}.raymond-panel-content .raymond-chat-work{cursor:pointer;align-items:center;gap:.5rem;margin:0;font-size:.8rem;font-weight:600;display:flex}.raymond-chat-work input{width:15px;height:15px;accent-color:var(--accent);margin:0}.raymond-panel-content .raymond-chat-work-description{color:var(--muted);margin:.4rem 0 .65rem;font-size:.75rem;line-height:1.5}.raymond-panel-content .raymond-chat-compose textarea{resize:vertical;min-height:60px;max-height:140px;font:.875rem/1.4 var(--font-sans);margin:0;padding:.5rem .6rem}.raymond-chat-settings{margin-top:.3rem}.raymond-panel-content .raymond-chat-settings>summary{cursor:pointer;color:var(--muted);align-items:center;gap:.4rem;padding:.3rem 0;font-size:.73rem;font-weight:400;line-height:1.5;list-style:none;display:flex}.raymond-chat-settings>summary::-webkit-details-marker{display:none}.raymond-chat-settings>summary:before{content:"›";font-size:1rem;line-height:1;transition:transform .15s}.raymond-chat-settings[open]>summary:before{transform:rotate(90deg)}.raymond-chat-sharing{color:var(--muted);margin-left:auto;font-size:.69rem}.raymond-chat-settings-body{overscroll-behavior:contain;max-height:205px;padding:.5rem 0 .55rem;overflow-y:auto}.raymond-panel-content .raymond-chat-privacy{color:var(--muted);margin:.55rem 0 0;font-size:.75rem;line-height:1.5}.raymond-panel-content .raymond-chat-used-context{color:var(--muted);margin:.45rem 0 0;font-size:.73rem;line-height:1.5}.raymond-panel-content .raymond-chat-visually-hidden{clip-path:inset(50%);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.raymond-chat button:focus-visible,.raymond-chat a:focus-visible,.raymond-chat summary:focus-visible,.raymond-chat textarea:focus-visible,.raymond-chat input:focus-visible,.raymond-chat-transcript:focus-visible{outline-offset:3px;outline:2px solid #537e9d}@keyframes raymond-thinking{50%{opacity:.25}}@media (width<=600px){.raymond-panel--chat{height:calc(100dvh - 6.4rem)}.raymond-chat-toolbar{padding:.4rem .75rem}.raymond-chat-transcript{padding:.85rem}.raymond-chat-compose{padding:.5rem .75rem .3rem}.raymond-panel-content .raymond-chat-compose textarea{font-size:1rem}.raymond-chat-message--user{margin-left:1rem}}@media (height<=600px){.raymond-panel--chat .raymond-panel-content{overflow-y:auto}.raymond-chat-transcript{flex:1 0 110px;min-height:110px}}@media (prefers-reduced-motion:reduce){.raymond-chat-dots{animation:none}.raymond-chat-settings>summary:before{transition:none}}.raymond-exercise{border-top:1px solid var(--line);margin:1rem 0 1.4rem;padding-top:1rem}.raymond-exercise-actions,.raymond-exercise-hint-buttons{flex-wrap:wrap;align-items:center;gap:.4rem;display:flex}.raymond-exercise-actions{margin-top:.6rem}.raymond-exercise-actions .btn{min-height:2rem;padding:.3rem .65rem;font-size:.8rem}.raymond-exercise-hint-buttons .active{border-color:var(--accent);color:var(--accent)}.raymond-exercise-hints p{border-left:2px solid var(--line);overflow-wrap:anywhere;margin:.65rem 0 0;padding-left:.7rem}:root{--ink:#152018;--muted:#5a6b5e;--paper:#eef3ea;--panel:#f7faf5;--line:#c5d2c3;--accent:#1f6b4a;--accent-2:#c45c26;--danger:#a12828;--ok:#1b6b3a;--shadow:0 18px 50px #15201814;--font-sans:"DM Sans", sans-serif;--font-serif:"Source Serif 4", Georgia, serif;--font-mono:"IBM Plex Mono", ui-monospace, monospace;color:var(--ink);background:radial-gradient(1200px 600px at 10% -10%, #d9e8d4 0%, transparent 55%), radial-gradient(900px 500px at 100% 0%, #f0e2d4 0%, transparent 50%), linear-gradient(180deg, #f4f7f1 0%, var(--paper) 100%);font-family:var(--font-sans);line-height:1.5}*{box-sizing:border-box}html,body,#root{height:100%;min-height:100%;margin:0}a{color:inherit;text-decoration:none}button,input{font:inherit}.app-shell{flex-direction:column;min-height:100vh;display:flex}.app-shell--locked{height:100vh;overflow:hidden}.topbar{border-bottom:1px solid var(--line);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);z-index:10;background:#eef3ead9;flex:none;align-items:center;gap:1.5rem;padding:1rem 1.5rem;display:flex}.brand{font-family:var(--font-serif);letter-spacing:-.02em;font-size:1.4rem;font-weight:700}.topbar nav{flex:1;gap:1rem;display:flex}.topbar nav a{color:var(--muted);font-weight:600}.topbar nav a.active{color:var(--accent)}@media (width<=700px){.topbar{gap:.7rem;padding:.8rem 1rem}.topbar nav{flex-wrap:wrap;flex-basis:100%;order:3;gap:.55rem 1rem}.topbar .auth-slot{margin-left:auto}}.auth-slot{align-items:center;gap:.75rem;display:flex}.user-chip{color:var(--muted);border:1px solid #0000;border-radius:999px;padding:.3rem .65rem;font-size:.95rem;font-weight:600;text-decoration:none;transition:border-color .15s,background .15s,color .15s}a.user-chip:hover{border-color:var(--accent);color:var(--accent);background:#1f6b4a1a}.main{flex:1;width:min(1280px,100%);margin:0 auto;padding:1.5rem 1.5rem 3rem}.main.main--flush{flex-direction:column;flex:1;width:100%;max-width:none;min-height:0;margin:0;padding:0;display:flex}.playground-page{flex-direction:column;flex:1;gap:.65rem;width:min(1280px,100%);min-height:0;margin:0 auto;padding:.85rem 1.25rem 1rem;display:flex}.playground-head{flex-wrap:wrap;flex:none;align-items:baseline;gap:.35rem 1rem;display:flex}.playground-head h1{margin:0;font-size:1.35rem;line-height:1.2}.playground-head p{margin:0;font-size:.88rem}.playground-page .sql-panel{flex:1;min-height:0}.playground-page .sql-editor{flex:55%;min-height:220px}.sql-panel--workspace{gap:.55rem}.sql-layout-menu{margin-left:auto;position:relative}.sql-layout-trigger{align-items:center;gap:.4rem;display:inline-flex}.sql-layout-trigger.active{border-color:var(--accent);color:var(--accent);background:#1f6b4a14}.sql-layout-icon{fill:none;stroke:currentColor;stroke-width:1.7px;width:1.05rem;height:1.05rem}.sql-layout-popover{z-index:30;background:var(--panel);border:1px solid var(--line);width:16.5rem;box-shadow:var(--shadow);border-radius:14px;padding:.75rem .8rem .7rem;position:absolute;top:calc(100% + .4rem);right:0}.sql-layout-label{letter-spacing:.04em;text-transform:uppercase;color:var(--muted);margin:0 0 .4rem;font-size:.72rem;font-weight:700}.sql-layout-label+.sql-layout-label,.sql-layout-controls+.sql-layout-label{margin-top:.85rem}.sql-layout-controls{grid-template-columns:1fr 1fr;gap:.35rem;display:grid}.sql-layout-reset{width:100%;margin-top:.75rem}.sql-layout-popover .sql-zoom{width:100%;margin-left:0}.sql-layout-popover .sql-zoom-slider{flex:1;width:auto;max-width:none}.sql-layout-btn.active{border-color:var(--accent);color:var(--accent);background:#1f6b4a14}.sql-workspace{flex:1;gap:0;min-height:0;display:grid}.sql-workspace .sql-editor,.sql-workspace .sql-result{flex:none;min-width:0;height:100%;min-height:0}.playground-page .sql-workspace .sql-editor{min-height:0}.sql-result--empty{border:1px dashed var(--line);background:#f7faf58c;border-radius:12px;justify-content:center;align-items:center;display:flex}.sql-result--empty p{margin:0}.sql-split{z-index:5;touch-action:none;background:0 0;border:0;outline:none;padding:0;position:relative}.sql-split--side{cursor:col-resize;width:10px;margin:0 -1px}.sql-split--stack{cursor:row-resize;height:10px;margin:-1px 0}.sql-split:before{content:"";background:var(--line);border-radius:2px;transition:background .15s,inset .15s;position:absolute}.sql-split--side:before{inset:0 3px}.sql-split--stack:before{inset:3px 0}.sql-split:hover:before,.sql-split:focus-visible:before{background:var(--accent)}.sql-split--side:hover:before,.sql-split--side:focus-visible:before{inset:0 2px}.sql-split--stack:hover:before,.sql-split--stack:focus-visible:before{inset:2px 0}.sql-split:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}.learn-loading{padding:1.5rem}.learn-shell{flex:1;align-items:stretch;height:100%;min-height:0;display:flex;position:relative}.module-nav-dock{z-index:25;flex:none;align-items:stretch;height:100%;display:flex}.module-nav{border-right:1px solid var(--line);background:var(--panel);flex-direction:column;width:280px;height:100%;padding:0;transition:width .22s,border-color .22s;display:flex;overflow:hidden}.module-nav-scroll{flex:1;min-height:0;padding:1rem .9rem .75rem;overflow:auto}.module-nav-db{border-top:1px solid var(--line);min-width:0;color:inherit;cursor:pointer;background:#3367910f;flex:none;align-items:center;gap:.55rem;margin:0;padding:.7rem .9rem .85rem;text-decoration:none;transition:background .16s;display:flex}.module-nav-db:hover{background:#3367911f}.module-nav-db-diode{border-radius:50%;flex:none;width:9px;height:9px;box-shadow:inset 0 1px 1px #ffffff59}.module-nav-db-diode.on{background:radial-gradient(circle at 35% 30%,#9dffb0 0%,#1b6b3a 55%,#0f4a28 100%);box-shadow:0 0 0 1px #1b6b3a59,0 0 8px #1b6b3a8c,inset 0 1px 1px #ffffff73}.module-nav-db-diode.off{background:radial-gradient(circle at 35% 30%,#ffb0b0 0%,#a12828 55%,#6e1515 100%);box-shadow:0 0 0 1px #a1282859,0 0 6px #a1282866,inset 0 1px 1px #ffffff4d}.module-nav-db-logo{flex:none;display:block}.module-nav-db-text{flex-direction:column;gap:.05rem;min-width:0;display:flex}.module-nav-db-label{letter-spacing:.04em;text-transform:uppercase;color:#336791;font-size:.68rem;font-weight:700;line-height:1.2}.module-nav-db-name{font-family:var(--font-mono);color:var(--ink);text-overflow:ellipsis;white-space:nowrap;font-size:.72rem;line-height:1.25;overflow:hidden}.learn-shell.nav-closed .module-nav,.module-nav-dock.closed .module-nav{pointer-events:none;border-right-color:#0000;width:0;padding:0;overflow:hidden}.module-nav-fold{border:1px solid var(--line);background:var(--panel);width:22px;height:56px;color:var(--accent);cursor:pointer;z-index:26;border-left:0;border-radius:0 10px 10px 0;flex:0 0 22px;align-self:center;margin-left:-1px;padding:0;font-size:1.15rem;font-weight:700;line-height:1;transition:background .16s,color .16s,border-color .16s;position:relative;box-shadow:2px 0 10px #1520180f}.module-nav-fold:hover{background:var(--accent);color:#f4fff8;border-color:var(--accent)}.learn-shell.nav-closed .module-nav-fold{border-left:1px solid var(--line);margin-left:0}.module-nav-head h2{font-family:var(--font-serif);margin:.35rem 0 .5rem;font-size:1.15rem;line-height:1.25}.module-nav-back{color:var(--muted);font-size:.8rem;font-weight:600}.module-nav-back:hover{color:var(--accent)}.module-nav-progress{color:var(--muted);margin:0;font-size:.85rem}.module-nav-bar{background:var(--line);border-radius:99px;height:4px;margin:.45rem 0 .85rem;overflow:hidden}.module-nav-bar span{background:var(--accent);height:100%;transition:width .28s;display:block}.module-nav-label{letter-spacing:.06em;text-transform:uppercase;color:var(--muted);margin:.75rem 0 .35rem;font-size:.72rem;font-weight:700}.module-nav-list{margin:0;padding:0;list-style:none}.module-nav-link{color:var(--ink);border-radius:10px;grid-template-columns:1fr auto;align-items:start;gap:.45rem;padding:.5rem .45rem;font-size:.92rem;line-height:1.3;transition:background .16s,color .16s;display:grid}.module-nav-link:hover{background:#1f6b4a14}.module-nav-link.active{color:var(--accent);background:#1f6b4a24;font-weight:600}.module-nav-title{min-width:0}.module-nav-status{color:var(--ok);text-align:center;min-width:.9rem;font-size:.85rem}.module-nav-step{margin:1rem 0 0;font-size:.85rem}.module-nav-next-module{border:1px dashed var(--accent);color:var(--accent);border-radius:10px;margin-top:1rem;padding:.65rem .7rem;font-size:.88rem;font-weight:600;line-height:1.3;display:block}.module-nav-next-module:hover{background:#1f6b4a14}.module-nav-backdrop{display:none}.learn-body{flex-direction:column;flex:1;min-width:0;min-height:0;padding:0;display:flex}.learn-main{flex:1;gap:0;width:100%;min-width:0;height:100%;min-height:0;display:grid}.learn-main.with-sandbox{grid-template-columns:minmax(0,1fr) 10px minmax(0,1fr) 22px;align-items:stretch}.learn-main.sandbox-closed{grid-template-columns:minmax(0,1fr) 22px;align-items:stretch}.sandbox-fold{z-index:26;border:1px solid var(--line);background:var(--panel);width:22px;height:56px;color:var(--accent);cursor:pointer;border-right:0;border-radius:10px 0 0 10px;align-self:center;margin-right:0;padding:0;font-size:1.15rem;font-weight:700;line-height:1;transition:background .16s,color .16s,border-color .16s;position:relative;box-shadow:-2px 0 10px #1520180f}.sandbox-fold:hover{background:var(--accent);color:#f4fff8;border-color:var(--accent)}.learn-main.sandbox-closed .sandbox-fold{border-right:1px solid var(--line);border-radius:10px 0 0 10px}.learn-main>.lesson{scrollbar-width:thin;scrollbar-color:#1f6b4a73 #c5d2c373;min-height:0;padding:1.25rem 1.5rem 2rem;overflow:auto}.learn-main>.lesson::-webkit-scrollbar{width:10px}.learn-main>.lesson::-webkit-scrollbar-track{background:#c5d2c359 padding-box padding-box;border:2px solid #0000;border-radius:999px;margin:.5rem 0}.learn-main>.lesson::-webkit-scrollbar-thumb{background:linear-gradient(#1f6b4a8c 0%,#1f6b4ab8 100%) padding-box padding-box;border:2px solid #0000;border-radius:999px;box-shadow:inset 0 0 0 1px #1f6b4a33}.learn-main>.lesson::-webkit-scrollbar-thumb:hover{background:linear-gradient(#1f6b4abf 0%,#1f6b4ae6 100%) padding-box padding-box}.learn-main>.lesson::-webkit-scrollbar-thumb:active{background:var(--accent);background-clip:padding-box}.learn-split{z-index:5;cursor:col-resize;touch-action:none;background:0 0;border:0;outline:none;width:10px;margin:0 -1px;padding:0;position:relative}.learn-split:before{content:"";background:var(--line);border-radius:2px;transition:background .15s,inset .15s;position:absolute;inset:0 3px}.learn-split:hover:before,.learn-split:focus-visible:before{background:var(--accent);inset:0 2px}.learn-split:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}body.is-resizing-split{cursor:col-resize;-webkit-user-select:none;user-select:none}body.is-resizing-split.is-resizing-split-y{cursor:row-resize}body.is-resizing-split .sql-editor,body.is-resizing-split .lesson,body.is-resizing-split .sql-result{pointer-events:none}.learn-pager{border-top:1px solid var(--line);grid-template-columns:1fr 1fr;gap:.75rem;margin-top:2rem;padding-top:1.25rem;display:grid}.pager-link{border:1px solid var(--line);background:var(--panel);border-radius:12px;flex-direction:column;gap:.2rem;padding:.75rem .9rem;transition:transform .16s,border-color .16s,box-shadow .16s;display:flex}.pager-link:hover{border-color:var(--accent);box-shadow:var(--shadow);transform:translateY(-1px)}.pager-link.next{text-align:right}.pager-dir{letter-spacing:.04em;text-transform:uppercase;color:var(--muted);font-size:.75rem;font-weight:700}.pager-title{font-family:var(--font-serif);font-size:.98rem}.btn{border:1px solid var(--line);background:var(--panel);color:var(--ink);cursor:pointer;border-radius:10px;padding:.55rem .95rem;transition:transform .16s,box-shadow .16s,background .16s}.btn:hover{box-shadow:var(--shadow);transform:translateY(-1px)}.btn:disabled{opacity:.6;cursor:wait;box-shadow:none;transform:none}.btn.primary{background:var(--accent);border-color:var(--accent);color:#f4fff8}.btn.accent{background:var(--accent-2);border-color:var(--accent-2);color:#fff8f2}.btn.ghost{background:0 0}.hero{grid-template-columns:1.1fr .9fr;align-items:center;gap:2rem;min-height:calc(100vh - 6rem);animation:.6s both rise;display:grid}.brand-mark{font-family:var(--font-serif);letter-spacing:-.04em;margin:0;font-size:clamp(2.8rem,7vw,4.8rem);font-weight:700;line-height:.95}.hero h1{font-family:var(--font-serif);max-width:18ch;margin:.75rem 0 .5rem;font-size:clamp(1.4rem,3vw,2rem);font-weight:500}.lede{color:var(--muted);max-width:40ch;font-size:1.05rem}.cta-row{flex-wrap:wrap;gap:.75rem;margin-top:1.5rem;display:flex}.hero-visual{border:1px solid var(--line);color:#d7f0e2;box-shadow:var(--shadow);background:linear-gradient(145deg,#1f6b4a1f,#0000 40%),#122018;border-radius:18px;padding:1.5rem;animation:8s ease-in-out infinite alternate drift}.hero-visual pre{font-family:var(--font-mono);white-space:pre-wrap;margin:0;font-size:.95rem}.page-head h1,.page h1,.lesson h1{font-family:var(--font-serif);letter-spacing:-.02em;margin:.2rem 0 .5rem}.ex-schema{border:1px solid var(--line);background:linear-gradient(165deg,#fffffff2 0%,#e8f2e4b3 100%);border-radius:14px;margin:.35rem 0 1.15rem;overflow:hidden}.ex-schema-toggle{cursor:pointer;text-align:left;width:100%;font:inherit;color:inherit;background:0 0;border:none;align-items:center;gap:.65rem;padding:.7rem .85rem;transition:background .15s;display:flex}.ex-schema-toggle:hover{background:#1f6b4a0f}.ex-schema.open .ex-schema-toggle{border-bottom:1px solid var(--line)}.ex-schema-toggle-main{flex-direction:column;flex:1;gap:.1rem;min-width:0;display:flex}.ex-schema-toggle-main strong{font-family:var(--font-serif);font-size:1.05rem}.ex-schema-sub{color:var(--muted);font-size:.82rem}.ex-schema-chevron{color:var(--accent);font-size:.95rem;line-height:1}.ex-schema-toggle-label{color:var(--accent);font-size:.8rem;font-weight:600}.ex-schema-body{padding:.75rem .85rem .85rem}.ex-schema-toolbar{justify-content:flex-end;margin-bottom:.5rem;display:flex}.ex-schema-ddl-btn{flex:none;padding:.3rem .65rem;font-size:.8rem}.ex-schema-ddl-btn.active{border-color:var(--accent);color:var(--accent)}.ex-schema-tabs{flex-wrap:wrap;gap:.35rem;margin-bottom:.55rem;display:flex}.ex-schema-tabs button{border:1px solid var(--line);color:var(--ink);font-size:.8rem;font-family:var(--font-mono);cursor:pointer;background:#fff;border-radius:8px;padding:.3rem .65rem;transition:border-color .15s,background .15s,color .15s}.ex-schema-tabs button:hover{border-color:var(--accent)}.ex-schema-tabs button.active{background:var(--accent);border-color:var(--accent);color:#f3faf5}.ex-schema-table-wrap{border:1px solid var(--line);background:#fff;border-radius:10px;overflow:auto}.ex-schema-table{border-collapse:collapse;width:100%;font-size:.84rem}.ex-schema-table th,.ex-schema-table td{text-align:left;border-bottom:1px solid var(--line);vertical-align:middle;padding:.4rem .55rem}.ex-schema-table th{background:#1f6b4a14;font-size:.75rem;font-weight:600}.ex-schema-table tr:last-child td{border-bottom:none}.ex-schema-table code{font-family:var(--font-mono);font-size:.82em}.ex-schema-null{letter-spacing:.03em;color:var(--accent-2);opacity:.85;margin-left:.4rem;font-size:.68rem;font-weight:600}.ex-schema-type{font-family:var(--font-mono);color:var(--muted);font-size:.78rem}.ex-schema-keys{white-space:nowrap}.ex-badge{letter-spacing:.04em;border-radius:4px;margin-right:.25rem;padding:.1rem .35rem;font-size:.68rem;font-weight:700;display:inline-block}.ex-badge.pk{color:var(--ok);background:#1b6b3a1f}.ex-badge.fk{color:var(--accent-2);background:#c45c261f}.ex-schema-rels{color:var(--muted);flex-wrap:wrap;gap:.35rem .85rem;margin:.55rem 0 0;font-size:.8rem;display:flex}.ex-schema-rels code{font-family:var(--font-mono);color:var(--ink);font-size:.78em}.ex-schema-ddl{background:#122018;border-radius:10px;max-height:280px;margin-top:.65rem;overflow:auto}.ex-schema-ddl pre{margin:0;padding:.75rem .9rem}.ex-schema-ddl code.hljs{color:#d7f0e2;font-family:var(--font-mono);white-space:pre;background:0 0;font-size:.78rem;line-height:1.45;display:block}.ex-schema-ddl .hljs-keyword,.ex-schema-ddl .hljs-built_in,.ex-schema-ddl .hljs-type,.ex-schema-ddl .hljs-literal{color:#7dd3a8;font-weight:500}.ex-schema-ddl .hljs-string{color:#f0c48a}.ex-schema-ddl .hljs-number{color:#9ec5ff}.ex-schema-ddl .hljs-comment{color:#7a9484;font-style:italic}.page-head p,.muted{color:var(--muted)}.eyebrow{color:var(--muted);font-size:.9rem}.module-list,.item-list,.objectives{margin:1.25rem 0 0;padding:0;list-style:none}.module-list li a,.item-list li a{border-bottom:1px solid var(--line);align-items:flex-start;gap:1rem;padding:1rem 0;transition:padding-left .18s,color .18s;display:flex}.module-list li a:hover,.item-list li a:hover{color:var(--accent);padding-left:.35rem}.module-list .ord{font-family:var(--font-mono);color:var(--accent);font-weight:500}.module-list h2{font-size:1.15rem;font-family:var(--font-serif);margin:0 0 .25rem}.module-list p{color:var(--muted);margin:0}.module-list li.scaffold{opacity:.72}.module-list em{color:var(--accent-2);font-size:.85rem;font-style:normal}.module-list em.module-progress-em{color:var(--accent)}.pill{text-transform:uppercase;letter-spacing:.04em;color:var(--accent);margin-right:.6rem;font-size:.75rem;font-weight:600;display:inline-block}.pill.completed{color:var(--ok)}.learning-goals{background:linear-gradient(135deg,#1f6b4a12,#0000 55%),#f7faf5d9;border:1px solid #1f6b4a2e;border-radius:14px;margin:1.25rem 0 1.5rem;padding:1rem 1.15rem 1.1rem}.learning-goals-title{font-family:var(--font-serif);color:var(--ink);margin:0 0 .55rem;font-size:1.15rem;font-weight:700}.learning-goals .objectives{gap:.35rem;margin:0;display:grid}.learning-goals .objectives li{color:var(--ink);padding:.15rem 0 .15rem 1.35rem;line-height:1.4;position:relative}.learning-goals .objectives li:before{content:"";background:var(--accent);opacity:.75;border-radius:50%;width:.45rem;height:.45rem;position:absolute;top:.55em;left:.15rem}.learning-goals--compact{background:#1f6b4a0d;border-radius:10px;margin:.7rem 0 0;padding:.65rem .8rem}.learning-goals--compact .learning-goals-title{text-transform:uppercase;letter-spacing:.04em;color:var(--accent);margin-bottom:.35rem;font-family:inherit;font-size:.72rem;font-weight:700}.learning-goals--compact .objectives{gap:.15rem}.learning-goals--compact .objectives li{color:var(--muted);padding-left:1rem;font-size:.88rem}.learning-goals--compact .objectives li:before{width:.35rem;height:.35rem;top:.5em}.objectives li{color:var(--muted);padding:.2rem 0}.present-slide .objectives{text-align:left;max-width:38rem;margin:1.25rem auto 0;padding:0;list-style:none}.present-slide .objectives li{color:var(--ink);border-bottom:1px solid #1f6b4a1f;padding:.45rem 0 .45rem 1.5rem;font-size:clamp(1.05rem,1.6vw,1.3rem);line-height:1.45;position:relative}.present-slide .objectives li:last-child{border-bottom:0}.present-slide .objectives li:before{content:"";background:var(--accent);border-radius:50%;width:.5rem;height:.5rem;position:absolute;top:.85em;left:.2rem}.sandbox{background:var(--panel);flex-direction:column;height:100%;min-height:0;padding:1rem 1.15rem 1.25rem;display:flex;overflow:hidden}.sql-panel{flex-direction:column;flex:1;gap:.65rem;min-height:0;display:flex}.md pre,.md code{font-family:var(--font-mono)}.md-code{background:#122018;border-radius:12px;margin:1rem 0;position:relative;overflow:hidden}.md-code-actions{z-index:2;pointer-events:none;justify-content:flex-end;gap:.35rem;padding:0;display:flex;position:absolute;top:.4rem;right:.45rem}.md-code-actions .md-code-btn{pointer-events:auto}.md-code-btn{appearance:none;color:#d7f0e2;font:inherit;cursor:pointer;background:#d7f0e214;border:1px solid #d7f0e238;border-radius:7px;padding:.25rem .55rem;font-size:.75rem;font-weight:600}.md-code-btn:hover{background:#d7f0e229}.md-code-btn-run{color:#f3faf5;background:#1f6b4a8c;border-color:#7dd3a88c}.md-code-btn-run:hover{background:#1f6b4abf}.md pre{color:#d7f0e2;background:#122018;border-radius:12px;padding:1rem;overflow:auto}.md .md-code>pre{background:0 0;border-radius:0;margin:0;padding:.65rem 1rem;overflow:auto}.md .md-code--sql>pre{padding-top:.65rem;padding-right:1rem}.md pre code.hljs{color:inherit;background:0 0;padding:0;font-size:.9rem;line-height:1.55;display:block}.md :not(pre)>code{background:#1220181a;border-radius:5px;padding:.1em .35em;font-size:.92em}.md .hljs-keyword,.md .hljs-built_in,.md .hljs-type,.md .hljs-literal{color:#7dd3a8;font-weight:500}.md .hljs-string,.md .hljs-doctag{color:#f0c48a}.md .hljs-number,.md .hljs-symbol{color:#9ec5ff}.md .hljs-comment,.md .hljs-quote{color:#7a9484;font-style:italic}.md .hljs-title,.md .hljs-section,.md .hljs-name,.md .hljs-selector-tag{color:#b8e6cf}.md .hljs-meta,.md .hljs-attr,.md .hljs-attribute{color:#c5d4a8}.md .hljs-addition{color:#9dffb0}.md .hljs-deletion{color:#ffb0b0}.md table{border-collapse:collapse;width:100%;margin:1rem 0}.md th,.md td{border-bottom:1px solid var(--line);text-align:left;padding:.4rem .5rem}.sql-toolbar{flex-wrap:wrap;flex:none;align-items:center;gap:.5rem;display:flex}.sql-history-toggle.active{border-color:var(--accent);color:var(--accent)}.sql-history{border:1px solid var(--line);background:#f7faf5e6;border-radius:12px;flex-direction:column;flex:0 auto;min-height:0;max-height:220px;display:flex;overflow:hidden}.sql-history-head{border-bottom:1px solid var(--line);flex:none;justify-content:space-between;align-items:center;gap:.5rem;padding:.45rem .65rem;display:flex}.sql-history-head strong{font-size:.85rem}.sql-history-refresh{padding:.2rem .45rem;font-size:.8rem}.sql-history-empty{margin:0;padding:.75rem .85rem;font-size:.88rem}.sql-history-list{flex-direction:column;flex:1;gap:.4rem;min-height:0;margin:0;padding:.35rem;list-style:none;display:flex;overflow:auto}.sql-history-item{border:1px solid var(--line);background:#fff;border-radius:10px;padding:.5rem .6rem .55rem}.sql-history-item.err{border-color:#a1282847}.sql-history-meta{color:var(--muted);flex-wrap:wrap;align-items:center;gap:.35rem .65rem;margin-bottom:.3rem;font-size:.75rem;display:flex}.sql-history-status{letter-spacing:.03em;text-transform:uppercase;border-radius:4px;padding:.1rem .35rem;font-size:.68rem;font-weight:700}.sql-history-status.ok{color:var(--ok);background:#1b6b3a1a}.sql-history-status.err{color:var(--danger);background:#a128281a}.sql-history-sql{color:#d7f0e2;background:#122018;border-radius:8px;max-height:7.5rem;margin:0;padding:.45rem .55rem;overflow:auto}.sql-history-sql code.hljs{color:inherit;font-family:var(--font-mono);white-space:pre-wrap;word-break:break-word;background:0 0;padding:0;font-size:.78rem;line-height:1.4;display:block}.sql-history-sql .hljs-keyword,.sql-history-sql .hljs-built_in,.sql-history-sql .hljs-type,.sql-history-sql .hljs-literal{color:#7dd3a8;font-weight:500}.sql-history-sql .hljs-string,.sql-history-sql .hljs-doctag{color:#f0c48a}.sql-history-sql .hljs-number,.sql-history-sql .hljs-symbol{color:#9ec5ff}.sql-history-sql .hljs-comment,.sql-history-sql .hljs-quote{color:#7a9484;font-style:italic}.sql-history-sql .hljs-title,.sql-history-sql .hljs-section,.sql-history-sql .hljs-name,.sql-history-sql .hljs-selector-tag{color:#b8e6cf}.sql-history-sql .hljs-meta,.sql-history-sql .hljs-attr,.sql-history-sql .hljs-attribute{color:#c5d4a8}.sql-history-error{color:var(--danger);margin:.3rem 0 0;font-size:.78rem}.sql-history-actions{flex-wrap:wrap;gap:.35rem;margin-top:.45rem;display:flex}.sql-history-actions .btn{padding:.28rem .55rem;font-size:.78rem}.sql-zoom{align-items:center;gap:.35rem;min-width:0;margin-left:auto;display:inline-flex}.sql-zoom-label{color:var(--muted);-webkit-user-select:none;user-select:none;font-size:.72rem;font-weight:700;line-height:1}.sql-zoom-label-lg{font-size:1rem}.sql-zoom-slider{width:88px;max-width:18vw;height:4px;accent-color:var(--accent);cursor:pointer}.sql-zoom-value{font-family:var(--font-mono);color:var(--muted);text-align:right;-webkit-user-select:none;user-select:none;min-width:2.6rem;font-size:.75rem;font-weight:600}.sql-editor{border:1px solid var(--line);--sql-font-size:14px;border-radius:12px;flex:45%;min-height:160px;overflow:hidden}.sql-editor .cm-editor,.sql-editor .cm-editor.cm-focused{font-size:var(--sql-font-size);height:100%!important}.sql-editor .cm-scroller{font-family:var(--font-mono);line-height:1.45;overflow:auto!important}.sandbox .check-box{flex:none}.sql-result{flex-direction:column;flex:35%;gap:.45rem;min-height:120px;display:flex;overflow:hidden}.result-tabs{border-bottom:1px solid var(--line);flex-wrap:wrap;flex:none;gap:.25rem;padding-bottom:.35rem;display:flex}.result-tab{appearance:none;color:var(--muted);font:inherit;cursor:pointer;background:0 0;border:0;border-radius:8px;padding:.3rem .65rem;font-size:.85rem;font-weight:600}.result-tab:hover{color:var(--ink);background:#1520180d}.result-tab.active{color:var(--accent);background:#1f6b4a1a}.table-wrap{border:1px solid var(--line);border-radius:10px;flex:1;min-height:0;overflow:auto}.table-wrap table{border-collapse:collapse;width:100%;font-family:var(--font-mono);font-size:.85rem}.table-wrap th,.table-wrap td{border-bottom:1px solid var(--line);white-space:nowrap;padding:.35rem .5rem}.error-text{color:var(--danger)}.check-box{border:1px solid var(--line);border-radius:12px;margin-top:.75rem;padding:.75rem 1rem}.check-box.pass{border-color:var(--ok);background:#1b6b3a14}.check-box.fail{border-color:var(--accent-2);background:#c45c2614}.check-box ul{margin:.4rem 0 0;padding-left:1.1rem}@keyframes rise{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}@keyframes drift{0%{transform:translateY(0)}to{transform:translateY(-8px)}}@media (width<=1100px){.app-shell--locked{height:auto;overflow:visible}.main.main--flush{flex:none}.learn-shell{flex:none;min-height:calc(100vh - 4.25rem)}.learn-main.with-sandbox{height:auto;grid-template-columns:1fr!important}.learn-main.with-sandbox.sandbox-open{grid-template-columns:1fr 22px!important}.learn-main.with-sandbox.sandbox-open>.sandbox{grid-area:2/1}.learn-main.with-sandbox.sandbox-open>.sandbox-fold{grid-area:1/2/span 2;align-self:start;height:64px;margin-top:1rem}.learn-main.sandbox-closed{grid-template-columns:1fr 22px!important}.learn-split{display:none}.learn-main.with-sandbox>.lesson{border-bottom:1px solid var(--line);max-height:none}.sandbox{height:min(70vh,720px)}}@media (width<=900px){.hero{grid-template-columns:1fr}.module-nav-backdrop{z-index:30;background:#15201859;border:0;display:block;position:fixed;inset:0}.module-nav-dock{z-index:40;height:100vh;position:fixed;top:0;bottom:0;left:0}.module-nav{width:min(300px,88vw);height:100%;box-shadow:var(--shadow)}.learn-shell.nav-closed .module-nav,.module-nav-dock.closed .module-nav{width:0}.module-nav-fold{height:64px}.learn-body{padding:0}.learn-main>.lesson{padding:1rem 1rem 1.75rem}.topbar{flex-wrap:wrap}.learn-pager{grid-template-columns:1fr}.pager-link.next{text-align:left}}.db-page-head{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:1rem;display:flex}.db-title-row{align-items:flex-start;gap:.85rem;display:flex}.db-title-row h1{margin:0 0 .25rem}.db-title-row p{margin:0}.db-actions{flex-wrap:wrap;gap:.5rem;display:flex}.db-summary{flex-wrap:wrap;gap:.5rem;margin:0 0 1.25rem;display:flex}.db-summary-pill{border:1px solid var(--line);background:var(--panel);color:var(--muted);border-radius:999px;padding:.35rem .7rem;font-size:.85rem;font-weight:600}.db-summary-pill.ok{color:var(--ok);background:#1b6b3a14;border-color:#1b6b3a59}.db-summary-pill.warn{color:var(--accent-2);background:#c45c2614;border-color:#c45c2659}.db-layout{grid-template-columns:minmax(200px,260px) minmax(0,1fr);align-items:start;gap:1.25rem;display:grid}.db-tables{border:1px solid var(--line);background:var(--panel);border-radius:14px;padding:.85rem .75rem}.db-tables h2{text-transform:uppercase;letter-spacing:.05em;color:var(--muted);margin:0 0 .65rem;font-size:.78rem}.db-tables ul{flex-direction:column;gap:.3rem;margin:0;padding:0;list-style:none;display:flex}.db-table-btn{text-align:left;cursor:pointer;width:100%;font:inherit;color:inherit;background:0 0;border:1px solid #0000;border-radius:10px;grid-template-rows:auto auto;grid-template-columns:1fr auto;align-items:center;gap:.15rem .5rem;padding:.55rem;display:grid}.db-table-btn:hover{background:#1f6b4a14}.db-table-btn.active{background:#1f6b4a1f;border-color:#1f6b4a40}.db-table-name{font-family:var(--font-mono);font-size:.9rem;font-weight:600}.db-table-count{color:var(--muted);justify-self:end;font-size:.8rem}.db-table-btn .db-diff-badge{grid-column:1/-1;justify-self:start}.db-diff-badge{letter-spacing:.03em;text-transform:uppercase;color:var(--muted);background:#1520180f;border-radius:6px;padding:.15rem .45rem;font-size:.68rem;font-weight:700;display:inline-block}.db-diff-badge.unchanged{color:var(--ok);background:#1b6b3a1a}.db-diff-badge.changed,.db-diff-badge.extra{color:var(--accent-2);background:#c45c261f}.db-main{border:1px solid var(--line);background:var(--panel);border-radius:14px;min-width:0;padding:1.1rem 1.2rem 1.4rem}.db-detail-head{align-items:center;gap:.75rem;margin-bottom:.35rem;display:flex}.db-detail-head h2{margin:0;font-size:1.35rem}.db-meta{color:var(--muted);margin:0 0 1rem}.db-delta{color:var(--accent-2);font-weight:600}.db-detail h3{margin:1.15rem 0 .45rem;font-size:.95rem}.db-col-list{gap:.35rem;margin:0;padding:0;list-style:none;display:grid}.db-col-list li{background:#15201808;border-radius:8px;flex-wrap:wrap;align-items:baseline;gap:.5rem .85rem;padding:.35rem .5rem;display:flex}.db-col-list code{font-family:var(--font-mono);font-weight:600}.db-table-wrap{max-height:320px}@media (width<=900px){.db-layout{grid-template-columns:1fr}}.er-diagram{border:1px solid var(--line);background:var(--panel);border-radius:14px;margin:0 0 1.5rem;padding:1.2rem 1.25rem 1.35rem}.er-head{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:.75rem;margin-bottom:.85rem;display:flex}.er-head h2{font-family:var(--font-serif);margin:0 0 .3rem;font-size:1.3rem}.er-head p{max-width:60ch;margin:0}.er-canvas{padding:.35rem .15rem .5rem;position:relative}.er-canvas--board{border:1px solid var(--line);touch-action:none;background:#f7faf5d9;border-radius:12px;min-height:420px;overflow:auto}.er-canvas--board.is-dragging{cursor:grabbing}.er-arrows{pointer-events:none;z-index:1;width:100%;height:100%;position:absolute;inset:0;overflow:visible}.er-arrow-path{fill:none;stroke:#336791;stroke-width:2.25px;stroke-linecap:round}.er-arrow-label{fill:var(--accent);font-family:var(--font-mono);paint-order:stroke;stroke:var(--panel);stroke-width:4px;font-size:11px;font-weight:700}.er-entity{appearance:none;border:1px solid var(--line);text-align:left;cursor:grab;color:inherit;font:inherit;background:#f7faf5;border-radius:12px;padding:0;transition:border-color .16s,box-shadow .16s;overflow:hidden;box-shadow:0 8px 24px #1520180a}.er-entity--abs{z-index:2;will-change:transform;position:absolute;top:0;left:0}.er-entity:hover{border-color:#1f6b4a73}.er-entity.active{border-color:var(--accent);z-index:3;box-shadow:0 0 0 2px #1f6b4a2e}.er-entity.dragging{cursor:grabbing;z-index:4;border-color:var(--accent);box-shadow:0 16px 36px #15201824}.er-entity-drag{cursor:grab}.er-entity.dragging .er-entity-drag{cursor:grabbing}.er-entity-head{border-bottom:1px solid var(--line);background:linear-gradient(#1f6b4a24,#1f6b4a0f);justify-content:space-between;align-items:baseline;gap:.5rem;padding:.65rem .75rem;display:flex}.er-entity-name{font-family:var(--font-mono);color:var(--accent);font-size:.95rem;font-weight:700}.er-entity-count{color:var(--muted);font-size:.75rem}.er-attrs{margin:0;padding:.35rem 0;list-style:none}.er-attrs li{grid-template-columns:2.6rem minmax(0,1fr) auto;align-items:center;gap:.35rem;padding:.28rem .75rem;font-size:.82rem;display:grid}.er-attrs li.pk{background:#1b6b3a14}.er-attrs li.fk{background:#33679114}.er-attr-flags{gap:.2rem;min-height:1em;display:flex}.er-attr-flags abbr{letter-spacing:.02em;color:var(--muted);background:#15201814;border-radius:4px;padding:.05rem .25rem;font-size:.62rem;font-weight:800;text-decoration:none}.er-attrs li.pk .er-attr-flags abbr{color:var(--ok);background:#1b6b3a2e}.er-attrs li.fk .er-attr-flags abbr{color:#336791;background:#3367912e}.er-attrs code{font-family:var(--font-mono);text-overflow:ellipsis;font-weight:600;overflow:hidden}.er-attr-type{color:var(--muted);font-size:.72rem}.er-rel-captions{border-top:1px dashed var(--line);color:var(--muted);flex-wrap:wrap;gap:.35rem 1.25rem;margin:.85rem 0 0;padding:.65rem 0 0;font-size:.8rem;list-style:none;display:flex}.er-rel-captions code{font-family:var(--font-mono);color:var(--ink)}.er-legend{max-width:70ch;margin:.9rem 0 0;font-size:.88rem}.er-legend code{font-family:var(--font-mono)}.db-why{border:1px solid var(--line);background:radial-gradient(700px 280px at 0% 0%, #1f6b4a1f, transparent 55%), radial-gradient(500px 240px at 100% 10%, #c45c2614, transparent 50%), var(--panel);border-radius:16px;margin-top:2rem;padding:1.4rem 1.35rem 1.55rem}.db-why-hero{justify-content:space-between;align-items:flex-start;gap:1.25rem;margin-bottom:1.15rem;display:flex}.db-why-kicker{letter-spacing:.06em;text-transform:uppercase;color:var(--accent);margin:0 0 .25rem;font-size:.78rem;font-weight:700}.db-why-hero h2{font-family:var(--font-serif);letter-spacing:-.02em;margin:0 0 .45rem;font-size:clamp(1.45rem,2.5vw,1.85rem)}.db-why-hero-text p:last-child{max-width:58ch;color:var(--muted);margin:0;line-height:1.5}.db-why-hero-mark{background:#ffffffa6;border:1px solid #1f6b4a38;border-radius:14px;flex-direction:column;flex:none;align-items:center;gap:.35rem;padding:.75rem .9rem;display:flex}.db-why-hero-mark img{width:52px;height:52px}.db-why-hero-mark span{letter-spacing:.04em;text-transform:uppercase;color:var(--accent);font-size:.72rem;font-weight:700}.db-why-layout{grid-template-columns:minmax(0,1.05fr) minmax(0,1fr);gap:.9rem;margin-bottom:.9rem;display:grid}.db-why-panel{border:1px solid var(--line);background:#ffffffb8;border-radius:14px;padding:.9rem 1rem 1rem}.db-why-panel-head{justify-content:space-between;align-items:baseline;gap:.75rem;margin-bottom:.35rem;display:flex}.db-why-panel-head h3{font-size:1rem;font-family:var(--font-serif);margin:0}.db-why-source{color:var(--muted);white-space:nowrap;font-size:.75rem;font-weight:600}.db-why-panel-lead{color:var(--muted);margin:0 0 .75rem;font-size:.86rem;line-height:1.45}.db-why-bars{flex-direction:column;gap:.35rem;margin:0;padding:0;list-style:none;display:flex}.db-why-bar-row{cursor:pointer;text-align:left;width:100%;font:inherit;color:inherit;background:0 0;border:1px solid #0000;border-radius:8px;grid-template-columns:6.2rem minmax(0,1fr) 2.6rem 2.4rem;align-items:center;gap:.45rem;padding:.28rem .35rem;transition:background .15s,border-color .15s,transform .12s;display:grid}.db-why-bar-row:hover,.db-why-bar-row.on{background:#1f6b4a14;border-color:#1f6b4a33}.db-why-bar-row.highlight.on{background:#1f6b4a24;border-color:#1f6b4a59;transform:translate(2px)}.db-why-bar-rank{font-variant-numeric:tabular-nums;opacity:.65;min-width:1.6rem;font-size:.78em;font-weight:700;display:inline-block}.db-why-bar-name{font-size:.8rem;font-weight:600}.db-why-bar-track{background:#c5d2c38c;border-radius:999px;height:10px;overflow:hidden}.db-why-bar-fill{border-radius:inherit;height:100%;transition:width .35s;display:block}.db-why-bar-score{min-width:4.2rem;font-family:var(--font-mono);text-align:right;font-variant-numeric:tabular-nums;font-size:.78rem;font-weight:600}.db-why-rank-focus{background:#1f6b4a14;border-radius:10px;flex-wrap:wrap;align-items:center;gap:.35rem .65rem;margin-top:.75rem;padding:.55rem .7rem;font-size:.84rem;display:flex}.db-why-rank-focus strong{font-family:var(--font-serif)}.db-why-rank-focus span{color:var(--muted)}.db-why-rank-tag{letter-spacing:.03em;text-transform:uppercase;margin-left:auto;color:var(--accent)!important;font-size:.72rem!important;font-weight:700!important}.db-why-cite{margin:.65rem 0 0;font-size:.75rem;line-height:1.4}.db-why-cite a{color:var(--accent);text-underline-offset:2px;text-decoration:underline}.db-why-arg-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:.4rem;margin-bottom:.65rem;display:grid}.db-why-arg{text-align:left;border:1px solid var(--line);cursor:pointer;background:#fff;border-radius:10px;flex-direction:column;align-items:flex-start;gap:.15rem;padding:.5rem .6rem;transition:border-color .15s,background .15s,box-shadow .15s;display:flex}.db-why-arg:hover,.db-why-arg.active{border-color:var(--accent);background:#1f6b4a14;box-shadow:0 0 0 1px #1f6b4a1f}.db-why-arg strong{font-size:.82rem}.db-why-arg span{color:var(--muted);font-size:.74rem;line-height:1.3}.db-why-arg-detail{background:#1220180a;border:1px solid #c5d2c3b3;border-radius:10px;min-height:6.5rem;padding:.7rem .8rem}.db-why-arg-detail h4{font-size:.95rem;font-family:var(--font-serif);margin:0 0 .3rem}.db-why-arg-detail p{color:var(--muted);margin:0;font-size:.88rem;line-height:1.45}.db-why-compare-wrap{border:1px solid var(--line);border-radius:10px;overflow:auto}.db-why-compare-table{border-collapse:collapse;width:100%;font-size:.84rem}.db-why-compare-table th,.db-why-compare-table td{text-align:left;border-bottom:1px solid var(--line);padding:.45rem .6rem}.db-why-compare-table th{background:#1f6b4a1a;font-size:.76rem;font-weight:700}.db-why-compare-table tr:last-child td{border-bottom:none}.db-why-compare-table tbody tr:hover{background:#1f6b4a0d}.db-why-yes{color:var(--ok);font-weight:700}.db-why-no{color:var(--danger);font-weight:600}.db-why-partial{color:var(--accent-2);font-size:.8rem;font-weight:600}.db-why-flow{background:#1f6b4a14;border:1px solid #1f6b4a2e;border-radius:12px;flex-wrap:wrap;align-items:center;gap:.35rem .45rem;margin:.9rem 0 0;padding:.7rem .85rem;font-size:.84rem;font-weight:600;display:flex}.db-why-flow-arrow{background:var(--accent);flex:none;width:1.1rem;height:2px;position:relative}.db-why-flow-arrow:after{content:"";border:4px solid #0000;border-left-color:var(--accent);position:absolute;top:-3px;right:-1px}.db-why-flow-pg{color:#f3faf5;background:var(--accent);border-radius:999px;padding:.2rem .55rem;font-size:.8rem}.db-why-note{max-width:70ch;color:var(--muted);margin:.85rem 0 0;font-size:.9rem;line-height:1.45}@media (width<=960px){.db-why-layout{grid-template-columns:1fr}.db-why-hero{flex-direction:column}.db-why-arg-grid{grid-template-columns:1fr}.db-why-bar-row{grid-template-columns:5.2rem minmax(0,1fr) 2.4rem 2.2rem}}.join-viz{border:1px solid var(--line);background:linear-gradient(165deg,#ffffffeb 0%,#e8f2e4bf 100%);border-radius:14px;margin:1rem 0 1.35rem;padding:.85rem .95rem 1rem;box-shadow:0 10px 28px #1520180d}.join-viz-head{flex-direction:column;gap:.15rem;margin-bottom:.65rem;display:flex}.join-viz-head strong{font-family:var(--font-serif);letter-spacing:-.01em;font-size:1.05rem}.join-viz-sub{color:var(--muted);font-size:.86rem}.join-viz-sub code{font-size:.82em}.join-viz-hint,.join-viz-note{color:var(--muted);margin:.45rem 0 .65rem;font-size:.88rem;line-height:1.45}.join-viz-mode,.join-viz-kinds,.join-chain-picker{flex-wrap:wrap;gap:.35rem;margin-bottom:.55rem;display:flex}.join-viz-mode button,.join-kind-btn,.join-chain-pill{border:1px solid var(--line);color:var(--ink);cursor:pointer;background:#fff;border-radius:8px;padding:.35rem .7rem;font-size:.82rem;transition:border-color .15s,background .15s,color .15s,transform .12s}.join-viz-mode button:hover,.join-kind-btn:hover,.join-chain-pill:hover{border-color:var(--accent)}.join-viz-mode button.active,.join-kind-btn.active,.join-chain-pill.active{background:var(--accent);border-color:var(--accent);color:#f3faf5}.join-viz-preview-tag{color:var(--accent-2);margin-left:.35rem;font-size:.78rem;font-weight:600}.join-kind-btn.preview{border-color:var(--accent);background:#1f6b4a1f}.join-venn-wrap{background:radial-gradient(70% 80% at 35% 45%,#1f6b4a14,#0000 60%),radial-gradient(70% 80% at 65% 45%,#c45c2614,#0000 60%);border-radius:16px;justify-content:center;margin:.35rem 0 .55rem;padding:.35rem .25rem .15rem;display:flex}.join-venn{width:min(100%,360px);height:auto;overflow:visible}.venn-base{opacity:.14;transition:opacity .25s}.venn-base.left{fill:#1f6b4a}.venn-base.right{fill:#c45c26}.venn-zone{cursor:pointer;transform-origin:50%;transform-box:fill-box;transition:opacity .22s,transform .22s}.venn-zone.on{opacity:.78}.venn-zone.off{opacity:.1}.venn-zone.hover{opacity:.95;filter:brightness(1.08)}.venn-zone.fade{opacity:.18}.venn-zone.off.hover{opacity:.35}.venn-hit{fill:#0000;cursor:pointer;pointer-events:all}.venn-ring{stroke:#15201873;stroke-width:1.6px;opacity:.7;pointer-events:none}.venn-label{fill:var(--ink);font-size:12px;font-weight:600;font-family:var(--font-sans);pointer-events:none;opacity:.8}.venn-label-center{fill:#f4faf6;font-size:12px;font-weight:700;font-family:var(--font-sans);pointer-events:none;letter-spacing:.02em}.venn-count{pointer-events:none;transition:opacity .22s}.venn-count.off{opacity:.35}.venn-count.on{opacity:1}.venn-count rect{fill:#fff;stroke:var(--line);stroke-width:1px}.venn-count.left.on rect{stroke:#1f6b4a73;fill:#1f6b4a1a}.venn-count.inner.on rect{stroke:#1f6b4a8c;fill:#1f6b4a29}.venn-count.right.on rect{stroke:#c45c2673;fill:#c45c261f}.venn-count text{fill:var(--ink);font-size:10px;font-weight:600;font-family:var(--font-sans)}.join-viz-legend{color:var(--muted);flex-wrap:wrap;gap:.65rem 1rem;margin:.55rem 0 0;font-size:.78rem;display:flex}.join-viz-legend span{align-items:center;gap:.35rem;display:inline-flex}.join-dot{border-radius:50%;width:.65rem;height:.65rem;display:inline-block}.join-dot.left{background:linear-gradient(135deg,#2f8f63,#1f6b4a)}.join-dot.inner{background:linear-gradient(#3a9b6a,#1b5c3f)}.join-dot.right{background:linear-gradient(135deg,#d4783a,#c45c26)}.join-result-table-wrap{border:1px solid var(--line);background:#fff;border-radius:10px;overflow:auto}.join-result-table{border-collapse:collapse;width:100%;font-size:.84rem}.join-result-table th,.join-result-table td{text-align:left;border-bottom:1px solid var(--line);padding:.4rem .55rem}.join-result-table th{background:#1f6b4a14;font-size:.78rem;font-weight:600}.join-result-table tbody tr{cursor:default;transition:background .15s,opacity .15s}.join-result-table tr.matched td:last-child{color:var(--ok);font-weight:600}.join-result-table tr.null-row{background:#c45c260f}.join-result-table tr.hl{background:#1f6b4a24;outline:1px solid #1f6b4a47}.join-result-table tr.null-row.hl{background:#c45c2624;outline-color:#c45c264d}.join-result-table tr.dim{opacity:.3}.join-result-table .is-null{font-family:var(--font-mono);color:var(--accent-2);font-style:italic}.join-viz-actions{margin-top:.7rem}.join-viz-actions .btn{padding:.35rem .7rem;font-size:.82rem}.join-match-eq{background:#1f6b4a1a;border:1px solid #1f6b4a38;border-radius:999px;flex-wrap:wrap;align-items:center;gap:.35rem .45rem;width:fit-content;max-width:100%;margin:0 0 .65rem;padding:.4rem .65rem;font-size:.82rem;display:flex}.join-match-eq-side{font-family:var(--font-mono);color:var(--muted);font-size:.72rem}.join-match-eq-val{font-family:var(--font-mono);color:var(--accent);background:#fff;border:1px solid #1f6b4a40;border-radius:6px;padding:.05rem .4rem;font-weight:600}.join-match-eq-op{color:var(--ink);font-weight:700}.join-match-eq-count{color:var(--muted);margin-left:.15rem;font-size:.78rem}.join-match-board{grid-template-columns:1fr 1fr;align-items:start;gap:3.25rem;margin-top:.35rem;display:grid;position:relative}.join-match-col{z-index:1;position:relative}.join-match-col h4{text-transform:uppercase;letter-spacing:.04em;color:var(--muted);margin:0 0 .4rem;font-size:.78rem;font-weight:600}.join-match-list{flex-direction:column;gap:.45rem;margin:0;padding:0;list-style:none;display:flex}.join-match-row{text-align:left;border:1.5px solid var(--line);cursor:pointer;background:#fff;border-radius:10px;flex-direction:column;align-items:flex-start;gap:.12rem;width:100%;padding:.5rem .6rem;transition:border-color .18s,box-shadow .18s,transform .12s,background .18s,opacity .18s,filter .18s;display:flex}.join-match-row:hover{border-color:var(--accent);transform:translateY(-1px)}.join-match-row.lit{border-color:var(--accent);background:#1f6b4a1f;box-shadow:0 0 0 2px #1f6b4a33}.join-match-row.dim{opacity:.32;filter:grayscale(.35)}.join-match-row.orphan:not(.lit){border-style:dashed;border-color:#c45c2673}.join-match-name{font-size:.92rem;font-weight:600}.join-key{font-family:var(--font-mono);color:var(--accent);font-size:.72rem}.join-match-links-overlay{pointer-events:none;z-index:0;width:100%;height:100%;position:absolute;inset:0;overflow:visible}.join-link{fill:none;stroke-width:2.25px;stroke-linecap:round;transition:stroke .2s,opacity .2s,stroke-width .2s}.join-link-hit{fill:none;stroke:#0000;stroke-width:10px}.join-link-dot{transition:fill .2s,opacity .2s}.join-link-g.idle .join-link{stroke:#1f6b4a47}.join-link-g.idle .join-link-dot{fill:#1f6b4a59}.join-link-g.lit .join-link{stroke:var(--accent);stroke-width:2.75px;opacity:1}.join-link-g.lit .join-link-dot{fill:var(--accent)}.join-link-g.dim .join-link{stroke:var(--line);opacity:.2}.join-link-g.dim .join-link-dot{fill:var(--line);opacity:.25}.join-orphan-dot{border:1.5px dashed var(--accent-2);vertical-align:middle;border-radius:2px;width:.55rem;height:.55rem;margin-right:.35rem;display:inline-block}.join-chain-picker{margin-bottom:.75rem}.join-chain{flex-wrap:wrap;align-items:stretch;gap:.35rem .2rem;margin-bottom:.55rem;display:flex}.join-chain-node{text-align:left;border:1px solid var(--line);cursor:pointer;background:#fff;border-radius:12px;flex-direction:column;flex:140px;align-items:flex-start;gap:.15rem;padding:.65rem .75rem;transition:border-color .15s,box-shadow .2s,transform .15s;display:flex}.join-chain-node:hover{border-color:var(--accent)}.join-chain-node.pulse{border-color:var(--accent);transform:scale(1.02);box-shadow:0 0 0 3px #1f6b4a33}.join-chain-table{text-transform:uppercase;letter-spacing:.05em;color:var(--muted);font-size:.72rem;font-weight:600}.join-chain-edge{flex-direction:column;flex:none;justify-content:center;align-items:center;gap:.25rem;min-width:4.5rem;padding:0 .15rem;display:flex}.join-chain-on{font-family:var(--font-mono);color:var(--muted);text-align:center;max-width:6.5rem;font-size:.62rem;line-height:1.25}.join-chain-arrow{background:var(--accent);width:2.4rem;height:2px;position:relative}.join-chain-arrow:after{content:"";border:5px solid #0000;border-left-color:var(--accent);position:absolute;top:-4px;right:-1px}@media (width<=700px){.join-match-board{grid-template-columns:1fr;gap:.75rem}.join-match-links-overlay{display:none}.join-chain-edge{flex-direction:row;width:100%;min-width:0}.join-chain-arrow{flex:1}.join-chain-on{max-width:none}}.profile-page{max-width:960px}.profile-hero{border:1px solid var(--line);background:radial-gradient(500px 180px at 0 0,#1f6b4a24,#0000 55%),#ffffff8c;border-radius:16px;flex-wrap:wrap;align-items:center;gap:1rem 1.25rem;margin-bottom:1.35rem;padding:1.1rem 1.2rem;display:flex}.profile-avatar{background:var(--accent);color:#f3faf5;width:4rem;height:4rem;font-family:var(--font-serif);border-radius:50%;flex:none;place-items:center;font-size:1.35rem;font-weight:700;display:grid}.profile-hero-text{flex:200px;min-width:0}.profile-hero-text h1{margin:.1rem 0 .25rem}.profile-email{color:var(--muted);margin:0;font-size:.95rem}.profile-hero-actions{flex-wrap:wrap;gap:.45rem;display:flex}.profile-stats{grid-template-columns:repeat(4,minmax(0,1fr));gap:.65rem;margin-bottom:.35rem;display:grid}.profile-stat{border:1px solid var(--line);background:#ffffffb3;border-radius:12px;flex-direction:column;gap:.15rem;padding:.75rem .85rem;display:flex}.profile-stat strong{font-family:var(--font-serif);letter-spacing:-.02em;font-size:1.45rem}.profile-stat span{color:var(--muted);font-size:.8rem}.profile-footnote{margin:0 0 1.1rem;font-size:.78rem}.profile-grid{grid-template-columns:1fr 1fr;gap:.85rem;display:grid}.profile-card{border:1px solid var(--line);background:#ffffffb8;border-radius:14px;padding:.95rem 1rem 1.05rem}.profile-card-wide{grid-column:1/-1}.profile-card h2{font-family:var(--font-serif);margin:0 0 .65rem;font-size:1.1rem}.profile-card-head{justify-content:space-between;align-items:baseline;gap:.75rem;margin-bottom:.55rem;display:flex}.profile-card-head h2{margin:0}.profile-more{color:var(--accent);font-size:.85rem;font-weight:600}.profile-dl{flex-direction:column;gap:.55rem;margin:0;display:flex}.profile-dl>div{gap:.15rem;display:grid}.profile-dl dt{letter-spacing:.04em;text-transform:uppercase;color:var(--muted);font-size:.75rem;font-weight:700}.profile-dl dd{margin:0;font-size:.95rem}.profile-mono{font-family:var(--font-mono);word-break:break-all;font-size:.82rem}.profile-card-note{margin:.75rem 0 .7rem;font-size:.88rem;line-height:1.45}.profile-card-actions{flex-wrap:wrap;gap:.4rem;display:flex}.profile-db-pill{letter-spacing:.04em;text-transform:uppercase;border-radius:999px;padding:.15rem .45rem;font-size:.72rem;font-weight:700;display:inline-block}.profile-db-pill.ok{color:var(--ok);background:#1b6b3a1f}.profile-db-pill.idle{color:var(--muted);background:#5a6b5e1f}.profile-db-pill.err{color:var(--danger);background:#a128281f}.profile-list,.profile-sql-list{flex-direction:column;gap:.4rem;margin:0;padding:0;list-style:none;display:flex}.profile-list a{border:1px solid var(--line);background:#fff;border-radius:10px;grid-template-columns:auto 1fr auto;align-items:center;gap:.55rem .75rem;padding:.5rem .55rem;transition:border-color .15s,background .15s;display:grid}.profile-list a:hover{border-color:var(--accent);background:#1f6b4a0f}.profile-list-title{font-size:.92rem;font-weight:600}.profile-list time{color:var(--muted);font-size:.78rem}.profile-sql-list li{border:1px solid var(--line);background:#fff;border-radius:10px;padding:.55rem .65rem}.profile-sql-list li.err{border-color:#a1282847}.profile-sql-meta{flex-wrap:wrap;align-items:center;gap:.35rem .65rem;margin-bottom:.35rem;font-size:.78rem;display:flex}.profile-sql-list pre{font-family:var(--font-mono);white-space:pre-wrap;word-break:break-word;color:var(--ink);margin:0;font-size:.78rem;line-height:1.4}@media (width<=800px){.profile-stats{grid-template-columns:repeat(2,minmax(0,1fr))}.profile-grid{grid-template-columns:1fr}.profile-list a{grid-template-columns:auto 1fr}.profile-list time{grid-column:2}}.lesson-toolbar{justify-content:space-between;align-items:center;gap:.75rem;margin-bottom:.15rem;display:flex}.lesson-toolbar .eyebrow{margin:0}.lesson-present-btn{flex:none;padding:.3rem .7rem;font-size:.8rem}.present-shell{background:radial-gradient(1000px 500px at 8% -5%, #d9e8d4 0%, transparent 50%), radial-gradient(800px 420px at 100% 0%, #f0e2d4 0%, transparent 45%), linear-gradient(180deg, #f4f7f1 0%, var(--paper) 100%);height:100vh;min-height:100vh;color:var(--ink);flex-direction:column;display:flex;position:relative;overflow:hidden}.present-shell--empty{justify-content:center;align-items:center;gap:1rem;padding:2rem}.present-chrome{border-bottom:1px solid var(--line);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);z-index:5;background:#f7faf5eb;flex:none;justify-content:space-between;align-items:center;gap:1rem;padding:.55rem 1rem;display:flex}.present-chrome-left,.present-chrome-right{align-items:center;gap:.75rem;min-width:0;display:flex}.present-exit{color:var(--accent);border-radius:8px;padding:.25rem .5rem;font-size:.88rem;font-weight:700}.present-exit:hover{background:#1f6b4a1a}.present-lesson{text-overflow:ellipsis;white-space:nowrap;font-size:.85rem;overflow:hidden}.present-tool.active{border-color:var(--accent);color:var(--accent);background:#1f6b4a14}.present-counter{font-family:var(--font-mono);font-variant-numeric:tabular-nums;text-align:right;min-width:4.5rem;font-size:.85rem;font-weight:600}.present-main{flex:1;grid-template-columns:1fr;min-height:0;display:grid}.present-main.with-sandbox{grid-template-columns:minmax(0,1fr) 10px minmax(0,1fr)}.present-stage{justify-content:center;align-items:stretch;min-width:0;min-height:0;display:flex;position:relative;overflow:hidden}.present-hit{z-index:2;cursor:pointer;background:0 0;border:0;width:min(12vw,7rem);padding:0;position:absolute;top:0;bottom:0}.present-hit:disabled{cursor:default}.present-hit-prev{left:0}.present-hit-next{right:0}.present-hit:not(:disabled):hover{background:linear-gradient(90deg,#1f6b4a0f,#0000)}.present-hit-next:not(:disabled):hover{background:linear-gradient(270deg,#1f6b4a0f,#0000)}.present-slide{scrollbar-width:thin;scrollbar-color:#1f6b4a73 #c5d2c359;flex:1;min-width:0;max-width:56rem;margin:0 auto;padding:2rem 4.5rem 1.5rem;overflow:auto}.present-slide--title{text-align:center;flex-direction:column;justify-content:center;align-items:center;width:100%;max-width:none;padding-top:1rem;padding-bottom:1rem;display:flex}.present-slide--title>:first-child{margin-top:0}.present-slide--title h1,.present-slide--title h2,.present-slide--title h3{letter-spacing:-.03em;max-width:16ch;margin:0}.present-slide--title h1{font-size:clamp(2.35rem,5.2vw,3.6rem)}.present-slide--title h2{font-size:clamp(2rem,4.4vw,3.1rem)}.present-slide h1{font-family:var(--font-serif);letter-spacing:-.02em;margin:0 0 1.1rem;font-size:clamp(1.85rem,3.6vw,2.75rem);line-height:1.15}.present-slide h2{font-family:var(--font-serif);margin:0 0 1rem;font-size:clamp(1.55rem,2.8vw,2.15rem);line-height:1.2}.present-slide h3{margin:1.25rem 0 .5rem;font-size:1.25rem}.present-slide p,.present-slide li{font-size:clamp(1.05rem,1.5vw,1.28rem);line-height:1.55}.present-slide table{font-size:1.02rem}.present-slide pre,.present-slide .md-code{font-size:.95rem}.present-sandbox{border-left:1px solid var(--line);min-height:0}.present-footer{border-top:1px solid var(--line);background:#f7faf5f2;flex:none;grid-template-columns:auto 1fr auto;align-items:center;gap:1rem;padding:.65rem 1rem;display:grid}.present-hint{text-align:center;margin:0;font-size:.8rem}.present-hint kbd{border:1px solid var(--line);background:var(--panel);font-family:var(--font-mono);border-radius:5px;padding:.05em .4em;font-size:.85em;display:inline-block}.present-error{z-index:20;box-shadow:var(--shadow);background:#fff5f5f2;border-radius:10px;margin:0;padding:.5rem .9rem;position:fixed;bottom:4.5rem;left:50%;transform:translate(-50%)}.present-module-chip{text-overflow:ellipsis;white-space:nowrap;letter-spacing:.02em;text-transform:uppercase;max-width:14rem;color:var(--accent);background:#1f6b4a1a;border:1px solid #1f6b4a38;border-radius:999px;padding:.2rem .65rem;font-size:.72rem;font-weight:700;display:none;overflow:hidden}@media (width>=900px){.present-module-chip{display:inline-block}}.present-flash{z-index:8;text-align:center;color:var(--ink);pointer-events:none;background:#f7faf5eb;border:1px solid #1f6b4a33;border-radius:999px;padding:.35rem .85rem;font-size:.8rem;font-weight:600;animation:.22s present-flash-in;position:absolute;top:3.4rem;left:50%;transform:translate(-50%);box-shadow:0 4px 18px #182a2014}@keyframes present-flash-in{0%{opacity:0;transform:translate(-50%)translateY(-4px)}to{opacity:1;transform:translate(-50%)translateY(0)}}.present-bridge{z-index:4;opacity:.42;background:0 0;border:0;align-items:center;padding:0;transition:opacity .18s;display:flex;position:absolute;top:.85rem}.present-bridge:hover,.present-bridge:focus-within{opacity:1}.present-bridge--prev{left:4.25rem}.present-bridge--next{right:4.25rem}.present-bridge-btn{appearance:none;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);color:var(--ink);cursor:pointer;text-align:left;font:inherit;max-width:min(15rem,42vw);box-shadow:none;background:#f7faf5b8;border:1px solid #1f6b4a24;border-radius:10px;flex-direction:column;align-items:flex-start;gap:.05rem;padding:.3rem .65rem;transition:background .15s,border-color .15s,opacity .15s;display:inline-flex}.present-bridge--module .present-bridge-btn{border-color:#c45c2638}.present-bridge-btn:hover{background:#f7faf5f2;border-color:#1f6b4a59}.present-bridge--module .present-bridge-btn:hover{border-color:#c45c2666}.present-bridge-dir{color:var(--muted);text-transform:uppercase;letter-spacing:.04em;font-size:.62rem;font-weight:600}.present-bridge--module .present-bridge-dir{color:var(--accent-2)}.present-bridge-title{color:var(--muted);text-overflow:ellipsis;white-space:nowrap;max-width:14rem;font-size:.78rem;font-weight:500;line-height:1.25;overflow:hidden}.present-bridge-btn:hover .present-bridge-title{color:var(--ink)}.present-footer .present-nav-lesson{white-space:normal;text-align:left;flex-direction:column;align-items:flex-start;gap:.1rem;max-width:16rem;padding:.45rem .85rem;line-height:1.2;display:inline-flex}.present-footer .present-nav-lesson.btn.primary{text-align:right;align-items:flex-end}.present-nav-sub{opacity:.85;text-overflow:ellipsis;white-space:nowrap;max-width:14rem;font-size:.78rem;font-weight:500;display:block;overflow:hidden}.present-footer .present-nav-module{box-shadow:inset 0 0 0 1px #c45c2673}.present-footer .present-nav-module.btn.primary{background:var(--accent-2);border-color:var(--accent-2)}@media (width<=900px){.present-main.with-sandbox{grid-template-rows:minmax(40vh,1fr) auto;grid-template-columns:1fr!important}.present-main.with-sandbox>.learn-split{display:none}.present-sandbox{border-left:0;border-top:1px solid var(--line);height:min(45vh,420px)}.present-slide{padding:1.25rem 1.25rem 1rem}.present-bridge--prev{left:.65rem}.present-bridge--next{right:.65rem}.present-hit{width:2.5rem}.present-footer{grid-template-columns:1fr 1fr}.present-hint{display:none}}
