:root{color-scheme:light;--font-sans: "Inter", ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;--font-mono: ui-monospace, "SF Mono", "JetBrains Mono", "Fira Code", Menlo, Consolas, monospace;--bg: #eef1f6;--bg-accent: #e6ebf3;--surface: #ffffff;--surface-2: #f7f9fc;--surface-inset: #ffffff;--text: #0f172a;--text-muted: #5b6675;--text-subtle: #8a95a5;--border: #e3e8ef;--border-strong: #cfd6e0;--brand: #2563eb;--brand-text: #1d4ed8;--brand-bg: #2563eb;--brand-bg-hover: #1d4ed8;--brand-soft: #eaf1ff;--brand-soft-border: #c7dbff;--ok: #15803d;--ok-soft: #e7f6ec;--ok-border: #bbe3c6;--warn: #b45309;--warn-soft: #fdf1e1;--warn-border: #f0d6a8;--danger: #dc2626;--danger-hover: #b91c1c;--danger-soft: #fdecec;--danger-border: #f4c7c7;--ring: rgba(37, 99, 235, .35);--shadow-sm: 0 1px 2px rgba(15, 23, 42, .06), 0 1px 1px rgba(15, 23, 42, .04);--shadow-md: 0 4px 14px -4px rgba(15, 23, 42, .12), 0 2px 6px -2px rgba(15, 23, 42, .07);--shadow-lg: 0 16px 40px -12px rgba(15, 23, 42, .22);--r-sm: 8px;--r-md: 10px;--r-lg: 14px;--r-full: 999px;--t-fast: .12s ease;--t: .18s ease;--topbar-h: 72px}:root[data-theme=dark]{color-scheme:dark;--bg: #0a0f1a;--bg-accent: #0d1424;--surface: #111a2b;--surface-2: #172234;--surface-inset: #0e1626;--text: #e8eef7;--text-muted: #9aa7ba;--text-subtle: #6b7789;--border: #24304a;--border-strong: #34425e;--brand: #3b82f6;--brand-text: #7cb0ff;--brand-bg: #2563eb;--brand-bg-hover: #3b82f6;--brand-soft: rgba(59, 130, 246, .16);--brand-soft-border: rgba(96, 165, 250, .4);--ok: #4ade80;--ok-soft: rgba(34, 197, 94, .15);--ok-border: rgba(74, 222, 128, .35);--warn: #fbbf24;--warn-soft: rgba(245, 158, 11, .15);--warn-border: rgba(251, 191, 36, .35);--danger: #f87171;--danger-hover: #ef4444;--danger-soft: rgba(239, 68, 68, .15);--danger-border: rgba(248, 113, 113, .35);--ring: rgba(96, 165, 250, .4);--shadow-sm: 0 1px 2px rgba(0, 0, 0, .4);--shadow-md: 0 6px 20px -6px rgba(0, 0, 0, .55);--shadow-lg: 0 18px 44px -12px rgba(0, 0, 0, .65)}@media(prefers-color-scheme:dark){:root:not([data-theme=light]){color-scheme:dark;--bg: #0a0f1a;--bg-accent: #0d1424;--surface: #111a2b;--surface-2: #172234;--surface-inset: #0e1626;--text: #e8eef7;--text-muted: #9aa7ba;--text-subtle: #6b7789;--border: #24304a;--border-strong: #34425e;--brand: #3b82f6;--brand-text: #7cb0ff;--brand-bg: #2563eb;--brand-bg-hover: #3b82f6;--brand-soft: rgba(59, 130, 246, .16);--brand-soft-border: rgba(96, 165, 250, .4);--ok: #4ade80;--ok-soft: rgba(34, 197, 94, .15);--ok-border: rgba(74, 222, 128, .35);--warn: #fbbf24;--warn-soft: rgba(245, 158, 11, .15);--warn-border: rgba(251, 191, 36, .35);--danger: #f87171;--danger-hover: #ef4444;--danger-soft: rgba(239, 68, 68, .15);--danger-border: rgba(248, 113, 113, .35);--ring: rgba(96, 165, 250, .4);--shadow-sm: 0 1px 2px rgba(0, 0, 0, .4);--shadow-md: 0 6px 20px -6px rgba(0, 0, 0, .55);--shadow-lg: 0 18px 44px -12px rgba(0, 0, 0, .65)}}*{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{margin:0;min-height:100dvh;background:radial-gradient(1200px 480px at 15% -10%,var(--bg-accent),transparent 60%),var(--bg);color:var(--text);font-family:var(--font-sans);font-size:15px;line-height:1.5;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}button,input,select,textarea{font:inherit;color:inherit}button{border:1px solid transparent;background:none;cursor:pointer}::selection{background:var(--brand-soft)}.app-shell{width:min(1320px,calc(100vw - 40px));margin:0 auto;padding:20px 0 56px}.topbar{position:sticky;top:0;z-index:40;display:flex;align-items:center;gap:16px;padding:14px 0;margin-bottom:18px;background:color-mix(in srgb,var(--bg) 82%,transparent);backdrop-filter:saturate(1.4) blur(10px);-webkit-backdrop-filter:saturate(1.4) blur(10px)}.brand{display:flex;align-items:center;gap:12px;min-width:0}.brand-mark{display:grid;place-items:center;width:42px;height:42px;flex-shrink:0;border-radius:12px;color:#fff;background:linear-gradient(140deg,#3b82f6,#1d4ed8);box-shadow:var(--shadow-sm),inset 0 1px #ffffff40}.brand-text h1{margin:0;font-size:19px;font-weight:650;letter-spacing:-.01em;line-height:1.15}.brand-text p{margin:2px 0 0;font-size:13px;color:var(--text-muted)}.topbar-actions{margin-left:auto;display:flex;align-items:center;gap:10px}.count-pill{display:inline-flex;align-items:center;gap:6px;height:32px;padding:0 12px;border-radius:var(--r-full);background:var(--surface);border:1px solid var(--border);color:var(--text-muted);font-size:13px;font-variant-numeric:tabular-nums;box-shadow:var(--shadow-sm)}.count-pill strong{color:var(--text);font-weight:650}.workspace{display:grid;grid-template-columns:minmax(320px,400px) 1fr;gap:16px;align-items:start}.list-panel,.detail-panel{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-lg);box-shadow:var(--shadow-sm)}.list-panel{position:sticky;top:calc(var(--topbar-h) + 8px);max-height:calc(100dvh - var(--topbar-h) - 24px);display:flex;flex-direction:column;padding:12px;overflow:hidden}.detail-panel{padding:22px}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;height:40px;padding:0 16px;border-radius:var(--r-md);font-size:14px;font-weight:550;white-space:nowrap;transition:background var(--t),border-color var(--t),color var(--t),box-shadow var(--t),transform var(--t-fast)}.btn:active{transform:translateY(1px)}.btn:focus-visible{outline:none;box-shadow:0 0 0 3px var(--ring)}.primary{color:#fff;background:var(--brand-bg);box-shadow:var(--shadow-sm),inset 0 1px #ffffff2e}.primary:hover{background:var(--brand-bg-hover)}.primary:focus-visible{box-shadow:0 0 0 3px var(--ring),var(--shadow-sm)}.ghost{color:var(--text);background:var(--surface);border-color:var(--border-strong)}.ghost:hover{background:var(--surface-2);border-color:var(--brand-soft-border)}.danger{color:var(--danger);background:transparent;border-color:var(--danger-border)}.danger:hover{background:var(--danger-soft);border-color:var(--danger)}button:disabled{cursor:not-allowed;opacity:.5}.btn:disabled:active{transform:none}.icon-btn{display:inline-grid;place-items:center;width:36px;height:36px;border-radius:var(--r-md);color:var(--text-muted);background:var(--surface);border:1px solid var(--border);transition:background var(--t),color var(--t),border-color var(--t)}.icon-btn:hover{background:var(--surface-2);color:var(--text);border-color:var(--border-strong)}.icon-btn:focus-visible{outline:none;box-shadow:0 0 0 3px var(--ring)}.remove-btn{display:inline-grid;place-items:center;width:30px;height:30px;flex-shrink:0;border-radius:8px;color:var(--text-subtle);background:transparent;border:1px solid transparent;transition:background var(--t),color var(--t),border-color var(--t)}.remove-btn:hover{color:var(--danger);background:var(--danger-soft);border-color:var(--danger-border)}.remove-btn:focus-visible{outline:none;box-shadow:0 0 0 3px var(--ring)}.theme-toggle .icon-sun{display:none}:root[data-theme=dark] .theme-toggle .icon-sun{display:block}:root[data-theme=dark] .theme-toggle .icon-moon{display:none}@media(prefers-color-scheme:dark){:root:not([data-theme=light]) .theme-toggle .icon-sun{display:block}:root:not([data-theme=light]) .theme-toggle .icon-moon{display:none}}.search-box{display:flex;align-items:center;gap:8px;padding:0 12px;height:42px;flex-shrink:0;border:1px solid var(--border);border-radius:var(--r-md);background:var(--surface-inset);color:var(--text-muted);transition:border-color var(--t),box-shadow var(--t);margin-bottom:10px}.search-box:focus-within{border-color:var(--brand);box-shadow:0 0 0 3px var(--ring);color:var(--text)}.search-box svg{flex-shrink:0}.search-box input{width:100%;border:0;outline:0;background:transparent;color:var(--text)}.search-box input::placeholder{color:var(--text-subtle)}.site-list{display:grid;align-content:start;gap:8px;overflow-y:auto;padding:2px 4px 4px 2px;margin:0 -2px;scrollbar-width:thin}.site-list::-webkit-scrollbar{width:8px}.site-list::-webkit-scrollbar-thumb{background:var(--border-strong);border-radius:var(--r-full)}.site-row{display:flex;align-items:flex-start;gap:12px;border:1px solid var(--border);border-radius:var(--r-md);padding:12px;background:var(--surface);transition:border-color var(--t),background var(--t),box-shadow var(--t),transform var(--t-fast)}.site-row:hover{border-color:var(--brand-soft-border);background:var(--surface-2);box-shadow:var(--shadow-sm)}.site-row:focus-visible{outline:none;border-color:var(--brand);box-shadow:0 0 0 3px var(--ring)}.site-row.selected{border-color:var(--brand);background:var(--brand-soft);box-shadow:inset 3px 0 0 var(--brand),var(--shadow-sm)}.site-avatar{display:grid;place-items:center;width:38px;height:38px;flex-shrink:0;border-radius:10px;color:var(--brand-text);background:var(--brand-soft);border:1px solid var(--brand-soft-border)}.site-body{min-width:0;flex:1;display:grid;gap:8px}.site-row h2{margin:0;font-family:var(--font-mono);font-size:14.5px;font-weight:600;letter-spacing:-.01em;color:var(--text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.chips{display:flex;flex-wrap:wrap;gap:5px}.chip{display:inline-flex;align-items:center;gap:4px;max-width:100%;padding:2px 8px;border-radius:var(--r-full);background:var(--surface-2);border:1px solid var(--border);color:var(--text-muted);font-size:12px;line-height:1.5;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.chip b{color:var(--text);font-weight:600}.chip.more{color:var(--text-subtle)}.status-badge{display:inline-flex;align-items:center;gap:6px;align-self:flex-start;padding:3px 9px 3px 8px;border-radius:var(--r-full);border:1px solid var(--border);background:var(--surface-2);color:var(--text-muted);font-size:12px;white-space:nowrap}.status-badge .dot{width:7px;height:7px;border-radius:50%;background:var(--text-subtle);flex-shrink:0}.status-badge.warn{color:var(--warn);background:var(--warn-soft);border-color:var(--warn-border)}.status-badge.warn .dot{background:var(--warn)}.status-badge.ok{color:var(--ok);background:var(--ok-soft);border-color:var(--ok-border)}.status-badge.ok .dot{background:var(--ok)}.skeleton-row{display:flex;gap:12px;padding:12px;border:1px solid var(--border);border-radius:var(--r-md)}.sk{border-radius:8px;background:linear-gradient(90deg,var(--surface-2) 25%,var(--border) 37%,var(--surface-2) 63%);background-size:400% 100%;animation:shimmer 1.4s ease infinite}.sk-avatar{width:38px;height:38px;flex-shrink:0;border-radius:10px}.sk-lines{flex:1;display:grid;gap:8px;align-content:start}.sk-line{height:12px}@keyframes shimmer{0%{background-position:100% 0}to{background-position:0 0}}.empty-state{display:grid;justify-items:center;text-align:center;gap:8px;padding:34px 16px;color:var(--text-muted)}.empty-state .empty-icon{display:grid;place-items:center;width:46px;height:46px;border-radius:12px;color:var(--text-subtle);background:var(--surface-2);border:1px solid var(--border)}.empty-state p{margin:0;font-size:14px}.empty-state .hint{font-size:12.5px;color:var(--text-subtle)}.detail-head{display:flex;align-items:center;gap:12px;margin-bottom:18px}.form-title{margin:0;font-size:17px;font-weight:650;letter-spacing:-.01em}.detail-head .visit-link{margin-left:auto;display:inline-flex;align-items:center;gap:6px;height:32px;padding:0 12px;border-radius:var(--r-md);font-size:13px;color:var(--brand-text);border:1px solid var(--brand-soft-border);background:var(--brand-soft);text-decoration:none;transition:background var(--t),border-color var(--t)}.detail-head .visit-link:hover{border-color:var(--brand)}.detail-head .visit-link[hidden]{display:none}.site-form{display:grid;gap:18px}.field{display:grid;gap:6px}.field-label{font-size:12.5px;font-weight:600;color:var(--text-muted)}.input-affix{display:flex;align-items:center;gap:8px;padding:0 12px;height:44px;border:1px solid var(--border);border-radius:var(--r-md);background:var(--surface-inset);color:var(--text-subtle);transition:border-color var(--t),box-shadow var(--t)}.input-affix:focus-within{border-color:var(--brand);box-shadow:0 0 0 3px var(--ring);color:var(--brand-text)}.input-affix input{width:100%;border:0;outline:0;background:transparent;color:var(--text);font-family:var(--font-mono);font-size:14px}.input-affix input::placeholder{color:var(--text-subtle);font-family:var(--font-sans)}.properties-editor{display:grid;gap:10px}.properties-head{display:flex;align-items:center;justify-content:space-between;gap:8px}.properties-head .section-label{font-size:12.5px;font-weight:600;color:var(--text-muted)}.properties-list{display:grid;gap:8px}.property-row{display:grid;grid-template-columns:minmax(0,.85fr) minmax(0,1.15fr) auto;gap:8px;align-items:center}.property-row input{width:100%;min-width:0;border:1px solid var(--border);border-radius:var(--r-sm);height:40px;padding:0 12px;background:var(--surface-inset);color:var(--text);transition:border-color var(--t),box-shadow var(--t)}.property-row input:focus-visible{outline:none;border-color:var(--brand);box-shadow:0 0 0 3px var(--ring)}.property-key{font-weight:600;color:var(--text-muted)}.property-value{font-family:var(--font-mono);font-size:13.5px}.add-property-button{display:inline-flex;align-items:center;gap:8px;justify-content:center;height:40px;border:1px dashed var(--border-strong);border-radius:var(--r-md);color:var(--text-muted);background:transparent;font-weight:550;transition:border-color var(--t),color var(--t),background var(--t)}.add-property-button:hover{border-color:var(--brand);color:var(--brand-text);background:var(--brand-soft)}.add-property-button:focus-visible{outline:none;box-shadow:0 0 0 3px var(--ring)}.form-actions{display:flex;align-items:center;justify-content:space-between;gap:12px;padding-top:4px}.action-buttons{display:flex;gap:8px}.form-status,.site-status{margin:0;min-height:18px;color:var(--text-muted);font-size:13px}.form-status.error,.site-status.error{color:var(--danger);font-weight:550}.spinner{width:15px;height:15px;border-radius:50%;border:2px solid rgba(255,255,255,.4);border-top-color:#fff;animation:spin .7s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.tasks-section,.notes-section{margin-top:24px;border-top:1px solid var(--border);padding-top:18px}.section-title{display:flex;align-items:center;gap:8px;margin:0 0 12px;font-size:14px;font-weight:650}.section-title svg{color:var(--text-muted)}.section-title .count{margin-left:auto;font-size:12px;font-weight:550;color:var(--text-subtle);font-variant-numeric:tabular-nums}.task-list,.note-list{list-style:none;margin:0 0 12px;padding:0;display:grid;gap:8px}.task-row{display:flex;align-items:center;gap:10px;border:1px solid var(--border);border-radius:var(--r-md);padding:8px 10px;background:var(--surface);transition:border-color var(--t),background var(--t)}.task-row:hover{border-color:var(--border-strong);background:var(--surface-2)}.task-toggle{display:inline-flex;align-items:center;gap:6px;padding:4px 10px 4px 8px;border-radius:var(--r-full);border:1px solid var(--border);background:var(--surface-2);font-size:12px;font-weight:550;white-space:nowrap;transition:background var(--t),color var(--t),border-color var(--t)}.task-toggle:focus-visible{outline:none;box-shadow:0 0 0 3px var(--ring)}.task-toggle[data-status=valide]{border-color:var(--ok-border);color:var(--ok);background:var(--ok-soft)}.task-toggle[data-status=en_cours]{border-color:var(--warn-border);color:var(--warn);background:var(--warn-soft)}.task-title{flex:1;min-width:0;font-size:14px;overflow:hidden;text-overflow:ellipsis}.task-title.done{text-decoration:line-through;color:var(--text-subtle)}.note-row{display:grid;grid-template-columns:1fr auto;align-items:start;gap:8px 12px;border:1px solid var(--border);border-radius:var(--r-md);padding:10px 12px;background:var(--surface);transition:border-color var(--t),background var(--t)}.note-row:hover{border-color:var(--border-strong);background:var(--surface-2)}.note-row time{grid-column:1 / -1;display:inline-flex;align-items:center;gap:6px;color:var(--text-subtle);font-size:12px;font-variant-numeric:tabular-nums}.note-row p{grid-column:1 / 2;margin:0;font-size:14px;white-space:pre-wrap;word-break:break-word}.note-row .remove-btn{grid-column:2 / 3;grid-row:2}.task-form{display:flex;align-items:center;gap:8px}.task-form input{flex:1;min-width:0;height:42px;padding:0 12px;border:1px solid var(--border);border-radius:var(--r-md);background:var(--surface-inset);color:var(--text);transition:border-color var(--t),box-shadow var(--t)}.task-form input:focus-visible{outline:none;border-color:var(--brand);box-shadow:0 0 0 3px var(--ring)}.note-form{display:grid;gap:8px}.note-form textarea{width:100%;padding:10px 12px;border:1px solid var(--border);border-radius:var(--r-md);background:var(--surface-inset);color:var(--text);resize:vertical;min-height:72px;transition:border-color var(--t),box-shadow var(--t)}.note-form textarea:focus-visible{outline:none;border-color:var(--brand);box-shadow:0 0 0 3px var(--ring)}.note-form button{justify-self:start}.empty-row{color:var(--text-muted);font-size:13.5px;padding:6px 2px}@media(max-width:900px){.app-shell{width:min(1320px,calc(100vw - 24px))}.workspace{grid-template-columns:1fr}.list-panel{position:static;max-height:none;overflow:visible}.site-list{overflow:visible}.brand-text p{display:none}.detail-panel{padding:18px}}@media(max-width:560px){.topbar{gap:10px}.topbar-actions{gap:8px}.count-pill{display:none}.brand-text h1{white-space:nowrap}.new-site-button{padding:0 12px}.property-row{grid-template-columns:1fr auto}.property-row .property-value{grid-column:1 / -1}.form-actions{flex-direction:column-reverse;align-items:stretch}.form-actions .action-buttons{justify-content:flex-end}}@media(prefers-reduced-motion:reduce){*{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important}}
