:root{--bg:#f3f5f8;--panel:#fff;--panel2:#f8fafc;--text:#17202b;--muted:#70798a;--line:#e3e7ee;--accent:#334155;--accent2:#111827;--ok:#dff6e7;--warn:#fff2cc;--danger:#fee2e2;--shadow:0 6px 24px rgba(15,23,42,.06);--radius:18px;--sidebar:230px}
[data-theme="dark"]{--bg:#11151c;--panel:#181e27;--panel2:#202733;--text:#edf2f7;--muted:#9ba6b5;--line:#2b3441;--accent:#cbd5e1;--accent2:#f8fafc;--ok:#173b2a;--warn:#44391d;--danger:#4a2427;--shadow:0 8px 30px rgba(0,0,0,.22)}
*{box-sizing:border-box}html{min-height:100%}body{margin:0;min-height:100vh;font-family:Inter,ui-sans-serif,system-ui,-apple-system,"Segoe UI",sans-serif;background:var(--bg);color:var(--text)}a{color:inherit}.app-shell{min-height:100vh;display:grid;grid-template-columns:var(--sidebar) 1fr}.sidebar{position:sticky;top:0;height:100vh;background:#111827;color:#e5e7eb;border-right:1px solid rgba(255,255,255,.06);padding:18px 14px;display:flex;flex-direction:column;gap:18px}.brand-wrap{display:flex;align-items:center;gap:10px;padding:5px 8px}.brand-mark{width:34px;height:34px;border-radius:10px;display:block;object-fit:cover;flex:0 0 auto}.brand{font-weight:900;letter-spacing:.13em;text-decoration:none}.sidebar nav{display:grid;gap:5px}.sidebar nav a{display:flex;align-items:center;gap:10px;padding:10px 11px;border-radius:10px;color:#cfd6df;text-decoration:none;font-size:14px}.sidebar nav a:hover,.sidebar nav a.active{background:rgba(255,255,255,.09);color:#fff}.sidebar-spacer{flex:1}.plan-chip{margin:0 7px;padding:9px 10px;border:1px solid rgba(255,255,255,.13);border-radius:12px;font-size:12px;color:#cfd6df}.content-shell{min-width:0}.topbar{position:sticky;top:0;z-index:15;height:64px;background:color-mix(in srgb,var(--panel) 92%, transparent);backdrop-filter:blur(12px);border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:0 22px;gap:14px}.top-left,.top-right{display:flex;align-items:center;gap:10px}.back-btn,.icon-btn{border:1px solid var(--line);background:var(--panel);color:var(--text);border-radius:10px;padding:8px 10px;text-decoration:none;cursor:pointer}.page-title{font-weight:750;font-size:15px}.user-box{display:flex;align-items:center;gap:9px;padding:6px 9px;border-radius:12px;background:var(--panel2);border:1px solid var(--line)}.avatar{width:30px;height:30px;border-radius:50%;display:grid;place-items:center;background:var(--accent2);color:var(--panel);font-size:12px;font-weight:800}.user-meta{line-height:1.15}.user-name{font-size:13px;font-weight:700}.user-role{font-size:11px;color:var(--muted)}main{max-width:1320px;margin:0 auto;padding:22px}.page-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:18px}.page-head h1,.toolbar h1{margin:0;font-size:26px;letter-spacing:-.025em}.page-sub{color:var(--muted);font-size:13px;margin-top:5px}footer{color:var(--muted);font-size:11px;padding:18px 22px 28px;text-align:right}.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:14px}.kpi-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-bottom:18px}.card{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:17px;box-shadow:var(--shadow)}.card.compact{padding:14px}.card h2,.card h3{margin:0 0 12px}.bento-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:12px}.bento-title{font-weight:750}.collapse-btn{border:0;background:transparent;color:var(--muted);padding:4px 6px;cursor:pointer}.bento.collapsed .bento-body{display:none}.bento.collapsed .bento-head{margin-bottom:0}.kpi{font-size:12px;color:var(--muted)}.kpi strong{display:block;font-size:29px;line-height:1.1;color:var(--text);margin-top:7px}.big{font-size:32px;font-weight:800}.muted{color:var(--muted)}.badge{display:inline-flex;align-items:center;padding:4px 8px;border-radius:999px;background:var(--panel2);border:1px solid var(--line);font-size:11px}.urgent{background:var(--danger)}.high{background:#ffedd5;color:#7c2d12}.done{background:var(--ok)}.waiting{background:var(--warn)}.btn,button{display:inline-flex;align-items:center;justify-content:center;gap:7px;border:0;border-radius:10px;background:var(--accent2);color:var(--panel);padding:10px 14px;text-decoration:none;cursor:pointer;font-weight:650}.btn.secondary,button.secondary{background:var(--panel2);color:var(--text);border:1px solid var(--line)}.btn.danger,button.danger{background:#b91c1c;color:white}.btn.small,button.small{padding:7px 9px;font-size:12px}form{display:grid;gap:12px}label{font-weight:650;font-size:12px;color:var(--text)}input,select,textarea{width:100%;padding:10px 11px;border:1px solid var(--line);border-radius:10px;background:var(--panel);color:var(--text);outline:none}input:focus,select:focus,textarea:focus{border-color:#94a3b8;box-shadow:0 0 0 3px rgba(148,163,184,.15)}textarea{min-height:110px}.row{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.toolbar{display:flex;gap:10px;justify-content:space-between;align-items:center;flex-wrap:wrap;margin-bottom:16px}.table-wrap{overflow:auto;border:1px solid var(--line);border-radius:15px;background:var(--panel)}table{width:100%;border-collapse:collapse;background:var(--panel)}th,td{padding:11px 12px;border-bottom:1px solid var(--line);text-align:left;font-size:13px;white-space:nowrap}th{background:var(--panel2);font-size:11px;text-transform:uppercase;letter-spacing:.04em;color:var(--muted)}tr:last-child td{border-bottom:0}.flash{padding:12px 14px;border-radius:11px;margin-bottom:14px;border:1px solid var(--line)}.flash.ok{background:var(--ok)}.flash.err{background:var(--danger)}.timeline{border-left:2px solid var(--line);margin-left:8px;padding-left:18px}.event{margin:0 0 15px}.photos{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:10px}.photos img{width:100%;height:120px;object-fit:cover;border-radius:11px;border:1px solid var(--line)}.login-page{min-height:100vh;display:grid;place-items:center;padding:24px;background:radial-gradient(circle at top left,#e2e8f0,transparent 35%),var(--bg)}[data-theme="dark"] .login-page{background:radial-gradient(circle at top left,#263246,transparent 35%),var(--bg)}.login{width:min(430px,100%)}.login-brand{display:flex;align-items:center;justify-content:center;gap:10px;margin-bottom:16px}.login-brand .brand-mark{width:42px;height:42px;border-radius:12px}.filterbar{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin:0 0 14px}.pill{display:inline-flex;align-items:center;border:1px solid var(--line);background:var(--panel);border-radius:999px;padding:7px 10px;font-size:12px;color:var(--muted)}hr{border:0;border-top:1px solid var(--line);margin:18px 0}.mobile-nav-btn{display:none}
@media(max-width:1000px){.kpi-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.app-shell{grid-template-columns:78px 1fr}.sidebar{padding:18px 10px}.brand span,.sidebar nav a span,.plan-chip{display:none}.sidebar nav a{justify-content:center;font-size:18px}.brand-wrap{justify-content:center}}
@media(max-width:700px){.app-shell{display:block}.sidebar{position:fixed;left:0;right:0;bottom:0;top:auto;width:auto;height:64px;z-index:20;flex-direction:row;padding:7px 8px;border-right:0;border-top:1px solid rgba(255,255,255,.08)}.brand-wrap,.sidebar-spacer,.plan-chip{display:none}.sidebar nav{display:grid;grid-auto-flow:column;grid-auto-columns:1fr;width:100%;gap:4px}.sidebar nav a{padding:7px 4px;justify-content:center;font-size:11px;flex-direction:column;gap:2px}.sidebar nav a span{display:block;font-size:10px}.sidebar nav a:nth-child(n+6){display:none}.topbar{height:58px;padding:0 12px}.page-title{display:none}.user-role{display:none}.user-box{padding:5px}.user-name{max-width:105px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.kpi-grid{grid-template-columns:1fr 1fr}.row{grid-template-columns:1fr}main{padding:14px 12px 88px}.page-head,.toolbar{align-items:stretch;flex-direction:column}.toolbar>.btn,.page-head>.btn{width:100%}.grid{grid-template-columns:1fr}.card{border-radius:15px}.table-wrap{margin:0 -2px}footer{padding-bottom:82px;text-align:center}}
/* v0.1.5-op — accès admin garanti et Turnstile résilient */
.eyebrow{font-size:11px;font-weight:800;letter-spacing:.12em;text-transform:uppercase;color:#7aaeff;margin-bottom:6px}.big-title{font-size:28px}.admin-entry{margin-top:18px;padding-top:14px;border-top:1px solid var(--line);text-align:center}.admin-entry a{font-size:11px;color:var(--muted);text-decoration:none}.admin-entry a:hover{color:var(--text);text-decoration:underline}.wide-login{width:min(620px,calc(100vw - 32px))}.checkline{display:flex;gap:9px;align-items:flex-start;font-weight:500;line-height:1.4}.checkline input{width:auto;margin-top:3px}.super-login-page{background:radial-gradient(circle at top left,#1d2b42,transparent 38%),#0d1118}.setting-row{display:flex;align-items:center;justify-content:space-between;gap:18px;padding:12px 0;border-bottom:1px solid var(--line)}.setting-row:last-of-type{margin-bottom:14px}.setting-row form{display:block}.status-chip{display:inline-flex;align-items:center;border:1px solid var(--line);border-radius:999px;padding:8px 12px;font-size:12px;font-weight:800;color:var(--muted);white-space:nowrap}.status-chip.ok{color:#58e0b2;border-color:rgba(88,224,178,.35);background:rgba(31,126,96,.14)}.status-chip.bad{color:#fca5a5;border-color:rgba(252,165,165,.35);background:rgba(127,29,29,.16)}.mail-card{margin-top:14px}.mail-card .bento-head{padding-bottom:15px;border-bottom:1px solid var(--line)}.field-help{display:block;margin-top:6px;color:var(--muted);font-size:11px;font-weight:400}.diagnostic{margin-top:16px;padding:12px 14px;border-radius:12px;background:var(--panel2);border:1px solid var(--line);font-size:12px;line-height:1.7}button:disabled,input:disabled{opacity:.55;cursor:not-allowed}code{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.9em;background:var(--panel2);border:1px solid var(--line);border-radius:6px;padding:2px 5px}
@media(max-width:700px){.setting-row{align-items:stretch;flex-direction:column}.setting-row form,.setting-row button{width:100%}.wide-login{width:100%}.mail-card .bento-head{align-items:flex-start}.status-chip{align-self:flex-start}}

/* v0.1.5-op — lien plateforme toujours visible sur les écrans publics */
.public-admin-entry{margin:14px auto 0;text-align:center;min-height:24px}.public-admin-entry a{display:inline-block;padding:7px 10px;font-size:11px;color:var(--muted);text-decoration:none;border-radius:8px}.public-admin-entry a:hover,.public-admin-entry a:focus{color:var(--text);background:var(--panel2);outline:none}.super-login-page .public-admin-entry a{color:#9ba6b5}
/* v0.1.7-op */
.password-wrap{position:relative;display:block}.password-wrap input{padding-right:44px}.password-eye{position:absolute;right:5px;top:50%;transform:translateY(-50%);width:34px;height:34px;padding:0;background:transparent;color:var(--muted);border:0}.lang-switch{display:inline-flex;gap:3px;padding:3px;border:1px solid var(--line);background:var(--panel);border-radius:9px}.lang-switch a{font-size:10px;text-decoration:none;color:var(--muted);padding:4px 5px;border-radius:6px}.lang-switch a.active{background:var(--accent2);color:var(--panel)}.public-lang{text-align:right;margin-bottom:8px}.action-row{display:flex;gap:6px;flex-wrap:wrap}.form-actions{display:flex;gap:8px;flex-wrap:wrap}.danger-zone{border-color:#fecaca}.doc-preview{background:white;color:#18202b;border:1px solid #d9dee6;border-radius:12px;padding:20px}.address-line{white-space:normal;min-width:170px}.status-dot{display:inline-block;width:8px;height:8px;border-radius:50%;margin-right:5px;background:#94a3b8}.status-dot.on{background:#22c55e}.template-help{font-size:11px;color:var(--muted);line-height:1.6}.template-help code{margin-right:4px}.warning-inline{padding:9px 11px;border-radius:9px;background:var(--warn);font-size:12px}
@media print{.sidebar,.topbar,footer,.no-print{display:none!important}.app-shell{display:block}main{padding:0}.card{box-shadow:none;border:0}}
.public-version{text-align:center;margin-top:10px;font-size:10px;color:var(--muted)}
/* v0.1.8-op — dashboard aging + work-order templates */
.age-legend{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin:0 0 12px;font-size:11px;color:var(--muted)}
.legend{display:inline-flex;align-items:center;border:1px solid var(--line);border-radius:999px;padding:5px 8px}.legend.warning{background:#fff7d6;color:#7a5b00;border-color:#f2d87b}.legend.critical{background:#fee2e2;color:#991b1b;border-color:#fecaca}
[data-theme="dark"] .legend.warning{background:#4d3b12;color:#fde68a;border-color:#70591c}[data-theme="dark"] .legend.critical{background:#512121;color:#fecaca;border-color:#7f2d2d}
tr.age-warning td{background:rgba(245,158,11,.10)}tr.age-critical td{background:rgba(220,38,38,.11)}tr.age-critical td:first-child{box-shadow:inset 4px 0 0 #dc2626}tr.age-warning td:first-child{box-shadow:inset 4px 0 0 #f59e0b}
.template-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;margin-top:14px}.template-lang textarea{min-height:120px}.brand-preview{display:flex;align-items:center;justify-content:center;min-height:120px;border:1px dashed var(--line);border-radius:12px;background:var(--panel2);margin-bottom:12px;padding:12px}.brand-preview img{max-width:100%;max-height:120px;object-fit:contain}.watermark-preview img{opacity:.18}.sticky-actions{position:sticky;bottom:12px;z-index:5;display:flex;justify-content:flex-end;margin-top:16px;padding:10px;background:color-mix(in srgb,var(--panel) 92%,transparent);border:1px solid var(--line);border-radius:13px;backdrop-filter:blur(6px)}
@media(max-width:900px){.template-grid{grid-template-columns:1fr}}

.public-trust{margin-top:14px;text-align:center;font-size:.84rem;color:var(--muted)}

/* v0.1.9-op — Swiss hosting trust mark */
.public-trust,.swiss-hosting-inline{display:inline-flex;align-items:center;justify-content:center;gap:6px}.public-trust{display:flex}.swiss-hosting-icon{position:relative;display:inline-flex;width:16px;height:16px;min-width:16px;border-radius:4px;background:#e21d2f;vertical-align:middle;box-shadow:inset 0 0 0 1px rgba(255,255,255,.18)}.swiss-hosting-icon:before,.swiss-hosting-icon:after{content:"";position:absolute;left:50%;top:50%;background:#fff;border-radius:.5px;transform:translate(-50%,-50%)}.swiss-hosting-icon:before{width:9px;height:3px}.swiss-hosting-icon:after{width:3px;height:9px}
