:root{letter-spacing:.01em;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:Inter,system-ui,Segoe UI,Roboto,sans-serif;font-size:16px;line-height:1.5}*{box-sizing:border-box;margin:0;padding:0}body{color:#3a352f;background-color:#faf9f6;min-height:100svh}body:before{content:"";z-index:0;filter:invert()hue-rotate(15deg)saturate(.6)opacity(.08);pointer-events:none;background-image:url(https://images.unsplash.com/photo-1550684848-fac1c5b4e853?q=80&w=2070&auto=format&fit=crop);background-position:50%;background-size:cover;position:fixed;inset:0}#root{z-index:1;flex-direction:column;min-height:100svh;display:flex;position:relative}.auth-screen{justify-content:center;align-items:center;min-height:100svh;padding:1.5rem;display:flex}.auth-card{-webkit-backdrop-filter:blur(8px);text-align:center;background:#ffffffeb;border:1px solid #e8e6e1;border-radius:1.25rem;flex-direction:column;align-items:center;width:100%;max-width:400px;padding:3rem 2.5rem;display:flex;box-shadow:0 20px 40px #0000001a,0 4px 12px #0000000f}.auth-title{letter-spacing:-.02em;color:#3a352f;margin-bottom:1.5rem;font-size:1.75rem;font-weight:700}.auth-subtitle{color:#8d867c;margin-bottom:2rem;font-size:.95rem;line-height:1.6}.auth-btn{color:#3a352f;cursor:pointer;background:#fff;border:1.5px solid #dcd8cf;border-radius:.625rem;justify-content:center;align-items:center;gap:.6rem;width:100%;padding:.7rem 1.2rem;font-family:inherit;font-size:.95rem;font-weight:500;transition:background .15s,box-shadow .15s;display:flex}.auth-btn:hover{background:#f2efe9;box-shadow:0 4px 12px #00000014}.google-icon{flex-shrink:0;width:1.15rem;height:1.15rem}.auth-error{color:#b91c1c;text-align:left;background:#fef2f2;border:1px solid #fecaca;border-radius:.5rem;width:100%;margin-top:1.25rem;padding:.6rem 1rem;font-size:.875rem}.photo-credit{letter-spacing:.08em;color:#ffffffe6;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);pointer-events:none;z-index:50;background:#0000002e;border-radius:.25rem;padding:.2rem .5rem;font-size:.625rem;position:fixed;bottom:.5rem;right:.75rem}.app-shell{flex-direction:column;min-height:100svh;display:flex}.app-header{-webkit-backdrop-filter:blur(8px);z-index:40;background:#ffffffeb;border-bottom:1px solid #e8e6e1;justify-content:space-between;align-items:center;gap:1rem;height:4rem;padding:0 1.5rem;display:flex;position:sticky;top:0}.app-header-title{letter-spacing:-.01em;color:#3a352f;white-space:nowrap;font-size:1.05rem;font-weight:700}.app-header-user{align-items:center;gap:1.25rem;padding-right:.5rem;display:flex}.user-avatar{border:2px solid #e8e6e1;border-radius:50%;flex-shrink:0;width:2.25rem;height:2.25rem}.user-info{text-align:right;flex-direction:column;display:flex}.user-name{color:#3a352f;font-size:.875rem;font-weight:600;line-height:1.2}.user-email{color:#8d867c;font-size:.75rem;line-height:1.2}.signout-btn{color:#5c554b;cursor:pointer;white-space:nowrap;background:#f2efe9;border:1px solid #dcd8cf;border-radius:.5rem;padding:.4rem .85rem;font-family:inherit;font-size:.8rem;font-weight:500;transition:background .15s}.signout-btn:hover{background:#e8e6e1}.app-main{flex:1;width:100%;max-width:56rem;margin:0 auto;padding:2rem 1.5rem}.home-view{width:100%}.home-header{text-align:center;margin-bottom:3rem}.home-title{letter-spacing:-.025em;color:#3a352f;margin-bottom:.5rem;font-size:2rem;font-weight:700}.home-subtitle{color:#7c6fcd;font-size:1.1rem;font-weight:500}.action-grid{grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:1.5rem;display:grid}.action-card{aspect-ratio:1;cursor:pointer;text-align:center;background:#fff;border:1px solid #e8e6e1;border-radius:1rem;flex-direction:column;justify-content:center;align-items:center;gap:1rem;padding:2rem 1rem;font-family:inherit;transition:box-shadow .25s,border-color .25s,transform .25s;display:flex;position:relative;overflow:hidden;box-shadow:0 1px 3px #0000000f}.action-card:hover{border-color:#7c6fcd;transform:translateY(-3px);box-shadow:0 8px 24px #0000001a}.action-card-icon{color:#7c6fcd;background:#eee9ff;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:4rem;height:4rem;transition:background .25s,transform .25s;display:flex}.action-card:hover .action-card-icon{background:#ddd5ff;transform:scale(1.1)}.action-card-label{color:#3a352f;font-size:1rem;font-weight:600;transition:color .2s}.action-card:hover .action-card-label{color:#5246a0}.back-btn{color:#5c554b;cursor:pointer;background:#f2efe9;border:1px solid #dcd8cf;border-radius:.5rem;align-items:center;gap:.4rem;margin-bottom:1.5rem;padding:.4rem .9rem;font-family:inherit;font-size:.85rem;font-weight:500;transition:background .15s;display:inline-flex}.back-btn:hover{background:#e8e6e1}.app-header-left{align-items:center;gap:.5rem;min-width:0;display:flex}.breadcrumb-sep{color:#c5bfb7;font-size:1rem}.breadcrumb-current{color:#8d867c;white-space:nowrap;text-overflow:ellipsis;font-size:.9rem;font-weight:500;overflow:hidden}.section-title{color:#3a352f;letter-spacing:-.01em;margin-bottom:1.5rem;font-size:1.25rem;font-weight:700}.ts-wrap{flex-direction:column;gap:1.25rem;display:flex}.ts-loading{color:#8d867c;padding:2rem 0;font-size:.95rem}.ts-error{color:#b91c1c;background:#fef2f2;border:1px solid #fecaca;border-radius:.5rem;padding:.75rem 1rem;font-size:.875rem}.ts-kpis{grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:1rem;display:grid}.ts-kpi{-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:#ffffffe0;border:1px solid #e8e6e1;border-radius:.875rem;flex-direction:column;gap:.35rem;padding:1.25rem 1.75rem;display:flex}.ts-kpi-label{letter-spacing:.07em;text-transform:uppercase;color:#8d867c;font-size:.72rem;font-weight:600}.ts-kpi-value{color:#3a352f;letter-spacing:-.02em;font-size:1.4rem;font-weight:700}.ts-kpi-cost{color:#16803c}.ts-tabs{background:#f2efe9;border-radius:.625rem;gap:.25rem;width:fit-content;padding:.25rem;display:flex}.ts-tab{color:#8d867c;cursor:pointer;background:0 0;border:none;border-radius:.375rem;padding:.4rem 1rem;font-family:inherit;font-size:.85rem;font-weight:500;transition:background .15s,color .15s}.ts-tab--active{color:#3a352f;background:#fff;box-shadow:0 1px 4px #00000014}.ts-table-wrap{-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:#ffffffe0;border:1px solid #e8e6e1;border-radius:.875rem;overflow:hidden}.ts-table-scroll{max-height:480px;overflow-y:auto}.ts-table-scroll-x{scrollbar-width:thin;scrollbar-color:#dcd8cf #f7f5f0;overflow-x:auto}.ts-table-scroll-x::-webkit-scrollbar{height:6px}.ts-table-scroll-x::-webkit-scrollbar-track{background:#f7f5f0;border-radius:0 0 .875rem .875rem}.ts-table-scroll-x::-webkit-scrollbar-thumb{background:#c5bfb7;border-radius:3px}.ts-table-scroll-x::-webkit-scrollbar-thumb:hover{background:#8d867c}.ts-uid{white-space:nowrap;text-overflow:ellipsis;color:#8d867c;max-width:160px;font-family:SF Mono,Fira Mono,monospace;font-size:.72rem;overflow:hidden}.ts-table{border-collapse:collapse;width:100%;font-size:.875rem}.ts-table-sm{font-size:.8rem}.ts-table thead{z-index:1;background:#f7f5f0;position:sticky;top:0}.ts-table th{text-align:left;letter-spacing:.04em;text-transform:uppercase;color:#8d867c;white-space:nowrap;border-bottom:1px solid #e8e6e1;padding:.65rem .9rem;font-size:.75rem;font-weight:600}.ts-table td{color:#3a352f;border-bottom:1px solid #f2efe9;padding:.6rem .9rem}.ts-table tbody tr:last-child td{border-bottom:none}.ts-table tbody tr:hover td{background:#fafaf8}.ts-bold{font-weight:600}.ts-muted{color:#8d867c}.ts-small{font-size:.78rem}.ts-nowrap{white-space:nowrap}.ts-num,.ts-right{text-align:right}.ts-cost{color:#16803c;font-weight:600}.ts-feature{color:#5246a0;font-weight:500}.ts-empty{text-align:center;color:#8d867c;padding:2rem}.ts-badge{letter-spacing:.05em;color:#5246a0;background:#eee9ff;border-radius:.25rem;padding:.1rem .4rem;font-size:.7rem;font-weight:700;display:inline-block}.ts-filters{flex-wrap:wrap;align-items:center;gap:.5rem;margin-bottom:.75rem;display:flex}.ts-input{color:#3a352f;background:#ffffffe0;border:1px solid #dcd8cf;border-radius:.5rem;outline:none;flex:1;min-width:140px;padding:.45rem .75rem;font-family:inherit;font-size:.85rem;transition:border-color .15s}.ts-input:focus{border-color:#7c6fcd}.ts-clear{color:#b91c1c;cursor:pointer;white-space:nowrap;background:#fef2f2;border:1px solid #fecaca;border-radius:.5rem;padding:.45rem .9rem;font-family:inherit;font-size:.82rem;font-weight:500;transition:background .15s}.ts-clear:hover{background:#fee2e2}.ts-count{color:#8d867c;text-align:right;margin-top:.5rem;font-size:.78rem}.ts-chart-wrap{-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:#ffffffe0;border:1px solid #e8e6e1;border-radius:.875rem;padding:1.25rem 1.5rem 1rem}.ts-chart-title{letter-spacing:.07em;text-transform:uppercase;color:#8d867c;margin-bottom:.75rem;font-size:.72rem;font-weight:600}.ts-table th:hover{color:#5246a0;background:#eee9ff}.rm-wrap{flex-direction:column;display:flex}.ts-center{text-align:center}.rm-note{color:#6b5b2e;background:#fff8e6;border:1px solid #f0e2b8;border-radius:.6rem;margin-bottom:1rem;padding:.85rem 1rem;font-size:.85rem;line-height:1.5}.rm-note code{background:#0000000f;border-radius:.25rem;padding:.05rem .3rem;font-size:.8rem}.rm-filters select.ts-input{cursor:pointer;flex:none;min-width:150px}.rm-content{white-space:normal;color:#3a352f;max-width:480px;line-height:1.45}.rm-badge{border:1px solid #0000;border-radius:999px;padding:.15rem .55rem;font-size:.72rem;font-weight:700;display:inline-block}.rm-badge--high{color:#b42318;background:#fef3f2;border-color:#fecdca}.rm-badge--medium{color:#b54708;background:#fffaeb;border-color:#fedf89}.rm-badge--low{color:#067647;background:#ecfdf3;border-color:#abefc6}.st-row{cursor:pointer;transition:background .12s}.st-row:hover{background:#eee9ff}.st-notes-cell{white-space:nowrap;text-overflow:ellipsis;color:#8d867c;max-width:320px;overflow:hidden}.st-badge{white-space:nowrap;border:1px solid #0000;border-radius:999px;padding:.15rem .55rem;font-size:.72rem;font-weight:700;display:inline-block}.st-badge--connecte{color:#0e7490;background:#ecfeff;border-color:#a5f3fc}.st-badge--premium{color:#b54708;background:#fffaeb;border-color:#fedf89}.st-badge--personnalise{color:#b42318;background:#fef3f2;border-color:#fecdca}.st-context p{color:#3a352f;white-space:pre-wrap;margin:.35rem 0 0;font-size:.88rem;line-height:1.5}.st-extras-grid{grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:.35rem 1rem;margin-top:.5rem;display:grid}.st-extra{color:#3a352f;cursor:pointer;-webkit-user-select:none;user-select:none;align-items:center;gap:.5rem;font-size:.85rem;display:flex}.st-extra input{accent-color:#7c6fcd;cursor:pointer}.st-apply-btn{color:#fff;cursor:pointer;background:#7c6fcd;border:none;border-radius:.5rem;padding:.55rem 1.2rem;font-family:inherit;font-size:.88rem;font-weight:600;transition:background .15s,opacity .15s}.st-apply-btn:hover:not(:disabled){background:#5246a0}.st-apply-btn:disabled{opacity:.45;cursor:not-allowed}.st-role-select{cursor:pointer;flex:none;min-width:150px}.st-notice{color:#067647;background:#ecfdf3;border:1px solid #abefc6;border-radius:.5rem;padding:.75rem 1rem;font-size:.875rem}.st-link-btn{color:#7c6fcd;cursor:pointer;text-underline-offset:2px;background:0 0;border:none;padding:0;font-family:inherit;font-size:.78rem;font-weight:600;text-decoration:underline}.st-link-btn:hover:not(:disabled){color:#5246a0}.st-link-btn:disabled{opacity:.45;cursor:not-allowed}.st-danger{background:#fef3f2;border:1px solid #fecdca;border-radius:.75rem;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1.5rem;margin-top:1rem;padding:1rem 1.25rem;display:flex}.st-danger-title{color:#b42318;margin:0 0 .2rem;font-size:.9rem;font-weight:700}.st-danger-desc{color:#912018;max-width:46rem;margin:0;font-size:.8rem}.st-danger-btn{color:#fff;cursor:pointer;white-space:nowrap;background:#d92d20;border:none;border-radius:.5rem;padding:.55rem 1.2rem;font-family:inherit;font-size:.85rem;font-weight:600;transition:background .15s,opacity .15s}.st-danger-btn:hover:not(:disabled){background:#b42318}.st-danger-btn:disabled{opacity:.45;cursor:not-allowed}.counter{color:var(--accent);background:var(--accent-bg);border:2px solid #0000;border-radius:5px;margin-bottom:24px;padding:5px 10px;font-size:16px;transition:border-color .3s}.counter:hover{border-color:var(--accent-border)}.counter:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.hero{position:relative}.hero .base,.hero .framework,.hero .vite{margin:0 auto;inset-inline:0}.hero .base{z-index:0;width:170px;position:relative}.hero .framework,.hero .vite{position:absolute}.hero .framework{z-index:1;height:28px;top:34px;transform:perspective(2000px)rotate(300deg)rotateX(44deg)rotateY(39deg)scale(1.4)}.hero .vite{z-index:0;width:auto;height:26px;top:107px;transform:perspective(2000px)rotate(300deg)rotateX(40deg)rotateY(39deg)scale(.8)}#center{flex-direction:column;flex-grow:1;place-content:center;place-items:center;gap:25px;display:flex}@media (width<=1024px){#center{gap:18px;padding:32px 20px 24px}}#next-steps{border-top:1px solid var(--border);text-align:left;display:flex}#next-steps>div{flex:1 1 0;padding:32px}@media (width<=1024px){#next-steps>div{padding:24px 20px}}#next-steps .icon{width:22px;height:22px;margin-bottom:16px}@media (width<=1024px){#next-steps{text-align:center;flex-direction:column}}#docs{border-right:1px solid var(--border)}@media (width<=1024px){#docs{border-right:none;border-bottom:1px solid var(--border)}}#next-steps ul{gap:8px;margin:32px 0 0;padding:0;list-style:none;display:flex}#next-steps ul .logo{height:18px}#next-steps ul a{color:var(--text-h);background:var(--social-bg);border-radius:6px;align-items:center;gap:8px;padding:6px 12px;font-size:16px;text-decoration:none;transition:box-shadow .3s;display:flex}#next-steps ul a:hover{box-shadow:var(--shadow)}#next-steps ul a .button-icon{width:18px;height:18px}@media (width<=1024px){#next-steps ul{flex-wrap:wrap;justify-content:center;margin-top:20px}#next-steps ul li{flex:calc(50% - 8px)}#next-steps ul a{box-sizing:border-box;justify-content:center;width:100%}}#spacer{border-top:1px solid var(--border);height:88px}@media (width<=1024px){#spacer{height:48px}}.ticks{width:100%;position:relative}.ticks:before,.ticks:after{content:"";border:5px solid #0000;position:absolute;top:-4.5px}.ticks:before{border-left-color:var(--border);left:0}.ticks:after{border-right-color:var(--border);right:0}
