:root{--navy:#123956;--navy-2:#1a5270;--teal:#2faaae;--teal-ink:#1a7c80;--ink:#0f1f2e;--ink-2:#44566a;--ink-3:#6b7c8f;--paper:#f7f9fb;--card:#fff;--line:#dde4eb;--success:#15803d;--success-bg:#e8f6ee;--error:#b42318;--error-bg:#fdeceb;--info-bg:#eef5f9;--radius:14px;--shadow:0 1px 2px #0f1f2e0f, 0 8px 24px #0f1f2e14;--font:ui-sans-serif, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;--mono:ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}*,:before,:after{box-sizing:border-box}body{background:var(--paper);color:var(--ink);font-family:var(--font);-webkit-font-smoothing:antialiased;margin:0;font-size:17px;line-height:1.6}h1,h2{letter-spacing:-.02em;color:var(--navy);line-height:1.1}a{color:var(--teal-ink)}code{font-family:var(--mono);font-size:.9em}.visually-hidden{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.shell{min-height:100vh}.page{max-width:1180px;margin:0 auto;padding:0 32px 96px}.nav{z-index:10;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-bottom:1px solid var(--line);background:#f7f9fbe0;align-items:center;gap:24px;padding:12px 32px;display:flex;position:sticky;top:0}.brand{color:var(--navy);letter-spacing:.04em;align-items:center;gap:8px;font-weight:800;text-decoration:none;display:flex}.tour-nav{align-items:center;gap:4px;min-width:0;margin:0 auto;display:flex}.tour-arrow{width:32px;height:32px;color:var(--navy);border-radius:8px;place-items:center;font-size:22px;line-height:1;text-decoration:none;display:grid}a.tour-arrow:hover{background:var(--info-bg)}.tour-arrow.is-off{opacity:.25}.tour-menu{position:relative}.tour-menu summary{cursor:pointer;border-radius:10px;gap:5px;min-width:240px;padding:6px 14px 8px;list-style:none;display:grid}.tour-menu summary::-webkit-details-marker{display:none}.tour-menu summary:hover,.tour-menu[open] summary{background:var(--info-bg)}.tour-where{white-space:nowrap;justify-content:center;align-items:baseline;gap:8px;display:flex}.tour-count{color:var(--ink-3);letter-spacing:.06em;text-transform:uppercase;font-size:12px;font-weight:700}.tour-title{color:var(--navy);font-size:15px;font-weight:700}.tour-where:after{content:"▾";color:var(--ink-3);font-size:11px}.tour-progress{background:var(--line);border-radius:999px;height:3px;overflow:hidden}.tour-progress span{background:var(--teal);height:100%;transition:width .3s;display:block}.tour-list{border:1px solid var(--line);background:var(--card);min-width:260px;box-shadow:var(--shadow);border-radius:12px;margin:0;padding:8px;list-style:none;position:absolute;top:calc(100% + 8px);left:50%;transform:translate(-50%)}.tour-list a{color:var(--ink-2);border-radius:8px;align-items:center;gap:10px;padding:8px 10px;font-size:15px;text-decoration:none;display:flex}.tour-list a:hover{background:var(--info-bg)}.tour-list a.router-link-exact-active{color:var(--navy);font-weight:700}.chapter-number{background:var(--line);border-radius:50%;place-items:center;width:22px;height:22px;font-size:12px;font-weight:700;display:grid}.tour-list a.is-past .chapter-number{background:var(--success-bg);color:var(--success)}.tour-list a.router-link-exact-active .chapter-number{background:var(--navy);color:#fff}@media (width<=640px){.tour-menu summary{min-width:0}.tour-count{display:none}}.docs-link{white-space:nowrap;font-size:14px;font-weight:600;text-decoration:none}.button{font:inherit;cursor:pointer;background:var(--card);color:var(--navy);box-shadow:inset 0 0 0 1px var(--line);border:0;border-radius:10px;justify-content:center;align-items:center;gap:8px;padding:10px 18px;font-size:15px;font-weight:600;text-decoration:none;display:inline-flex}.button:hover:not(:disabled){background:var(--info-bg)}.button.small{padding:6px 12px;font-size:14px}.button.wide{width:100%}.button.primary{box-shadow:none;background:var(--navy);color:#fff}.button.primary:hover:not(:disabled){background:var(--navy-2)}.button:disabled,.button.disabled{background:var(--line);color:var(--ink-3);cursor:default}.button.large{padding:14px 26px;font-size:17px}:focus-visible{outline:3px solid var(--teal);outline-offset:2px}.hero{padding:72px 0 0}.eyebrow{color:var(--teal-ink);letter-spacing:.08em;text-transform:uppercase;margin:0 0 12px;font-size:14px;font-weight:700}.hero h1{margin:0;font-size:clamp(44px,7vw,88px)}.lede{max-width:640px;color:var(--ink-2);margin:24px 0 0;font-size:20px}.hero-actions{flex-wrap:wrap;align-items:center;gap:16px;margin-top:36px;display:flex}.install{border:1px solid var(--line);background:var(--card);color:var(--navy);border-radius:10px;padding:12px 16px}.dev-only-note{border-left:3px solid var(--teal);max-width:640px;color:var(--ink-2);margin:28px 0 0;padding-left:14px;font-size:15px}.desktop-only{align-content:center;justify-items:start;gap:16px;max-width:560px;min-height:100vh;margin:0 auto;padding:64px 24px;display:grid}.desktop-only h1{margin:0;font-size:clamp(32px,8vw,44px)}.desktop-only .eyebrow,.desktop-only .lede{margin:0}.desktop-only .lede{font-size:18px}.desktop-only-note{background:var(--info-bg);color:var(--ink-2);border-radius:10px;margin:0;padding:14px 16px;font-size:15px}.desktop-only-actions{flex-wrap:wrap;gap:12px;margin-top:8px;display:flex}.facts{grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;margin:72px 0 0;padding:0;list-style:none;display:grid}@media (width<=1199px){.facts{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width<=560px){.facts{grid-template-columns:minmax(0,1fr)}}.facts li{border:1px solid var(--line);border-radius:var(--radius);background:var(--card);padding:20px}.facts h2{margin:0 0 6px;font-size:17px}.facts p{color:var(--ink-2);margin:0;font-size:15px}.chapter-head{padding:56px 0 32px}.chapter-head h1{margin:0;font-size:clamp(36px,5vw,56px)}.chapter-body{grid-template-columns:minmax(0,5fr) minmax(0,6fr);align-items:start;gap:32px;display:grid}.chapter-text{gap:16px;display:grid}@media (width<=1279px){.chapter-body{grid-template-columns:minmax(0,1fr)}.chapter-body .stage{order:-1}}.tour{border:1px solid var(--line);border-radius:var(--radius);background:var(--card);box-shadow:var(--shadow);padding:24px;position:relative}.tour-hint{color:var(--teal-ink);letter-spacing:.06em;text-transform:uppercase;margin:0 0 12px;font-size:13px;font-weight:700}.tour-steps{gap:14px;margin:0;padding:0;list-style:none;display:grid}.tour-steps li{color:var(--ink);grid-template-columns:26px 1fr;align-items:start;gap:12px;display:grid}.tour-steps li.is-todo{color:var(--ink-3)}.tour-mark{border:2px solid var(--line);color:#fff;border-radius:50%;place-items:center;width:26px;height:26px;margin-top:1px;font-size:14px;font-weight:700;display:grid}.is-active .tour-mark{border-color:var(--teal);box-shadow:0 0 0 4px #2faaae2e}.is-done .tour-mark{border-color:var(--success);background:var(--success)}.tour-message{border-radius:10px;margin-top:20px;padding:14px 16px;font-size:16px}.tour-message.is-info{background:var(--info-bg)}.tour-message.is-success{background:var(--success-bg)}.tour-message.is-error{background:var(--error-bg);color:var(--error)}.tour>.button{margin-top:20px}.skip-link{color:var(--ink-3);margin-top:16px;font-size:14px;display:inline-block}.source{border:1px solid var(--line);border-radius:var(--radius);background:var(--card)}.source summary{color:var(--ink-2);cursor:pointer;padding:14px 20px;font-size:15px;font-weight:600}.source summary code{color:var(--ink-3);margin-left:6px;font-weight:400}.source pre{border-radius:0 0 var(--radius) var(--radius);color:#dbe7f0;background:#0f1f2e;margin:0;padding:20px;font-size:13px;line-height:1.55;overflow-x:auto}.stage{border:1px solid var(--line);border-radius:var(--radius);background:var(--card);box-shadow:var(--shadow);transition:box-shadow .2s,border-color .2s;position:sticky;top:80px;overflow:hidden}.stage.is-busy{border-color:var(--teal);box-shadow:0 0 0 4px #2faaae33, var(--shadow)}.stage-bar{border-bottom:1px solid var(--line);background:#eef2f6;align-items:center;gap:6px;padding:10px 14px;display:flex}.dot{background:#cfd8e1;border-radius:50%;width:10px;height:10px}.stage-url{background:var(--card);color:var(--ink-3);font-family:var(--mono);border-radius:6px;flex:1;margin-left:10px;padding:2px 10px;font-size:12px}.stage-live{color:var(--teal-ink);font-size:12px;font-weight:700}.stage-body{min-height:340px;padding:28px}.demo-form label{color:var(--ink-2);margin-bottom:6px;font-size:14px;font-weight:600;display:block}.demo-row{gap:8px;display:flex}.demo-row input{border:1px solid var(--line);min-width:0;font:inherit;border-radius:10px;flex:1;padding:10px 14px}.demo-row input:focus{border-color:var(--teal);outline:none;box-shadow:0 0 0 3px #2faaae33}.demo-list{margin:20px 0 0;padding:0;list-style:none}.demo-list li{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;padding:12px 4px;animation:.25s ease-out pop-in;display:flex}.demo-list li.is-done span{color:var(--ink-3);text-decoration:line-through}.demo-check{cursor:pointer;align-items:center;gap:10px;display:flex}.demo-check input{width:18px;height:18px;accent-color:var(--navy)}.icon-button{color:var(--ink-3);cursor:pointer;background:0 0;border:0;border-radius:6px;padding:4px 8px}.icon-button:hover{background:var(--error-bg);color:var(--error)}.demo-empty{color:var(--ink-3);text-align:center;margin:28px 0 0}.demo-footer{color:var(--ink-3);margin:16px 0 0;font-size:14px}@keyframes pop-in{0%{opacity:0;transform:translateY(-4px)}}.not-found{padding:96px 0}.demo-loading{color:var(--ink-3);text-align:center;margin:40px 0}.no-backend,.demo-error{border:1px dashed var(--error);background:var(--error-bg);color:var(--ink);border-radius:12px;margin:8px 0;padding:20px}.no-backend p,.demo-error p{margin:0 0 12px}.no-backend p:last-child{margin:0}.no-backend-title{color:var(--error);font-weight:700}.demo-inline-error{color:var(--error);margin:8px 0 0;font-size:14px}.demo-tag{background:var(--success-bg);color:var(--success);border-radius:999px;padding:1px 8px;font-size:12px;font-weight:600}.terminal{border-radius:var(--radius);box-shadow:var(--shadow);background:#0b1722;position:sticky;top:80px;overflow:hidden}.terminal-bar{background:#13212e;align-items:center;gap:6px;padding:10px 14px;display:flex}.terminal-bar .dot{background:#2b3b4a}.terminal-title{color:#7f93a6;font-family:var(--mono);margin-left:10px;font-size:12px}.terminal-body{color:#dbe7f0;min-height:300px;font-family:var(--mono);white-space:pre-wrap;margin:0;padding:20px;font-size:13px;line-height:1.7}.terminal-prompt{color:var(--teal)}.terminal-cursor{animation:1s step-end infinite blink}.terminal-line{opacity:0;animation:.2s ease-out forwards line-in}@keyframes blink{50%{opacity:0}}@keyframes line-in{to{opacity:1}}.features{gap:48px;margin-top:80px;display:grid}.feature{grid-template-columns:minmax(0,1fr) minmax(0,1fr);align-items:center;gap:40px;display:grid}.feature:not(:has(video)){grid-template-columns:minmax(0,1fr);max-width:720px}.feature h2{margin:0 0 8px;font-size:28px}.feature p{color:var(--ink-2);margin:0 0 12px}.feature-video{border-radius:var(--radius);width:100%;box-shadow:var(--shadow);background:#0b1722}@media (width<=1023px){.feature{grid-template-columns:minmax(0,1fr)}}.site{--shop-bg:#fbf7f0;--shop-ink:#2d2418;--shop-accent:#2f6b3f;--shop-accent-2:#3c8350;--shop-line:#eadfcd;background:var(--shop-bg);min-height:100vh;color:var(--shop-ink);padding-bottom:120px}.site .button.primary{background:var(--shop-accent)}.site .button.primary:hover:not(:disabled){background:var(--shop-accent-2)}.shop-head{z-index:5;border-bottom:1px solid var(--shop-line);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#fbf7f0eb;align-items:center;gap:32px;padding:16px 40px;display:flex;position:sticky;top:0}.shop-name{color:var(--shop-ink);font-family:Georgia,Times New Roman,serif;font-size:22px;font-weight:700}.shop-links{color:#7a6a55;gap:24px;font-size:15px;display:flex}.shop-badge{box-shadow:inset 0 0 0 1px var(--shop-line);background:#fff;border-radius:999px;margin-left:auto;padding:6px 14px;font-weight:700}.shop-main{max-width:1080px;margin:0 auto;padding:0 40px}.shop-hero{padding:48px 0 32px}.shop-hero h1{max-width:640px;color:var(--shop-ink);letter-spacing:-.01em;margin:0;font-family:Georgia,Times New Roman,serif;font-size:clamp(30px,4vw,44px)}.shop-hero p{color:#7a6a55;margin:12px 0 0;font-size:18px}.shop-browse{grid-template-columns:minmax(0,1fr) 340px;align-items:start;gap:32px;display:grid}@media (width<=1100px){.shop-browse{grid-template-columns:minmax(0,1fr)}}.products{grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:16px;margin:0;padding:0;list-style:none;display:grid}.product{border:1px solid var(--shop-line);background:#fff;border-radius:16px;gap:4px;padding:18px;display:grid}.product-emoji{background:var(--shop-bg);border-radius:12px;place-items:center;height:96px;margin-bottom:8px;font-size:44px;display:grid}.product-name{font-weight:700}.product-price{color:#7a6a55;font-size:15px}.product .button{margin-top:10px}.cart{border:1px solid var(--shop-line);background:#fff;border-radius:16px;padding:20px;position:sticky;top:90px}.checkout,.order-done{border:1px solid var(--shop-line);background:#fff;border-radius:16px;max-width:520px;margin:0;padding:28px}.site .no-backend,.site .demo-error{max-width:640px}.shop-tour{z-index:50;border:1px solid var(--line);border-radius:var(--radius);background:var(--card);width:360px;max-height:calc(100vh - 40px);color:var(--ink);padding:18px 20px;font-size:15px;position:fixed;bottom:20px;right:20px;overflow-y:auto;box-shadow:0 12px 40px #0f1f2e38}.shop-tour.is-collapsed{width:auto}.shop-tour-head{color:var(--teal-ink);letter-spacing:.06em;text-transform:uppercase;justify-content:space-between;align-items:center;gap:16px;font-size:13px;font-weight:700;display:flex}.shop-tour .tour-steps{margin-top:14px}.shop-tour .tour-message{margin:14px 0 0;font-size:15px}.shop-tour-foot{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;margin-top:14px;display:flex}.shop-tour-foot .skip-link{margin:0}@media (width<=640px){.shop-head,.shop-main{padding-inline:16px}.shop-links{display:none}.shop-tour{width:auto;bottom:8px;left:8px;right:8px}}.real-app{grid-template-columns:minmax(0,5fr) minmax(0,6fr);align-items:start;gap:32px;display:grid}.real-app-card{border-radius:var(--radius);color:#2d2418;background:#fbf7f0;justify-items:start;gap:16px;padding:28px;display:grid;box-shadow:inset 0 0 0 1px #eadfcd}.real-app-card h2{color:#2d2418;margin:0;font-family:Georgia,Times New Roman,serif;font-size:32px}.real-app-card p{margin:0}.real-app-card .button.primary{background:#2f6b3f}.real-app-card .tour-message{margin:0}.real-app-url{color:var(--ink-3);font-family:var(--mono);background:#fff;border-radius:6px;padding:2px 10px;font-size:12px}.real-app-tests{gap:16px;display:grid}.real-app-tests h2{margin:0;font-size:22px}.test-groups{gap:10px;margin:0;padding:0;list-style:none;display:grid}.test-groups li{border:1px solid var(--line);background:var(--card);border-radius:12px;gap:2px;padding:14px 18px;display:grid}.test-groups span{color:var(--ink-2);font-size:15px}@media (width<=1023px){.real-app{grid-template-columns:minmax(0,1fr)}}.finale-run{max-width:560px}.section-title{margin:72px 0 8px;font-size:32px}.section-lede{max-width:640px;color:var(--ink-2);margin:0 0 24px}.cart h3,.checkout h3,.order-done h3{color:var(--shop-ink);margin:0 0 8px}.cart-lines{margin:0;padding:0;list-style:none}.cart-lines li{border-bottom:1px solid var(--line);grid-template-columns:1fr auto 80px auto;align-items:center;gap:12px;padding:8px 0;display:grid}.cart-line-total{text-align:right}.qty{align-items:center;gap:4px;display:flex}.qty span{text-align:center;min-width:20px;font-weight:600}.icon-button:disabled{opacity:.35;cursor:default}.cart-note{color:var(--ink-3);grid-column:1/-1;margin:-4px 0 0;font-size:13px}.discount{gap:8px;margin-top:16px;display:flex}.discount input,.field input{border:1px solid var(--line);min-width:0;font:inherit;border-radius:10px;flex:1;padding:8px 12px}.totals{margin:16px 0}.totals div{color:var(--ink-2);justify-content:space-between;padding:2px 0;display:flex}.totals dd{margin:0}.totals-total{font-size:18px;font-weight:700;color:var(--ink)!important}.checkout{gap:14px;display:grid}.checkout-total{color:var(--ink-2);margin:-8px 0 4px}.field label{color:var(--ink-2);margin-bottom:4px;font-size:14px;font-weight:600;display:block}.field input{width:100%}.checkout-actions{justify-content:space-between;gap:12px;display:flex}.order-done{text-align:center}.order-done-icon{background:var(--success-bg);width:56px;height:56px;color:var(--success);border-radius:50%;place-items:center;margin:0 auto 16px;font-size:28px;font-weight:700;display:grid}.order-done p{color:var(--ink-2)}.proof{grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;margin:0;padding:0;list-style:none;display:grid}.proof a{border:1px solid var(--line);border-radius:var(--radius);background:var(--card);height:100%;color:var(--ink-2);gap:6px;padding:22px;text-decoration:none;transition:border-color .2s,box-shadow .2s;display:grid}.proof a:hover{border-color:var(--teal);box-shadow:var(--shadow)}.proof strong{color:var(--navy);font-size:18px}.skills{grid-template-columns:minmax(0,6fr) minmax(0,5fr);gap:40px;margin-top:80px;display:grid}.skills h2,.finale h2{margin:0 0 8px;font-size:32px}.skills-intro p,.finale p{color:var(--ink-2)}.snippet{color:#dbe7f0;background:#0f1f2e;border-radius:12px;margin:16px 0 24px;padding:16px 20px;font-size:14px;overflow-x:auto}.skill-list{gap:12px;margin:0;padding:0;list-style:none;display:grid}.skill-list li{border:1px solid var(--line);background:var(--card);border-radius:12px;padding:16px 18px}.skill-list code{color:var(--teal-ink);font-weight:700}.skill-list p{color:var(--ink-2);margin:4px 0 0;font-size:15px}.finale{background:var(--card);box-shadow:var(--shadow);text-align:center;border-radius:24px;margin-top:96px;padding:48px}.finale .snippet{text-align:left;display:inline-block}.finale .hero-actions{justify-content:center;margin-top:24px}@media (width<=1023px){.proof,.skills{grid-template-columns:minmax(0,1fr)}.finale{padding:32px 20px}}[data-story-spotlight]{z-index:1;border-radius:6px;animation:1.4s ease-in-out infinite spotlight;position:relative}@keyframes spotlight{0%,to{box-shadow:0 0 0 2px var(--teal), 0 0 0 4px #2faaae00}50%{box-shadow:0 0 0 2px var(--teal), 0 0 0 10px #2faaae59}}@media (prefers-reduced-motion:reduce){[data-story-spotlight]{box-shadow:0 0 0 3px var(--teal);animation:none}.demo-list li,.terminal-line,.terminal-cursor{animation:none}.terminal-line{opacity:1}}@media (width<=640px){.page{padding:0 16px 64px}.nav{padding:12px 16px}.stage-body{padding:20px}}
