.app{min-height:100vh;min-height:100dvh;display:flex;flex-direction:column}.app-header{position:sticky;top:0;z-index:30;height:var(--header-height);display:flex;align-items:center;gap:var(--space-3);padding:0 var(--space-4);background:var(--bg-surface);border-bottom:1px solid var(--border-subtle);padding-top:env(safe-area-inset-top)}.app-header__brand{display:flex;align-items:center;gap:var(--space-2);font-weight:var(--weight-bold);color:var(--text-primary);font-size:var(--text-h4)}.app-header__brand:hover{text-decoration:none}.app-header__mark{width:40px;height:40px;flex-shrink:0;background:url(/logo-mmf-2.png) center / contain no-repeat}:root[data-theme=dark] .app-header__mark{background-image:url(/logo-mmf-clair-2.png)}.app-header__farm{font-size:var(--text-sm);color:var(--text-muted);border-left:1px solid var(--border-subtle);padding-left:var(--space-3);margin-left:var(--space-1)}.app-header__spacer{flex:1}.app-body{flex:1;display:flex;width:100%;max-width:var(--content-max);margin:0 auto}.app-sidebar{display:none;width:var(--sidebar-width);flex-shrink:0;padding:var(--space-5) var(--space-3);border-right:1px solid var(--border-subtle)}.app-main{flex:1;min-width:0;padding:var(--space-5) var(--space-4);padding-bottom:calc(var(--bottom-nav-height) + var(--space-8) + env(safe-area-inset-bottom))}@media(min-width:900px){.app-sidebar{display:block}.app-main{padding:var(--space-8) var(--space-6);padding-bottom:var(--space-12)}}.nav-list{display:flex;flex-direction:column;gap:2px}.nav-item{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-2) var(--space-3);min-height:42px;border-radius:var(--radius-md);color:var(--text-secondary);font-size:var(--text-sm);font-weight:var(--weight-medium);transition:background var(--transition-fast),color var(--transition-fast)}.nav-item:hover{background:var(--neutral-100);color:var(--text-primary);text-decoration:none}.nav-item--active{background:var(--brand-50);color:var(--brand-700);font-weight:var(--weight-semibold)}.nav-item--soon{opacity:.45;cursor:default;pointer-events:none}.nav-item__badge{margin-left:auto;min-width:20px;height:20px;padding:0 6px;display:grid;place-items:center;border-radius:var(--radius-full);background:var(--danger-500);color:var(--text-inverse);font-size:var(--text-micro);font-weight:var(--weight-bold)}.nav-section{margin-top:var(--space-5);padding:0 var(--space-3) var(--space-2);font-size:var(--text-micro);font-weight:var(--weight-semibold);text-transform:uppercase;letter-spacing:.05em;color:var(--text-muted)}.bottom-nav{position:fixed;bottom:0;left:0;right:0;z-index:40;height:calc(var(--bottom-nav-height) + env(safe-area-inset-bottom));padding-bottom:env(safe-area-inset-bottom);display:grid;grid-template-columns:repeat(6,1fr);background:var(--bg-surface);border-top:1px solid var(--border-subtle)}@media(min-width:900px){.bottom-nav{display:none}}.bottom-nav__item{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;color:var(--text-muted);font-size:var(--text-micro);font-weight:var(--weight-medium);background:none;border:none;cursor:pointer}.bottom-nav__item:hover{text-decoration:none}.bottom-nav__item--active{color:var(--brand-700)}.bottom-nav__item{padding:0 2px;overflow:hidden;white-space:nowrap}@media(max-width:360px){.bottom-nav__item{font-size:9px}}.nav-sheet__item{width:100%;gap:var(--space-3);min-height:var(--touch-target);text-align:left}.nav-sheet__pastille{display:grid;place-items:center;width:34px;height:34px;flex-shrink:0;border-radius:var(--radius-md);background:var(--brand-50);color:var(--brand-600)}.nav-sheet__texte{display:flex;flex-direction:column;min-width:0}.nav-sheet__label{font-size:var(--text-body);font-weight:var(--weight-medium)}.nav-sheet__quoi{font-size:var(--text-xs);color:var(--text-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.bottom-nav__fab{display:grid;place-items:center;width:52px;height:52px;margin:-14px auto 0;border:none;border-radius:var(--radius-full);background:var(--brand-600);color:var(--text-inverse);box-shadow:var(--shadow-md);cursor:pointer}.bottom-nav__fab:active{transform:translateY(1px)}.page-header{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--space-4);margin-bottom:var(--space-5);flex-wrap:wrap}.page-header__title{font-size:var(--text-h1)}.page-header__subtitle{color:var(--text-muted);font-size:var(--text-sm);margin-top:2px}.back-link{display:inline-flex;align-items:center;gap:var(--space-1);color:var(--text-muted);font-size:var(--text-sm);margin-bottom:var(--space-3)}.account-menu{position:absolute;top:calc(var(--header-height) - 6px);right:var(--space-4);z-index:50;min-width:220px;padding:var(--space-2);background:var(--bg-surface);border:1px solid var(--border-subtle);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg)}.account-menu__header{padding:var(--space-2) var(--space-3);border-bottom:1px solid var(--border-subtle);margin-bottom:var(--space-2)}.account-menu__item{display:flex;align-items:center;gap:var(--space-3);width:100%;padding:var(--space-2) var(--space-3);min-height:40px;border:none;background:none;border-radius:var(--radius-md);font-size:var(--text-sm);color:var(--text-secondary);cursor:pointer;text-align:left}.account-menu__item:hover{background:var(--neutral-100);color:var(--text-primary);text-decoration:none}.task-row{position:relative;display:flex;align-items:flex-start;gap:var(--space-2);padding:var(--space-3) var(--space-3) var(--space-3) var(--space-4);border-radius:var(--radius-md);transition:background var(--transition-fast)}.task-row:hover{background:var(--bg-sunken)}.task-row--done{opacity:.55}.task-row--done .task-row__title{text-decoration:line-through}.task-row__priority{position:absolute;left:0;top:var(--space-3);bottom:var(--space-3);width:3px;border-radius:var(--radius-full)}.task-row__priority--urgent{background:var(--danger-500)}.task-row__priority--high{background:var(--warning-500)}.task-row__priority--normal{background:var(--neutral-300)}.task-row__priority--low{background:transparent}.task-row__check{flex-shrink:0;width:var(--touch-target);height:var(--touch-target);margin:-11px 0 -11px -11px;display:grid;place-items:center;background:none;border:none;cursor:pointer}.task-row__box{width:22px;height:22px;display:grid;place-items:center;border:1.7px solid var(--border-strong);border-radius:var(--radius-sm);color:transparent;transition:all var(--transition-fast)}.task-row__check:hover .task-row__box{border-color:var(--brand-500)}.task-row__box--checked{background:var(--brand-600);border-color:var(--brand-600);color:var(--text-inverse)}.task-row__title{font-size:var(--text-body);line-height:var(--leading-normal)}.task-row__meta{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-2);margin-top:2px;font-size:var(--text-xs);color:var(--text-muted)}.task-row--overdue .task-row__meta{color:var(--danger-600);font-weight:var(--weight-medium)}.task-row__flag{padding:1px 6px;border-radius:var(--radius-full);background:var(--danger-100);color:var(--danger-700);font-weight:var(--weight-semibold)}.task-row__flag--high{background:var(--warning-100);color:var(--warning-700)}.task-row__animal{color:var(--text-brand);font-weight:var(--weight-medium)}.task-row__source{font-style:italic}.task-group__title{display:flex;align-items:center;gap:var(--space-2);font-size:var(--text-sm);font-weight:var(--weight-semibold);color:var(--text-secondary);margin-bottom:var(--space-2)}.task-group__count{padding:1px 7px;border-radius:var(--radius-full);background:var(--bg-sunken);font-size:var(--text-micro);color:var(--text-muted)}.task-group--overdue .task-group__title{color:var(--danger-600)}.task-group--overdue .task-group__count{background:var(--danger-100);color:var(--danger-700)}.urgent-block{padding:var(--space-4);background:var(--danger-50);border:1px solid var(--danger-100);border-radius:var(--radius-lg)}.urgent-block__title{display:flex;align-items:center;gap:var(--space-2);font-size:var(--text-h4);font-weight:var(--weight-semibold);color:var(--danger-700);margin-bottom:var(--space-3)}.urgent-item{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-3);background:var(--bg-surface);border-radius:var(--radius-md)}.urgent-item__dot{width:8px;height:8px;flex-shrink:0;border-radius:var(--radius-full);background:var(--danger-500)}.all-clear{display:flex;align-items:center;gap:var(--space-4);padding:var(--space-4);background:var(--success-50);border:1px solid var(--success-100);border-radius:var(--radius-lg)}.all-clear__icon{width:40px;height:40px;flex-shrink:0;display:grid;place-items:center;border-radius:var(--radius-full);background:var(--success-100);color:var(--success-600)}.stat-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(84px,1fr));gap:var(--space-3)}.stat{display:flex;flex-direction:column;gap:2px;padding:var(--space-3);background:var(--bg-sunken);border-radius:var(--radius-md)}.stat__value{font-size:var(--text-h2);font-weight:var(--weight-bold);line-height:1}.stat__label{font-size:var(--text-xs);color:var(--text-muted)}.ai-prompt{display:flex;align-items:center;gap:var(--space-4);padding:var(--space-4);background:var(--bg-surface);border:1px solid var(--border-subtle);border-radius:var(--radius-lg);color:var(--text-primary);transition:border-color var(--transition-fast),box-shadow var(--transition-fast)}.ai-prompt:hover{border-color:var(--brand-300);box-shadow:var(--shadow-sm);text-decoration:none}.ai-prompt__icon{width:40px;height:40px;flex-shrink:0;display:grid;place-items:center;border-radius:var(--radius-md);background:var(--brand-50);color:var(--brand-600)}.reservation-line{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-2);margin:0 calc(var(--space-2) * -1);border-bottom:1px solid var(--border-subtle);border-radius:var(--radius-md);color:var(--text-primary)}.reservation-line__hote{position:relative}.reservation-line__ouvrir{display:inline-flex;align-items:center}.reservation-line__ouvrir:after{content:"";position:absolute;inset:0;border-radius:var(--radius-md)}.reservation-line__client{color:var(--text-secondary)}li:last-child>.reservation-line{border-bottom:none}.reservation-line:hover{text-decoration:none;background:var(--bg-sunken)}.reservation-line__amount{display:flex;flex-direction:column;align-items:flex-end;flex-shrink:0;text-align:right}.animal-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:var(--space-3)}.animal-card{display:flex;flex-direction:column;gap:var(--space-2);padding:var(--space-4);background:var(--bg-surface);border:1px solid var(--border-subtle);border-radius:var(--radius-lg);color:var(--text-primary);transition:border-color var(--transition-fast),box-shadow var(--transition-fast)}.animal-card:hover{border-color:var(--brand-300);box-shadow:var(--shadow-sm);text-decoration:none}.animal-card__top{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--space-2)}.animal-card__photo{width:44px;height:44px;flex-shrink:0;border-radius:var(--radius-md);object-fit:cover;background:var(--brand-50)}.animal-card__photo--vide{display:grid;place-items:center;color:var(--brand-500);font-size:var(--text-h4);font-weight:var(--weight-bold)}.animal-card__name{font-size:var(--text-h4);font-weight:var(--weight-semibold);line-height:var(--leading-tight)}.animal-card__reference{font-size:var(--text-xs);color:var(--text-muted);font-variant-numeric:tabular-nums}.animal-card__facts{display:flex;flex-wrap:wrap;gap:var(--space-1) var(--space-3);font-size:var(--text-sm);color:var(--text-secondary)}.animal-card__fact{display:inline-flex;align-items:center;gap:var(--space-1)}.animal-card__next{display:flex;align-items:center;gap:var(--space-2);padding-top:var(--space-2);border-top:1px solid var(--border-subtle);font-size:var(--text-xs);color:var(--text-muted)}.animal-hero{display:flex;align-items:flex-start;gap:var(--space-4);flex-wrap:wrap}.animal-hero__avatar{width:72px;height:72px;flex-shrink:0;display:grid;place-items:center;border-radius:var(--radius-lg);background:var(--brand-50);color:var(--brand-500);font-size:28px;font-weight:var(--weight-bold);object-fit:cover}.animal-hero__name{font-size:var(--text-h1);line-height:var(--leading-tight)}.animal-hero__meta{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-2);margin-top:var(--space-2);font-size:var(--text-sm);color:var(--text-secondary)}.animal-actions{display:flex;gap:var(--space-2);flex-wrap:wrap}.tabs{display:flex;gap:var(--space-1);overflow-x:auto;border-bottom:1px solid var(--border-subtle);scrollbar-width:none}.tabs::-webkit-scrollbar{display:none}.tab{padding:var(--space-3) var(--space-4);background:none;border:none;border-bottom:2px solid transparent;color:var(--text-muted);font-size:var(--text-sm);font-weight:var(--weight-medium);white-space:nowrap;cursor:pointer;transition:color var(--transition-fast),border-color var(--transition-fast)}.tab:hover{color:var(--text-primary)}.tab--active{color:var(--brand-700);border-bottom-color:var(--brand-600);font-weight:var(--weight-semibold)}.fact-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:var(--space-4)}.fact__label{font-size:var(--text-xs);color:var(--text-muted);display:block;margin-bottom:2px}.fact__value{font-size:var(--text-body);font-weight:var(--weight-medium)}.timeline{position:relative;padding-left:var(--space-6)}.timeline:before{content:"";position:absolute;left:9px;top:6px;bottom:6px;width:1px;background:var(--border-subtle)}.timeline__entry{position:relative;padding-bottom:var(--space-4)}.timeline__dot{position:absolute;left:calc(var(--space-6) * -1);top:3px;width:19px;height:19px;display:grid;place-items:center;border-radius:var(--radius-full);background:var(--bg-surface);border:1px solid var(--border-strong);color:var(--text-muted)}.timeline__title{font-weight:var(--weight-medium)}.timeline__meta{font-size:var(--text-xs);color:var(--text-muted)}.weight-chart{width:100%;height:180px;overflow:visible}.weight-chart__line{fill:none;stroke:var(--brand-500);stroke-width:2;stroke-linecap:round;stroke-linejoin:round}.weight-chart__area{fill:var(--brand-100);opacity:.5}.weight-chart__dot{fill:var(--brand-600)}.weight-chart__axis{stroke:var(--border-subtle);stroke-width:1}.weight-chart__label{font-size:11px;fill:var(--text-muted)}.genealogy{display:grid;grid-template-columns:1fr;gap:var(--space-3)}@media(min-width:640px){.genealogy{grid-template-columns:1fr 1fr}}.genealogy__parent{padding:var(--space-3);background:var(--bg-sunken);border-radius:var(--radius-md)}.genealogy__role{font-size:var(--text-xs);color:var(--text-muted);display:block;margin-bottom:2px}.photo-album{display:grid;grid-template-columns:repeat(auto-fill,minmax(96px,1fr));gap:var(--space-2)}.photo-album__vignette{display:flex;flex-direction:column;gap:2px}.photo-album__voir{padding:0;border:1px solid var(--border-subtle);border-radius:var(--radius-md);background:var(--bg-surface);cursor:pointer;overflow:hidden;aspect-ratio:1}.photo-album__voir img{width:100%;height:100%;object-fit:cover;display:block}.photo-album__voir:hover{border-color:var(--brand-300)}.photo-album__gestes{display:flex;justify-content:space-between;gap:2px}.photo-album__gestes .btn{padding:2px 4px;font-size:11px}.contract-row{display:flex;align-items:center;gap:var(--space-2);border-bottom:1px solid var(--border-subtle)}.contract-row:last-child{border-bottom:none}.contract-row__main{display:flex;align-items:center;gap:var(--space-3);flex:1;min-width:0;min-height:var(--touch-target);padding:var(--space-3) var(--space-2) var(--space-3) var(--space-4);color:var(--text-primary);text-decoration:none}.contract-row__main:hover{background:var(--bg-sunken);text-decoration:none}.contract-row__title{display:block;font-weight:var(--weight-medium)}.contract-row__more{flex-shrink:0;min-width:var(--touch-target);padding:0;margin-right:var(--space-2)}.contract-row__mark{flex-shrink:0;width:36px;height:36px;display:grid;place-items:center;border-radius:var(--radius-full);background:var(--bg-sunken);color:var(--text-muted)}.contract-row__mark--signed{background:var(--success-100);color:var(--success-600)}.contract-row__mark--waiting{background:var(--warning-100);color:var(--warning-700)}.contract-vars{display:grid;grid-template-columns:1fr;gap:var(--space-1)}@media(min-width:560px){.contract-vars{grid-template-columns:repeat(2,minmax(0,1fr))}}.contract-var{display:flex;align-items:center;gap:var(--space-2);width:100%;min-height:var(--touch-target);padding:var(--space-2) var(--space-3);background:none;border:1px solid transparent;border-radius:var(--radius-md);text-align:left;cursor:pointer;transition:background var(--transition-fast),border-color var(--transition-fast)}.contract-var:hover{background:var(--bg-sunken);border-color:var(--border-subtle)}.contract-var__name{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:var(--text-xs);color:var(--text-brand);overflow-wrap:anywhere}.contract-var__text{font-size:var(--text-xs);color:var(--text-muted)}.contract-progress{height:8px;border-radius:var(--radius-full);background:var(--neutral-200);overflow:hidden}.contract-progress__fill{display:block;height:100%;width:0;border-radius:var(--radius-full);background:var(--brand-600);transition:width var(--transition-base)}.contract-progress__fill--unknown{width:35%;animation:contract-progress-sweep 1.4s ease-in-out infinite}@keyframes contract-progress-sweep{0%{transform:translate(-100%)}to{transform:translate(300%)}}@media(prefers-reduced-motion:reduce){.contract-progress__fill{transition:none}.contract-progress__fill--unknown{animation:none;width:100%;opacity:.5}}.contract-row__more{gap:.35rem;white-space:nowrap}@media(max-width:26rem){.contract-row__more-mot{display:none}}.contresignature__cadre{position:relative;overflow:auto;max-height:60vh;border:1px solid var(--border-subtle);border-radius:var(--radius-md);background:var(--bg-muted)}.contresignature__page{display:block;cursor:crosshair}.contresignature__apercu{position:absolute;transform:translate(-50%,-50%);background-repeat:no-repeat;background-position:center;background-size:contain;border:1px dashed var(--brand-500);pointer-events:none}.doc-famille{--famille-teinte: var(--text-muted);--famille-fond: var(--bg-sunken);border-left:3px solid var(--famille-teinte);border-radius:var(--radius-sm);background:var(--famille-fond);overflow:hidden}.doc-famille__titre{display:flex;align-items:center;gap:var(--space-2);margin:0;padding:var(--space-2) var(--space-3);font-size:var(--text-sm);font-weight:var(--weight-semibold);color:var(--famille-teinte)}.doc-famille__compte{font-variant-numeric:tabular-nums;font-weight:var(--weight-medium);color:var(--text-muted)}.doc-famille ul{background:var(--bg-surface);margin:0;padding:var(--space-1) var(--space-2)}.doc-famille__montant{flex-shrink:0;font-weight:var(--weight-semibold);font-variant-numeric:tabular-nums;color:var(--famille-teinte)}.doc-famille--accord{--famille-teinte: var(--brand-700);--famille-fond: var(--brand-50)}.doc-famille--argent{--famille-teinte: var(--success-600);--famille-fond: var(--success-50)}.doc-famille--depart{--famille-teinte: var(--accent-700);--famille-fond: var(--accent-100)}.doc-famille--rupture{--famille-teinte: var(--danger-600);--famille-fond: var(--danger-50)}.doc-famille--autre{--famille-teinte: var(--text-muted);--famille-fond: var(--bg-sunken)}.parcours{padding:var(--space-3);border:1px solid var(--border-subtle);border-radius:var(--radius-md);background:var(--bg-sunken)}.parcours__titre{margin:0 0 var(--space-2);font-size:var(--text-sm);font-weight:var(--weight-semibold);color:var(--text-muted)}.parcours__liste{display:grid;gap:var(--space-1);margin:0;padding:0;list-style:none}.parcours__etape{position:relative;display:grid;grid-template-columns:10px 7.5rem 1fr auto;align-items:baseline;gap:var(--space-2);font-size:var(--text-sm)}.parcours__puce{align-self:start;margin-top:.35em;width:9px;height:9px;border-radius:50%;background:var(--famille-teinte, var(--text-muted))}.parcours__etape:not(:last-child):before{content:"";position:absolute;left:4px;top:calc(.35em + 12px);bottom:calc(var(--space-1) * -1);width:1px;background:var(--border-subtle)}.parcours__date{color:var(--text-muted);font-variant-numeric:tabular-nums}.parcours__quoi{display:flex;flex-wrap:wrap;gap:var(--space-2);align-items:baseline;font-weight:var(--weight-medium)}.parcours__montant{font-weight:var(--weight-semibold);font-variant-numeric:tabular-nums;color:var(--famille-teinte, var(--text-muted))}.parcours__etat{color:var(--text-muted)}@media(max-width:699px){.parcours__etape{grid-template-columns:10px 6.6rem 1fr}.parcours__etat{grid-column:3;font-size:var(--text-xs)}}.parcours__bete{color:var(--text-muted);font-weight:var(--weight-regular)}.empreinte__damier,.empreinte__apercu,.empreinte__vue{--carreau: 8px;background-color:#fff;background-image:linear-gradient(45deg,#e9eef4 25%,transparent 25%,transparent 75%,#e9eef4 75%),linear-gradient(45deg,#e9eef4 25%,transparent 25%,transparent 75%,#e9eef4 75%);background-size:calc(var(--carreau) * 2) calc(var(--carreau) * 2);background-position:0 0,var(--carreau) var(--carreau)}.empreinte__apercu{display:flex;align-items:center;justify-content:center;padding:.75rem;border:1px solid var(--border, #d7dee8);border-radius:.5rem}.empreinte__apercu canvas{max-width:100%;max-height:20rem;object-fit:contain;touch-action:none}.empreinte__toile--gomme{cursor:cell}.empreinte__toile--pinceau{cursor:crosshair}.empreinte__vue{display:inline-flex;padding:.5rem;border:1px solid var(--border, #d7dee8);border-radius:.5rem}.empreinte__vue img{width:7rem;height:7rem;object-fit:contain}.photo-cochon__vue img,.photo-cochon__apercu img{display:block;max-width:100%;max-height:18rem;margin:0 auto;border-radius:.5rem;object-fit:contain}.photo-cochon__apercu{padding:.75rem;border:1px solid var(--border, #d7dee8);border-radius:.5rem;background:var(--surface-muted, #f6f8fb)}.parents-photo{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem}@media(max-width:30rem){.parents-photo{grid-template-columns:1fr}}.parents-photo__case{display:flex;flex-direction:column;align-items:center;gap:.35rem;text-align:center}.parents-photo__vue{display:flex;align-items:center;justify-content:center;width:100%;aspect-ratio:4 / 3;overflow:hidden;border:1px solid var(--border, #d7dee8);border-radius:.5rem;background:var(--surface-muted, #f6f8fb)}.parents-photo__vue img{width:100%;height:100%;object-fit:contain}.parents-photo__titre{margin:0;font-weight:600}.parents-photo__note{margin:0;font-size:.85rem;color:var(--text-muted, #5b6b80)}.parents-photo__loupe{position:relative;display:block;width:100%;height:100%;padding:0;border:0;background:none;cursor:zoom-in}.parents-photo__agrandir{position:absolute;right:.4rem;bottom:.4rem;padding:.15rem .5rem;border-radius:.4rem;background:#111827b8;color:#fff;font-size:.75rem;line-height:1.5}.parents-photo__grand img{display:block;width:100%;max-height:75vh;margin:0 auto;border-radius:.5rem;object-fit:contain}:root{--carte-navy: #15314f;--carte-blue: #2f6db0;--carte-ink: #1a2733;--carte-label: #41536b;--carte-hair: #b9c8da;--carte-tint: #eef3f9}.cartes{display:flex;flex-wrap:wrap;align-items:flex-start;gap:var(--space-5)}.carte-face{display:flex;flex-direction:column;gap:.5rem}.carte-face__titre{font-size:.75rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--text-muted, #6b7280)}.carte{position:relative;box-sizing:border-box;flex:0 0 auto;width:85.6mm;height:54mm;display:flex;flex-direction:column;overflow:hidden;border-radius:3.5mm;background:var(--carte-tint);color:var(--carte-ink);font-family:Helvetica Neue,Helvetica,Arial,sans-serif;box-shadow:0 .6mm 2mm #15314f38;zoom:1.6}.carte__secure{position:absolute;inset:0;pointer-events:none;opacity:.32;background:repeating-linear-gradient(0deg,rgba(47,109,176,.14) 0 .08mm,transparent .08mm .75mm),repeating-linear-gradient(72deg,rgba(47,109,176,.09) 0 .08mm,transparent .08mm 1.9mm)}.carte__wm{position:absolute;top:9.2mm;left:22.8mm;width:40mm;height:40mm;object-fit:contain;opacity:.07;pointer-events:none}.carte__frame{position:absolute;inset:1.4mm;border:.25mm solid var(--carte-hair);border-radius:1.8mm;pointer-events:none}.carte__band{position:relative;flex:0 0 8.4mm;display:flex;align-items:center;justify-content:center;background:linear-gradient(180deg,#1c3f63,var(--carte-navy));color:#fff;text-align:center}.carte__t1{display:block;font-size:7.2pt;font-weight:800;letter-spacing:.09em;line-height:1.1}.carte__t2{display:block;margin-top:.3mm;font-size:5pt;font-weight:500;line-height:1.1;letter-spacing:.045em;text-transform:uppercase;color:#ffffffd1}.carte__flag{position:absolute;top:50%;right:3.2mm;transform:translateY(-50%);width:4.6mm;height:3.1mm;border:.15mm solid rgba(255,255,255,.55);background:linear-gradient(90deg,#0055a4 0 33.33%,#fff 33.33% 66.66%,#ef4135 66.66% 100%)}.carte__corps{position:relative;flex:1;display:flex;flex-direction:column;min-height:0;padding:1.3mm 3.2mm .8mm}.recto__haut{display:flex;gap:2.8mm}.carte__photo{flex:0 0 21mm;width:21mm;height:20mm;display:flex;align-items:center;justify-content:center;overflow:hidden;background:#fff;border:.25mm solid var(--carte-hair);border-radius:.8mm}.carte__photo img{width:100%;height:100%;object-fit:cover}.carte__photo span{font-size:5pt;color:var(--carte-label)}.carte__champs{flex:1;min-width:0;display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr) minmax(0,1.15fr);column-gap:1.8mm;row-gap:.55mm;align-content:start}.ch{min-width:0}.ch--large{grid-column:1 / -1}.ch--deux{grid-column:span 2}.lab{display:block;font-size:3.9pt;font-weight:700;line-height:1.1;letter-spacing:.04em;text-transform:uppercase;color:var(--carte-label);white-space:nowrap}.lab i{font-weight:400;font-style:italic;text-transform:none;letter-spacing:0;opacity:.72}.val{display:block;font-size:6pt;font-weight:700;line-height:1.15;color:var(--carte-ink);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.val--nom{font-size:10.5pt;font-weight:800;letter-spacing:.015em;line-height:1.1;color:var(--carte-navy);text-transform:uppercase}.carte__owner{margin-top:1mm;padding-top:.7mm;border-top:.2mm solid var(--carte-hair)}.carte__owner h2{margin:0 0 .3mm;font-size:4.6pt;font-weight:800;line-height:1.1;letter-spacing:.07em;text-transform:uppercase;color:var(--carte-navy)}.carte__owner h2 i{font-weight:400;font-style:italic;text-transform:none;opacity:.72}.owner__grille{display:grid;grid-template-columns:23mm minmax(0,1fr);column-gap:1.8mm;row-gap:.2mm;align-items:baseline}.owner__grille .val{font-size:5pt;font-weight:600}.carte__signrow{display:flex;align-items:flex-end;gap:2mm;margin-top:auto;padding-top:.4mm}.sigblock{width:24mm}.scontent{height:9.1mm;display:flex;align-items:center;justify-content:center;padding-bottom:.3mm;overflow:hidden}.scontent img{max-height:100%;max-width:100%;object-fit:contain}.sbar{border-top:.25mm solid var(--carte-navy)}.scap{display:block;margin-top:.2mm;font-size:3.6pt;font-weight:700;line-height:1.05;letter-spacing:.04em;text-transform:uppercase;text-align:center;color:var(--carte-label)}.scap i{display:block;font-weight:400;font-style:italic;text-transform:none;opacity:.72}.sabot{height:8.4mm;fill:var(--carte-navy)}.sabot-photo{max-height:100%;max-width:100%;width:auto;height:auto;object-fit:contain}.carte__bc{width:27mm;margin-left:auto}.carte__bc svg{display:block;width:100%;height:7mm}.carte__bcnum{display:block;margin-top:.3mm;font-family:Courier New,Courier,monospace;font-size:4.2pt;line-height:1.1;font-weight:700;letter-spacing:.08em;text-align:center;color:var(--carte-ink)}.verso__corps{position:relative;flex:1;display:flex;align-items:stretch;gap:3mm;min-height:0;padding:2.2mm 3.4mm 0}.verso__gauche{flex:1;min-width:0;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center}.verso__logo{width:21mm;height:21mm;object-fit:contain}.verso__nom{margin:.8mm 0 0;line-height:1.15;font-size:5.6pt;font-weight:800;color:var(--carte-navy)}.verso__en{margin:.2mm 0 0;line-height:1.15;font-size:4.4pt;font-style:italic;color:var(--carte-label)}.verso__lieu{margin:.7mm 0 0;line-height:1.15;font-size:4.8pt;font-weight:600;color:var(--carte-ink)}.verso__sep{flex:0 0 .2mm;background:var(--carte-hair);margin:1.5mm 0}.verso__droite{flex:0 0 28mm;display:flex;flex-direction:column;align-items:center;justify-content:center}.verso__qr{width:24mm;height:24mm;padding:.6mm;background:#fff;border:.2mm solid var(--carte-hair)}.verso__qr svg{display:block;width:100%;height:100%}.verso__scan{margin-top:.8mm;font-size:4.2pt;font-weight:800;line-height:1.1;letter-spacing:.07em;text-transform:uppercase;text-align:center;color:var(--carte-label)}.verso__scan i{display:block;font-weight:400;font-style:italic;text-transform:none;opacity:.72}.verso__pied{position:relative;display:flex;align-items:flex-end;justify-content:space-between;gap:2mm;margin:0 3.4mm;padding:1.1mm 0 1.8mm;border-top:.2mm solid var(--carte-hair)}.verso__pied .val{font-size:5pt}.verso__pied>div:last-child{text-align:right}@media print{.carte-ecran,.app-nav,.app-header,.app-sidebar,nav,header.app-header,.carte-face__titre{display:none!important}@page{size:A4 portrait;margin:14mm}.cartes{display:flex;flex-direction:column;align-items:center;gap:10mm}.carte{zoom:1;box-shadow:0 0 0 .2mm var(--carte-hair);-webkit-print-color-adjust:exact;print-color-adjust:exact}}.assistant{display:flex;flex-direction:column;height:calc(100dvh - var(--header-height) - var(--bottom-nav-height) - var(--space-8));min-height:420px}@media(min-width:900px){.assistant{height:calc(100dvh - var(--header-height) - var(--space-16))}}.assistant__thread{flex:1;overflow-y:auto;display:flex;flex-direction:column;gap:var(--space-4);padding-bottom:var(--space-4)}.assistant__composer{display:flex;gap:var(--space-2);align-items:flex-end;padding-top:var(--space-3);border-top:1px solid var(--border-subtle);background:var(--bg-page)}.assistant__input{flex:1;min-height:var(--touch-target);max-height:120px;padding:var(--space-3);background:var(--bg-surface);border:1px solid var(--border-strong);border-radius:var(--radius-lg);resize:none;line-height:var(--leading-normal)}.assistant__input:focus{outline:none;border-color:var(--border-focus);box-shadow:var(--shadow-focus)}.assistant__send{width:var(--touch-target);height:var(--touch-target);flex-shrink:0;display:grid;place-items:center;border:none;border-radius:var(--radius-full);background:var(--brand-600);color:var(--text-inverse);cursor:pointer}.assistant__send:disabled{opacity:.4;cursor:not-allowed}.msg{display:flex;flex-direction:column;gap:var(--space-2);max-width:90%}.msg--user{align-self:flex-end;align-items:flex-end}.msg--assistant{align-self:flex-start}.msg__bubble{padding:var(--space-3) var(--space-4);border-radius:var(--radius-lg);line-height:var(--leading-relaxed);white-space:pre-wrap}.msg--user .msg__bubble{background:var(--brand-600);color:var(--text-inverse);border-bottom-right-radius:var(--radius-sm)}.msg--assistant .msg__bubble{background:var(--bg-surface);border:1px solid var(--border-subtle);border-bottom-left-radius:var(--radius-sm)}.msg__sources{display:flex;align-items:center;gap:var(--space-1);font-size:var(--text-xs);color:var(--text-muted);font-style:italic;padding:0 var(--space-1)}.pending-action{display:flex;flex-direction:column;gap:var(--space-3);padding:var(--space-4);background:var(--warning-50);border:1px solid var(--warning-100);border-radius:var(--radius-lg)}.pending-action__label{display:flex;align-items:center;gap:var(--space-2);font-size:var(--text-xs);font-weight:var(--weight-semibold);text-transform:uppercase;letter-spacing:.04em;color:var(--warning-700)}.pending-action__summary{font-weight:var(--weight-medium)}.pending-action--done{background:var(--success-50);border-color:var(--success-100)}.pending-action--cancelled{opacity:.6}.suggestions{display:flex;flex-wrap:wrap;gap:var(--space-2)}.suggestion{padding:var(--space-2) var(--space-3);background:var(--bg-surface);border:1px solid var(--border-strong);border-radius:var(--radius-full);font-size:var(--text-sm);text-align:left;cursor:pointer;transition:all var(--transition-fast)}.suggestion:hover{border-color:var(--brand-400);background:var(--brand-50)}.thinking{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-3) var(--space-4);background:var(--bg-surface);border:1px solid var(--border-subtle);border-radius:var(--radius-lg);color:var(--text-muted);font-size:var(--text-sm);align-self:flex-start}.thinking__dot{width:6px;height:6px;border-radius:50%;background:currentColor;animation:thinking-pulse 1.2s infinite}.thinking__dot:nth-child(2){animation-delay:.15s}.thinking__dot:nth-child(3){animation-delay:.3s}@keyframes thinking-pulse{0%,60%,to{opacity:.3}30%{opacity:1}}:root{--brand-50: #f2f6f3;--brand-100: #e0eae2;--brand-200: #c2d6c7;--brand-300: #9bbaa3;--brand-400: #6f987b;--brand-500: #4e7a5c;--brand-600: #3c6149;--brand-700: #314e3b;--brand-800: #283e30;--brand-900: #1f3026;--accent-100: #fbeee6;--accent-300: #e9b596;--accent-500: #c9713f;--accent-600: #ab5c30;--accent-700: #8b4a26;--neutral-0: #ffffff;--neutral-25: #fbfaf8;--neutral-50: #f6f4f1;--neutral-100: #eeebe6;--neutral-200: #e0dcd5;--neutral-300: #c8c2b8;--neutral-400: #a39c90;--neutral-500: #7d766b;--neutral-600: #5d5850;--neutral-700: #45413b;--neutral-800: #2e2b27;--neutral-900: #1c1a18;--danger-50: #fdf0ee;--danger-100: #fadbd6;--danger-500: #c0392b;--danger-600: #a33125;--danger-700: #7f2419;--warning-50: #fdf5e7;--warning-100: #fae7c4;--warning-500: #b8791a;--warning-600: #9a6414;--warning-700: #7a4f10;--success-50: #eef6ef;--success-100: #d5e9d8;--success-500: #3f7d4d;--success-600: #336740;--info-50: #edf3f8;--info-100: #d5e4f0;--info-500: #33638f;--info-600: #2a5276;--mere-1: #ac425c;--mere-2: #0094b2;--mere-3: #677b00;--mere-4: #ad5a00;--mere-5: #7e53ac;--mere-6: #289856;--mere-7: #0073b7;--mere-8: #ab7d00;--mere-9: #727fdc;--mere-10: #bd63a3;--mere-11: #008e80;--mere-12: #c75d48;--bg-page: var(--neutral-50);--bg-surface: var(--neutral-0);--bg-raised: var(--neutral-25);--bg-sunken: var(--neutral-100);--bg-inverse: var(--brand-800);--text-primary: var(--neutral-900);--text-secondary: var(--neutral-600);--text-muted: var(--neutral-500);--text-inverse: var(--neutral-0);--text-brand: var(--brand-700);--border-subtle: var(--neutral-200);--border-strong: var(--neutral-300);--border-focus: var(--brand-500);--space-1: 4px;--space-2: 8px;--space-3: 12px;--space-4: 16px;--space-5: 20px;--space-6: 24px;--space-8: 32px;--space-10: 40px;--space-12: 48px;--space-16: 64px;--font-sans: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--text-h1: 32px;--text-h2: 24px;--text-h3: 20px;--text-h4: 17px;--text-body: 16px;--text-sm: 14px;--text-xs: 13px;--text-micro: 12px;--leading-tight: 1.25;--leading-normal: 1.5;--leading-relaxed: 1.65;--weight-regular: 400;--weight-medium: 500;--weight-semibold: 600;--weight-bold: 700;--radius-sm: 6px;--radius-md: 10px;--radius-lg: 14px;--radius-xl: 20px;--radius-full: 999px;--shadow-sm: 0 1px 2px rgba(28, 26, 24, .06);--shadow-md: 0 2px 8px rgba(28, 26, 24, .08);--shadow-lg: 0 8px 24px rgba(28, 26, 24, .12);--shadow-focus: 0 0 0 3px rgba(78, 122, 92, .28);--transition-fast: .12s ease;--transition-base: .18s ease;--sidebar-width: 232px;--header-height: 60px;--bottom-nav-height: 64px;--content-max: 1180px;--touch-target: 44px}:root[data-theme=dark]{--mere-1: #e68295;--mere-2: #3ccfeb;--mere-3: #a0b554;--mere-4: #e69756;--mere-5: #b690e4;--mere-6: #78d394;--mere-7: #59aeee;--mere-8: #e5ba59;--mere-9: #adbdff;--mere-10: #f8a2dd;--mere-11: #28c7b9;--mere-12: #ff9d87}@media(max-width:640px){:root{--text-h1: 26px;--text-h2: 21px;--text-h3: 18px}}@media(prefers-reduced-motion:reduce){:root{--transition-fast: 0ms;--transition-base: 0ms}*,*:before,*:after{animation-duration:.001ms!important;transition-duration:.001ms!important}}*,*:before,*:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{margin:0;font-family:var(--font-sans);font-size:var(--text-body);line-height:var(--leading-normal);color:var(--text-primary);background:var(--bg-page);-webkit-font-smoothing:antialiased;padding-bottom:env(safe-area-inset-bottom)}h1,h2,h3,h4,p,figure,blockquote{margin:0}h1{font-size:var(--text-h1);font-weight:var(--weight-bold);line-height:var(--leading-tight)}h2{font-size:var(--text-h2);font-weight:var(--weight-semibold);line-height:var(--leading-tight)}h3{font-size:var(--text-h3);font-weight:var(--weight-semibold);line-height:var(--leading-tight)}h4{font-size:var(--text-h4);font-weight:var(--weight-semibold)}ul,ol{margin:0;padding:0;list-style:none}img,svg{display:block;max-width:100%}button,input,select,textarea{font:inherit;color:inherit}a{color:var(--text-brand);text-decoration:none}a:hover{text-decoration:underline}:focus-visible{outline:2px solid var(--border-focus);outline-offset:2px;border-radius:var(--radius-sm)}:focus:not(:focus-visible){outline:none}.skip-link{position:absolute;left:-9999px;top:var(--space-2);z-index:100;padding:var(--space-2) var(--space-4);background:var(--bg-surface);border-radius:var(--radius-md);box-shadow:var(--shadow-lg)}.skip-link:focus{left:var(--space-2)}.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}#root{overflow-x:hidden}.login__logo{width:176px;height:176px;background:url(/logo-complet.png) center / contain no-repeat}:root[data-theme=dark] .login__logo{background-image:url(/logo-complet-clair.png)}.cal-teinte--1{--cal-teinte: var(--mere-1)}.cal-teinte--2{--cal-teinte: var(--mere-2)}.cal-teinte--3{--cal-teinte: var(--mere-3)}.cal-teinte--4{--cal-teinte: var(--mere-4)}.cal-teinte--5{--cal-teinte: var(--mere-5)}.cal-teinte--6{--cal-teinte: var(--mere-6)}.cal-teinte--7{--cal-teinte: var(--mere-7)}.cal-teinte--8{--cal-teinte: var(--mere-8)}.cal-teinte--9{--cal-teinte: var(--mere-9)}.cal-teinte--10{--cal-teinte: var(--mere-10)}.cal-teinte--11{--cal-teinte: var(--mere-11)}.cal-teinte--12{--cal-teinte: var(--mere-12)}.link-button{background:none;border:0;padding:0;font:inherit;color:var(--brand-700);text-decoration:underline;cursor:pointer}.link-button:hover{color:var(--brand-800)}.link-button:focus-visible{outline:2px solid var(--brand-600);outline-offset:2px;border-radius:var(--radius-sm)}.file-pastille{width:14px;height:14px;border-radius:50%;flex-shrink:0;background:var(--cal-teinte, var(--border-strong))}.file-groupe{border-left:4px solid var(--cal-teinte, transparent);padding-left:var(--space-3)}.file-groupe__entete{display:flex;align-items:center;flex-wrap:wrap;gap:var(--space-2);padding:var(--space-2) var(--space-3);border-radius:var(--radius-md);background:color-mix(in srgb,var(--cal-teinte, transparent) 18%,transparent)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);min-height:var(--touch-target);padding:0 var(--space-5);border:1px solid transparent;border-radius:var(--radius-md);font-size:var(--text-body);font-weight:var(--weight-semibold);cursor:pointer;transition:background var(--transition-fast),border-color var(--transition-fast),color var(--transition-fast),transform var(--transition-fast);white-space:nowrap;text-decoration:none}.btn:disabled{opacity:.55;cursor:not-allowed}.btn:not(:disabled):active{transform:translateY(1px)}.btn--primary{background:var(--brand-600);color:var(--text-inverse)}.btn--primary:not(:disabled):hover{background:var(--brand-700);text-decoration:none}.btn--secondary{background:var(--bg-surface);color:var(--text-primary);border-color:var(--border-strong)}.btn--secondary:not(:disabled):hover{background:var(--neutral-50);text-decoration:none}.btn--ghost{background:transparent;color:var(--text-secondary)}.btn--ghost:not(:disabled):hover{background:var(--neutral-100);color:var(--text-primary);text-decoration:none}.btn--danger{background:var(--danger-500);color:var(--text-inverse)}.btn--danger:not(:disabled):hover{background:var(--danger-600)}.btn--block{width:100%}.btn--sm{min-height:36px;padding:0 var(--space-3);font-size:var(--text-sm)}.btn--lg{min-height:52px;padding:0 var(--space-6);font-size:var(--text-h4)}.field{display:flex;flex-direction:column;gap:var(--space-2);margin-bottom:var(--space-4)}.field__label{font-size:var(--text-sm);font-weight:var(--weight-medium);color:var(--text-secondary)}.field__optional{font-weight:var(--weight-regular);color:var(--text-muted)}.field__hint{font-size:var(--text-xs);color:var(--text-muted)}.field__error{font-size:var(--text-sm);color:var(--danger-600);display:flex;align-items:center;gap:var(--space-1)}.input,.select,.textarea{width:100%;min-height:var(--touch-target);padding:var(--space-2) var(--space-3);background:var(--bg-surface);border:1px solid var(--border-strong);border-radius:var(--radius-md);font-size:var(--text-body);transition:border-color var(--transition-fast),box-shadow var(--transition-fast)}.input:focus,.select:focus,.textarea:focus{outline:none;border-color:var(--border-focus);box-shadow:var(--shadow-focus)}.input[aria-invalid=true],.select[aria-invalid=true]{border-color:var(--danger-500)}.textarea{min-height:96px;resize:vertical;line-height:var(--leading-normal)}.select{appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath fill='%237d766b' d='M1 1l5 5 5-5'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right var(--space-3) center;padding-right:var(--space-8)}.input--numeric-large{font-size:40px;font-weight:var(--weight-bold);text-align:center;min-height:76px;letter-spacing:-.02em}.input-icon{position:relative;display:block}.input-icon__glyph{position:absolute;left:var(--space-3);top:50%;transform:translateY(-50%);color:var(--text-muted);pointer-events:none}.input-icon .input{padding-left:var(--space-10)}.choice-group{display:flex;gap:var(--space-2)}.choice{flex:1;display:flex;align-items:center;justify-content:center;gap:var(--space-2);min-height:var(--touch-target);padding:var(--space-2) var(--space-3);background:var(--bg-surface);border:1px solid var(--border-strong);border-radius:var(--radius-md);font-size:var(--text-sm);font-weight:var(--weight-medium);cursor:pointer;transition:all var(--transition-fast)}.choice--selected{background:var(--brand-50);border-color:var(--brand-500);color:var(--brand-700);font-weight:var(--weight-semibold)}.card{background:var(--bg-surface);border:1px solid var(--border-subtle);border-radius:var(--radius-lg);padding:var(--space-5)}.card--flush{padding:0;overflow:hidden}.card--raised{box-shadow:var(--shadow-sm)}.card__header{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);margin-bottom:var(--space-4)}.card__title{font-size:var(--text-h4);font-weight:var(--weight-semibold)}.card__subtitle{font-size:var(--text-sm);color:var(--text-muted)}.badge{display:inline-flex;align-items:center;gap:var(--space-1);padding:3px var(--space-2);border-radius:var(--radius-full);font-size:var(--text-xs);font-weight:var(--weight-semibold);white-space:nowrap}.badge__icon{flex-shrink:0}.badge--neutral{background:var(--neutral-100);color:var(--neutral-700)}.badge--success{background:var(--success-100);color:var(--success-600)}.badge--warning{background:var(--warning-100);color:var(--warning-700)}.badge--danger{background:var(--danger-100);color:var(--danger-700)}.badge--info{background:var(--info-100);color:var(--info-600)}.empty-state{display:flex;flex-direction:column;align-items:center;text-align:center;padding:var(--space-12) var(--space-6);gap:var(--space-3)}.empty-state__icon{width:56px;height:56px;display:grid;place-items:center;border-radius:var(--radius-full);background:var(--brand-50);color:var(--brand-600);margin-bottom:var(--space-2)}.empty-state__title{font-size:var(--text-h4);font-weight:var(--weight-semibold)}.empty-state__text{color:var(--text-secondary);max-width:42ch}.skeleton{background:linear-gradient(90deg,var(--neutral-100) 25%,var(--neutral-50) 50%,var(--neutral-100) 75%);background-size:200% 100%;animation:skeleton-shimmer 1.4s infinite;border-radius:var(--radius-sm)}@keyframes skeleton-shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}.spinner{width:18px;height:18px;border:2px solid currentColor;border-right-color:transparent;border-radius:50%;animation:spin .7s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.alert{display:flex;gap:var(--space-3);padding:var(--space-3) var(--space-4);border-radius:var(--radius-md);font-size:var(--text-sm);line-height:var(--leading-normal)}.alert--danger{background:var(--danger-50);color:var(--danger-700)}.alert--warning{background:var(--warning-50);color:var(--warning-700)}.alert--info{background:var(--info-50);color:var(--info-600)}.alert--success{background:var(--success-50);color:var(--success-600)}.toast-stack{position:fixed;left:50%;transform:translate(-50%);bottom:calc(var(--bottom-nav-height) + var(--space-4) + env(safe-area-inset-bottom));z-index:60;display:flex;flex-direction:column;gap:var(--space-2);width:min(440px,calc(100vw - var(--space-8)))}@media(min-width:900px){.toast-stack{bottom:var(--space-6)}}.toast{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-3) var(--space-4);background:var(--neutral-900);color:var(--text-inverse);border-radius:var(--radius-md);box-shadow:var(--shadow-lg);font-size:var(--text-sm);animation:toast-in var(--transition-base)}.toast--danger{background:var(--danger-600)}.toast__action{margin-left:auto;background:none;border:none;color:inherit;font-weight:var(--weight-semibold);text-decoration:underline;cursor:pointer;padding:var(--space-1) var(--space-2)}@keyframes toast-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.sheet-backdrop{position:fixed;inset:0;background:#1c1a1873;z-index:70;display:flex;align-items:flex-end;justify-content:center;animation:fade-in var(--transition-base)}@media(min-width:720px){.sheet-backdrop{align-items:center}}.sheet{width:100%;max-width:520px;max-height:92vh;overflow-y:auto;background:var(--bg-surface);border-radius:var(--radius-xl) var(--radius-xl) 0 0;padding:var(--space-5) var(--space-5) calc(var(--space-5) + env(safe-area-inset-bottom));animation:sheet-up var(--transition-base)}@media(min-width:720px){.sheet{border-radius:var(--radius-xl);animation:fade-in var(--transition-base)}}.sheet__handle{width:40px;height:4px;background:var(--neutral-300);border-radius:var(--radius-full);margin:0 auto var(--space-4)}@media(min-width:720px){.sheet__handle{display:none}}.sheet__header{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--space-3);margin-bottom:var(--space-4)}.sheet__title{font-size:var(--text-h3);font-weight:var(--weight-semibold)}.sheet__subtitle{font-size:var(--text-sm);color:var(--text-muted);margin-top:2px}@keyframes fade-in{0%{opacity:0}to{opacity:1}}@keyframes sheet-up{0%{transform:translateY(16px);opacity:0}to{transform:translateY(0);opacity:1}}.stack{display:flex;flex-direction:column}.stack-1{gap:var(--space-1)}.stack-2{gap:var(--space-2)}.stack-3{gap:var(--space-3)}.stack-4{gap:var(--space-4)}.stack-5{gap:var(--space-5)}.stack-6{gap:var(--space-6)}.row{display:flex;align-items:center}.row-2{gap:var(--space-2)}.row-3{gap:var(--space-3)}.row-4{gap:var(--space-4)}.row--between{justify-content:space-between}.row--wrap{flex-wrap:wrap}.grow{flex:1;min-width:0}.text-sm{font-size:var(--text-sm)}.text-xs{font-size:var(--text-xs)}.text-muted{color:var(--text-muted)}.text-secondary{color:var(--text-secondary)}.text-medium{font-weight:var(--weight-medium)}.text-semibold{font-weight:var(--weight-semibold)}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.hide-desktop{display:none}@media(max-width:899px){.hide-mobile{display:none!important}.hide-desktop{display:revert}}.filter-bar{display:flex;flex-wrap:wrap;gap:var(--space-2);align-items:center}.filter-chip{display:inline-flex;align-items:center;gap:var(--space-1);min-height:36px;padding:0 var(--space-3);background:var(--bg-surface);border:1px solid var(--border-strong);border-radius:var(--radius-full);font-size:var(--text-sm);cursor:pointer;transition:all var(--transition-fast)}.filter-chip--active{background:var(--brand-600);border-color:var(--brand-600);color:var(--text-inverse);font-weight:var(--weight-medium)}.bandeau-version{position:fixed;left:var(--space-3);right:var(--space-3);bottom:calc(var(--space-3) + 64px + env(safe-area-inset-bottom,0px));z-index:60;display:flex;align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-3);border-radius:var(--radius-lg);background:var(--text-primary);color:var(--bg-surface);box-shadow:var(--shadow-md);font-size:var(--text-sm)}.bandeau-version .btn{flex-shrink:0}.bandeau-version .btn--ghost{color:var(--bg-surface);opacity:.75}@media(min-width:900px){.bandeau-version{bottom:var(--space-4);left:auto;max-width:460px}}.doc-row{display:flex;align-items:center;gap:var(--space-2);border-bottom:1px solid var(--border-subtle)}.doc-row:last-child{border-bottom:none}.doc-row__main{display:flex;align-items:center;gap:var(--space-3);flex:1;min-width:0;min-height:var(--touch-target);padding:var(--space-3) var(--space-2) var(--space-3) var(--space-4);color:var(--text-primary);text-decoration:none}.doc-row__main:hover{background:var(--bg-sunken);text-decoration:none}.doc-row__name{display:block;font-weight:var(--weight-medium)}.doc-row__more{flex-shrink:0;min-width:var(--touch-target);padding:0;margin-right:var(--space-2)}.doc-thumb{flex-shrink:0;width:44px;height:44px;display:grid;place-items:center;overflow:hidden;border-radius:var(--radius-md);background:var(--bg-sunken);color:var(--text-muted)}.doc-thumb--lg{width:72px;height:72px}.doc-thumb img{width:100%;height:100%;object-fit:cover}.doc-pick{display:inline-flex;position:relative}.doc-pick__input{position:absolute;width:1px;height:1px;opacity:0;pointer-events:none}.doc-pick__input:focus-visible+.doc-pick__label{outline:2px solid var(--border-focus);outline-offset:2px}.doc-progress{height:8px;border-radius:var(--radius-full);background:var(--neutral-200);overflow:hidden}.doc-progress__fill{display:block;height:100%;width:0;border-radius:var(--radius-full);background:var(--brand-600);transition:width var(--transition-base)}.doc-progress__fill--unknown{width:35%;animation:doc-progress-sweep 1.4s ease-in-out infinite}@keyframes doc-progress-sweep{0%{transform:translate(-100%)}to{transform:translate(300%)}}@media(prefers-reduced-motion:reduce){.doc-progress__fill{transition:none}.doc-progress__fill--unknown{animation:none;width:100%;opacity:.5}}
