
:root{
--font-sans:"Geist",ui-sans-serif,system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;
--font-mono:ui-monospace,SFMono-Regular,"SF Mono",Menlo,Consolas,"Liberation Mono",monospace;
--text-xs:.75rem;--text-sm:.875rem;--text-base:1rem;--text-lg:1.125rem;--text-xl:1.25rem;--text-2xl:1.5rem;--text-3xl:1.875rem;--text-4xl:2.25rem;
--leading-xs:1rem;--leading-sm:1.25rem;--leading-base:1.5rem;--leading-lg:1.75rem;--leading-xl:1.75rem;--leading-2xl:2rem;--leading-3xl:2.25rem;--leading-4xl:2.5rem;
--font-normal:400;--font-medium:500;--font-semibold:600;--font-bold:700;--tracking-tight:-.025em;
--space-0-5:.125rem;--space-1:.25rem;--space-1-5:.375rem;--space-2:.5rem;--space-3:.75rem;--space-4:1rem;--space-5:1.25rem;--space-6:1.5rem;--space-8:2rem;--space-10:2.5rem;--space-12:3rem;--space-16:4rem;
--radius:.625rem;--radius-sm:calc(var(--radius) - 4px);--radius-md:calc(var(--radius) - 2px);--radius-lg:var(--radius);--radius-xl:calc(var(--radius) + 4px);--radius-full:9999px;
--shadow-xs:0 1px 2px 0 rgb(0 0 0/.05);
--shadow-sm:0 1px 3px 0 rgb(0 0 0/.1),0 1px 2px -1px rgb(0 0 0/.1);
--shadow-md:0 4px 6px -1px rgb(0 0 0/.1),0 2px 4px -2px rgb(0 0 0/.1);
--shadow-lg:0 10px 15px -3px rgb(0 0 0/.1),0 4px 6px -4px rgb(0 0 0/.1);
--touch:44px;--banner-h:0px;--header-h:3.5rem;--sidebar-w:16rem;--sidebar-w-collapsed:3.5rem;--bottom-nav-h:0px;
--background:#ffffff;--foreground:#09090b;--card:#ffffff;--card-foreground:#09090b;--popover:#ffffff;--popover-foreground:#09090b;--primary:#0f766e;--primary-foreground:#fafafa;--secondary:#f4f4f5;--secondary-foreground:#18181b;--muted:#f4f4f5;--muted-foreground:#6f6f78;--accent:#f4f4f5;--accent-foreground:#18181b;--destructive:#dc2626;--destructive-foreground:#fafafa;--success:#15803d;--success-foreground:#fafafa;--border:#e4e4e7;--input:#e4e4e7;--control:#71717a;--ring:#0f766e;--link:#0f766e;--sidebar:#fafafa;--sidebar-foreground:#09090b;--sidebar-accent:#f4f4f5;--sidebar-accent-foreground:#18181b;--sidebar-border:#e4e4e7;--icon-check:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22%23fafafa%22%20stroke-width%3D%223%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Cpath%20d%3D%22M20%206%209%2017l-5-5%22%2F%3E%3C%2Fsvg%3E");--icon-chevron:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22%236f6f78%22%20stroke-width%3D%222%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Cpath%20d%3D%22m6%209%206%206%206-6%22%2F%3E%3C%2Fsvg%3E");color-scheme:light
}
@media (prefers-color-scheme:dark){:root{--background:#09090b;--foreground:#fafafa;--card:#18181b;--card-foreground:#fafafa;--popover:#18181b;--popover-foreground:#fafafa;--primary:#0f766e;--primary-foreground:#fafafa;--secondary:#27272a;--secondary-foreground:#fafafa;--muted:#27272a;--muted-foreground:#a1a1aa;--accent:#27272a;--accent-foreground:#fafafa;--destructive:#f87171;--destructive-foreground:#09090b;--success:#4ade80;--success-foreground:#09090b;--border:#27272a;--input:#3f3f46;--control:#71717a;--ring:#1d7e77;--link:#3a8f88;--sidebar:#18181b;--sidebar-foreground:#fafafa;--sidebar-accent:#27272a;--sidebar-accent-foreground:#fafafa;--sidebar-border:#27272a;--icon-check:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22%23fafafa%22%20stroke-width%3D%223%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Cpath%20d%3D%22M20%206%209%2017l-5-5%22%2F%3E%3C%2Fsvg%3E");--icon-chevron:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22%23a1a1aa%22%20stroke-width%3D%222%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Cpath%20d%3D%22m6%209%206%206%206-6%22%2F%3E%3C%2Fsvg%3E");color-scheme:dark;--shadow-xs:0 1px 2px 0 rgb(0 0 0/.3)}}
.theme-light{--background:#ffffff;--foreground:#09090b;--card:#ffffff;--card-foreground:#09090b;--popover:#ffffff;--popover-foreground:#09090b;--primary:#0f766e;--primary-foreground:#fafafa;--secondary:#f4f4f5;--secondary-foreground:#18181b;--muted:#f4f4f5;--muted-foreground:#6f6f78;--accent:#f4f4f5;--accent-foreground:#18181b;--destructive:#dc2626;--destructive-foreground:#fafafa;--success:#15803d;--success-foreground:#fafafa;--border:#e4e4e7;--input:#e4e4e7;--control:#71717a;--ring:#0f766e;--link:#0f766e;--sidebar:#fafafa;--sidebar-foreground:#09090b;--sidebar-accent:#f4f4f5;--sidebar-accent-foreground:#18181b;--sidebar-border:#e4e4e7;--icon-check:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22%23fafafa%22%20stroke-width%3D%223%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Cpath%20d%3D%22M20%206%209%2017l-5-5%22%2F%3E%3C%2Fsvg%3E");--icon-chevron:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22%236f6f78%22%20stroke-width%3D%222%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Cpath%20d%3D%22m6%209%206%206%206-6%22%2F%3E%3C%2Fsvg%3E");color-scheme:light}
.theme-dark{--background:#09090b;--foreground:#fafafa;--card:#18181b;--card-foreground:#fafafa;--popover:#18181b;--popover-foreground:#fafafa;--primary:#0f766e;--primary-foreground:#fafafa;--secondary:#27272a;--secondary-foreground:#fafafa;--muted:#27272a;--muted-foreground:#a1a1aa;--accent:#27272a;--accent-foreground:#fafafa;--destructive:#f87171;--destructive-foreground:#09090b;--success:#4ade80;--success-foreground:#09090b;--border:#27272a;--input:#3f3f46;--control:#71717a;--ring:#1d7e77;--link:#3a8f88;--sidebar:#18181b;--sidebar-foreground:#fafafa;--sidebar-accent:#27272a;--sidebar-accent-foreground:#fafafa;--sidebar-border:#27272a;--icon-check:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22%23fafafa%22%20stroke-width%3D%223%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Cpath%20d%3D%22M20%206%209%2017l-5-5%22%2F%3E%3C%2Fsvg%3E");--icon-chevron:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22%23a1a1aa%22%20stroke-width%3D%222%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Cpath%20d%3D%22m6%209%206%206%206-6%22%2F%3E%3C%2Fsvg%3E");color-scheme:dark}
.theme-light,.theme-dark{background:var(--background);color:var(--foreground)}

@font-face{font-family:"Geist";src:url("/assets/fonts/geist-a369fcf5628e.woff2") format("woff2");font-weight:100 900;font-style:normal;font-display:swap}
*,*::before,*::after{box-sizing:border-box}
[hidden]{display:none!important}
html{-webkit-text-size-adjust:100%;text-size-adjust:100%;font-family:var(--font-sans);line-height:1.5;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-webkit-tap-highlight-color:transparent}
body{margin:0;min-height:100vh;min-height:100dvh;background:var(--background);color:var(--foreground);font-size:var(--text-base);font-feature-settings:"rlig" 1,"calt" 1}
h1,h2,h3,h4,p,ul,ol,figure,blockquote,dl,dd{margin:0}
h1,h2,h3,h4{font-weight:var(--font-semibold);letter-spacing:var(--tracking-tight);text-wrap:balance}
h1{font-size:var(--text-2xl);line-height:var(--leading-2xl)}
h2{font-size:var(--text-xl);line-height:var(--leading-xl)}
h3{font-size:var(--text-lg);line-height:var(--leading-lg)}
a{color:var(--link);text-underline-offset:4px}
a:hover{text-decoration-thickness:2px}
img,svg{display:block;max-width:100%}
svg{flex:none}
button,input,select,textarea{font:inherit;color:inherit;letter-spacing:inherit}
code,kbd,pre{font-family:var(--font-mono);font-size:.875em}
code{padding:.125rem .3rem;border-radius:var(--radius-sm);background:var(--muted)}
hr{height:1px;margin:var(--space-4) 0;border:0;background:var(--border)}
::selection{background:color-mix(in srgb,var(--primary) 25%,transparent)}
:focus-visible{outline:2px solid var(--ring);outline-offset:2px}
.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}
.muted{color:var(--muted-foreground)}
.lead{font-size:var(--text-lg);line-height:var(--leading-lg);color:var(--muted-foreground)}
.small{font-size:var(--text-sm);line-height:var(--leading-sm)}
.xsmall{font-size:var(--text-xs);line-height:var(--leading-xs)}
.mono{font-family:var(--font-mono)}
.tabular{font-variant-numeric:tabular-nums}
.stack{display:grid;gap:var(--space-4);align-content:start}
.stack-sm{display:grid;gap:var(--space-2);align-content:start}
.stack-lg{display:grid;gap:var(--space-6);align-content:start}
.row{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-2)}
.row-lg{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-4)}
.between{justify-content:space-between}
.grid{display:grid;gap:var(--space-4)}
@media (min-width:640px){.grid-2{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (min-width:1024px){.grid-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-4{grid-template-columns:repeat(4,minmax(0,1fr))}}
@media (min-width:640px) and (max-width:1023px){.grid-3,.grid-4{grid-template-columns:repeat(2,minmax(0,1fr))}}

/* Button */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);flex:none;height:2.25rem;padding:0 var(--space-4);border:1px solid transparent;border-radius:var(--radius-md);background:var(--primary);color:var(--primary-foreground);box-shadow:var(--shadow-xs);font-size:var(--text-sm);font-weight:var(--font-medium);line-height:var(--leading-sm);white-space:nowrap;text-decoration:none;cursor:pointer;user-select:none;transition:background-color .15s,color .15s,border-color .15s,box-shadow .15s}
.btn:hover{background:color-mix(in srgb,var(--primary) 90%,var(--background));text-decoration:none}
.btn:disabled,.btn[aria-disabled=true]{opacity:.5;pointer-events:none;cursor:not-allowed}
.btn svg{width:1rem;height:1rem;pointer-events:none}
.btn-secondary{background:var(--secondary);color:var(--secondary-foreground)}
.btn-secondary:hover{background:color-mix(in srgb,var(--secondary) 80%,var(--background))}
.btn-outline{background:var(--background);color:var(--foreground);border-color:var(--border)}
.btn-outline:hover,.btn-ghost:hover{background:var(--accent);color:var(--accent-foreground)}
.btn-ghost{background:transparent;color:var(--foreground);box-shadow:none}
.btn-destructive{background:var(--destructive);color:var(--destructive-foreground)}
.btn-destructive:hover{background:color-mix(in srgb,var(--destructive) 90%,var(--background))}
.btn-link{height:auto;padding:0;background:transparent;color:var(--link);box-shadow:none;text-decoration:underline;text-underline-offset:4px}
.btn-link:hover{background:transparent;text-decoration-thickness:2px}
.btn-sm{height:2rem;padding:0 var(--space-3);gap:var(--space-1-5)}
.btn-lg{height:2.5rem;padding:0 var(--space-6)}
.btn-icon{width:2.25rem;padding:0}
.btn-icon.btn-sm{width:2rem}
.btn-block{width:100%}
@media (pointer:coarse){.btn:not(.btn-link){min-height:var(--touch)}.btn-icon{min-width:var(--touch)}.btn-link{min-height:var(--touch)}}

/* Label, Input, Textarea, Select */
.label{display:flex;align-items:center;gap:var(--space-2);font-size:var(--text-sm);font-weight:var(--font-medium);line-height:var(--leading-sm);user-select:none}
.input,.textarea,.select{display:block;width:100%;min-width:0;height:2.25rem;padding:var(--space-1) var(--space-3);border:1px solid var(--input);border-radius:var(--radius-md);background:transparent;color:var(--foreground);box-shadow:var(--shadow-xs);font-size:var(--text-base);line-height:var(--leading-base);transition:border-color .15s,box-shadow .15s}
.input::placeholder,.textarea::placeholder{color:var(--muted-foreground);opacity:1}
.input:focus-visible,.textarea:focus-visible,.select:focus-visible{border-color:var(--ring);outline:2px solid var(--ring);outline-offset:1px}
.input:disabled,.textarea:disabled,.select:disabled{opacity:.5;cursor:not-allowed}
.input[aria-invalid=true],.textarea[aria-invalid=true],.select[aria-invalid=true]{border-color:var(--destructive)}
.input[aria-invalid=true]:focus-visible,.textarea[aria-invalid=true]:focus-visible{outline-color:var(--destructive)}
.textarea{height:auto;min-height:5rem;padding:var(--space-2) var(--space-3);resize:vertical}
.select{appearance:none;-webkit-appearance:none;padding-right:var(--space-8);background-image:var(--icon-chevron);background-repeat:no-repeat;background-position:right var(--space-2) center;background-size:1rem;cursor:pointer}
.select option{background:var(--popover);color:var(--popover-foreground)}
@media (min-width:768px){.input,.textarea,.select{font-size:var(--text-sm);line-height:var(--leading-sm)}}
@media (pointer:coarse){.input,.select{height:var(--touch)}}
.field{display:grid;gap:var(--space-2)}
.field-hint{font-size:var(--text-sm);line-height:var(--leading-sm);color:var(--muted-foreground)}
.field-error{font-size:var(--text-sm);line-height:var(--leading-sm);color:var(--destructive)}
.form{display:grid;gap:var(--space-5)}
.form .btn[type=submit]{justify-self:start}
.form-actions{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-3)}

/* Checkbox et Switch : cases natives (accessibles sans script), redessinées */
input[type=checkbox]{appearance:none;-webkit-appearance:none;flex:none;width:1rem;height:1rem;margin:0;border:1px solid var(--control);border-radius:4px;background:var(--background) no-repeat center/.75rem;box-shadow:var(--shadow-xs);cursor:pointer;vertical-align:middle;transition:background-color .15s,border-color .15s}
input[type=checkbox]:checked{border-color:var(--primary);background-color:var(--primary);background-image:var(--icon-check)}
input[type=checkbox]:disabled{opacity:.5;cursor:not-allowed}
input[type=checkbox][aria-invalid=true]{border-color:var(--destructive)}
input[type=checkbox][role=switch]{width:2.25rem;height:1.25rem;border:1px solid transparent;border-radius:var(--radius-full);background-color:var(--control);background-image:radial-gradient(circle closest-side,var(--background) 88%,transparent 100%);background-size:1rem 1rem;background-position:left 1px center;transition:background-color .15s,background-position .15s}
input[type=checkbox][role=switch]:checked{background-color:var(--primary);background-image:radial-gradient(circle closest-side,var(--primary-foreground) 88%,transparent 100%);background-position:right 1px center}
.check{display:flex;align-items:flex-start;gap:var(--space-3)}
.check>input{margin-top:.125rem}
.check>input[role=switch]{margin-top:0}
.check-label,.check>label{font-size:var(--text-sm);line-height:var(--leading-sm);cursor:pointer}
.check-text{display:grid;gap:var(--space-1)}
@media (pointer:coarse){input[type=checkbox]:not([role=switch]){width:1.25rem;height:1.25rem}.check{min-height:var(--touch);align-items:center}.check>input{margin-top:0}.check-label,.check>label{padding:var(--space-3) 0}}

/* Card */
.card{display:flex;flex-direction:column;gap:var(--space-6);padding:var(--space-6) 0;border:1px solid var(--border);border-radius:var(--radius-xl);background:var(--card);color:var(--card-foreground);box-shadow:var(--shadow-sm);min-width:0}
.card-header{display:grid;grid-template-columns:1fr;gap:var(--space-1-5);padding:0 var(--space-6)}
.card-header:has(>.card-action){grid-template-columns:1fr auto}
.card-header>:not(.card-action){grid-column:1}
.card-action{grid-column:2;grid-row:1/span 2;align-self:start;justify-self:end}
.card-title{font-size:var(--text-base);font-weight:var(--font-semibold);line-height:var(--leading-base);letter-spacing:normal}
h1.card-title{font-size:var(--text-2xl);line-height:var(--leading-2xl);letter-spacing:var(--tracking-tight)}
.card-description{font-size:var(--text-sm);line-height:var(--leading-sm);color:var(--muted-foreground)}
.card-content{display:grid;gap:var(--space-4);padding:0 var(--space-6);min-width:0}
.card-footer{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-2);padding:0 var(--space-6)}
.card-footer-bordered{padding-top:var(--space-6);border-top:1px solid var(--border)}
.card-destructive{border-color:color-mix(in srgb,var(--destructive) 45%,var(--border))}
@media (max-width:639px){.card{gap:var(--space-5);padding:var(--space-5) 0}.card-header,.card-content,.card-footer{padding:0 var(--space-5)}.card-footer-bordered{padding-top:var(--space-5)}}

/* Badge */
.badge{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-1);width:fit-content;flex:none;padding:var(--space-0-5) var(--space-2);border:1px solid transparent;border-radius:var(--radius-md);background:var(--primary);color:var(--primary-foreground);font-size:var(--text-xs);font-weight:var(--font-medium);line-height:var(--leading-xs);white-space:nowrap}
.badge svg{width:.75rem;height:.75rem}
.badge-secondary{background:var(--secondary);color:var(--secondary-foreground)}
.badge-outline{background:transparent;color:var(--foreground);border-color:var(--border)}
.badge-destructive{background:var(--destructive);color:var(--destructive-foreground)}
.badge-success{background:var(--success);color:var(--success-foreground)}

/* Alert */
.alert{display:grid;grid-template-columns:auto 1fr;column-gap:var(--space-3);row-gap:var(--space-0-5);align-items:start;width:100%;padding:var(--space-3) var(--space-4);border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--card);color:var(--card-foreground);font-size:var(--text-sm);line-height:var(--leading-sm)}
.alert:not(:has(>svg)){grid-template-columns:1fr}
.alert>svg{width:1rem;height:1rem;margin-top:.125rem;grid-row:span 2}
.alert-title{font-weight:var(--font-medium);letter-spacing:normal}
.alert-description{color:var(--muted-foreground)}
.alert-destructive,.alert-destructive .alert-description{color:var(--destructive)}
.alert-destructive{border-color:color-mix(in srgb,var(--destructive) 45%,var(--border))}
.alert-success,.alert-success .alert-description{color:var(--success)}
.alert-success{border-color:color-mix(in srgb,var(--success) 45%,var(--border))}

/* Table */
.table-container{position:relative;width:100%;overflow-x:auto}
.table{width:100%;border-collapse:collapse;caption-side:bottom;font-size:var(--text-sm);line-height:var(--leading-sm)}
.table thead tr,.table tbody tr{border-bottom:1px solid var(--border)}
.table tbody tr:last-child{border-bottom:0}
.table tbody tr{transition:background-color .15s}
.table tbody tr:hover{background:color-mix(in srgb,var(--muted) 50%,transparent)}
.table th{height:2.5rem;padding:0 var(--space-2);text-align:left;vertical-align:middle;font-weight:var(--font-medium);white-space:nowrap}
.table td{padding:var(--space-2);vertical-align:middle;white-space:nowrap}
.table tfoot{border-top:1px solid var(--border);background:color-mix(in srgb,var(--muted) 50%,transparent);font-weight:var(--font-medium)}
.table caption{margin-top:var(--space-4);color:var(--muted-foreground)}
.table .num{text-align:right;font-variant-numeric:tabular-nums}

/* Tabs */
.tabs{display:flex;flex-direction:column;gap:var(--space-2);min-width:0}
.tabs-list{display:inline-flex;align-items:center;width:fit-content;max-width:100%;overflow-x:auto;padding:3px;border-radius:var(--radius-lg);background:var(--muted);color:var(--muted-foreground)}
.tabs-trigger{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-1-5);flex:1 0 auto;height:calc(2.25rem - 6px);padding:var(--space-1) var(--space-3);border:1px solid transparent;border-radius:var(--radius-md);background:transparent;color:var(--muted-foreground);font-size:var(--text-sm);font-weight:var(--font-medium);white-space:nowrap;cursor:pointer;transition:color .15s,background-color .15s,box-shadow .15s}
.tabs-trigger:hover{color:var(--foreground)}
.tabs-trigger[aria-selected=true]{background:var(--background);color:var(--foreground);box-shadow:var(--shadow-sm)}
.tabs-trigger:focus-visible{outline-offset:0}
.tabs-content{min-width:0}
@media (pointer:coarse){.tabs-trigger{height:calc(var(--touch) - 6px)}}

/* Separator */
.separator{flex:none;width:100%;height:1px;margin:0;border:0;background:var(--border)}
.separator[aria-orientation=vertical],.separator-vertical{width:1px;height:auto;align-self:stretch}

/* Avatar */
.avatar{position:relative;display:inline-flex;align-items:center;justify-content:center;flex:none;width:2rem;height:2rem;overflow:hidden;border-radius:var(--radius-full);background:var(--muted);color:var(--foreground);font-size:var(--text-xs);font-weight:var(--font-medium);line-height:1;text-transform:uppercase;user-select:none}
.avatar-sm{width:1.5rem;height:1.5rem;font-size:.625rem}
.avatar-lg{width:2.5rem;height:2.5rem;font-size:var(--text-sm)}
.avatar img{width:100%;height:100%;object-fit:cover}

/* Skeleton */
.skeleton{display:block;border-radius:var(--radius-md);background:var(--accent);animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite}
.skeleton-line{height:1rem}
.skeleton-circle{border-radius:var(--radius-full)}
@keyframes pulse{50%{opacity:.5}}

/* Dialog (élément <dialog> natif) */
.dialog{width:calc(100% - 2rem);max-width:32rem;max-height:calc(100dvh - 2rem);padding:var(--space-6);border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--background);color:var(--foreground);box-shadow:var(--shadow-lg);overflow:auto}
.dialog[open]{display:grid;gap:var(--space-4);animation:zoom-in .2s ease-out}
.dialog::backdrop{background:rgb(0 0 0/.5);animation:fade-in .2s ease-out}
.dialog-header{display:grid;gap:var(--space-2);padding-right:var(--space-6)}
.dialog-title{font-size:var(--text-lg);line-height:var(--leading-lg);font-weight:var(--font-semibold)}
.dialog-description{font-size:var(--text-sm);line-height:var(--leading-sm);color:var(--muted-foreground)}
.dialog-footer{display:flex;flex-direction:column-reverse;gap:var(--space-2)}
.dialog-close{position:absolute;top:var(--space-3);right:var(--space-3)}
@media (min-width:640px){.dialog-footer{flex-direction:row;justify-content:flex-end}}
html:has(.dialog[open]){overflow:hidden}

/* Dropdown menu (élément <details> natif, amélioré au clavier par /assets/ui.js) */
.dropdown{position:relative;display:inline-block}
.dropdown>summary{list-style:none}
.dropdown>summary::-webkit-details-marker{display:none}
.dropdown-content{position:absolute;z-index:50;top:calc(100% + var(--space-1));left:0;min-width:12rem;max-width:calc(100vw - 2rem);padding:var(--space-1);border:1px solid var(--border);border-radius:var(--radius-md);background:var(--popover);color:var(--popover-foreground);box-shadow:var(--shadow-md);animation:zoom-in .1s ease-out}
.dropdown-end>.dropdown-content{left:auto;right:0}
.dropdown-top>.dropdown-content{top:auto;bottom:calc(100% + var(--space-1))}
.dropdown-label{padding:var(--space-1-5) var(--space-2);font-size:var(--text-sm);font-weight:var(--font-medium);overflow-wrap:anywhere}
.dropdown-item{display:flex;align-items:center;gap:var(--space-2);width:100%;min-height:2rem;padding:var(--space-1-5) var(--space-2);border:0;border-radius:var(--radius-sm);background:transparent;color:inherit;font-size:var(--text-sm);line-height:var(--leading-sm);text-align:left;text-decoration:none;cursor:pointer;user-select:none}
.dropdown-item svg{width:1rem;height:1rem;color:var(--muted-foreground)}
.dropdown-item:hover,.dropdown-item:focus-visible{background:var(--accent);color:var(--accent-foreground)}
.dropdown-item:focus-visible{outline-offset:-2px}
.dropdown-item-destructive,.dropdown-item-destructive svg{color:var(--destructive)}
.dropdown-separator{height:1px;margin:var(--space-1) calc(-1*var(--space-1));background:var(--border)}
@media (pointer:coarse){.dropdown-item{min-height:var(--touch)}}

/* Toast (région annoncée, alimentée par /assets/ui.js) */
.toaster{position:fixed;z-index:100;right:var(--space-4);bottom:calc(var(--space-4) + var(--bottom-nav-h) + env(safe-area-inset-bottom));left:var(--space-4);display:flex;flex-direction:column;gap:var(--space-2);margin:0;padding:0;list-style:none;pointer-events:none}
@media (min-width:640px){.toaster{left:auto;width:24rem}}
.toast{display:grid;grid-template-columns:auto 1fr auto;align-items:start;gap:var(--space-3);padding:var(--space-4);border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--popover);color:var(--popover-foreground);box-shadow:var(--shadow-lg);font-size:var(--text-sm);line-height:var(--leading-sm);pointer-events:auto;animation:slide-up .2s ease-out}
.toast[data-state=closed]{animation:fade-out .15s ease-in forwards}
.toast>svg{width:1rem;height:1rem;margin-top:.125rem}
.toast-body{display:grid;gap:var(--space-0-5);min-width:0}
.toast-title{font-weight:var(--font-medium)}
.toast-description{color:var(--muted-foreground)}
.toast-close{margin:calc(-1*var(--space-1-5)) calc(-1*var(--space-1-5)) 0 0}
.toast-success>svg{color:var(--success)}
.toast-destructive>svg,.toast-destructive .toast-title{color:var(--destructive)}

/* Empty state */
.empty{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--space-4);padding:var(--space-10) var(--space-6);border:1px dashed var(--border);border-radius:var(--radius-lg);text-align:center}
.empty-icon{display:flex;align-items:center;justify-content:center;width:2.5rem;height:2.5rem;border-radius:var(--radius-lg);background:var(--muted);color:var(--foreground)}
.empty-icon svg{width:1.25rem;height:1.25rem}
.empty-title{font-size:var(--text-lg);line-height:var(--leading-lg);font-weight:var(--font-medium)}
.empty-description{max-width:24rem;font-size:var(--text-sm);line-height:var(--leading-sm);color:var(--muted-foreground)}

/* Stat card (tableaux de bord) */
.stat-value{font-size:var(--text-2xl);line-height:var(--leading-2xl);font-weight:var(--font-semibold);letter-spacing:var(--tracking-tight);font-variant-numeric:tabular-nums}
.stat-trend{display:inline-flex;align-items:center;gap:var(--space-1);font-size:var(--text-sm);line-height:var(--leading-sm);font-weight:var(--font-medium)}
.stat-value{overflow-wrap:anywhere}
.stat-trend svg{width:1rem;height:1rem}
.trend-up{color:var(--success)}
.trend-down{color:var(--destructive)}
.trend-neutral{color:var(--muted-foreground)}

/* Listes d'éléments (sessions, passkeys) */
.item-list{display:grid;margin:0;padding:0;list-style:none;border:1px solid var(--border);border-radius:var(--radius-lg)}
.item-list>li{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:var(--space-3) var(--space-4);padding:var(--space-3) var(--space-4)}
.item-list>li+li{border-top:1px solid var(--border)}
.item-list form{margin:0}
.item-detail{display:grid;gap:var(--space-0-5);flex:1 1 14rem;min-width:0;font-size:var(--text-sm);line-height:var(--leading-sm);overflow-wrap:anywhere}

@keyframes fade-in{from{opacity:0}}
@keyframes fade-out{to{opacity:0}}
@keyframes zoom-in{from{opacity:0;transform:scale(.96)}}
@keyframes slide-up{from{opacity:0;transform:translateY(.5rem)}}

/* Marquage DEV : bandeau fixe toujours visible */
.bandeau-dev{position:fixed;top:0;left:0;right:0;z-index:1000;display:flex;align-items:center;justify-content:center;height:var(--banner-h);padding-top:env(safe-area-inset-top);background:#1d4ed8;color:#fff;font-size:13px;font-weight:var(--font-bold);letter-spacing:.12em}
body.env-dev{--banner-h:calc(28px + env(safe-area-inset-top));padding-top:var(--banner-h)}
.skip-link{position:absolute;left:-9999px;z-index:1001}
.skip-link:focus{left:var(--space-2);top:calc(var(--banner-h) + var(--space-2));padding:var(--space-2) var(--space-3);border-radius:var(--radius-md);background:var(--background);color:var(--foreground);box-shadow:var(--shadow-md)}
.brand{display:inline-flex;align-items:center;gap:var(--space-2);min-width:0;color:var(--foreground);font-weight:var(--font-semibold);text-decoration:none}
.brand:hover{text-decoration:none}
.brand-mark{display:flex;align-items:center;justify-content:center;flex:none;width:2rem;height:2rem;border-radius:var(--radius-md);background:var(--primary);color:var(--primary-foreground)}
.brand-mark svg{width:1rem;height:1rem}
.brand-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.page-header{display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;gap:var(--space-4);margin-bottom:var(--space-6)}
.page-header>div{display:grid;gap:var(--space-1)}
.page-description{color:var(--muted-foreground)}
@media (min-width:768px){h1,.page-title{font-size:var(--text-3xl);line-height:var(--leading-3xl)}}

/* Pages publiques : en-tête, contenu, pied de page */
.site{display:flex;flex-direction:column;min-height:calc(100dvh - var(--banner-h))}
.site-header{position:sticky;top:var(--banner-h);z-index:40;padding-top:var(--header-inset,env(safe-area-inset-top));border-bottom:1px solid var(--border);background:color-mix(in srgb,var(--background) 92%,transparent);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}
body.env-dev .site-header,body.env-dev .app-topbar{--header-inset:0px}
.site-header-inner,.site-footer-inner,.site-main{width:100%;max-width:72rem;margin:0 auto;padding-left:max(var(--space-4),env(safe-area-inset-left));padding-right:max(var(--space-4),env(safe-area-inset-right))}
.site-header-inner{display:flex;align-items:center;justify-content:space-between;gap:var(--space-4);height:var(--header-h)}
.site-main{flex:1;padding-top:var(--space-8);padding-bottom:var(--space-12)}
.site-main-narrow{max-width:26rem}
.site-main-prose{max-width:48rem}
.site-main-center{display:flex;flex-direction:column;justify-content:center}
.site-footer{border-top:1px solid var(--border)}
.site-footer-inner{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:var(--space-2) var(--space-6);padding-top:var(--space-6);padding-bottom:calc(var(--space-6) + env(safe-area-inset-bottom));color:var(--muted-foreground);font-size:var(--text-sm)}
.footer-links{display:flex;flex-wrap:wrap;gap:0 var(--space-5);margin:0;padding:0;list-style:none}
.footer-links a{display:inline-flex;align-items:center;min-height:2rem;color:var(--muted-foreground)}
.footer-links a:hover{color:var(--foreground)}
@media (pointer:coarse){.footer-links a{min-height:var(--touch)}}
@media (min-width:768px){.site-header-inner,.site-footer-inner,.site-main{padding-left:max(var(--space-6),env(safe-area-inset-left));padding-right:max(var(--space-6),env(safe-area-inset-right))}.site-main{padding-top:var(--space-12)}}
.hero{display:grid;gap:var(--space-6);justify-items:start;padding:var(--space-8) 0}
.hero h1{font-size:var(--text-3xl);line-height:var(--leading-3xl);font-weight:var(--font-bold)}
@media (min-width:768px){.hero{padding:var(--space-16) 0 var(--space-12)}.hero h1{font-size:3rem;line-height:1.1}}
.feature-icon{display:flex;align-items:center;justify-content:center;width:2.25rem;height:2.25rem;border-radius:var(--radius-md);background:var(--muted);color:var(--foreground)}
.feature-icon svg{width:1.125rem;height:1.125rem}
.auth-brand{display:flex;justify-content:center;margin-bottom:var(--space-6)}
.prose{display:grid;gap:var(--space-4);line-height:1.7}
.prose h1{margin-bottom:var(--space-2)}
.prose h2{margin-top:var(--space-6);font-size:var(--text-xl)}
.prose ul{display:grid;gap:var(--space-2);padding-left:var(--space-5)}

/* Application connectée : barre latérale (grand écran), barre du haut et navigation basse (mobile) */
.app{display:flex;min-height:calc(100dvh - var(--banner-h))}
.sidebar{display:none}
.app-main{display:flex;flex-direction:column;flex:1;min-width:0}
.app-topbar{position:sticky;top:var(--banner-h);z-index:40;display:flex;align-items:center;gap:var(--space-2);height:calc(var(--header-h) + var(--header-inset,env(safe-area-inset-top)));padding:var(--header-inset,env(safe-area-inset-top)) max(var(--space-4),env(safe-area-inset-right)) 0 max(var(--space-4),env(safe-area-inset-left));border-bottom:1px solid var(--border);background:color-mix(in srgb,var(--background) 92%,transparent);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}
.app-topbar .brand{flex:1}
.app-topbar-title{flex:1;min-width:0;overflow:hidden;font-size:var(--text-sm);font-weight:var(--font-medium);text-overflow:ellipsis;white-space:nowrap}
.app-content{flex:1;width:100%;max-width:64rem;margin:0 auto;padding:var(--space-6) max(var(--space-4),env(safe-area-inset-right)) calc(var(--bottom-nav-h) + var(--space-8) + env(safe-area-inset-bottom)) max(var(--space-4),env(safe-area-inset-left))}
.app-content-wide{max-width:none}
.app-footer{margin-top:var(--space-12);padding-top:var(--space-6);border-top:1px solid var(--border);font-size:var(--text-sm)}
.bottom-nav{position:fixed;right:0;bottom:0;left:0;z-index:40;display:grid;grid-auto-columns:1fr;grid-auto-flow:column;padding:0 env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left);border-top:1px solid var(--border);background:color-mix(in srgb,var(--background) 95%,transparent);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}
.bottom-nav a{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--space-0-5);min-height:3.5rem;padding:var(--space-1);color:var(--muted-foreground);font-size:var(--text-xs);line-height:var(--leading-xs);font-weight:var(--font-medium);text-decoration:none}
.bottom-nav-icon{display:flex;align-items:center;justify-content:center;width:3.5rem;height:1.75rem;border-radius:var(--radius-full);transition:background-color .15s}
.bottom-nav-icon svg{width:1.25rem;height:1.25rem}
.bottom-nav a[aria-current=page]{color:var(--foreground)}
.bottom-nav a[aria-current=page] .bottom-nav-icon{background:var(--accent);color:var(--accent-foreground)}
.bottom-nav a:focus-visible{outline-offset:-4px;border-radius:var(--radius-md)}
.sidebar-toggle{display:none}
@media (max-width:767px){.app{--bottom-nav-h:calc(3.5rem + 1px)}}
@media (min-width:768px){
.bottom-nav,.app-topbar .brand,.topbar-user{display:none}
.sidebar-toggle{display:inline-flex}
.app-content{padding:var(--space-8)}
.sidebar{display:block;flex:none;width:var(--sidebar-w);border-right:1px solid var(--sidebar-border);background:var(--sidebar);color:var(--sidebar-foreground);transition:width .2s ease}
.sidebar-inner{position:sticky;top:var(--banner-h);display:flex;flex-direction:column;height:calc(100dvh - var(--banner-h))}
.app[data-sidebar=collapsed]{--sidebar-w:var(--sidebar-w-collapsed)}
}
.sidebar-header{display:flex;align-items:center;height:var(--header-h);padding:0 var(--space-3)}
.sidebar-content{display:grid;align-content:start;gap:var(--space-4);flex:1;padding:var(--space-2);overflow-x:hidden;overflow-y:auto}
.sidebar-group{display:grid;gap:var(--space-1)}
.sidebar-group-label{display:flex;align-items:center;height:2rem;padding:0 var(--space-2);color:var(--muted-foreground);font-size:var(--text-xs);font-weight:var(--font-medium);white-space:nowrap}
.sidebar-menu{display:grid;gap:var(--space-1);margin:0;padding:0;list-style:none}
.sidebar-link{display:flex;align-items:center;gap:var(--space-2);width:100%;height:2.25rem;padding:0 var(--space-2);overflow:hidden;border:0;border-radius:var(--radius-md);background:transparent;color:var(--sidebar-foreground);font-size:var(--text-sm);text-align:left;text-decoration:none;white-space:nowrap;cursor:pointer}
.sidebar-link svg{width:1rem;height:1rem}
.sidebar-link:hover,.sidebar-link[aria-current=page]{background:var(--sidebar-accent);color:var(--sidebar-accent-foreground)}
.sidebar-link[aria-current=page]{font-weight:var(--font-medium)}
.sidebar-link:focus-visible{outline-offset:-2px}
.sidebar-footer{padding:var(--space-2);border-top:1px solid var(--sidebar-border)}
.sidebar-footer .dropdown{display:block}
.sidebar-user{height:3rem}
.sidebar-user .sidebar-label{display:grid;min-width:0;text-align:left}
.sidebar-user-email{overflow:hidden;text-overflow:ellipsis}
.app[data-sidebar=collapsed] .sidebar-label,.app[data-sidebar=collapsed] .sidebar-group-label{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap}
.app[data-sidebar=collapsed] .sidebar-link{justify-content:center;padding:0}
.app[data-sidebar=collapsed] .sidebar-header{justify-content:center;padding:0}
.app[data-sidebar=collapsed] .sidebar-header .brand-name{display:none}

/* Vitrine /design */
.design-themes{display:grid;gap:var(--space-6)}
@media (min-width:1280px){.design-themes{grid-template-columns:repeat(2,minmax(0,1fr))}}
.design-panel{display:grid;align-content:start;gap:var(--space-8);min-width:0;padding:var(--space-5);border:1px solid var(--border);border-radius:var(--radius-xl)}
.design-section{display:grid;gap:var(--space-4);min-width:0}
.design-section>h3{padding-bottom:var(--space-2);border-bottom:1px solid var(--border)}
.design-sub{color:var(--muted-foreground);font-size:var(--text-xs);font-weight:var(--font-medium);letter-spacing:.04em;text-transform:uppercase}
.swatches{display:grid;grid-template-columns:repeat(auto-fill,minmax(7.5rem,1fr));gap:var(--space-3)}
.swatch{display:grid;gap:var(--space-1);min-width:0;font-size:var(--text-xs);line-height:var(--leading-xs)}
.swatch-chip{height:2.5rem;border:1px solid var(--border);border-radius:var(--radius-md)}
.swatch code{padding:0;background:none;overflow-wrap:anywhere}
.type-scale{display:grid;gap:var(--space-3)}
.type-row{display:grid;grid-template-columns:7rem 1fr;align-items:baseline;gap:var(--space-3);min-width:0}
.type-row>span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.text-xs{font-size:var(--text-xs);line-height:var(--leading-xs)}.text-sm{font-size:var(--text-sm);line-height:var(--leading-sm)}.text-base{font-size:var(--text-base);line-height:var(--leading-base)}.text-lg{font-size:var(--text-lg);line-height:var(--leading-lg)}.text-xl{font-size:var(--text-xl);line-height:var(--leading-xl)}.text-2xl{font-size:var(--text-2xl);line-height:var(--leading-2xl)}.text-3xl{font-size:var(--text-3xl);line-height:var(--leading-3xl)}.text-4xl{font-size:var(--text-4xl);line-height:var(--leading-4xl)}
.spacing-scale{display:grid;gap:var(--space-2)}
.spacing-bar{height:.5rem;border-radius:var(--radius-sm);background:var(--primary)}
.spacing-1{width:var(--space-1)}.spacing-2{width:var(--space-2)}.spacing-3{width:var(--space-3)}.spacing-4{width:var(--space-4)}.spacing-6{width:var(--space-6)}.spacing-8{width:var(--space-8)}.spacing-12{width:var(--space-12)}.spacing-16{width:var(--space-16)}
.radius-demo{width:3rem;height:3rem;border:1px solid var(--border);background:var(--muted)}
.shadow-demo{display:flex;align-items:center;justify-content:center;width:5rem;height:3rem;border-radius:var(--radius-md);background:var(--card);font-size:var(--text-xs)}
.r-sm{border-radius:var(--radius-sm)}.r-md{border-radius:var(--radius-md)}.r-lg{border-radius:var(--radius-lg)}.r-xl{border-radius:var(--radius-xl)}.r-full{border-radius:var(--radius-full)}
.sh-xs{box-shadow:var(--shadow-xs)}.sh-sm{box-shadow:var(--shadow-sm)}.sh-md{box-shadow:var(--shadow-md)}.sh-lg{box-shadow:var(--shadow-lg)}
.skeleton-w-1{width:12rem}.skeleton-w-2{width:9rem}.skeleton-avatar{width:2.5rem;height:2.5rem}
.swatch-background{background:var(--background)}
.swatch-foreground{background:var(--foreground)}
.swatch-card{background:var(--card)}
.swatch-card-foreground{background:var(--card-foreground)}
.swatch-popover{background:var(--popover)}
.swatch-popover-foreground{background:var(--popover-foreground)}
.swatch-primary{background:var(--primary)}
.swatch-primary-foreground{background:var(--primary-foreground)}
.swatch-secondary{background:var(--secondary)}
.swatch-secondary-foreground{background:var(--secondary-foreground)}
.swatch-muted{background:var(--muted)}
.swatch-muted-foreground{background:var(--muted-foreground)}
.swatch-accent{background:var(--accent)}
.swatch-accent-foreground{background:var(--accent-foreground)}
.swatch-destructive{background:var(--destructive)}
.swatch-destructive-foreground{background:var(--destructive-foreground)}
.swatch-success{background:var(--success)}
.swatch-success-foreground{background:var(--success-foreground)}
.swatch-border{background:var(--border)}
.swatch-input{background:var(--input)}
.swatch-control{background:var(--control)}
.swatch-ring{background:var(--ring)}
.swatch-link{background:var(--link)}
.swatch-sidebar{background:var(--sidebar)}
.swatch-sidebar-foreground{background:var(--sidebar-foreground)}
.swatch-sidebar-accent{background:var(--sidebar-accent)}
.swatch-sidebar-accent-foreground{background:var(--sidebar-accent-foreground)}
.swatch-sidebar-border{background:var(--sidebar-border)}

/* Éléments propres aux pages du socle */
.cle{font-family:var(--font-mono);font-size:var(--text-base);letter-spacing:.06em;overflow-wrap:anywhere;user-select:all;padding:var(--space-2) var(--space-3);border-radius:var(--radius-md);background:var(--muted)}
.codes{display:grid;grid-template-columns:repeat(auto-fit,minmax(9rem,1fr));gap:var(--space-2);margin:0;padding:0;list-style:none}
.codes li{padding:var(--space-2) var(--space-3);border:1px solid var(--border);border-radius:var(--radius-md);font-family:var(--font-mono);font-size:var(--text-sm);text-align:center;user-select:all}
.qr{display:flex;justify-content:center}
.qr img{width:224px;height:224px;padding:8px;border-radius:var(--radius-md);background:#fff;image-rendering:pixelated}
.cf-turnstile{min-height:65px}
.or{display:flex;align-items:center;gap:var(--space-3);color:var(--muted-foreground);font-size:var(--text-xs);text-transform:uppercase;letter-spacing:.04em}
.or::before,.or::after{content:"";flex:1;height:1px;background:var(--border)}

/* Utilitaires prioritaires */
@media (max-width:639px){.hide-mobile{display:none!important}}
.site-header nav.row{flex-wrap:nowrap}

/* Mouvements réduits : aucune animation ni transition */
@media (prefers-reduced-motion:reduce){*,*::before,*::after,::backdrop{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}}
