:root{--space-1: 4px;--space-2: 8px;--space-3: 12px;--space-4: 16px;--space-5: 24px;--space-6: 32px;--space-7: 48px;--color-text: #1e1b2e;--color-text-muted: #6b7280;--color-text-faint: #9ca3af;--color-border: #e6e7eb;--color-border-strong: #d6d8de;--color-bg: #ffffff;--color-bg-subtle: #f7f7fb;--color-bg-page: #f5f6fa;--color-accent: #4f46e5;--color-accent-hover: #4338ca;--color-accent-subtle: #eef0ff;--color-accent-text: #4338ca;--color-danger: #dc2626;--color-danger-hover: #b91c1c;--color-danger-bg: #fef2f2;--color-danger-border: #fecaca;--color-success: #15803d;--color-success-bg: #f0fdf4;--color-success-border: #bbf7d0;--color-warning-text: #92400e;--color-warning-bg: #fffbeb;--color-warning-border: #fde68a;--color-chat-header: #4f46e5;--color-chat-accent: #4f46e5;--color-chat-accent-hover: #4338ca;--color-bubble-mine-bg: #4f46e5;--color-bubble-theirs-bg: #ffffff;--color-chat-wallpaper: #e3e6f2;--color-chat-text: #1e1b2e;--color-tick-seen: #4f46e5;--font-sans: -apple-system, BlinkMacSystemFont, "Segoe UI", "Inter", Helvetica, Arial, sans-serif;--radius-sm: 7px;--radius: 12px;--radius-lg: 16px;--shadow-xs: 0 1px 2px rgba(20, 20, 43, .04);--shadow-sm: 0 1px 3px rgba(20, 20, 43, .06), 0 1px 2px rgba(20, 20, 43, .04);--shadow-md: 0 8px 24px rgba(20, 20, 43, .08), 0 2px 6px rgba(20, 20, 43, .04);--shadow-lg: 0 16px 40px rgba(20, 20, 43, .12), 0 4px 10px rgba(20, 20, 43, .05);--ease: cubic-bezier(.2, 0, 0, 1)}*{box-sizing:border-box}body{margin:0;font-family:var(--font-sans);color:var(--color-text);background:var(--color-bg-page);font-size:15px;line-height:1.55;-webkit-font-smoothing:antialiased}::selection{background:var(--color-accent-subtle);color:var(--color-accent-text)}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--color-border-strong);border-radius:99px;border:2px solid var(--color-bg-page)}::-webkit-scrollbar-thumb:hover{background:var(--color-text-faint)}h1,h2,h3{font-weight:650;letter-spacing:-.01em;margin:0 0 var(--space-3) 0;color:var(--color-text)}h1{font-size:24px}h2{font-size:18px}h3{font-size:15px}p{margin:0 0 var(--space-3) 0}a{color:var(--color-accent);transition:color .12s var(--ease)}a:hover{color:var(--color-accent-hover)}.app-shell{display:flex;min-height:100vh}.app-sidebar{width:240px;flex-shrink:0;background:var(--color-bg);border-right:1px solid var(--color-border);padding:var(--space-5) var(--space-4);display:flex;flex-direction:column;position:sticky;top:0;height:100vh}.app-sidebar h1{font-size:15px;font-weight:700;padding:0 var(--space-2);margin-bottom:var(--space-5);color:var(--color-text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.app-nav{display:flex;flex-direction:column;gap:2px}.app-nav a{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-3);color:var(--color-text-muted);text-decoration:none;border-radius:var(--radius-sm);font-size:14px;font-weight:550;transition:background .12s var(--ease),color .12s var(--ease)}.app-nav a:hover{background:var(--color-bg-subtle);color:var(--color-text)}.app-nav a.active{background:var(--color-accent-subtle);color:var(--color-accent-text)}.app-main{flex:1;padding:var(--space-6) var(--space-7);max-width:1040px;min-width:0}.app-mobile-header{display:none}.app-hamburger{display:inline-flex;align-items:center;justify-content:center;width:40px;height:40px;padding:0;background:transparent;color:var(--color-text);border:1px solid var(--color-border-strong);box-shadow:none;border-radius:var(--radius-sm);flex-shrink:0}.app-hamburger:hover{background:var(--color-bg-subtle)}.app-sidebar-backdrop{display:none}@media(max-width:1024px){.app-shell{flex-direction:column}.app-mobile-header{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-3) var(--space-4);background:var(--color-bg);border-bottom:1px solid var(--color-border);position:sticky;top:0;z-index:30}.app-sidebar{position:fixed;top:0;left:0;height:100vh;z-index:50;width:min(280px,84vw);transform:translate(-100%);transition:transform .2s var(--ease);box-shadow:var(--shadow-lg)}.app-sidebar.open{transform:translate(0)}.app-sidebar-backdrop{display:block;position:fixed;top:0;right:0;bottom:0;left:0;background:#14142b66;z-index:40;opacity:0;pointer-events:none;transition:opacity .2s var(--ease)}.app-sidebar-backdrop.open{opacity:1;pointer-events:auto}.app-main{max-width:100%;padding:var(--space-5) var(--space-4)}}@media(max-width:640px){.app-main{padding:var(--space-4) var(--space-3)}.card{padding:var(--space-4)}button{min-height:44px}input:not([type=checkbox]):not([type=radio]),select{min-height:44px}.auth-card{padding:var(--space-5)}}.table-scroll{overflow-x:auto;-webkit-overflow-scrolling:touch}.table-scroll table{min-width:640px}.card{background:var(--color-bg);border:1px solid var(--color-border);border-radius:var(--radius);padding:var(--space-5);margin-bottom:var(--space-4);box-shadow:var(--shadow-xs);transition:box-shadow .15s var(--ease),border-color .15s var(--ease)}a .card:hover,.card[role=button]:hover,.card[style*="cursor: pointer"]:hover,.card[style*="cursor:pointer"]:hover{box-shadow:var(--shadow-sm);border-color:var(--color-border-strong)}.stack>*+*{margin-top:var(--space-4)}.row{display:flex;gap:var(--space-3);align-items:center;flex-wrap:wrap}.row-between{display:flex;justify-content:space-between;align-items:center;gap:var(--space-3);flex-wrap:wrap;margin-bottom:var(--space-4)}label{display:block;font-size:13px;font-weight:600;margin-bottom:6px;color:var(--color-text-muted)}.field{margin-bottom:var(--space-4)}input:not([type=checkbox]):not([type=radio]),select,textarea{font-family:var(--font-sans);font-size:14px;padding:9px var(--space-3);border:1px solid var(--color-border-strong);border-radius:var(--radius-sm);width:100%;background:var(--color-bg);color:var(--color-text);transition:border-color .12s var(--ease),box-shadow .12s var(--ease)}input[type=checkbox],input[type=radio]{width:16px;height:16px;flex-shrink:0}input::placeholder,textarea::placeholder{color:var(--color-text-faint)}input:not([type=checkbox]):not([type=radio]):hover,select:hover,textarea:hover{border-color:var(--color-text-faint)}input:not([type=checkbox]):not([type=radio]):focus,select:focus,textarea:focus{outline:none;border-color:var(--color-accent);box-shadow:0 0 0 3px var(--color-accent-subtle)}textarea{resize:vertical;min-height:80px}button{font-family:var(--font-sans);font-size:14px;font-weight:600;padding:9px var(--space-4);border-radius:var(--radius-sm);border:1px solid transparent;cursor:pointer;background:var(--color-accent);color:#fff;box-shadow:var(--shadow-xs);transition:background .12s var(--ease),box-shadow .12s var(--ease),transform .06s var(--ease)}button:hover{background:var(--color-accent-hover);box-shadow:var(--shadow-sm)}button:active{transform:translateY(1px)}button:disabled{opacity:.5;cursor:not-allowed;box-shadow:none}button:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}button.secondary{background:var(--color-bg);color:var(--color-text);border-color:var(--color-border-strong);box-shadow:none}button.secondary:hover{background:var(--color-bg-subtle);border-color:var(--color-text-faint)}button.danger{background:var(--color-danger-bg);color:var(--color-danger);border-color:var(--color-danger-border);box-shadow:none}button.danger:hover{background:#fee2e2}table{width:100%;border-collapse:separate;border-spacing:0;font-size:14px;background:var(--color-bg);border:1px solid var(--color-border);border-radius:var(--radius);overflow:hidden}th,td{text-align:left;padding:var(--space-3) var(--space-4);border-bottom:1px solid var(--color-border)}tbody tr:last-child td{border-bottom:none}tbody tr{transition:background .1s var(--ease)}tbody tr:hover{background:var(--color-bg-subtle)}th{color:var(--color-text-muted);font-weight:650;font-size:11px;text-transform:uppercase;letter-spacing:.04em;background:var(--color-bg-subtle)}.badge{display:inline-flex;align-items:center;padding:3px 10px;border-radius:999px;font-size:12px;font-weight:650;border:1px solid transparent;line-height:1.4}.badge-neutral{background:var(--color-bg-subtle);color:var(--color-text-muted);border-color:var(--color-border)}.badge-success{background:var(--color-success-bg);color:var(--color-success);border-color:var(--color-success-border)}.badge-danger{background:var(--color-danger-bg);color:var(--color-danger);border-color:var(--color-danger-border)}.badge-warning{background:var(--color-warning-bg);color:var(--color-warning-text);border-color:var(--color-warning-border)}.alert{padding:var(--space-3) var(--space-4);border-radius:var(--radius-sm);margin-bottom:var(--space-4);font-size:14px;font-weight:500;border:1px solid transparent}.alert-error{background:var(--color-danger-bg);color:var(--color-danger);border-color:var(--color-danger-border)}.alert-success{background:var(--color-success-bg);color:var(--color-success);border-color:var(--color-success-border)}.muted{color:var(--color-text-muted);font-size:13px}.empty-state{text-align:center;padding:var(--space-7) var(--space-4);color:var(--color-text-muted);background:var(--color-bg);border:1px dashed var(--color-border-strong);border-radius:var(--radius)}.auth-page{min-height:100vh;display:flex;align-items:center;justify-content:center;background:radial-gradient(600px circle at 15% 10%,var(--color-accent-subtle),transparent 60%),radial-gradient(500px circle at 85% 90%,var(--color-accent-subtle),transparent 55%),var(--color-bg-page);padding:var(--space-5)}.auth-card{width:380px;max-width:100%;background:var(--color-bg);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:var(--space-6);box-shadow:var(--shadow-lg)}.tabs{display:flex;gap:var(--space-1);border-bottom:1px solid var(--color-border);margin-bottom:var(--space-5);overflow-x:auto}.tabs a,.tabs button{padding:var(--space-2) var(--space-3);text-decoration:none;color:var(--color-text-muted);border-bottom:2px solid transparent;font-size:14px;font-weight:600;white-space:nowrap;transition:color .12s var(--ease),border-color .12s var(--ease)}.tabs button{background:none;border-left:none;border-right:none;border-top:none;font-family:inherit;cursor:pointer;border-radius:0;box-shadow:none}.tabs a:hover,.tabs button:hover{color:var(--color-text)}.tabs a.active,.tabs button.active{color:var(--color-accent);border-bottom-color:var(--color-accent)}.chat-avatar{border-radius:50%;display:flex;align-items:center;justify-content:center;font-weight:700;color:#fff;flex-shrink:0;-webkit-user-select:none;user-select:none;box-shadow:0 0 0 2px #ffffffe6}.chat-list{display:flex;flex-direction:column;gap:2px}.chat-list-item{display:flex;align-items:center;gap:12px;padding:10px 8px;cursor:pointer;border-radius:var(--radius-sm);transition:background .1s var(--ease)}.chat-list-item:hover{background:var(--color-bg-subtle)}.unread-badge{background:var(--color-chat-accent);color:#fff;font-size:11px;font-weight:700;min-width:20px;height:20px;border-radius:999px;display:flex;align-items:center;justify-content:center;padding:0 6px;flex-shrink:0}.chat-shell{display:flex;flex-direction:column;height:calc(100vh - 64px);border:1px solid var(--color-border);overflow:hidden;background:var(--color-bg)}.chat-shell-breakout{margin:calc(-1 * var(--space-6)) calc(-1 * var(--space-7))}@media(max-width:1024px){.chat-shell-breakout{margin:calc(-1 * var(--space-5)) calc(-1 * var(--space-4))}.chat-shell{height:calc(100vh - 125px)}}@media(max-width:640px){.chat-shell-breakout{margin:calc(-1 * var(--space-4)) calc(-1 * var(--space-3))}}.chat-header{display:flex;align-items:center;gap:12px;padding:10px 16px;background:var(--color-chat-header);flex-shrink:0}.chat-header strong{color:#fff}.chat-header .muted{color:#ffffffbf}.chat-icon-btn{border-radius:50%!important;width:36px;height:36px;padding:0!important;flex-shrink:0;display:flex;align-items:center;justify-content:center;font-size:16px;background:transparent!important;border:none!important;color:#fff!important;box-shadow:none!important}.chat-icon-btn:hover{background:#ffffff26!important}.chat-body{flex:1;overflow-y:auto;overscroll-behavior:contain;padding:16px;background-color:var(--color-chat-wallpaper);background-image:radial-gradient(rgba(0,0,0,.06) 1px,transparent 1px);background-size:20px 20px;display:flex;flex-direction:column}.date-divider{text-align:center;margin:14px 0}.date-divider span{background:var(--color-bg);border:1px solid var(--color-border);border-radius:999px;padding:4px 14px;font-size:11.5px;font-weight:600;color:var(--color-text-muted);box-shadow:var(--shadow-xs)}.bubble-row{display:flex}.bubble{max-width:72%;padding:7px 11px;border-radius:16px;box-shadow:var(--shadow-sm);font-size:14px;line-height:1.4}.bubble.theirs{background:var(--color-bubble-theirs-bg);border:1px solid var(--color-border-strong);color:var(--color-chat-text);border-bottom-left-radius:16px}.bubble.mine{background:var(--color-bubble-mine-bg);color:#fff;border-bottom-right-radius:16px}.bubble.theirs.tail{border-bottom-left-radius:4px}.bubble.mine.tail{border-bottom-right-radius:4px}.bubble-sender{margin:0 0 2px;font-size:12px;font-weight:700}.bubble-text{margin:0;white-space:pre-wrap;overflow-wrap:break-word}.bubble-meta{display:flex;justify-content:flex-end;align-items:center;gap:3px;font-size:10.5px;margin-top:2px;color:#111b2180}.bubble.mine .bubble-meta{color:#fffc}.tick{color:#111b2166;letter-spacing:-1px}.tick-seen{color:var(--color-tick-seen)}.bubble.mine .tick{color:#ffffffa6}.bubble.mine .tick-seen{color:#7dd3fc}.chat-input-bar{display:flex;align-items:flex-end;gap:8px;padding:10px 12px;border-top:1px solid var(--color-border);background:var(--color-bg);flex-shrink:0}.chat-input-bar textarea{border-radius:20px;padding:10px 16px;resize:none;max-height:120px;min-height:40px}.chat-send-btn{border-radius:50%;width:40px;height:40px;padding:0;flex-shrink:0;display:flex;align-items:center;justify-content:center;font-size:16px;background:var(--color-chat-accent)}.chat-send-btn:hover{background:var(--color-chat-accent-hover)}.chat-attach-btn{border-radius:50%;width:40px;height:40px;padding:0;flex-shrink:0;display:flex;align-items:center;justify-content:center;font-size:18px;background:transparent;border:1px solid var(--color-border)}.chat-attach-btn:hover{background:var(--color-bg-subtle)}@media(max-width:640px){.app-hamburger,.chat-icon-btn,.chat-send-btn,.chat-attach-btn{width:44px;height:44px}}.chat-dropzone-active{outline:2px dashed var(--color-accent);outline-offset:-4px}.chat-attachment-strip{display:flex;gap:8px;padding:8px 12px 0;overflow-x:auto;flex-shrink:0}.chat-attachment-chip{position:relative;width:64px;height:64px;border-radius:10px;overflow:hidden;flex-shrink:0;background:var(--color-bg-muted, #f8f9fb);border:1px solid var(--color-border)}.chat-attachment-chip img,.chat-attachment-chip video{width:100%;height:100%;object-fit:cover}.chat-attachment-chip-remove{position:absolute;top:2px;right:2px;width:18px;height:18px;border-radius:50%;background:#0009;color:#fff;font-size:11px;line-height:18px;text-align:center;cursor:pointer}.chat-attachment-chip-progress{position:absolute;left:0;right:0;bottom:0;height:4px;background:#00000026}.chat-attachment-chip-progress-bar{height:100%;background:var(--color-chat-accent);transition:width .15s linear}.chat-attachment-chip-error{position:absolute;top:0;right:0;bottom:0;left:0;background:#dc2626d9;color:#fff;display:flex;align-items:center;justify-content:center;font-size:10px;text-align:center;padding:4px}.bubble-attachments{display:flex;flex-direction:column;gap:4px;margin-bottom:2px}.bubble-attachment-image,.bubble-attachment-video{max-width:min(260px,100%);max-height:320px;border-radius:12px;display:block;cursor:zoom-in}.bubble-attachment-file{display:flex;align-items:center;gap:10px;padding:8px 10px;border-radius:10px;background:#0000000a;text-decoration:none;color:inherit}.bubble.mine .bubble-attachment-file{background:#ffffff26}.bubble-attachment-file-icon{font-size:22px}.bubble-attachment-file-meta{display:flex;flex-direction:column;min-width:0;flex:1}.bubble-attachment-file-meta strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:13px}.bubble-attachment-file-download{font-size:16px;opacity:.7}@media print{.app-sidebar,.no-print{display:none!important}.app-shell{display:block!important}.app-main{max-width:100%!important;padding:0!important}.card{box-shadow:none!important;border:1px solid #ccc!important;break-inside:avoid}}
