:root{color-scheme:dark;--bg-inset:#070b14;--bg:#0a0f1a;--bg-raised:#0d1425;--surface:#101a2e;--border:rgba(148,163,184,0.14);--border-strong:rgba(148,163,184,0.28);--text:#e7ecf4;--text-2:#97a6bb;--text-3:#64748b;--link:#a8c2e8;--focus:#6494d6;--amber:#d9a648;--green:#55c084;--red:#e2635f;--font-sans:"Pretendard Variable",Pretendard,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue","Apple SD Gothic Neo","Noto Sans KR",sans-serif;--font-mono:ui-monospace,"SF Mono","JetBrains Mono",Menlo,Consolas,monospace;--fs-2xs:0.75rem;--fs-xs:0.8125rem;--fs-sm:0.875rem;--fs-md:0.9375rem;--fs-base:1rem;--fs-lg:1.125rem;--fs-xl:1.25rem;--fs-title:clamp(1.5rem,3vw,1.9rem);--fs-stat:clamp(1.7rem,3.6vw,2.35rem);--fs-display:clamp(2.3rem,5.4vw,3.35rem);--fw-regular:400;--fw-medium:500;--fw-semibold:600;--fw-heading:650;--radius-sm:8px;--radius:10px;--radius-lg:14px;--shell:1080px;--shell-wide:1560px;--header-h:60px;--shadow-raise:0 1px 0 rgba(255,255,255,0.04) inset,0 24px 60px -24px rgba(0,0,0,0.55);--space-1:0.5rem;--space-2:1rem;--space-3:1.5rem;--space-4:2rem;--space-5:3rem;--space-6:4.5rem;--space-7:6rem;--dur-1:120ms;--dur-2:160ms;--dur-3:240ms;--ease-out:cubic-bezier(0.16,1,0.3,1);--z-header:50;--z-overlay:100;--z-toast:200}*,:after,:before{margin:0;padding:0;box-sizing:border-box}html{scroll-behavior:smooth}body{font-family:var(--font-sans);background-color:var(--bg);color:var(--text);font-size:var(--fs-base);line-height:1.65;letter-spacing:-.011em;word-break:keep-all;overflow-wrap:break-word;-webkit-font-smoothing:antialiased}h1,h2,h3{font-weight:var(--fw-heading);line-height:1.2;letter-spacing:-.022em}a{color:var(--link);text-decoration:none;transition:color var(--dur-2) ease}a:hover{color:var(--text)}:focus-visible{outline:2px solid var(--focus);outline-offset:2px}::selection{background:rgba(100,148,214,.35)}[id]{scroll-margin-top:calc(var(--header-h) + 1rem)}@media (prefers-reduced-motion:reduce){*,:after,:before{animation:none!important;transition:none!important}html{scroll-behavior:auto}}.nums{font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.container{max-width:var(--shell);margin:0 auto;padding:0 var(--space-3)}.header{position:-webkit-sticky;position:sticky;top:0;z-index:var(--z-header);background:rgba(10,15,26,.82);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-bottom:1px solid var(--border)}.header-content{display:flex;align-items:center;justify-content:space-between;height:var(--header-h)}.brand{display:inline-flex;align-items:center;gap:.55rem;color:var(--text)}.brand-mark{color:var(--text-2)}.brand-name{font-size:var(--fs-base);font-weight:var(--fw-heading);letter-spacing:-.01em}.nav{display:flex;align-items:center;gap:var(--space-3)}.lang-toggle{font-size:var(--fs-sm);color:var(--text-2);padding:.35rem .7rem;border:1px solid var(--border);border-radius:999px;transition:color var(--dur-2) ease,border-color var(--dur-2) ease}.lang-toggle:hover{color:var(--text);border-color:var(--border-strong)}.section{padding:var(--space-7) 0}.section+.section{border-top:1px solid var(--border)}.eyebrow{font-family:var(--font-mono);font-size:var(--fs-2xs);font-weight:var(--fw-medium);letter-spacing:.12em;text-transform:uppercase;color:var(--text-3)}.eyebrow,.section-title{margin-bottom:var(--space-2)}.section-title{font-size:var(--fs-title)}.hero{padding:var(--space-7) 0 var(--space-6);position:relative}.hero:before{content:"";position:absolute;inset:0;background:radial-gradient(56rem 26rem at 18% -10%,rgba(100,148,214,.11),transparent 68%);pointer-events:none}.hero-content{position:relative;max-width:640px}.headline{font-size:var(--fs-display);line-height:1.14;margin-bottom:var(--space-3)}.subheadline{font-size:var(--fs-lg);line-height:1.7;color:var(--text-2);max-width:34em;margin-bottom:var(--space-4)}.helper-text{margin-top:var(--space-2);font-size:var(--fs-sm);color:var(--text-3)}.showcase{margin-top:var(--space-6)}.showcase-frame{border:1px solid var(--border-strong);border-radius:var(--radius-lg);overflow:hidden;background:var(--bg-raised);box-shadow:var(--shadow-raise)}.showcase-frame img{display:block;width:100%;height:auto}.sample-note{margin-top:var(--space-1);font-size:var(--fs-xs);color:var(--text-3);text-align:right}.stat-headline{font-size:var(--fs-stat);max-width:22em}.stat-source{display:block;margin-top:var(--space-2);font-family:var(--font-mono);font-size:var(--fs-2xs);letter-spacing:.04em;color:var(--text-3)}.problem-details{margin-top:var(--space-4);display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-gap:var(--space-4);gap:var(--space-4)}.problem-details p{color:var(--text-2);font-size:var(--fs-base);max-width:34em}.problem-details strong{color:var(--text);font-weight:var(--fw-semibold)}.solution-copy{max-width:620px;margin-bottom:var(--space-4)}.solution-copy p{color:var(--text-2);font-size:var(--fs-base)}.steps{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));grid-gap:var(--space-4);gap:var(--space-4);margin-top:var(--space-4)}.step{border-top:1px solid var(--border-strong);padding-top:var(--space-3)}.step-index{font-family:var(--font-mono);font-size:var(--fs-xs);color:var(--text-3);display:block;margin-bottom:var(--space-2)}.step-title{font-weight:var(--fw-semibold);margin-bottom:.4rem}.step-description,.trust-note{font-size:var(--fs-md);color:var(--text-2)}.trust-note{margin-top:var(--space-5);display:flex;align-items:flex-start;gap:.7rem;padding:var(--space-3);border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-raised);max-width:640px}.trust-note svg{flex-shrink:0;margin-top:.15rem;color:var(--green)}.security-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-gap:var(--space-4) var(--space-5);gap:var(--space-4) var(--space-5);margin-top:var(--space-4)}.security-item{display:flex;gap:var(--space-2);align-items:flex-start}.security-icon{flex-shrink:0;width:34px;height:34px;display:flex;align-items:center;justify-content:center;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg-raised);color:var(--text-2)}.principle-title{font-size:var(--fs-base);font-weight:var(--fw-semibold);margin-bottom:.25rem}.principle-description{font-size:var(--fs-md);color:var(--text-2)}.faqs{margin-top:var(--space-4);max-width:720px}.faq-item{border-top:1px solid var(--border)}.faq-item:last-child{border-bottom:1px solid var(--border)}.faq-question{cursor:pointer;list-style:none;display:flex;align-items:center;justify-content:space-between;gap:var(--space-2);padding:var(--space-2) 0;font-size:var(--fs-base);font-weight:var(--fw-medium);color:var(--text);transition:color var(--dur-2) ease}.faq-question::-webkit-details-marker{display:none}.faq-question:after{content:"+";font-family:var(--font-mono);font-size:1.05rem;color:var(--text-3);transition:transform var(--dur-3) var(--ease-out)}.faq-item[open] .faq-question:after{transform:rotate(45deg)}.faq-answer{padding:0 0 var(--space-3);color:var(--text-2);font-size:var(--fs-md);max-width:40em}.final-cta-content{max-width:560px;margin:0 auto;text-align:center}.cta-message{font-size:var(--fs-title);font-weight:var(--fw-heading);letter-spacing:-.022em;margin-bottom:.5rem}.cta-sub{color:var(--text-3);font-size:var(--fs-sm);margin-bottom:var(--space-4)}.final-form{text-align:left}.footer{border-top:1px solid var(--border);padding:var(--space-4) 0}.footer-content{justify-content:space-between;flex-wrap:wrap;gap:var(--space-2)}.footer-content,.footer-links{display:flex;align-items:center}.footer-links{gap:var(--space-3)}.footer-link{font-size:var(--fs-sm);color:var(--text-3)}.footer-link:hover{color:var(--text)}.footer-contact{text-align:right}input,select,textarea{font-family:inherit;font-size:var(--fs-base);color:var(--text);background-color:var(--bg-raised);border:1px solid var(--border-strong);border-radius:var(--radius);padding:0 .9rem;height:44px;transition:border-color var(--dur-2) ease,box-shadow var(--dur-2) ease}select{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%2364748b' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right .8rem center;padding-right:2.4rem}input::placeholder{color:var(--text-3)}input:focus,select:focus,textarea:focus{outline:none;border-color:var(--focus);box-shadow:0 0 0 3px rgba(100,148,214,.18)}input[type=checkbox]{-webkit-appearance:auto;-moz-appearance:auto;appearance:auto;width:16px;height:16px;padding:0;accent-color:var(--focus);flex-shrink:0;margin-top:.28rem;cursor:pointer}button{font-family:inherit;cursor:pointer;border:none}.btn{display:inline-flex;align-items:center;justify-content:center;height:44px;padding:0 1.15rem;border-radius:var(--radius);font-size:var(--fs-md);font-weight:var(--fw-semibold);letter-spacing:-.01em;transition:background-color var(--dur-2) ease,border-color var(--dur-2) ease,color var(--dur-2) ease,transform var(--dur-1) ease;touch-action:manipulation}.btn:active{transform:scale(.98)}.btn:disabled{opacity:.55;cursor:default}.btn--primary{background:#f2f5f9;color:#0a0f1a}.btn--primary:hover{background:#ffffff}.btn--secondary{background:transparent;color:var(--text);border:1px solid var(--border-strong)}.btn--secondary:hover{border-color:var(--text-3);background:var(--bg-raised)}.btn--ghost{background:transparent;color:var(--text-2)}.btn--ghost:hover{color:var(--text);background:var(--bg-raised)}.btn--sm{height:36px;padding:0 .85rem;font-size:var(--fs-sm)}.waitlist-form--compact{max-width:460px}.cta-row{display:flex;gap:.6rem}.cta-row .input-email{flex:1 1;min-width:0}.cta-row .btn{flex-shrink:0}.waitlist-form{display:flex;flex-direction:column;gap:var(--space-2)}.form-row{display:grid;grid-template-columns:1fr 1fr;grid-gap:var(--space-2);gap:var(--space-2)}.form-group{display:flex;flex-direction:column;gap:.35rem}.form-group>label{font-size:var(--fs-sm);font-weight:var(--fw-medium);color:var(--text-2)}.form-group.checkbox{flex-direction:row;align-items:flex-start;gap:.55rem}.form-group.checkbox label{font-size:var(--fs-xs);line-height:1.55;color:var(--text-2);cursor:pointer}.checkbox--compact{margin-top:var(--space-2)}.checkbox--compact label{font-size:var(--fs-xs);color:var(--text-3)}.form-consents{border:none;display:flex;flex-direction:column;gap:.6rem;padding-top:.4rem}.form-consents legend{font-size:var(--fs-sm);font-weight:var(--fw-medium);color:var(--text-2);margin-bottom:.6rem}.btn-expand{background:none;border:none;padding:0;margin-top:var(--space-2);font-size:var(--fs-sm);color:var(--link);text-align:left;transition:color var(--dur-2) ease}.btn-expand:hover{color:var(--text)}.form-details{margin-top:var(--space-3);border:1px solid var(--border);border-radius:var(--radius);padding:var(--space-2) var(--space-3);background:var(--bg-raised)}.form-summary{cursor:pointer;list-style:none;font-size:var(--fs-sm);font-weight:var(--fw-medium);color:var(--text-2)}.form-summary::-webkit-details-marker{display:none}.form-fields{display:flex;flex-direction:column;gap:var(--space-2)}.form-fields,.message{margin-top:var(--space-2)}.message{padding:.7rem .9rem;border-radius:var(--radius);font-size:var(--fs-sm);border:1px solid}.message--success{color:var(--green);border-color:rgba(85,192,132,.35);background:rgba(85,192,132,.08)}.message--error{color:var(--red);border-color:rgba(226,99,95,.35);background:rgba(226,99,95,.08)}.hp-field{position:absolute;left:-9999px;width:1px;height:1px;opacity:0}.policy-body{font-size:var(--fs-md);line-height:1.75}.policy-body h1{font-size:var(--fs-title);margin-bottom:var(--space-1)}.policy-meta{color:var(--text-3);font-size:var(--fs-sm);margin-bottom:var(--space-5)}.policy-body h2{font-size:var(--fs-lg);margin-top:var(--space-5);margin-bottom:var(--space-2)}.policy-body h3{font-size:var(--fs-md);margin-top:var(--space-3);margin-bottom:var(--space-1)}.policy-body ol,.policy-body p,.policy-body ul{color:var(--text-2);margin-bottom:var(--space-2)}.policy-body ol,.policy-body ul{padding-left:1.4rem}.policy-body li{margin-bottom:.35rem}.policy-body strong{color:var(--text)}.policy-table-wrap{overflow-x:auto;margin-bottom:var(--space-2)}.policy-body table{width:100%;border-collapse:collapse;font-size:var(--fs-sm)}.policy-body td,.policy-body th{border:1px solid var(--border);padding:.5rem .75rem;text-align:left;color:var(--text-2);vertical-align:top}.policy-body th{color:var(--text);background-color:var(--bg-raised);white-space:nowrap}@media (max-width:860px){.security-grid,.steps{grid-template-columns:1fr;gap:var(--space-3)}.problem-details{grid-template-columns:1fr;gap:var(--space-2)}}@media (max-width:640px){.section{padding:var(--space-6) 0}.hero{padding:var(--space-6) 0 var(--space-5)}.cta-row{flex-direction:column}.form-row{grid-template-columns:1fr}.footer-content{flex-direction:column;align-items:flex-start}.footer-contact{text-align:left}}.auth-shell{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:var(--space-3)}.auth-card{width:100%;max-width:400px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);padding:var(--space-4)}.auth-brand{display:flex;justify-content:center;margin-bottom:var(--space-3)}.auth-title{font-size:var(--fs-xl);text-align:center;margin-bottom:var(--space-1)}.auth-sub{color:var(--text-2);font-size:var(--fs-sm);line-height:1.45;text-align:center;margin-bottom:var(--space-3)}.auth-form{display:flex;flex-direction:column;gap:var(--space-2)}.auth-alt{margin-top:var(--space-3);text-align:center;font-size:var(--fs-sm);color:var(--text-3)}.auth-consent{margin-top:var(--space-2);font-size:var(--fs-xs);color:var(--text-3);line-height:1.6}.auth-consent a{color:var(--text-2);text-decoration:underline;text-underline-offset:2px}.app-shell{min-height:100vh;display:flex;flex-direction:column}.app-header{height:var(--header-h);border-bottom:1px solid var(--border);background:rgba(10,15,26,.9);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);position:-webkit-sticky;position:sticky;top:0;z-index:var(--z-header)}.app-header-inner{max-width:var(--shell);height:100%;margin:0 auto;padding:0 var(--space-3);justify-content:space-between;gap:var(--space-2)}.app-header-inner,.app-nav{display:flex;align-items:center}.app-nav{gap:var(--space-3);font-size:var(--fs-sm)}.app-nav a{color:var(--text-2)}.app-nav a:hover{color:var(--text)}.app-user{color:var(--text-3);font-size:var(--fs-xs);font-family:var(--font-mono)}.app-main{max-width:var(--shell);width:100%;margin:0 auto;padding:var(--space-4) var(--space-3) var(--space-6);flex:1 1}@media (min-width:901px){.app-shell:has(.canvas-workspace){height:100dvh}}.app-main:has(.canvas-workspace){max-width:var(--shell-wide);display:flex;flex-direction:column;flex:1 1;min-height:0;overflow:hidden;padding:var(--space-2) var(--space-3)}.app-title{font-size:var(--fs-title);margin-bottom:var(--space-1)}.app-desc{color:var(--text-2);font-size:var(--fs-md);margin-bottom:var(--space-4);max-width:640px}.app-desc--tight{margin-bottom:var(--space-2);max-width:72ch}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);padding:var(--space-3)}.card+.card{margin-top:var(--space-2)}.card-title{font-size:var(--fs-lg);margin-bottom:var(--space-1)}.card-desc{color:var(--text-2);font-size:var(--fs-md);line-height:1.45}.card-actions{margin-top:var(--space-2);display:flex;align-items:center;gap:var(--space-1);flex-wrap:wrap}.scan-runner{display:block}.scan-runner__note{font-size:var(--fs-sm);color:var(--text-3);flex:1 1 16rem;min-width:0}.scan-runner .form-error{margin-top:var(--space-1)}.pill{display:inline-flex;align-items:center;gap:.4rem;height:26px;padding:0 .6rem;border-radius:var(--radius-sm);font-size:var(--fs-sm);font-weight:var(--fw-semibold);line-height:1}.pill:before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor}.pill--pending{color:var(--amber);background:rgba(217,166,72,.1)}.pill--connected{color:var(--green);background:rgba(85,192,132,.1)}.pill--failed{color:var(--red);background:rgba(226,99,95,.1)}.steps{display:flex;flex-direction:column;gap:var(--space-2);counter-reset:step}.step{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);padding:var(--space-3);transition:opacity var(--dur-3) var(--ease-out)}.step[data-active=false]{opacity:.5}.step-title{counter-increment:step;font-size:var(--fs-lg);margin-bottom:var(--space-1);display:flex;align-items:baseline;gap:var(--space-1)}.step-title:before{content:"0" counter(step);font-family:var(--font-mono);font-size:var(--fs-2xs);font-weight:var(--fw-medium);letter-spacing:.12em;color:var(--text-3);flex-shrink:0}.code-block{background:var(--bg-inset);border:1px solid var(--border);border-radius:var(--radius);padding:var(--space-2);font-family:var(--font-mono);font-size:var(--fs-xs);line-height:1.6;overflow-x:auto;white-space:pre;margin-top:var(--space-1)}.kv{display:grid;grid-template-columns:auto 1fr;grid-gap:.45rem var(--space-3);gap:.45rem var(--space-3);margin-top:var(--space-2);align-items:baseline}.kv dt{font-size:var(--fs-2xs);font-weight:var(--fw-medium);letter-spacing:.12em;text-transform:uppercase;color:var(--text-3)}.kv dd,.kv dt{font-family:var(--font-mono)}.kv dd{font-size:var(--fs-sm);font-feature-settings:"tnum";font-variant-numeric:tabular-nums;word-break:break-all}.copy-row{display:flex;align-items:center;gap:var(--space-1)}.btn--copy{background:transparent;border:1px solid var(--border-strong);color:var(--text-2);height:26px;padding:0 .55rem;border-radius:var(--radius-sm);font-family:var(--font-mono);font-size:var(--fs-2xs);letter-spacing:.08em;flex-shrink:0;transition:color var(--dur-2) ease,border-color var(--dur-2) ease}.btn--copy:hover{color:var(--text);border-color:var(--text-3)}.report-placeholder{border:1px dashed var(--border-strong);border-radius:var(--radius-lg);padding:var(--space-4) var(--space-3);text-align:center;color:var(--text-2);font-size:var(--fs-md)}.report-placeholder .showcase-img{max-width:100%;height:auto;border:1px solid var(--border-strong);border-radius:var(--radius-lg);box-shadow:var(--shadow-raise);margin-top:var(--space-3)}@media (max-width:640px){.app-header{height:auto;min-height:var(--header-h)}.app-header-inner{padding-top:var(--space-2);padding-bottom:var(--space-2)}.app-header-inner,.app-nav{flex-wrap:wrap;row-gap:var(--space-1)}.app-nav{order:2;flex-basis:100%;min-width:0;column-gap:var(--space-2)}.app-nav--user{order:1;flex-basis:auto;margin-left:auto}.app-nav a,.app-user{white-space:nowrap}.app-user{max-width:38vw;overflow:hidden;text-overflow:ellipsis}.kv{grid-template-columns:1fr;gap:.15rem}.kv dt{margin-top:var(--space-1)}}.canvas-meta{display:flex;align-items:center;gap:var(--space-2);flex-wrap:wrap;margin-bottom:var(--space-2)}.canvas-meta-stats{color:var(--text-3);font-size:var(--fs-xs)}.chip-readonly{font-family:var(--font-mono);font-size:var(--fs-2xs);font-weight:var(--fw-medium);letter-spacing:.12em;color:var(--text-3);border:1px solid var(--border-strong);border-radius:var(--radius-sm);padding:.25rem .5rem;line-height:1}.canvas-tabs{display:flex;gap:var(--space-1);flex-wrap:wrap;margin-bottom:var(--space-2)}.canvas-tab{font-family:var(--font-mono);font-size:var(--fs-xs);color:var(--text-2);border:1px solid var(--border);border-radius:var(--radius-sm);padding:.35rem .6rem;line-height:1;transition:color var(--dur-2) ease,border-color var(--dur-2) ease}.canvas-tab:hover{color:var(--text);border-color:var(--border-strong)}.canvas-tab[aria-current=page]{color:var(--text);border-color:var(--focus)}.canvas-topbar{flex:none;display:flex;align-items:center;gap:var(--space-2);flex-wrap:wrap;margin-bottom:var(--space-1)}.canvas-topbar-title{margin:0;font-size:var(--fs-lg);font-weight:var(--fw-heading)}.canvas-topbar .chip-readonly{margin-left:auto}.canvas-summary-text{margin:var(--space-2) 0 0;max-width:76ch;font-size:var(--fs-md);line-height:1.65;color:var(--text-2)}.canvas-summary-text strong{color:var(--text);font-weight:var(--fw-semibold)}.canvas-overview{position:absolute;inset:0;z-index:5;overflow-y:auto;background:var(--bg-inset);padding:var(--space-3)}.canvas-overview .canvas-summary-text{margin:0 0 var(--space-3)}.canvas-ov-costnote{color:var(--text-3)}.canvas-ov-section{margin-bottom:var(--space-3)}.canvas-ov-cat{margin:0 0 var(--space-1);font-family:var(--font-mono);font-size:var(--fs-2xs);letter-spacing:.08em;color:var(--text-3)}.canvas-ov-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));grid-gap:var(--space-1);gap:var(--space-1)}.canvas-ov-tile{display:flex;align-items:flex-start;gap:var(--space-1);text-align:left;padding:var(--space-2);background:var(--bg-raised);border:1px solid var(--border);border-radius:var(--radius);cursor:pointer;transition:border-color var(--dur-2) ease}.canvas-ov-tile:hover{border-color:var(--border-strong)}.canvas-ov-icon{flex:none;display:block;width:22px;height:22px;color:var(--text-2)}.canvas-ov-icon svg{width:100%;height:100%;display:block}.canvas-ov-body{display:flex;flex-direction:column;gap:.2rem;min-width:0}.canvas-ov-name{font-size:var(--fs-sm);font-weight:var(--fw-semibold);color:var(--text)}.canvas-ov-meta{font-size:var(--fs-xs);color:var(--text-2)}.canvas-ov-saving{display:inline-flex;align-items:center;gap:.3rem;font-family:var(--font-mono);font-size:var(--fs-2xs);color:var(--amber)}.canvas-ov-saving svg{width:12px;height:12px}.canvas-ov-footnote{margin:var(--space-1) 0 0;font-size:var(--fs-xs);color:var(--text-3);max-width:96ch}.canvas-ov-footnote strong{color:var(--text-2)}.canvas-incidental-toggle{display:flex;align-items:center;gap:.4rem;padding:.3rem .1rem;font-size:var(--fs-sm);color:var(--text-2);cursor:pointer}.canvas-incidental-toggle input{flex:none;accent-color:var(--focus)}.canvas-workspace{flex:1 1;min-height:0;display:flex;flex-direction:column;gap:var(--space-1)}.canvas-toolbar{flex:none;display:flex;align-items:center;gap:var(--space-2)}.canvas-diff-toggle{font-family:var(--font-mono);font-size:var(--fs-xs);color:var(--text-2);padding:.4rem .8rem;background:none;border:1px solid var(--border);border-radius:var(--radius-sm);cursor:pointer;line-height:1;transition:color var(--dur-2) ease,background var(--dur-2) ease}.canvas-diff-toggle[aria-pressed=true]{color:var(--text-1);background:var(--bg-raised);border-color:var(--text-3)}.canvas-focus-notice{margin:0;display:inline-flex;align-items:center;gap:var(--space-1);font-size:var(--fs-xs);color:var(--text-3)}.canvas-focus-notice button{background:none;border:0;padding:0 .2rem;color:var(--text-3);font-size:var(--fs-sm);line-height:1;cursor:pointer}.canvas-view-toggle{display:inline-flex;border:1px solid var(--border);border-radius:var(--radius-sm);overflow:hidden}.canvas-view-toggle button{font-family:var(--font-mono);font-size:var(--fs-xs);color:var(--text-2);padding:.4rem 1rem;background:none;border:0;cursor:pointer;line-height:1;transition:color var(--dur-2) ease,background var(--dur-2) ease}.canvas-view-toggle button+button{border-left:1px solid var(--border)}.canvas-view-toggle button[aria-pressed=true]{color:var(--text);background:var(--bg-raised)}.canvas-shell{flex:1 1;min-height:0;display:flex;gap:var(--space-2);align-items:stretch}.canvas-flow-wrap{position:relative;flex:1 1;min-width:0;background:var(--bg-inset)}.canvas-finder,.canvas-flow-wrap{border:1px solid var(--border);border-radius:var(--radius-lg);overflow:hidden}.canvas-finder{flex:none;width:232px;display:flex;flex-direction:column;gap:var(--space-1);padding:var(--space-2);background:var(--bg-raised)}.canvas-finder-search{display:flex;flex-direction:column;gap:.35rem}.canvas-finder-input{width:100%;padding:.45rem .6rem;background:var(--bg-inset);border:1px solid var(--border-strong);border-radius:var(--radius-sm);color:var(--text);font-family:var(--font-sans);font-size:var(--fs-sm)}.canvas-finder-input::placeholder{color:var(--text-3)}.canvas-finder-input:focus-visible{outline:2px solid var(--focus);outline-offset:-1px}.canvas-finder-count{margin:0;font-family:var(--font-mono);font-size:var(--fs-2xs);color:var(--text-3)}.canvas-finder-head{display:flex;align-items:baseline;justify-content:space-between;gap:var(--space-1);padding-top:var(--space-1);border-top:1px solid var(--border)}.canvas-finder-reset{padding:0;background:none;border:none;color:var(--link);font-size:var(--fs-2xs);cursor:pointer}.canvas-finder-reset:hover{text-decoration:underline}.canvas-finder-list{flex:1 1;min-height:0;overflow-y:auto}.canvas-finder-section+.canvas-finder-section{margin-top:var(--space-1)}.canvas-finder-section-title{margin:0 0 .2rem;font-family:var(--font-mono);font-size:var(--fs-2xs);letter-spacing:.08em;color:var(--text-3)}.canvas-finder-list ul{list-style:none;margin:0;padding:0}.canvas-finder-row{display:flex;align-items:center;gap:.4rem}.canvas-finder-row input[type=checkbox]{flex:none;accent-color:var(--focus)}.canvas-finder-jump{flex:1 1;min-width:0;display:flex;align-items:center;gap:.4rem;padding:.25rem .35rem;background:none;border:none;border-radius:var(--radius-sm);color:var(--text-2);font-size:var(--fs-sm);text-align:left;cursor:pointer}.canvas-finder-jump:hover:not(:disabled){background:rgba(148,163,184,.08);color:var(--text)}.canvas-finder-jump:disabled{opacity:.4;cursor:default}.canvas-finder-icon{flex:none;display:block;width:15px;height:15px;color:var(--text-3)}.canvas-finder-icon svg{width:100%;height:100%;display:block}.canvas-finder-label{flex:1 1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.canvas-finder-num{color:var(--text-3)}.canvas-finder-cost,.canvas-finder-num{flex:none;font-family:var(--font-mono);font-size:var(--fs-2xs)}.canvas-finder-cost{margin-left:auto;color:var(--text-2)}.canvas-finder-cost+.canvas-finder-num{margin-left:0}.canvas-saving-badge{flex:none;display:inline-flex;align-items:center;gap:.15rem;padding:.1rem .3rem;background:rgba(217,166,72,.1);border:1px solid rgba(217,166,72,.35);border-radius:var(--radius-sm);color:var(--amber);font-family:var(--font-mono);font-size:var(--fs-2xs);line-height:1.2}.canvas-saving-badge svg{width:12px;height:12px;display:block}.canvas-savings-chip{display:flex;align-items:center;gap:.3rem;padding:.3rem .5rem;background:rgba(217,166,72,.08);border:1px solid rgba(217,166,72,.35);border-radius:var(--radius-sm);color:var(--amber);font-size:var(--fs-sm);text-align:left;cursor:pointer}.canvas-savings-chip svg{flex:none;width:14px;height:14px}.canvas-savings-chip[aria-pressed=true]{background:rgba(217,166,72,.16);border-color:rgba(217,166,72,.6)}.canvas-node-badge--new{color:var(--green);border-color:color-mix(in srgb,var(--green) 45%,transparent)}.canvas-removed{flex:none;border-top:1px solid var(--border);padding-top:var(--space-1)}.canvas-removed-title .nums{color:var(--red)}.canvas-removed-list{list-style:none;margin:.3rem 0 0;padding:0;max-height:140px;overflow-y:auto;display:flex;flex-direction:column;gap:.35rem}.canvas-removed-name{display:block;font-size:var(--fs-xs);color:var(--text-2);text-decoration:line-through;-webkit-text-decoration-color:var(--text-3);text-decoration-color:var(--text-3)}.canvas-removed-meta{display:block;font-size:var(--fs-2xs);color:var(--text-3)}.canvas-ov-diff{color:var(--text-2)}.canvas-panel-saving{margin-top:var(--space-2);padding:var(--space-1) var(--space-2);background:rgba(217,166,72,.08);border:1px solid rgba(217,166,72,.35);border-radius:var(--radius-sm)}.canvas-panel-saving .canvas-panel-section{margin-top:0;color:var(--amber)}.canvas-panel-saving-amount{margin:.2rem 0 .4rem;font-family:var(--font-mono);font-size:var(--fs-lg);color:var(--amber)}.canvas-panel-saving-list{margin:0;padding-left:1.1rem;font-size:var(--fs-sm);color:var(--text-2)}.canvas-panel-saving-evidence{display:block;font-size:var(--fs-2xs);color:var(--text-3);margin-top:.15rem}.canvas-panel-saving-note{margin:var(--space-1) 0 0;font-size:var(--fs-2xs);color:var(--text-3)}.canvas-container.is-dimmed,.canvas-node.is-dimmed{opacity:.25}.canvas-container.is-match,.canvas-node.is-match{border-color:var(--focus);box-shadow:0 0 0 2px rgba(100,148,214,.28)}.canvas-flow{background:transparent}.canvas-flow .react-flow__node{cursor:pointer}.canvas-legend{gap:.4rem;padding-top:var(--space-1);border-top:1px solid var(--border);font-family:var(--font-mono);font-size:var(--fs-2xs);letter-spacing:.06em;color:var(--text-3)}.canvas-legend,.canvas-legend-kinds{display:flex;flex-direction:column;margin:0}.canvas-legend-kinds{gap:.25rem;list-style:none;padding:0}.canvas-legend-modes{display:flex;align-items:center;gap:.25rem;flex-wrap:wrap}.canvas-legend-modes-label{margin-right:.15rem}.canvas-legend-mode{padding:.1rem .4rem;background:none;border:1px solid transparent;border-radius:var(--radius-sm);color:var(--text-3);font-family:inherit;font-size:inherit;letter-spacing:inherit;cursor:pointer}.canvas-legend-mode:hover{color:var(--text-2)}.canvas-legend-mode[aria-pressed=true]{border-color:var(--border-strong);background:rgba(148,163,184,.1);color:var(--text)}.canvas-legend-item{display:inline-flex;align-items:center;gap:.4rem}.canvas-legend-item line{stroke:rgba(148,163,184,.55);stroke-width:1.4}.canvas-legend--references-sg line{stroke-dasharray:4 4}.canvas-legend--in-subnet line{stroke-dasharray:2 3}.canvas-legend--routes-to line{stroke-width:2}.canvas-node{position:relative;width:100%;height:100%;display:flex;align-items:center;gap:.7rem;padding:0 var(--space-2);background:var(--surface);border:1px solid var(--border-strong);border-radius:var(--radius);overflow:hidden}.canvas-node-body{display:flex;flex-direction:column;justify-content:center;gap:.2rem;min-width:0;flex:1 1}.canvas-node-icon{flex:none;display:block;width:22px;height:22px;color:var(--text-2)}.canvas-node-icon svg{width:100%;height:100%;display:block}.canvas-node--compute{border-color:rgba(148,163,184,.42)}.canvas-node--storage:before{content:"";position:absolute;inset:0 auto 0 0;width:3px;background:rgba(148,163,184,.5)}.canvas-node--database{box-shadow:inset 0 3px 0 -1px rgba(148,163,184,.4)}.canvas-node--network{border-style:dashed}.canvas-node--security{border-style:dotted;border-color:rgba(148,163,184,.42)}.canvas-node--other{border-color:var(--border)}.canvas-node-type{font-family:var(--font-mono);font-size:var(--fs-2xs);font-weight:var(--fw-medium);letter-spacing:.12em;text-transform:uppercase;color:var(--text-3)}.canvas-node-name,.canvas-node-type{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.canvas-node-name{font-size:var(--fs-sm);font-weight:var(--fw-semibold);color:var(--text);line-height:1.3}.canvas-node-id{font-family:var(--font-mono);font-size:var(--fs-2xs);color:var(--text-3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.canvas-container{width:100%;height:100%;background:rgba(16,26,46,.35);border:1px solid var(--border);border-radius:var(--radius-lg)}.canvas-container-head{display:flex;align-items:baseline;gap:var(--space-1);padding:var(--space-1) var(--space-2);border-bottom:1px solid var(--border);overflow:hidden}.canvas-container-head .canvas-node-name{font-weight:var(--fw-medium);flex:1 1;min-width:0}.canvas-container-head .canvas-node-type{flex:none}.canvas-container-head .canvas-node-icon{width:18px;height:18px;align-self:center}.canvas-container--network{border-style:dashed}.canvas-container--security{border-style:dotted}.canvas-zone{width:100%;height:100%;background:rgba(13,20,37,.5);border:1px dashed var(--border);border-radius:var(--radius-lg)}.canvas-zone--region{background:rgba(10,15,26,.45);border-style:solid}.canvas-zone-head{display:flex;align-items:center;gap:.55rem;width:100%;padding:var(--space-1) var(--space-2);background:none;border:none;border-bottom:1px solid var(--border);border-radius:var(--radius-lg) var(--radius-lg) 0 0;color:var(--text-2);text-align:left;cursor:pointer;overflow:hidden}.canvas-zone-head:hover{background:rgba(148,163,184,.06);color:var(--text)}.canvas-zone-head:focus-visible{outline:2px solid var(--focus);outline-offset:-2px}.canvas-zone-chevron{flex:none;width:16px;height:16px;color:var(--text-3)}.canvas-zone-chevron svg,.canvas-zone-icon svg{width:100%;height:100%;display:block}.canvas-zone-icon{flex:none;display:block;width:18px;height:18px;color:var(--text-2)}.canvas-zone-label{font-size:var(--fs-sm);font-weight:var(--fw-semibold);color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.canvas-zone--region .canvas-zone-label{font-family:var(--font-mono);font-size:var(--fs-md);letter-spacing:.04em}.canvas-zone-category{letter-spacing:.08em;color:var(--text-3);white-space:nowrap}.canvas-zone-category,.canvas-zone-count{font-family:var(--font-mono);font-size:var(--fs-2xs)}.canvas-zone-count{margin-left:auto;flex:none;padding:.1rem .45rem;background:rgba(148,163,184,.1);border-radius:var(--radius-sm);color:var(--text-2)}.canvas-zone--collapsed{background:var(--surface);border-style:solid;border-color:var(--border-strong);border-radius:var(--radius);display:flex;flex-direction:column;align-items:stretch}.canvas-zone-preview{display:flex;flex-direction:column;gap:.2rem;padding:.3rem var(--space-2) var(--space-1);min-height:0;overflow:hidden}.canvas-zone-names{font-size:var(--fs-2xs);line-height:1.45;color:var(--text-3);overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}.canvas-zone-cost{font-family:var(--font-mono);font-size:var(--fs-2xs);color:var(--text-2)}.canvas-zone--collapsed .canvas-zone-head{border-bottom:none;border-radius:var(--radius)}.react-flow__node.selected .canvas-container,.react-flow__node.selected .canvas-node{border-color:var(--focus);box-shadow:0 0 0 3px rgba(100,148,214,.22)}.react-flow__node:focus-visible{outline:none}.react-flow__node:focus-visible .canvas-container,.react-flow__node:focus-visible .canvas-node{border-color:var(--focus);box-shadow:0 0 0 3px rgba(100,148,214,.22)}.canvas-handle{opacity:0;pointer-events:none;width:1px;height:1px;min-width:0;min-height:0;border:none;background:transparent}.canvas-edge .react-flow__edge-path{stroke:rgba(148,163,184,.38);stroke-width:1.2}.canvas-edge--references-sg .react-flow__edge-path{stroke-dasharray:4 4}.canvas-edge--in-subnet .react-flow__edge-path{stroke-dasharray:2 3}.canvas-edge--routes-to .react-flow__edge-path{stroke:rgba(148,163,184,.6);stroke-width:1.8}.canvas-edge.is-muted .react-flow__edge-path{stroke-opacity:.14}.canvas-edge.is-focused .react-flow__edge-path{stroke:rgba(203,213,225,.85);stroke-width:2}.canvas-flow-wrap[data-lod=far] .canvas-node-body{display:none}.canvas-flow-wrap[data-lod=far] .canvas-node{justify-content:center}.canvas-flow-wrap[data-lod=far] .canvas-node .canvas-node-icon{width:46px;height:46px;color:var(--text-2)}.canvas-flow-wrap[data-lod=mid] .canvas-node-id,.canvas-flow-wrap[data-lod=mid] .canvas-node-typerow{display:none}.canvas-flow-wrap[data-lod=far] .canvas-container-head,.canvas-flow-wrap[data-lod=far] .canvas-zone:not(.canvas-zone--collapsed) .canvas-zone-head{transform:scale(var(--label-scale,1));transform-origin:0 0;width:calc(100% / var(--label-scale, 1));height:calc(56px / var(--label-scale, 1));padding-top:0;padding-bottom:0;align-items:center;overflow:hidden}.canvas-flow .react-flow__attribution{background:transparent}.canvas-flow .react-flow__attribution a{color:var(--text-3);font-size:10px}.canvas-flow .react-flow__controls{box-shadow:none;border:1px solid var(--border-strong);border-radius:var(--radius-sm);overflow:hidden}.canvas-flow .react-flow__controls-button{background:var(--surface);border-bottom:1px solid var(--border);width:28px;height:28px}.canvas-flow .react-flow__controls-button svg{fill:var(--text-2)}.canvas-flow .react-flow__controls-button:hover{background:var(--bg-raised)}.canvas-flow .react-flow__minimap{border:1px solid var(--border);border-radius:var(--radius-sm);overflow:hidden}.canvas-panel{width:340px;flex-shrink:0;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);padding:var(--space-3);overflow-y:auto}.canvas-panel-head{display:flex;align-items:center;justify-content:space-between;gap:var(--space-1)}.canvas-panel-close{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;background:transparent;border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text-2);transition:color var(--dur-2) ease,border-color var(--dur-2) ease}.canvas-panel-close:hover{color:var(--text);border-color:var(--border-strong)}.canvas-panel-title{font-size:var(--fs-lg);margin-top:.35rem;word-break:break-all}.canvas-panel-section{margin-top:var(--space-2)}.canvas-panel-props{white-space:pre-wrap;word-break:break-all}@media (max-width:900px){.app-main:has(.canvas-workspace){overflow:visible;flex:1 1 auto;min-height:auto}.canvas-workspace{min-height:auto}.canvas-shell{flex-direction:column;height:auto}.canvas-flow-wrap{height:60vh;min-height:380px}.canvas-panel{width:100%;max-height:50vh}.canvas-finder{width:100%;max-height:40vh;order:-1}}.engine-status-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(320px,1fr));grid-gap:var(--space-2)}.engine-status-grid,.engine-status-header{gap:var(--space-2);margin-bottom:var(--space-2)}.engine-status-header{display:flex;align-items:center;justify-content:space-between}.engine-status-header .card-title{margin-bottom:0}.engine-status-content{margin-top:var(--space-2)}.engine-steps{margin:var(--space-2) 0 0 1.4rem;color:var(--text-2);font-size:var(--fs-md);list-style:decimal}.engine-steps li{margin-bottom:var(--space-2);line-height:1.6}.engine-steps strong{color:var(--text);font-weight:var(--fw-semibold)}.engine-steps p{margin-top:.25rem;margin-bottom:0}.inline-link{color:var(--link);text-decoration:underline;text-underline-offset:2px}.inline-link:hover{color:var(--text)}.table-wrap{overflow-x:auto;margin-top:var(--space-2)}.cost-table,.inventory-table{width:100%;border-collapse:collapse;font-size:var(--fs-sm)}.cost-table thead,.inventory-table thead{background:var(--bg-raised)}.cost-table th,.inventory-table th{font-family:var(--font-mono);font-size:var(--fs-2xs);font-weight:var(--fw-medium);letter-spacing:.12em;text-transform:uppercase;color:var(--text-3);text-align:left;padding:.5rem .75rem;border-bottom:1px solid var(--border)}.cost-table td,.inventory-table td{padding:.5rem .75rem;border-bottom:1px solid var(--border);color:var(--text-2)}.cost-table tr:hover,.inventory-table tr:hover{background:var(--bg-raised)}.recommendations-table{width:100%;border-collapse:collapse;font-size:var(--fs-sm)}.recommendations-table thead{background:var(--bg-raised)}.recommendations-table th{font-family:var(--font-mono);font-size:var(--fs-2xs);font-weight:var(--fw-medium);letter-spacing:.12em;text-transform:uppercase;color:var(--text-3);text-align:left}.recommendations-table td,.recommendations-table th{padding:.5rem .75rem;border-bottom:1px solid var(--border)}.recommendations-table td{color:var(--text-2);vertical-align:top}.recommendations-table tr:hover{background:var(--bg-raised)}.rec-title{font-weight:var(--fw-semibold);color:var(--text);max-width:220px;word-break:break-word}.rec-resource{font-family:var(--font-mono);white-space:nowrap}.rec-engine,.rec-window{font-size:var(--fs-xs);white-space:nowrap}.rec-metrics,.rec-window{font-family:var(--font-mono)}.rec-metrics{font-size:var(--fs-xs);max-width:160px;word-break:break-word}.rec-savings{font-weight:var(--fw-semibold);color:var(--text);white-space:nowrap}.collection-error{padding:.7rem;margin-bottom:var(--space-2);background:rgba(226,99,95,.08);border:1px solid rgba(226,99,95,.35);border-radius:var(--radius);color:var(--red);font-size:var(--fs-sm)}.report-meta{display:flex;flex-wrap:wrap;gap:var(--space-2) var(--space-4);margin:var(--space-2) 0 var(--space-3)}.meta-item{display:flex;flex-direction:column;gap:.25rem}.meta-label{font-family:var(--font-mono);font-size:var(--fs-2xs);letter-spacing:.12em;text-transform:uppercase;color:var(--text-3)}.meta-value{font-size:var(--fs-sm);color:var(--text-2)}.stat-tiles{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));grid-gap:var(--space-2);gap:var(--space-2);margin-bottom:var(--space-3)}.stat-tile{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:var(--space-3)}.stat-value{font-size:clamp(1.25rem,1.9vw,1.75rem);font-weight:var(--fw-semibold);color:var(--text);line-height:1.15;white-space:nowrap}.stat-label{margin-top:.4rem;font-size:var(--fs-sm);color:var(--text-3)}.stat-caption{margin-top:.2rem;font-family:var(--font-mono);font-size:var(--fs-2xs);color:var(--text-3)}.stat-tile--highlight .stat-value{color:var(--amber)}.card-meta{margin-top:var(--space-2);font-family:var(--font-mono);font-size:var(--fs-2xs);color:var(--text-3)}.report-note{margin:var(--space-3) 0;font-size:var(--fs-xs);color:var(--text-3);line-height:1.6}.share-links-list{display:flex;flex-direction:column;gap:var(--space-1);margin-top:var(--space-2)}.share-link-item{display:flex;align-items:center;justify-content:space-between;gap:var(--space-2);padding:.6rem .75rem;background:var(--bg-inset);border:1px solid var(--border);border-radius:var(--radius-sm);flex-wrap:wrap}.share-link-inactive{opacity:.55}.share-link-info{min-width:0}.share-link-url{font-size:var(--fs-xs);word-break:break-all}.share-link-meta{margin-top:.3rem}.share-link-create,.share-link-meta{display:flex;align-items:center;gap:var(--space-1)}.share-link-create{flex-wrap:wrap}.share-link-create .input-select{width:auto;min-width:7rem}.share-link-expiry-label{font-size:var(--fs-xs);color:var(--text-3)}.share-link-expires{font-family:var(--font-mono);font-size:var(--fs-2xs);color:var(--text-3)}.share-shell{max-width:1080px;margin:0 auto;padding:var(--space-3) var(--space-4) var(--space-5)}.share-shell-header{display:flex;align-items:center;justify-content:space-between;gap:var(--space-2);padding-bottom:var(--space-2);margin-bottom:var(--space-3);border-bottom:1px solid var(--border)}.share-cta{margin-top:var(--space-5);padding-top:var(--space-4);border-top:1px solid var(--border);text-align:center}.share-cta-title{font-size:1.05rem;font-weight:600;margin-bottom:var(--space-1)}.share-cta-desc{opacity:.75;margin-bottom:var(--space-3)}.share-error{max-width:560px;margin:15vh auto 0;padding:0 var(--space-3)}.export-formats{display:flex;flex-direction:column;gap:var(--space-1);border:0;padding:0;margin:var(--space-2) 0;min-inline-size:0}.export-formats legend{margin-bottom:var(--space-1)}.export-format{display:flex;align-items:flex-start;gap:var(--space-2);padding:var(--space-2);background:var(--bg-inset);border:1px solid var(--border);border-radius:var(--radius);cursor:pointer}.export-format:has(input:checked){border-color:var(--focus)}.export-format input{margin-top:.15rem;accent-color:var(--focus)}.export-format-label{display:flex;flex-direction:column;gap:.15rem}.export-format-name{font-size:var(--fs-md);font-weight:var(--fw-semibold);color:var(--text)}.export-format-note{font-size:var(--fs-xs);color:var(--text-2)}.modal-overlay{position:fixed;inset:0;z-index:var(--z-overlay);display:flex;align-items:center;justify-content:center;background:rgba(7,11,20,.72)}.modal,.modal-overlay{padding:var(--space-3)}.modal{width:100%;max-width:460px;background:var(--surface);border:1px solid var(--border-strong);border-radius:var(--radius-lg);box-shadow:var(--shadow-raise)}.modal-title{font-size:var(--fs-lg);font-weight:var(--fw-heading);color:var(--text)}.modal-kv,.modal-title{margin-bottom:var(--space-2)}.modal-note{font-size:var(--fs-sm);color:var(--text-2);line-height:1.5;padding:var(--space-2);background:var(--bg-inset);border:1px solid var(--border);border-radius:var(--radius);margin-bottom:var(--space-3)}.modal-actions{display:flex;justify-content:flex-end;gap:var(--space-1)}.canvas-node-typerow{display:flex;align-items:center;gap:.4rem;overflow:hidden}.canvas-node-typerow .canvas-node-type{min-width:0}.canvas-node-badge{flex:none;display:inline-block;font-family:var(--font-mono);font-size:var(--fs-2xs);font-weight:var(--fw-medium);letter-spacing:.1em;color:var(--amber);border:1px solid var(--amber);border-radius:var(--radius-sm);padding:.1rem .35rem;line-height:1;white-space:nowrap}.canvas-container-head .canvas-node-badge{align-self:center}.canvas-container--exported,.canvas-node--exported{border-color:rgba(217,166,72,.5)}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.design-start-actions{flex-wrap:wrap;gap:var(--space-1)}.design-start-hint{margin-top:var(--space-2)}.design-ref-count{color:var(--text-3);font-size:var(--fs-2xs)}.design-page-title{margin-bottom:var(--space-1)}.design-editor{display:flex;flex-direction:column;gap:var(--space-2)}.design-toolbar{display:flex;align-items:center;justify-content:space-between;gap:var(--space-2);flex-wrap:wrap;padding:var(--space-1) var(--space-2);background:var(--bg-raised);border:1px solid var(--border);border-radius:var(--radius)}.design-toolbar-left,.design-toolbar-right{display:flex;align-items:center;gap:var(--space-1);flex-wrap:wrap;min-width:0}.design-back{font-size:var(--fs-sm);color:var(--text-2);white-space:nowrap}.design-back:hover{color:var(--text)}.design-name-input{min-width:12rem;max-width:22rem;background:transparent;border:1px solid transparent;border-radius:var(--radius-sm);padding:.35rem var(--space-1);color:var(--text);font-size:var(--fs-md);font-weight:var(--fw-semibold)}.design-name-input:hover{border-color:var(--border)}.design-name-input:focus{border-color:var(--focus);background:var(--bg-inset);outline:none}.design-revision-select{background:var(--bg-inset);border:1px solid var(--border-strong);border-radius:var(--radius-sm);color:var(--text-2);font-size:var(--fs-sm);padding:.3rem var(--space-1);max-width:12rem}.design-save-state{font-family:var(--font-mono);font-size:var(--fs-2xs);letter-spacing:.04em;color:var(--text-3);white-space:nowrap}.design-save-state--saved{color:var(--green)}.design-save-state--error{color:var(--red)}.design-notice{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--space-2);padding:var(--space-1) var(--space-2);background:rgba(217,166,72,.08);border:1px solid rgba(217,166,72,.4);border-radius:var(--radius-sm);color:var(--text);font-size:var(--fs-sm);line-height:1.5}.design-notice-close{background:none;border:none;color:var(--text-3);cursor:pointer;font-size:var(--fs-lg);line-height:1;padding:0 .2rem}.design-notice-close:hover{color:var(--text)}.design-workspace{display:flex;gap:var(--space-2);align-items:stretch;height:calc(100vh - 380px);min-height:520px}.design-palette{width:148px;flex-shrink:0;display:flex;flex-direction:column;gap:.35rem;padding:var(--space-2);background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);overflow-y:auto}.design-palette-item{display:flex;flex-direction:column;gap:.1rem;align-items:flex-start;padding:.45rem var(--space-1);background:var(--bg-inset);border:1px solid var(--border-strong);border-radius:var(--radius-sm);color:var(--text);cursor:-webkit-grab;cursor:grab;text-align:left;width:100%}.design-palette-item:hover{border-color:var(--focus)}.design-palette-item:active{cursor:-webkit-grabbing;cursor:grabbing}.design-palette-type{font-family:var(--font-mono);font-size:var(--fs-2xs);letter-spacing:.1em;color:var(--text-3)}.design-palette-label{font-size:var(--fs-sm)}.design-palette-hint{margin-top:var(--space-1);font-size:var(--fs-2xs);color:var(--text-3);line-height:1.4}.design-flow-wrap{position:relative;flex:1 1;min-width:0;overflow:hidden;background:var(--bg-inset)}.design-flow-wrap,.design-panel{border:1px solid var(--border);border-radius:var(--radius-lg)}.design-panel{width:340px;flex-shrink:0;display:flex;flex-direction:column;gap:var(--space-2);background:var(--surface);padding:var(--space-3);overflow-y:auto}.design-panel-head{justify-content:space-between}.design-panel-head,.design-panel-head-right{display:flex;align-items:center;gap:var(--space-1)}.design-exported-note,.design-panel-hint{font-size:var(--fs-sm);color:var(--text-2);line-height:1.55}.design-exported-note{padding:var(--space-1);background:rgba(217,166,72,.07);border-left:2px solid var(--amber);border-radius:0 var(--radius-sm) var(--radius-sm) 0}.design-node{width:100%;height:100%;padding:var(--space-1);cursor:pointer}.design-node--selected{border-color:var(--focus)}.design-node--incomplete{border-color:rgba(217,166,72,.5)}.design-node--reference{background:var(--bg-raised);border-style:dashed}.design-node-badge{font-family:var(--font-mono);font-size:var(--fs-2xs);letter-spacing:.06em;padding:.05rem .3rem;border-radius:var(--radius-sm);white-space:nowrap;flex:none}.design-node-badge--incomplete{color:var(--amber);border:1px solid rgba(217,166,72,.45)}.react-flow__handle.design-handle{width:11px;height:11px;background:var(--bg-raised);border:1px solid var(--border-strong)}.react-flow__handle.design-handle:hover{border-color:var(--focus);background:var(--focus)}.design-form,.design-form-section{display:flex;flex-direction:column;gap:var(--space-2)}.design-field-help{color:var(--text-3);line-height:1.45}.design-field-error,.design-field-help{font-size:var(--fs-2xs);margin-top:.2rem}.design-field-error{color:var(--amber)}.design-field-empty{font-size:var(--fs-2xs);color:var(--text-3)}.design-field--invalid input:not([type=checkbox]),.design-field--invalid select{border-color:rgba(217,166,72,.55)}.design-ref-list{display:flex;flex-direction:column;gap:.25rem}.design-ref-item{display:flex;align-items:center;gap:var(--space-1);font-size:var(--fs-sm);color:var(--text-2)}.design-ref-item input{width:auto}.design-sg-rules{gap:var(--space-1)}.design-sg-rule,.design-sg-rules{display:flex;flex-direction:column}.design-sg-rule{gap:.3rem;padding:var(--space-1);background:var(--bg-inset);border:1px solid var(--border);border-radius:var(--radius-sm)}.design-sg-rule-row{display:flex;align-items:center;gap:.35rem;flex-wrap:wrap}.design-sg-rule-row input,.design-sg-rule-row select{font-size:var(--fs-xs);padding:.25rem .4rem}.design-sg-port,.design-sg-proto{width:4.5rem}.design-sg-cidr{flex:1 1;min-width:8rem}.design-sg-dash{color:var(--text-3)}.design-diagnostics{border-top:1px solid var(--border);padding-top:var(--space-2)}.design-diagnostics-head{display:flex;align-items:center;justify-content:space-between;gap:var(--space-1);margin-bottom:var(--space-1)}.design-diagnostics-count{display:flex;gap:.4rem;font-family:var(--font-mono);font-size:var(--fs-2xs);color:var(--text-3)}.design-sev--error{color:var(--red)}.design-sev--warning{color:var(--amber)}.design-diagnostics-empty{font-size:var(--fs-sm);color:var(--text-3)}.design-diagnostics-list{display:flex;flex-direction:column;gap:var(--space-1);list-style:none;padding:0;margin:0}.design-diagnostic{padding:var(--space-1);background:var(--bg-inset);border:1px solid var(--border);border-left-width:2px;border-radius:var(--radius-sm)}.design-diagnostic--error{border-left-color:var(--red)}.design-diagnostic--warning{border-left-color:var(--amber)}.design-diagnostic--active{border-color:var(--focus);border-left-color:var(--focus)}.design-diagnostic-main{display:flex;flex-direction:column;gap:.2rem;width:100%;background:none;border:none;padding:0;text-align:left;cursor:pointer}.design-diagnostic-type{font-family:var(--font-mono);font-size:var(--fs-2xs);letter-spacing:.1em;text-transform:uppercase;color:var(--text-3)}.design-diagnostic-message{font-size:var(--fs-sm);color:var(--text);line-height:1.45}.design-diagnostic-suggestion{font-size:var(--fs-2xs);color:var(--text-2);line-height:1.45}.design-diagnostic-fix{margin-top:var(--space-1)}.design-fix-form{display:flex;flex-direction:column;gap:.35rem;margin-top:.35rem}.design-fix-label{display:flex;flex-direction:column;gap:.2rem;font-size:var(--fs-2xs);color:var(--text-3)}.design-fix-label input,.design-fix-label select{font-size:var(--fs-xs);padding:.25rem .4rem}@media (max-width:900px){.design-workspace{flex-direction:column;height:auto}.design-palette{width:100%;flex-direction:row;flex-wrap:wrap;overflow-x:hidden}.design-palette-item{width:auto;flex:1 1 6rem}.design-palette-hint{flex-basis:100%;margin-top:0}.design-flow-wrap{height:58vh;min-height:340px}.design-panel{width:100%;max-height:none}}@media (max-width:640px){.design-toolbar{align-items:stretch}.design-toolbar-left,.design-toolbar-right{width:100%}.design-name-input{min-width:0;flex:1 1}.design-revision-select{max-width:100%}}.template-gallery{display:grid;grid-template-columns:repeat(auto-fit,minmax(320px,1fr));grid-gap:var(--space-4);gap:var(--space-4);margin-bottom:var(--space-5)}.template-card{gap:var(--space-2)}.template-card,.template-section{display:flex;flex-direction:column}.template-section{gap:var(--space-1)}.template-section-title{font-size:var(--fs-sm);font-weight:var(--fw-semibold);color:var(--text-2);text-transform:uppercase;letter-spacing:.05em}.template-cost-drivers,.template-highlights{list-style:disc;padding-left:var(--space-3);font-size:var(--fs-md);color:var(--text);line-height:1.6}.template-cost-note{font-size:var(--fs-xs);color:var(--text-3);font-style:italic}.template-back-link{margin-top:var(--space-3)}.template-back-link a{color:var(--link);text-decoration:none;font-size:var(--fs-md)}.template-back-link a:hover{text-decoration:underline}.template-detail-header,.template-param-section{margin-bottom:var(--space-5)}.template-param-form{display:flex;flex-direction:column;gap:var(--space-4)}.template-param-form .form-row{grid-template-columns:minmax(0,1fr);gap:var(--space-3)}.template-param-form .form-group{min-width:0}.required-badge{font-size:var(--fs-2xs);font-weight:var(--fw-semibold);letter-spacing:.04em;color:var(--red);border:1px solid rgba(226,99,95,.35);background:rgba(226,99,95,.08);padding:.1rem .35rem;border-radius:var(--radius-sm);margin-left:var(--space-1)}.template-param-form .form-group>label{display:flex;align-items:center}.form-help{color:var(--text-3)}.form-error,.form-help{font-size:var(--fs-xs);line-height:1.5}.form-error{color:var(--red)}.field--error input,.field--error select{border-color:var(--red)}.hint-command-wrapper{display:flex;align-items:center;gap:var(--space-1);margin-top:var(--space-1);min-width:0}.hint-command{flex:1 1;min-width:0;font-family:var(--font-mono);font-size:var(--fs-2xs);background-color:var(--bg-inset);color:var(--text-2);padding:var(--space-1) var(--space-2);border-radius:var(--radius-sm);border:1px solid var(--border);overflow-x:auto;white-space:nowrap;line-height:1.5}.template-form-actions{display:flex;gap:var(--space-2);margin-top:var(--space-3)}@media (max-width:768px){.template-gallery{grid-template-columns:1fr}.template-form-actions{flex-direction:column}.template-form-actions .btn{width:100%}}.check-counts{display:flex;flex-wrap:wrap;gap:var(--space-2);margin-bottom:var(--space-2);font-family:var(--font-mono);font-size:var(--fs-2xs);color:var(--text-3)}.check-count--fail{color:var(--red)}.check-note{font-size:var(--fs-xs);color:var(--text-2);margin-bottom:var(--space-2)}.check-list{display:flex;flex-direction:column;gap:var(--space-2);list-style:none;padding:0;margin:0 0 var(--space-2)}.check-item{padding:var(--space-2);background:var(--bg-inset);border:1px solid var(--border);border-left-width:2px;border-radius:var(--radius-sm)}.check-item--critical,.check-item--high{border-left-color:var(--red)}.check-item--low,.check-item--medium{border-left-color:var(--amber)}.check-item--unknown{border-left-color:var(--border-strong)}.check-head{display:flex;flex-wrap:wrap;align-items:baseline;gap:.5rem;margin-bottom:.35rem}.check-sev{font-family:var(--font-mono);font-size:var(--fs-2xs);letter-spacing:.12em;color:var(--text-3)}.check-sev--critical,.check-sev--high{color:var(--red)}.check-sev--low,.check-sev--medium{color:var(--amber)}.check-rule{font-size:var(--fs-2xs);color:var(--text-3)}.check-title{font-weight:var(--fw-semibold);color:var(--text);min-width:0;word-break:break-word}.check-summary{font-size:var(--fs-sm);color:var(--text-2);margin:0 0 .5rem}.check-evidence{display:flex;flex-direction:column;gap:.2rem;margin:0 0 .5rem}.check-evidence-row{display:flex;flex-wrap:wrap;gap:.5rem;font-size:var(--fs-xs)}.check-evidence-row dt{color:var(--text-3);min-width:8rem}.check-evidence-row dd{margin:0;color:var(--text-2);min-width:0;word-break:break-word}.check-remediation{font-size:var(--fs-xs);color:var(--text-2);margin:0}.check-passed{margin-bottom:var(--space-2);font-size:var(--fs-sm)}.check-passed summary{cursor:pointer;color:var(--text-3);font-size:var(--fs-xs)}.check-passed-list{list-style:none;padding:var(--space-1) 0 0;margin:0;display:flex;flex-direction:column;gap:.25rem;color:var(--text-2);font-size:var(--fs-xs)}.hero-actions{display:flex;flex-wrap:wrap;gap:var(--space-2);margin-bottom:var(--space-2)}@media (max-width:480px){.hero-actions .btn{width:100%}}@media (max-width:640px){.header .nav-privacy{display:none}}.cost-panel{margin-top:var(--space-3);padding-top:var(--space-2);border-top:1px solid var(--border)}.cost-panel__head{display:flex;align-items:center;justify-content:space-between;gap:var(--space-2);margin-bottom:var(--space-1)}.cost-panel__empty{font-size:var(--fs-xs);color:var(--text-3);margin:0}.cost-total{display:flex;align-items:baseline;gap:.35rem;margin:var(--space-1) 0 .25rem}.cost-total__value{font-size:var(--fs-xl);font-weight:var(--fw-semibold);color:var(--text)}.cost-caption,.cost-total__unit{font-size:var(--fs-xs);color:var(--text-3)}.cost-caption{margin:0 0 .35rem}.cost-diff{font-size:var(--fs-xs);color:var(--text-2);margin:0 0 .5rem}.cost-delta--up{color:var(--amber)}.cost-delta--down{color:var(--green)}.cost-breakdown summary{cursor:pointer;font-size:var(--fs-xs);color:var(--text-3)}.cost-table{width:100%;border-collapse:collapse;font-size:var(--fs-2xs);margin-top:var(--space-1)}.cost-table th{text-align:left;font-weight:var(--fw-medium);color:var(--text-3)}.cost-table td,.cost-table th{padding:.3rem .4rem;border-bottom:1px solid var(--border)}.cost-table td{color:var(--text-2);word-break:break-all}.cost-table td.nums,.cost-table th:last-child{white-space:nowrap;text-align:right}.cost-meta,.cost-unknown{color:var(--text-3)}.cost-meta{font-size:var(--fs-2xs);margin:var(--space-1) 0 0}.template-cost{margin:var(--space-2) 0 0}.template-cost-range{font-size:var(--fs-md);font-weight:var(--fw-semibold);color:var(--text);margin:0 0 .2rem}.home-hero{display:flex;flex-wrap:wrap;align-items:baseline;gap:var(--space-1) var(--space-3);margin-block:var(--space-3);padding:var(--space-3);background:var(--surface);border:1px solid rgba(217,166,72,.35);border-radius:var(--radius-lg);text-decoration:none;transition:border-color var(--dur-2) var(--ease-out)}.home-hero:hover{border-color:rgba(217,166,72,.6)}.home-hero-label{display:flex;flex-direction:column;gap:.15rem;font-size:var(--fs-sm);font-weight:var(--fw-medium);color:var(--text-2)}.home-hero-caption{font-size:var(--fs-xs);color:var(--text-3)}.home-hero-value{font-size:var(--fs-stat);font-weight:var(--fw-heading);color:var(--amber);letter-spacing:-.022em}.home-hero-cta{margin-left:auto;font-size:var(--fs-sm);color:var(--link)}.home-steps{list-style:none;margin:var(--space-3) 0 0;padding:0;display:flex;flex-direction:column}.home-step{display:flex;gap:var(--space-2);padding:var(--space-3) 0;border-top:1px solid var(--border)}.home-step:first-child{border-top:0;padding-top:0}.home-step-index{flex:none;display:flex;align-items:center;justify-content:center;width:32px;height:32px;border-radius:50%;border:1px solid var(--border-strong);font-family:var(--font-mono);font-size:var(--fs-sm);color:var(--text-2)}.home-step-index svg{width:16px;height:16px}.home-step[data-state=done] .home-step-index{border-color:rgba(85,192,132,.45);color:var(--green)}.home-step[data-state=current] .home-step-index{border-color:var(--focus);color:var(--text)}.home-step[data-state=todo]{opacity:.55}.home-step-body{display:flex;flex-direction:column;gap:var(--space-1);min-width:0}.home-step-title{font-size:var(--fs-lg);font-weight:var(--fw-semibold);line-height:1.2}.home-step-desc{font-size:var(--fs-md);color:var(--text-2);line-height:1.55}.home-step-conn{display:block}.home-step-conn+.home-step-conn{margin-top:.35rem}.home-step-action{margin-top:.15rem}.home-step-actions{display:flex;flex-wrap:wrap;gap:var(--space-1)}.canvas-panel-explain{margin-top:.35rem;font-size:var(--fs-sm);color:var(--text-2);line-height:1.55}.canvas-panel-arn{margin-top:var(--space-2);border-top:1px solid var(--border);padding-top:var(--space-1)}.canvas-panel-arn summary{cursor:pointer;font-size:var(--fs-xs);color:var(--text-3)}.canvas-panel-arn-value{margin-block:var(--space-1);font-family:var(--font-mono);font-size:var(--fs-2xs);color:var(--text-2);word-break:break-all}.design-palette-icon{flex:none;display:block;width:18px;height:18px;color:var(--text-3)}.design-palette-item{display:grid;grid-template-columns:18px 1fr;grid-template-rows:auto auto;grid-column-gap:.5rem;column-gap:.5rem;align-items:center}.design-palette-item .design-palette-icon{grid-row:1/span 2}.design-node-icon{flex:none;display:block;width:14px;height:14px;color:var(--text-3)}.design-empty-hint{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--space-1);padding:var(--space-3);text-align:center;pointer-events:none}.design-empty-hint-title{font-size:var(--fs-lg);font-weight:var(--fw-semibold);color:var(--text)}.design-empty-hint p:not(.design-empty-hint-title){max-width:44ch;font-size:var(--fs-md);color:var(--text-2);line-height:1.6}