/* PHP adapter: utility classes used by actual statically rendered React components.
   ULMEO themes/shell declarations are in globals.css, copied from the source. */
:root{--font-geist-sans:Arial,sans-serif;--app-header-height:100px;--ink:var(--foreground)}
.flex{display:flex}.inline-flex{display:inline-flex}.block{display:block}.relative{position:relative}.absolute{position:absolute}.min-w-0{min-width:0}.w-full{width:100%}.h-5{height:20px}.w-5{width:20px}.h-7{height:28px}.w-7{width:28px}.shrink-0{flex-shrink:0}.items-center{align-items:center}.justify-center{justify-content:center}.gap-3{gap:12px}.text-accent-text{color:var(--accent-text)}.text-muted{color:var(--muted)}.text-2xl{font-size:26px}.font-semibold{font-weight:600}.border-line{border-color:var(--line)}.border{border-width:1px;border-style:solid}.border-b{border-bottom-width:1px;border-bottom-style:solid}.bg-panel{background:var(--panel)}.rounded-lg{border-radius:8px}.p-3{padding:12px}.pointer-events-none{pointer-events:none}.start-3\.5{inset-inline-start:14px}.top-1\/2{top:50%}.-translate-y-1\/2{transform:translateY(-50%)}
.fact-brand{display:flex;align-items:center;gap:14px;min-width:175px}.fact-brand strong{font-size:29px;letter-spacing:1px;color:var(--heading)}.fact-brand>span{font-size:13px;letter-spacing:2px;border-left:1px solid var(--line);padding-left:14px;color:var(--accent-text)}
.app-workspace{padding-top:32px;padding-bottom:40px}.app-nav-item svg,.sidebar-collapse svg,.module-picker-trigger svg,.profile-menu-trigger svg,.mobile-menu-trigger svg{width:20px;height:20px;flex-shrink:0}.profile-menu-panel h2{margin-bottom:20px}.toolbar .view-mode-button{display:inline-flex}.toolbar .view-mode-button[aria-pressed=true]{background:var(--accent)!important;color:var(--accent-ink)!important}.toolbar .view-mode-button[aria-pressed=false]{background:var(--panel)!important;color:var(--foreground)!important}.toolbar .view-mode-button[aria-pressed=false]{border-color:var(--line)!important}
@media(max-width:1023px){.app-navigation-layout.mobile-open>.app-sidebar{display:flex;position:fixed;left:0;top:var(--app-header-height);bottom:0;width:260px;z-index:35;box-shadow:8px 12px 30px #0002}.app-navigation-layout.mobile-open.sidebar-right>.app-sidebar{left:auto;right:0}.app-navigation-layout.mobile-open.is-compact .app-nav-label{display:block;max-width:220px;opacity:1}.app-navigation-layout.mobile-open.is-compact .app-nav-item{justify-content:flex-start;gap:12px}.cards{gap:12px}.card{padding:20px}}
@media(max-width:639px){.fact-brand{min-width:0;gap:8px}.fact-brand strong{font-size:23px}.fact-brand>span{font-size:11px;padding-left:8px}.cards{grid-template-columns:1fr}.page-heading{align-items:flex-start;flex-direction:column}.panel{padding:16px}.toolbar>.relative{max-width:100%;flex-basis:100%}.toolbar #add{margin-right:auto}.header-establishment{display:none}.app-workspace{padding-top:24px}}
@media print{.application-header,.app-sidebar,.toolbar,.notice,.page-heading,#message{display:none!important}.app-navigation-layout{display:block!important}.app-workspace{padding:0}.panel{border:0}body{background:white!important}}
[hidden]{display:none!important}
/* CGCV · FACTO mark, on its neutral white cartouche in every ULMEO theme. */
.fact-brand{min-width:175px}.fact-brand img{display:block;width:158px;height:100px;object-fit:contain;background:white;border-radius:6px}
@media(max-width:639px){.fact-brand{min-width:0}.fact-brand img{width:112px;height:71px}.modular-header-brand{gap:8px}}
/* AuthWelcome timing, stage and logo entrance are reused from ULMEO globals.css. */
.auth-page{min-height:100svh;display:grid;place-items:center;padding:36px 18px}.auth-card{width:min(480px,100%);padding:30px;background:var(--panel);border:1px solid var(--line)}.auth-logo{display:block;width:190px;height:auto;margin:0 auto 24px;background:white;border-radius:8px}.auth-card h1{font-size:24px;color:var(--heading)}.auth-card>button[type=submit]{width:100%;min-height:46px;margin-top:16px}.auth-footer{font-size:12px;text-align:center}.auth-card #auth-error{color:var(--error-text)}.auth-welcome-artwork img{display:block;height:auto}.auth-welcome-artwork{overflow:hidden}.facto-logo-glint{position:absolute;inset:-30%;background:linear-gradient(110deg,transparent 38%,#ffffffa0 48%,transparent 58%);transform:translateX(-120%);animation:facto-logo-glint 1.25s .8s ease-in-out both;pointer-events:none;mix-blend-mode:screen}#skip-intro{margin-top:24px;background:white;color:#064e61;border-color:#dce8e4;font-size:13px}@keyframes facto-logo-glint{to{transform:translateX(120%)}}@media(prefers-reduced-motion:reduce){.facto-logo-glint{display:none}}
.user-actions{display:flex;gap:8px;flex-wrap:wrap}.user-invitation{padding:16px;background:var(--positive-bg);margin-bottom:18px;border:1px solid var(--line)}.user-invitation input{width:100%}
/* Utilities required by the unchanged ULMEO FloatingListActions JSX. */
[data-floating-list-actions]{position:fixed;z-index:45;display:flex;max-width:calc(100vw - 2rem);flex-direction:column;align-items:flex-end;gap:8px;color:var(--foreground)}
[data-floating-list-actions] .floating-tools-surface{position:relative;display:flex;flex-wrap:wrap;align-items:center;justify-content:flex-end;gap:4px;padding:8px;border:1px solid var(--line);border-radius:12px;box-shadow:0 12px 32px var(--shadow)}
[data-floating-list-actions] button{width:44px;height:44px;padding:0;flex-shrink:0;display:inline-flex;align-items:center;justify-content:center;background:var(--panel);color:var(--accent-text);border:1px solid var(--line);border-radius:8px}
[data-floating-list-actions] svg{width:20px;height:20px}
[data-floating-list-actions] .w-80{width:320px;max-width:calc(100vw - 2rem);border-radius:12px;border:1px solid var(--line);background:var(--panel);padding:12px;box-shadow:0 12px 32px var(--shadow)}
[data-floating-list-actions] .text-xs{font-size:12px}[data-floating-list-actions] .text-sm{font-size:14px}[data-floating-list-actions] .mt-2{margin-top:8px}[data-floating-list-actions] .w-px{width:1px}[data-floating-list-actions] .mx-1{margin-inline:4px}[data-floating-list-actions] .bg-line{background:var(--line)}
.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}
@media print{[data-floating-list-actions]{display:none!important}}
.facto-letter-sparks{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;overflow:visible}.facto-letter-trail{fill:none;stroke:#fff0ba;stroke-width:5;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:1000;stroke-dashoffset:1000;opacity:0;filter:drop-shadow(0 0 5px #ff9f00);animation:facto-trace-letter .65s var(--letter-start) linear both}.auth-welcome-slogan{animation-delay:3.6s}@keyframes facto-trace-letter{0%{stroke-dashoffset:1000;opacity:0}5%{opacity:1}85%{opacity:1}100%{stroke-dashoffset:0;opacity:0}}@media(prefers-reduced-motion:reduce){.facto-letter-sparks{display:none}.auth-welcome-slogan{animation:none}}
/* The spark writes along glyph strokes rather than outlining their edges. */
.facto-letter-trail{stroke-width:9;stroke:#fff4cf;filter:drop-shadow(0 0 7px #ffac1b)}
/* Only the emblem is initially visible. The mask reveals original lettering as written. */
.facto-writing-logo{display:block;width:100%;height:auto;overflow:visible}.facto-welcome-static{display:none!important}.auth-welcome-slogan{animation-delay:1.4s}.auth-welcome-emblem{animation-duration:.45s}@media(prefers-reduced-motion:reduce){.facto-writing-logo{display:none}.facto-welcome-static{display:block!important;width:100%;height:auto}.auth-welcome-slogan{animation:none}}
.contact-types{border:1px solid var(--line);border-radius:8px;padding:12px 14px;margin:0 0 20px}.contact-types legend{padding:0 5px;font-size:14px;color:var(--heading)}.contact-type-options{display:flex;flex-wrap:wrap;gap:12px 22px}.contact-type-options label{display:inline-flex;align-items:center;gap:8px;margin:4px 0;cursor:pointer}.contact-type-options input[type=radio]{width:18px;height:18px;margin:0;accent-color:var(--accent);flex-shrink:0}
#profile-display-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:180px}
.record-icon{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;flex:0 0 28px;border-radius:8px;color:var(--muted);vertical-align:middle}.record-icon svg{width:20px;height:20px}.contact-name{display:inline-flex;align-items:center;gap:8px}.document-draft{color:#63758a;background:#eef2f7}.document-validated{color:#177149;background:#e8f5ee}.document-overdue{color:#a55b08;background:#fff1db}.contact-kind{color:var(--accent)}

.record-actions{display:flex;align-items:center;gap:6px;flex-wrap:nowrap}.record-action{display:inline-flex;align-items:center;justify-content:center;flex:0 0 34px;width:34px;height:34px;padding:7px!important;border-radius:8px}.record-action svg{width:19px;height:19px;pointer-events:none}.record-action:focus-visible{outline:2px solid var(--accent);outline-offset:2px}

.record-actions{gap:4px;width:max-content}.record-action{width:32px;height:32px;flex-basis:32px}.clarea-table td:last-child{white-space:nowrap}

.record-actions:has([data-followup]){display:grid;grid-template-columns:repeat(2,32px);width:max-content}

.document-declined{color:#a14a46;background:#fbeeed}.document-pending{color:#26669e;background:#ecf3fc}
