:root{--bg-canvas: #f3f3f0;--bg-surface: #ffffff;--bg-elevated: #f8f8f6;--bg-sunken: #e9e9e4;--bg-inverted: #050505;--ink-primary: #070707;--ink-secondary: #454545;--ink-tertiary: #787878;--ink-inverted: #fbfbf8;--line: rgba(7, 7, 7, .1);--line-strong: rgba(7, 7, 7, .24);--accent: #070707;--accent-deep: #000000;--accent-soft: #eeeeea;--sidebar-bg: #071a33;--sidebar-bg-elevated: rgba(255, 255, 255, .08);--sidebar-bg-active: rgba(255, 255, 255, .18);--sidebar-border: rgba(215, 226, 244, .2);--sidebar-text: #f5f8ff;--sidebar-muted: rgba(245, 248, 255, .74);--status-critical: #9d1b1e;--status-critical-bg: #f7e5e4;--status-warning: #8a5b00;--status-warning-bg: #f5ead0;--status-success: #245a34;--status-success-bg: #e2ecdf;--status-info: #164866;--status-info-bg: #dfebef;--font-display: "Barlow", "Helvetica Neue", Helvetica, Arial, sans-serif;--font-body: "Barlow", "Helvetica Neue", Helvetica, Arial, sans-serif;--font-mono: "JetBrains Mono", "SFMono-Regular", Consolas, "Liberation Mono", monospace;--radius-sm: 4px;--radius-md: 6px;--radius-lg: 8px;--radius-xl: 8px;--shadow-sm: 0 1px 0 rgba(7, 7, 7, .08);--shadow-md: 0 10px 30px rgba(7, 7, 7, .08);--shadow-lg: 0 24px 70px rgba(7, 7, 7, .16)}*{box-sizing:border-box;margin:0;padding:0}html,body{height:100%}body{font-family:var(--font-body);font-size:14px;line-height:1.5;color:var(--ink-primary);background:linear-gradient(90deg,rgba(7,7,7,.035) 1px,transparent 1px) 0 0 / 80px 80px,linear-gradient(180deg,rgba(7,7,7,.035) 1px,transparent 1px) 0 0 / 80px 80px,var(--bg-canvas);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#root{min-height:100vh}button{font-family:inherit;cursor:pointer;border:none;background:none}input,select,textarea{font-family:inherit;font-size:inherit}a{color:inherit;text-decoration:none}h1,h2,h3,h4{font-family:var(--font-display);font-weight:500;letter-spacing:0;color:var(--ink-primary)}h1{font-size:32px;letter-spacing:0;text-transform:uppercase}h2{font-size:22px;letter-spacing:0}h3{font-size:16px;font-family:var(--font-body);font-weight:600;letter-spacing:0}.app-shell{display:grid;grid-template-columns:260px 1fr;min-height:100vh}.sidebar{background:linear-gradient(180deg,rgba(255,255,255,.035),transparent 180px),var(--sidebar-bg);color:var(--sidebar-text);padding:22px 0;position:sticky;top:0;height:100vh;overflow-y:auto;display:flex;flex-direction:column;border-right:1px solid var(--sidebar-border)}.sidebar-brand{padding:0 22px 24px;border-bottom:1px solid var(--sidebar-border)}.brand-mark{display:flex;align-items:center;gap:14px}.brand-mark-image{width:78px;height:92px;object-fit:cover;object-position:top center;border:1px solid var(--line-strong);background:var(--bg-surface);flex:0 0 auto}.brand-mark-light .brand-mark-image{border-color:var(--sidebar-border)}.brand-mark-compact .brand-mark-image{width:48px;height:58px}.brand-mark-meta{min-width:0;flex:1}.brand-mark-name{font-size:15px;font-weight:300;line-height:1.05;letter-spacing:.14em;color:var(--ink-primary)}.brand-mark-compact .brand-mark-name{font-size:12px;letter-spacing:.1em}.brand-mark-light .brand-mark-name{color:var(--sidebar-text)}.brand-mark-line{width:100%;max-width:94px;height:1px;margin-top:12px;background:currentColor;opacity:.7}.brand-mark-dark .brand-mark-line{color:var(--ink-primary)}.sidebar-brand-tag{font-size:11px;color:var(--sidebar-muted);letter-spacing:.12em;text-transform:uppercase;margin-top:16px}.sidebar-section{padding:18px 0}.sidebar-section-label{padding:0 22px 8px;font-size:10px;letter-spacing:.16em;text-transform:uppercase;color:var(--sidebar-muted)}.sidebar-link{display:flex;align-items:center;gap:11px;min-height:38px;padding:9px 22px;color:#f5f8ffeb;font-size:13.5px;border-left:1px solid transparent;transition:background .14s ease,color .14s ease,border-color .14s ease}.sidebar-link:hover{color:var(--sidebar-text);background:#ffffff1c}.sidebar-link.active{color:var(--sidebar-text);background:linear-gradient(90deg,var(--sidebar-bg-active),rgba(255,255,255,.08));border-left-color:#fff}.sidebar-link-icon{width:17px;height:17px;flex:0 0 17px;color:currentColor;opacity:.9;fill:none;stroke:currentColor;stroke-width:1.55;stroke-linecap:square;stroke-linejoin:miter}.sidebar-link-icon path{vector-effect:non-scaling-stroke}.sidebar-link.active .sidebar-link-icon{opacity:1}.sidebar-footer{margin-top:auto;padding:18px 22px 0;border-top:1px solid var(--sidebar-border)}.sidebar-user{display:flex;align-items:center;gap:10px}.avatar{width:32px;height:32px;border-radius:2px;background:#fff;color:#000;display:flex;align-items:center;justify-content:center;font-weight:500;font-size:12px;flex-shrink:0}.sidebar-user-name{font-size:13px;color:var(--sidebar-text);font-weight:500}.sidebar-user-role{font-size:11px;color:var(--sidebar-muted)}.main{padding:0;overflow-x:hidden;background:linear-gradient(135deg,transparent 0 74%,rgba(7,7,7,.035) 74% 75%,transparent 75%),transparent}.page-header{background:#f3f3f0db;padding:38px 52px 30px;border-bottom:1px solid var(--line);-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px)}.page-eyebrow{font-size:11px;letter-spacing:.18em;text-transform:uppercase;color:var(--ink-tertiary);margin-bottom:10px}.page-title-row{display:flex;justify-content:space-between;align-items:flex-end;gap:24px}.page-subtitle{color:var(--ink-secondary);font-size:14px;margin-top:8px;max-width:680px}.page-content{padding:32px 52px 64px}.btn{display:inline-flex;align-items:center;gap:6px;min-height:34px;padding:8px 14px;border-radius:var(--radius-md);font-size:13px;font-weight:600;letter-spacing:.02em;transition:background .14s ease,color .14s ease,border-color .14s ease,transform .14s ease;white-space:nowrap}.btn-primary{background:var(--ink-primary);color:var(--ink-inverted);border:1px solid var(--ink-primary)}.btn-primary:hover{background:#2d2d2d;border-color:#2d2d2d;transform:translateY(-1px)}.btn-secondary{background:transparent;color:var(--ink-primary);border:1px solid var(--line-strong)}.btn-secondary:hover{background:var(--bg-surface);border-color:var(--ink-primary)}.btn-ghost{background:transparent;color:var(--ink-secondary);padding:6px 10px}.btn-ghost:hover{color:var(--ink-primary);background:var(--accent-soft)}.btn-accent{background:var(--ink-primary);color:var(--ink-inverted);border:1px solid var(--ink-primary)}.btn-accent:hover{background:#2d2d2d}.card{background:var(--bg-surface);border:1px solid var(--line);border-radius:var(--radius-lg);padding:20px;box-shadow:var(--shadow-sm)}.card-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px}.card-title{font-size:12px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-primary)}.card-link{font-size:12px;color:var(--ink-primary);font-weight:700;border-bottom:1px solid currentColor}.card-link:hover{color:var(--ink-secondary)}.metric-card{background:var(--bg-surface);border:1px solid var(--line);border-radius:var(--radius-lg);padding:20px 20px 18px;position:relative;overflow:hidden;box-shadow:var(--shadow-sm);transition:border-color .14s ease,transform .14s ease,box-shadow .14s ease}.metric-card:before{content:"";position:absolute;top:14px;right:14px;width:42px;height:1px;background:var(--ink-primary);opacity:.22}.metric-card:hover{border-color:var(--line-strong);box-shadow:var(--shadow-md);transform:translateY(-1px)}.metric-card:hover:before{opacity:.72}.metric-label{font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-tertiary);margin-bottom:12px}.metric-value{font-family:var(--font-display);font-size:36px;font-weight:300;letter-spacing:0;line-height:1}.metric-value-suffix{font-size:18px;color:var(--ink-tertiary);font-family:var(--font-body);font-weight:400;margin-left:4px}.metric-trend{font-size:12px;margin-top:10px;display:flex;align-items:center;gap:6px}.metric-trend.success{color:var(--status-success)}.metric-trend.warning{color:var(--status-warning)}.metric-trend.critical{color:var(--status-critical)}.metric-trend.neutral{color:var(--ink-tertiary)}.badge{display:inline-flex;align-items:center;padding:3px 9px;border-radius:var(--radius-sm);font-size:11px;font-weight:700;letter-spacing:.04em;white-space:nowrap;text-transform:uppercase;border:1px solid transparent}.badge-critical{background:var(--status-critical-bg);color:var(--status-critical)}.badge-warning{background:var(--status-warning-bg);color:var(--status-warning)}.badge-success{background:var(--status-success-bg);color:var(--status-success)}.badge-info{background:var(--status-info-bg);color:var(--status-info)}.badge-neutral{background:var(--bg-sunken);color:var(--ink-secondary);border-color:var(--line)}.badge-permanent{background:var(--status-success-bg);color:var(--status-success)}.badge-visitor{background:var(--status-critical-bg);color:var(--status-critical)}.badge-personal{background:var(--status-info-bg);color:var(--status-info)}.table{width:100%;border-collapse:collapse;font-size:13px;background:var(--bg-surface)}.table thead th{text-align:left;padding:11px 14px;font-size:11px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-tertiary);border-bottom:1px solid var(--line-strong)}.table tbody tr{border-bottom:1px solid var(--line);transition:background .12s ease}.table tbody tr:hover{background:#f6f6f3}.table tbody tr:last-child{border-bottom:none}.table tbody td{padding:14px;vertical-align:middle}.table-cell-primary{font-weight:500;color:var(--ink-primary)}.table-cell-secondary{font-size:12px;color:var(--ink-tertiary);margin-top:2px}.tabs{display:flex;gap:4px;border-bottom:1px solid var(--line);margin-bottom:24px}.tab{padding:10px 16px;font-size:13px;font-weight:700;color:var(--ink-tertiary);border-bottom:1px solid transparent;margin-bottom:-1px;transition:all .12s ease;letter-spacing:.02em}.tab:hover{color:var(--ink-secondary)}.tab.active{color:var(--ink-primary);border-bottom-color:var(--ink-primary)}.tab-count{margin-left:6px;color:var(--ink-tertiary);font-size:12px;font-weight:400}.input,.select,.textarea{width:100%;padding:10px 12px;border:1px solid var(--line-strong);border-radius:var(--radius-md);background:var(--bg-surface);font-size:13px;color:var(--ink-primary);transition:all .12s ease}.input:focus,.select:focus,.textarea:focus{outline:none;border-color:var(--ink-primary);box-shadow:0 0 0 3px #07070714}.field{margin-bottom:16px}.field-label{display:block;font-size:11px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-tertiary);margin-bottom:6px}.field-help{font-size:12px;color:var(--ink-tertiary);margin-top:6px}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#07070794;z-index:100;display:flex;align-items:center;justify-content:center;padding:24px;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.modal{background:var(--bg-surface);border-radius:var(--radius-xl);width:100%;max-width:540px;max-height:90vh;overflow-y:auto;box-shadow:var(--shadow-lg);border:1px solid var(--line-strong)}.modal-header{padding:24px 28px 16px;border-bottom:1px solid var(--line)}.modal-title{font-family:var(--font-display);font-size:22px;font-weight:500;letter-spacing:0;text-transform:uppercase}.modal-body{padding:24px 28px}.modal-footer{padding:16px 28px 24px;display:flex;justify-content:flex-end;gap:8px;border-top:1px solid var(--line)}.empty-state{text-align:center;padding:48px 24px;color:var(--ink-tertiary)}.spinner{display:inline-block;width:14px;height:14px;border:2px solid var(--line);border-top-color:var(--ink-primary);border-radius:50%;animation:spin .7s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.fade-in{animation:fadeIn .28s ease}@keyframes fadeIn{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}.grid-2{display:grid;grid-template-columns:repeat(2,1fr);gap:14px}.grid-3{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}.grid-4{display:grid;grid-template-columns:repeat(4,1fr);gap:14px}.flex{display:flex}.flex-col{display:flex;flex-direction:column}.items-center{align-items:center}.justify-between{justify-content:space-between}.gap-2{gap:8px}.gap-3{gap:12px}.gap-4{gap:16px}.text-secondary{color:var(--ink-secondary)}.text-tertiary{color:var(--ink-tertiary)}.text-mono{font-family:var(--font-mono);font-size:12px}.divider{height:1px;background:var(--line);margin:16px 0}.calendar-page{padding-top:0}.calendar-shell{height:calc(100vh - 148px);min-height:560px;border-radius:var(--radius-lg);overflow:hidden;background:var(--bg-surface);border:1px solid var(--line);box-shadow:var(--shadow-sm)}.dashboard-kpis{margin-bottom:28px}.dashboard-main-grid{display:grid;grid-template-columns:minmax(0,1.4fr) minmax(320px,1fr);gap:20px}.priority-ticket-row{display:flex;justify-content:space-between;align-items:center;gap:14px;padding:12px 14px;background:var(--bg-elevated);border:1px solid transparent;border-radius:var(--radius-md)}.priority-ticket-row:hover{border-color:var(--line);background:var(--bg-surface)}.priority-ticket-title{font-weight:600;font-size:13.5px}.dashboard-section-title{margin-bottom:12px}.dashboard-revenue-divider{margin:12px 0 8px}.feedback-page{min-height:100vh;background:var(--bg-canvas);color:var(--ink-primary);font-family:var(--font-body);display:flex;flex-direction:column}.feedback-header{padding:24px 20px 12px;max-width:720px;margin:0 auto;width:100%}.feedback-brand{font-size:11px;font-weight:600;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-tertiary);margin-bottom:8px}.feedback-title{font-family:var(--font-display);font-size:1.5rem;font-weight:500;text-transform:uppercase;margin:0 0 6px}.feedback-desc{margin:0;font-size:14px;color:var(--ink-secondary);line-height:1.5}.feedback-chat{flex:1;max-width:720px;width:100%;margin:0 auto;padding:12px 20px 32px;display:flex;flex-direction:column;gap:12px}.feedback-bot-bubble{display:flex;gap:10px;align-items:flex-start;max-width:100%}.feedback-bot-avatar{width:32px;height:32px;border-radius:2px;background:var(--ink-primary);color:#fff;font-weight:700;font-size:14px;display:flex;align-items:center;justify-content:center;flex-shrink:0}.feedback-bot-text{background:var(--bg-surface);border:1px solid var(--line);border-radius:var(--radius-lg);padding:14px 16px;font-size:14px;line-height:1.55;box-shadow:var(--shadow-sm);max-width:calc(100% - 42px);flex:1;min-width:0}.feedback-formatted{display:flex;flex-direction:column;gap:10px}.feedback-md-p{margin:0;color:var(--ink-primary)}.feedback-md-p+.feedback-md-p{margin-top:2px}.feedback-md-heading{margin:4px 0 0;font-family:var(--font-body);font-size:14px;font-weight:600;line-height:1.4;color:var(--ink-primary)}.feedback-md-list{margin:0;padding-left:1.25rem;display:flex;flex-direction:column;gap:6px}.feedback-md-list li{line-height:1.5;color:var(--ink-primary)}.feedback-md-list li::marker{color:var(--accent-deep);font-weight:600}.feedback-md-hr{border:none;border-top:1px solid var(--line);margin:4px 0}.feedback-formatted strong{font-weight:600;color:var(--ink-primary)}.feedback-user-bubble{display:flex;justify-content:flex-end}.feedback-user-text{background:var(--accent-soft);border:1px solid var(--line-strong);border-radius:var(--radius-lg);padding:10px 14px;font-size:14px;max-width:85%}.feedback-choices{display:flex;flex-wrap:wrap;gap:8px;margin-top:4px;padding-left:42px}.feedback-choice{display:flex;flex-direction:column;align-items:flex-start;text-align:left;padding:10px 14px;border-radius:var(--radius-md);border:1px solid var(--line);background:var(--bg-surface);cursor:pointer;transition:border-color .15s,background .15s;max-width:100%}.feedback-choice:hover,.feedback-choice.is-selected{border-color:var(--ink-primary);background:var(--accent-soft)}.feedback-choice-label{font-size:13px;font-weight:600}.feedback-choice-desc{font-size:11px;color:var(--ink-secondary);margin-top:2px}.feedback-submit-multi{padding:8px 16px;border-radius:var(--radius-md);border:none;background:var(--ink-primary);color:#fff;font-size:13px;cursor:pointer}.feedback-submit-multi:disabled{opacity:.5;cursor:not-allowed}.feedback-text-form{padding-left:42px;display:flex;flex-direction:column;gap:8px}.feedback-text-form textarea{width:100%;border-radius:var(--radius-md);border:1px solid var(--line);padding:10px 12px;font-family:var(--font-body);font-size:14px;resize:vertical}.feedback-text-form button{align-self:flex-end;padding:8px 16px;border-radius:var(--radius-md);border:none;background:var(--ink-primary);color:#fff;font-size:13px;cursor:pointer}.feedback-text-form button:disabled{opacity:.5;cursor:not-allowed}.feedback-center{flex:1;display:flex;align-items:center;justify-content:center;padding:48px 20px;font-size:15px}.feedback-muted{color:var(--ink-tertiary);font-size:13px}.feedback-error,.feedback-inline-error{color:var(--status-critical);font-size:14px;padding:12px;background:var(--status-critical-bg);border-radius:var(--radius-md)}.feedback-grill-hint{font-size:12px;color:var(--ink-tertiary)}.feedback-grill-input{padding-left:0;margin-top:8px}.feedback-grill-actions{display:flex;flex-wrap:wrap;gap:8px;align-items:center}.feedback-finish-btn{background:transparent;color:var(--text-muted, #6b6560);border:1px solid var(--border, #e8e4df);border-radius:8px;padding:8px 14px;font-size:13px;cursor:pointer}.feedback-finish-btn:hover:not(:disabled){background:var(--bg-muted, #f5f3f0)}.feedback-finish-btn:disabled{opacity:.5;cursor:not-allowed}.auth-page{min-height:100vh;display:grid;align-items:center;justify-content:center;padding:32px 24px;background:linear-gradient(118deg,transparent 0 55%,rgba(7,7,7,.055) 55.2% 55.6%,transparent 55.8%),linear-gradient(90deg,rgba(7,7,7,.055) 1px,transparent 1px) center / 86px 86px,linear-gradient(180deg,rgba(7,7,7,.055) 1px,transparent 1px) center / 86px 86px,var(--bg-canvas)}.auth-card{width:100%;max-width:430px;background:var(--bg-surface);border:1px solid var(--line-strong);border-radius:var(--radius-xl);box-shadow:var(--shadow-lg);padding:34px 32px 28px;position:relative}.auth-card:before{content:"";position:absolute;top:18px;right:18px;width:58px;height:1px;background:var(--ink-primary);opacity:.35}.auth-brand{margin-bottom:26px}.auth-brand-tag{font-size:11px;color:var(--ink-tertiary);letter-spacing:.12em;text-transform:uppercase;margin-top:14px}.auth-title{font-size:25px;margin-bottom:6px}.auth-subtitle{font-size:13px;color:var(--ink-secondary);margin-bottom:24px}.auth-submit{width:100%;justify-content:center;margin-top:8px}.auth-error{background:var(--status-critical-bg);color:var(--status-critical);border-radius:var(--radius-md);padding:9px 12px;font-size:13px;margin-bottom:12px}.auth-footnote{margin-top:22px;font-size:11.5px;line-height:1.5;color:var(--ink-tertiary)}.auth-loading{min-height:100vh;display:flex;align-items:center;justify-content:center;gap:10px;color:var(--ink-tertiary)}.sidebar-user-button{width:100%;text-align:left;background:none;color:inherit;display:flex;align-items:center;gap:10px;padding:6px 0}.sidebar-user-meta{flex:1;min-width:0}.sidebar-user-caret{color:var(--sidebar-muted);font-size:11px}.sidebar-menu{margin-top:10px;background:var(--sidebar-bg-elevated);border:1px solid var(--sidebar-border);border-radius:var(--radius-md);padding:8px}.sidebar-menu-label{font-size:10px;letter-spacing:.14em;text-transform:uppercase;color:var(--sidebar-muted);padding:4px 6px 6px}.sidebar-menu-item{display:block;width:100%;text-align:left;padding:7px 8px;border-radius:var(--radius-sm);color:#f5f8fff0;font-size:13px;transition:background .12s ease}.sidebar-menu-item:hover{background:#ffffff1f;color:var(--sidebar-text)}.sidebar-menu-item.active{color:#fff;background:#ffffff2e}.sidebar-menu-item.danger{color:#ffc4c4}.sidebar-menu-divider{height:1px;background:var(--sidebar-border);margin:6px 4px}.timeline{display:flex;flex-direction:column;gap:0;padding-left:4px}.timeline-item{display:grid;grid-template-columns:18px 1fr;gap:12px;padding-bottom:18px;position:relative}.timeline-item:not(:last-child):before{content:"";position:absolute;left:8px;top:16px;bottom:0;width:1px;background:var(--line-strong)}.timeline-dot{width:12px;height:12px;border-radius:50%;margin-top:3px;background:var(--bg-sunken);border:2px solid var(--line-strong);z-index:1}.timeline-dot.done{background:var(--status-success);border-color:var(--status-success)}.timeline-dot.active{background:var(--accent);border-color:var(--accent)}.timeline-title{font-size:13px;font-weight:500}.timeline-meta{font-size:12px;color:var(--ink-tertiary)}.lane{display:inline-flex;align-items:center;gap:6px;font-size:11px;font-weight:700;padding:3px 9px;border-radius:var(--radius-sm);border:1px solid var(--line-strong);color:var(--ink-secondary);background:var(--bg-elevated)}.lane:before{content:"";width:7px;height:7px;border-radius:50%;background:var(--ink-tertiary)}.lane.locataire:before{background:#164866}.lane.gestionnaire:before{background:#3b3b3b}.lane.administrateur:before{background:#000}.lane.coordinateur:before{background:#245a34}.lane.hotesse:before{background:#8a5b00}.lane.bailleur:before{background:var(--ink-primary)}.lane.prestataire:before{background:var(--status-success)}.lane.gardien:before{background:#8a5b00}.countdown{display:inline-flex;align-items:center;gap:6px;font-family:var(--font-mono);font-size:12px;padding:4px 10px;border-radius:var(--radius-md);background:var(--status-warning-bg);color:var(--status-warning)}.countdown.ok{background:var(--status-success-bg);color:var(--status-success)}.countdown.danger{background:var(--status-critical-bg);color:var(--status-critical)}.sla-bar{height:6px;border-radius:999px;background:var(--bg-sunken);overflow:hidden}.sla-bar-fill{height:100%;border-radius:999px;background:var(--accent);transition:width .2s ease}.stock-card{border:1px solid var(--line);border-radius:var(--radius-lg);padding:18px;background:var(--bg-surface);box-shadow:var(--shadow-sm)}.stock-value{font-family:var(--font-display);font-size:30px;letter-spacing:0}.stock-total{font-size:16px;color:var(--ink-tertiary)}.banner{display:flex;gap:10px;align-items:flex-start;padding:12px 14px;border-radius:var(--radius-md);font-size:13px;line-height:1.5;border:1px solid transparent}.banner-info{background:var(--status-info-bg);color:var(--status-info);border-color:#2d5a8a2e}.banner-warning{background:var(--status-warning-bg);color:var(--status-warning);border-color:#b674102e}.banner-success{background:var(--status-success-bg);color:var(--status-success);border-color:#3d6b3d2e}.banner-critical{background:var(--status-critical-bg);color:var(--status-critical);border-color:#a832322e}.detail-row{display:flex;flex-direction:column;gap:3px;padding:10px 0;border-bottom:1px solid var(--line)}.detail-label{font-size:11px;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-tertiary)}.detail-value{font-size:14px;color:var(--ink-primary)}.kanban{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;align-items:start}.kanban-col{display:flex;flex-direction:column;min-height:180px;padding:12px;border:1px solid var(--line);border-radius:var(--radius-lg);background:var(--bg-elevated);transition:background .14s ease,border-color .14s ease}.kanban-col.drop-target{border-color:var(--ink-primary);background:var(--accent-soft)}.kanban-col-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px;padding:0 4px}.kanban-col-title{font-size:12px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--ink-secondary)}.kanban-count{min-width:22px;padding:1px 7px;border-radius:var(--radius-sm);background:var(--bg-sunken);color:var(--ink-tertiary);font-size:12px;font-weight:600;text-align:center}.kanban-col-body{display:flex;flex-direction:column;gap:10px;min-height:40px}.kanban-empty{padding:18px 10px;border:1px dashed var(--line-strong);border-radius:var(--radius-md);color:var(--ink-tertiary);font-size:12px;text-align:center}.kanban-add{margin-top:10px;padding:8px;border-radius:var(--radius-md);color:var(--ink-tertiary);font-size:12.5px;font-weight:500;transition:background .12s ease,color .12s ease}.kanban-add:hover{background:var(--bg-sunken);color:var(--ink-secondary)}.task-card{padding:12px 13px;border:1px solid var(--line);border-radius:var(--radius-md);background:var(--bg-surface);box-shadow:var(--shadow-sm);cursor:grab;transition:box-shadow .14s ease,transform .14s ease,opacity .14s ease}.task-card:hover{box-shadow:var(--shadow-md);transform:translateY(-1px)}.task-card:active{cursor:grabbing}.task-card.dragging{opacity:.45}.task-card-top{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:8px}.task-card-title{margin:0 0 4px;font-size:14px;font-weight:600;line-height:1.3}.task-card-desc{margin:0 0 8px;font-size:12.5px;color:var(--ink-secondary);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.task-card-foot{display:flex;align-items:center;gap:6px;font-size:12px;color:var(--ink-tertiary)}.avatar-xs{width:22px;height:22px;font-size:10px}@media (max-width: 980px){.kanban{grid-template-columns:repeat(2,1fr)}}@media (max-width: 560px){.kanban{grid-template-columns:1fr}}.select-inline{width:auto;min-width:140px;padding:5px 28px 5px 10px;font-size:12.5px}.qr-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:14px}.qr-card{display:flex;gap:14px;align-items:center;padding:14px;border:1px solid var(--line);border-radius:var(--radius-lg);background:var(--bg-surface);box-shadow:var(--shadow-sm);cursor:pointer;transition:box-shadow .14s ease,transform .14s ease}.qr-card:hover{box-shadow:var(--shadow-md);transform:translateY(-2px)}.qr-card-thumb{flex-shrink:0;padding:6px;background:#fff;border:1px solid var(--line);border-radius:var(--radius-md);line-height:0}.qr-card-body{min-width:0}.qr-card-title{margin:0 0 6px;font-size:14px;font-weight:600;line-height:1.3}.qr-card-meta{display:flex;flex-wrap:wrap;gap:5px;margin-bottom:6px}.qr-card-date{font-size:11.5px;color:var(--ink-tertiary)}.qr-detail{display:flex;justify-content:center;padding:18px;margin-bottom:16px;background:#fff;border:1px solid var(--line);border-radius:var(--radius-lg);line-height:0}.qr-link-row{display:flex;gap:8px;margin-bottom:16px}.qr-link-row .input{flex:1;min-width:0;font-size:12px}.qr-public{min-height:100vh;display:flex;align-items:flex-start;justify-content:center;padding:24px 16px 48px;background:linear-gradient(118deg,transparent 0 58%,rgba(7,7,7,.055) 58.2% 58.6%,transparent 58.8%),linear-gradient(90deg,rgba(7,7,7,.05) 1px,transparent 1px) center / 86px 86px,linear-gradient(180deg,rgba(7,7,7,.05) 1px,transparent 1px) center / 86px 86px,var(--bg-canvas)}.qr-public-card{width:100%;max-width:460px;margin-top:24px;background:var(--bg-surface);border:1px solid var(--line);border-radius:var(--radius-xl);box-shadow:var(--shadow-lg);padding:28px 24px 26px}.qr-public-brand{display:flex;align-items:baseline;gap:8px;margin-bottom:20px}.qr-public-logo{font-family:var(--font-display);font-size:16px;font-weight:500;letter-spacing:.02em}.qr-public-tag{font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-tertiary)}.qr-public-title{font-size:24px;margin-bottom:4px}.qr-public-sub{font-size:13px;color:var(--ink-primary);font-weight:500;margin-bottom:14px}.qr-public-lead{font-size:13.5px;color:var(--ink-secondary);line-height:1.55;margin-bottom:20px}.qr-public-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.qr-public-submit{width:100%;justify-content:center;margin-top:8px}.qr-public-muted{color:var(--ink-tertiary);font-size:14px}.qr-public-done{text-align:center;padding:12px 0}.qr-public-check{width:56px;height:56px;margin:0 auto 16px;border-radius:50%;background:var(--status-success-bg);color:var(--status-success);display:flex;align-items:center;justify-content:center;font-size:28px}@media (max-width: 480px){.qr-public-grid{grid-template-columns:1fr}}.invoice-actions .btn{padding:3px 5px;min-width:0;line-height:1}.qr-cat-hint{margin:0 0 10px;font-size:12.5px;color:var(--ink-tertiary)}.qr-cats{display:grid;gap:8px;max-height:52vh;overflow-y:auto;-webkit-overflow-scrolling:touch;padding-right:2px}.qr-cat{border:1px solid var(--line);border-radius:var(--radius-md);overflow:hidden;background:var(--bg-elevated, #fff)}.qr-cat.is-chosen{border-color:var(--accent, #1a3c5e);box-shadow:0 0 0 1px var(--accent, #1a3c5e) inset}.qr-cat-head{display:flex;align-items:center;gap:12px;width:100%;padding:14px;background:none;border:0;cursor:pointer;text-align:left;font:inherit;min-height:56px}.qr-cat-head:hover{background:var(--bg-sunken, #f5f5f3)}.qr-cat-ico{font-size:26px;line-height:1;width:34px;text-align:center;flex:0 0 auto}.qr-cat-title{flex:1 1 auto;font-weight:600;font-size:15px}.qr-cat-chevron{color:var(--ink-tertiary);font-size:13px;flex:0 0 auto}.qr-cat-subs{display:flex;flex-wrap:wrap;gap:8px;padding:4px 14px 14px 60px}.qr-sub{border:1px solid var(--line);border-radius:999px;padding:8px 14px;background:var(--bg-sunken, #f5f5f3);cursor:pointer;font:inherit;font-size:13.5px}.qr-sub:hover{border-color:var(--accent, #1a3c5e)}.qr-sub.is-active{background:var(--accent, #1a3c5e);border-color:var(--accent, #1a3c5e);color:#fff}.qr-cat-badge{flex:0 0 auto;min-width:20px;height:20px;padding:0 6px;border-radius:999px;background:var(--accent, #1a3c5e);color:#fff;font-size:12px;font-weight:700;display:inline-flex;align-items:center;justify-content:center}.qr-cat-selected{margin-top:12px;padding:10px 12px;border-radius:var(--radius-md);background:var(--status-success-bg);color:var(--status-success);font-size:13px}.qr-sel-head{font-weight:700;margin-bottom:8px}.qr-sel-chips{display:flex;flex-wrap:wrap;gap:6px}.qr-sel-chip{border:1px solid var(--status-success);background:#fff;color:var(--ink-primary, #1a1a1a);border-radius:999px;padding:6px 12px;font:inherit;font-size:12.5px;cursor:pointer}.qr-sel-chip span{color:var(--status-critical);font-weight:700;margin-left:4px}@media (max-width: 480px){.qr-cats{max-height:none;overflow:visible}.qr-cat-subs{padding-left:14px}}.security-list{margin:0;padding-left:1.1rem;display:flex;flex-direction:column;gap:8px}.security-list li{font-size:13px;color:var(--ink-secondary);line-height:1.5}@media (max-width: 980px){.app-shell{grid-template-columns:1fr}.sidebar{position:relative;height:auto;max-height:none;padding:16px 0 12px;border-right:none;border-bottom:1px solid var(--sidebar-border)}.sidebar-brand{padding:0 18px 16px}.sidebar-section{padding:12px 0 0}.sidebar-section-label{padding:0 18px 8px}.sidebar-link{padding:8px 18px}.sidebar-footer{padding:14px 18px 0}.page-header,.page-content{padding-left:24px;padding-right:24px}.grid-3,.grid-4{grid-template-columns:repeat(2,1fr)}.dashboard-main-grid{grid-template-columns:1fr}}@media (max-width: 680px){.page-title-row{align-items:flex-start;flex-direction:column}.page-title-row>*:last-child{width:100%;display:flex;flex-wrap:wrap;gap:8px}.grid-2,.grid-3,.grid-4{grid-template-columns:1fr}.brand-mark-image{width:62px;height:76px}.auth-card{padding:28px 22px 24px}}
