*{box-sizing:border-box;margin:0;padding:0}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background:#f8f9fa;min-height:100vh;margin:0}#root{min-height:100vh}button,input{font-family:inherit}.login-page{min-height:100vh;background:linear-gradient(135deg,#1a1a2e,#16213e,#0f3460);display:flex;align-items:center;justify-content:center;padding:20px}.login-container{background:#fff;border-radius:8px;box-shadow:0 4px 6px #0000001a,0 1px 3px #00000014;width:100%;max-width:400px;padding:40px}.login-header{text-align:center;margin-bottom:30px}.login-header h1{color:#333;font-size:32px;font-weight:700;margin-bottom:10px}.login-header p{color:#666;font-size:16px}.login-form{display:flex;flex-direction:column;gap:20px}.form-group{display:flex;flex-direction:column;gap:8px}.form-group label{color:#555;font-size:14px;font-weight:500}.form-group input{padding:12px 16px;border:1px solid #e0e0e0;border-radius:4px;font-size:16px;transition:all .2s ease;outline:none;background:#f8f9fa}.form-group input:focus{border-color:#0f3460;background:#fff;box-shadow:0 0 0 2px #0f34601a}.user-select{display:flex;gap:10px}.user-button{flex:1;padding:10px;border:1px solid #e0e0e0;background:#f8f9fa;border-radius:4px;cursor:pointer;transition:all .2s ease;font-size:14px;color:#666}.user-button.active{border-color:#0f3460;background:#0f3460;color:#fff;font-weight:500}.user-button:hover:not(.active){border-color:#0f3460;background:#fff}.login-button{background:#0f3460;color:#fff;border:none;padding:12px 24px;border-radius:4px;font-size:16px;font-weight:500;cursor:pointer;transition:all .2s ease;margin-top:10px;width:100%}.login-button:hover{background:#16213e;transform:translateY(-1px);box-shadow:0 4px 8px #00000026}.login-button:active{transform:translateY(0);box-shadow:0 2px 4px #0000001a}.login-button:disabled{opacity:.6;cursor:not-allowed;transform:none}.error-message{background:#fef2f2;color:#dc2626;padding:12px;border-radius:4px;font-size:14px;text-align:center;border:1px solid #fecaca}.app-header{height:60px;background:#fff;border-bottom:1px solid #e5e7eb;display:flex;justify-content:space-between;align-items:center;padding:0 20px;position:fixed;top:0;left:0;right:0;z-index:100}.header-left{display:flex;align-items:center;gap:20px}.menu-toggle{background:none;border:none;cursor:pointer;display:flex;align-items:center;justify-content:center;padding:8px;border-radius:4px;color:#374151;transition:background .2s}.menu-toggle:hover{background:#f3f4f6}.logo{display:flex;align-items:center;gap:12px;font-weight:600;font-size:20px;color:#111827}.logo-icon{width:36px;height:36px;background:#0f3460;color:#fff;border-radius:4px;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:18px}.logo-text{display:none}@media (min-width: 640px){.logo-text{display:block}}.header-right{display:flex;align-items:center;gap:16px}.notification-wrapper{position:relative}.notification-button{position:relative;background:none;border:none;cursor:pointer;padding:8px;border-radius:4px;color:#374151;transition:background .2s;display:flex;align-items:center}.notification-button:hover{background:#f3f4f6}.notification-badge{position:absolute;top:4px;right:4px;background:#dc2626;color:#fff;font-size:11px;font-weight:600;padding:2px 5px;border-radius:10px;min-width:18px;text-align:center}.notification-dropdown{position:absolute;top:calc(100% + 8px);right:0;background:#fff;border:1px solid #e5e7eb;border-radius:4px;box-shadow:0 10px 15px -3px #0000001a;width:320px;max-height:400px;overflow:hidden;display:flex;flex-direction:column}.dropdown-header{padding:16px;border-bottom:1px solid #e5e7eb;display:flex;justify-content:space-between;align-items:center}.dropdown-header h3{font-size:16px;font-weight:600;color:#111827;margin:0}.mark-read{background:none;border:none;color:#0f3460;font-size:13px;cursor:pointer;font-weight:500}.mark-read:hover{text-decoration:underline}.notification-list{overflow-y:auto;max-height:300px}.notification-item{padding:16px;border-bottom:1px solid #f3f4f6;cursor:pointer;transition:background .2s}.notification-item:hover{background:#f9fafb}.notification-item.unread{background:#f0f9ff}.notification-item h4{font-size:14px;font-weight:600;color:#111827;margin:0 0 4px}.notification-item p{font-size:13px;color:#6b7280;margin:0 0 8px}.notification-time{font-size:12px;color:#9ca3af}@media (max-width: 640px){.notification-dropdown{width:calc(100vw - 40px);right:-20px}}.app-sidebar{width:240px;height:calc(100vh - 60px);background:#fff;border-right:1px solid #e5e7eb;position:fixed;top:60px;left:0;transition:width .3s ease;overflow:hidden;z-index:90}.app-sidebar.collapsed{width:70px}.app-sidebar.mobile{width:240px;z-index:110;transition:transform .3s ease}.app-sidebar.mobile.mobile-closed{transform:translate(-100%)}.sidebar-overlay{position:fixed;inset:0;background:#00000080;z-index:105}.sidebar-header{display:flex;align-items:center;justify-content:space-between;padding:16px 20px;border-bottom:1px solid #e5e7eb}.sidebar-title{font-size:16px;font-weight:600;color:#374151}.app-sidebar.collapsed .sidebar-title{display:none}.sidebar-toggle{width:28px;height:28px;background:#f8f9fa;border:1px solid #e5e7eb;border-radius:4px;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:all .2s;flex-shrink:0}.sidebar-toggle:hover{background:#e5e7eb}.sidebar-nav{padding:20px 12px;display:flex;flex-direction:column;gap:4px}.sidebar-item{display:flex;align-items:center;gap:12px;padding:12px 16px;background:none;border:none;border-radius:4px;cursor:pointer;transition:all .2s;position:relative;width:100%;text-align:left;color:#4b5563;font-size:14px;font-weight:500}.sidebar-item:hover:not(.disabled){background:#f9fafb;color:#111827}.sidebar-item.active{background:#0f3460;color:#fff}.sidebar-item.disabled{opacity:.5;cursor:not-allowed}.sidebar-icon{display:flex;align-items:center;justify-content:center;min-width:20px}.sidebar-label{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.app-sidebar.collapsed .sidebar-label{display:none}.app-sidebar.collapsed .sidebar-item{padding:12px;justify-content:center}.app-sidebar.collapsed .coming-soon{display:none}.coming-soon{position:absolute;right:12px;top:50%;transform:translateY(-50%);font-size:10px;background:#f3f4f6;color:#6b7280;padding:2px 6px;border-radius:4px;font-weight:600;text-transform:uppercase}.sidebar-item.active .coming-soon{background:#fff3;color:#fffc}@media (max-width: 768px){.sidebar-toggle{display:none}}.dashboard-layout{min-height:100vh;background:#f8f9fa}.dashboard-content{margin-left:240px;margin-top:60px;min-height:calc(100vh - 60px);transition:margin-left .3s ease;padding:40px}.dashboard-content.sidebar-collapsed{margin-left:70px}.dashboard-content.mobile{margin-left:0;padding:20px}.dashboard-content.fullscreen{padding:0;margin-top:0;margin-left:240px;height:100vh}.dashboard-content.fullscreen.sidebar-collapsed{margin-left:70px}.dashboard-content.fullscreen.mobile{margin-left:0}@media (max-width: 768px){.dashboard-content{margin-left:0;padding:20px}}.toolbar-toggle{position:fixed;top:80px;right:0;background:#fffffff2;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border:none;border-radius:12px 0 0 12px;padding:12px 8px;box-shadow:-4px 0 16px #0000001a;cursor:pointer;z-index:1001;color:#666;transition:all .3s ease}.toolbar-toggle:hover{background:#fff;color:#0f3460;box-shadow:-6px 0 20px #00000026}.toolbar-toggle.active{background:#0f3460;color:#fff}.toolbar-overlay{position:fixed;inset:0;background:#0000004d;z-index:999;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.slide-out-toolbar{position:fixed;top:0;right:0;width:320px;height:100vh;background:#fffffff2;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);box-shadow:-8px 0 32px #0000001a;z-index:1000;transform:translate(100%);transition:transform .3s ease;overflow-y:auto}.slide-out-toolbar.open{transform:translate(0)}.slide-out-toolbar.closed{transform:translate(100%)}.toolbar-header{display:flex;justify-content:space-between;align-items:center;padding:20px 24px;border-bottom:1px solid rgba(0,0,0,.1);background:#fffc}.toolbar-content{padding:24px}.close-btn{background:none;border:none;cursor:pointer;padding:4px;border-radius:4px;color:#666;transition:all .2s ease;display:flex;align-items:center;justify-content:center}.close-btn:hover{background:#f3f4f6;color:#333}.toolbar-header h3{font-size:16px;font-weight:600;color:#333;margin:0}.collapse-btn{background:none;border:none;cursor:pointer;padding:4px;border-radius:4px;color:#666;transition:all .2s ease;display:flex;align-items:center;justify-content:center}.collapse-btn:hover{background:#f3f4f6;color:#333}.toolbar-section{margin-bottom:16px}.toolbar-section:last-child{margin-bottom:0}.toolbar-section h4{font-size:12px;font-weight:600;color:#666;margin-bottom:8px;text-transform:uppercase;letter-spacing:.5px}.tool-buttons{display:flex;gap:8px;flex-wrap:wrap}.tool-btn{width:40px;height:40px;border:2px solid #e5e7eb;border-radius:8px;background:#fff;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .2s ease;color:#666}.tool-btn:hover{border-color:#0f3460;color:#0f3460}.tool-btn.active{border-color:#0f3460;background:#0f3460;color:#fff}.color-palette{display:grid;grid-template-columns:repeat(5,1fr);gap:6px}.color-btn{width:24px;height:24px;border-radius:50%;cursor:pointer;transition:all .2s ease;position:relative}.color-btn.active:after{content:"";position:absolute;inset:-3px;border:2px solid #0f3460;border-radius:50%}.stroke-width-options{display:flex;gap:8px;flex-wrap:wrap}.stroke-btn{width:32px;height:32px;border:2px solid #e5e7eb;border-radius:6px;background:#fff;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .2s ease}.stroke-btn:hover{border-color:#0f3460}.stroke-btn.active{border-color:#0f3460;background:#f0f9ff}.stroke-preview{border-radius:50%;transition:all .2s ease}.action-btn{display:flex;align-items:center;gap:8px;padding:8px 12px;border:2px solid #e5e7eb;border-radius:8px;background:#fff;cursor:pointer;transition:all .2s ease;font-size:14px;color:#666;width:100%;justify-content:center}.action-btn:hover{border-color:#dc2626;color:#dc2626}.clear-btn:hover{background:#fef2f2}.save-btn{margin-bottom:8px}.save-btn:hover{border-color:#3b82f6;color:#3b82f6;background:#eff6ff}.save-btn:disabled{opacity:.6;cursor:not-allowed}.save-btn.success,.save-btn.success:hover{border-color:#10b981;color:#10b981;background:#ecfdf5}.save-btn.error,.save-btn.error:hover{border-color:#ef4444;color:#ef4444;background:#fef2f2}.save-btn svg{animation:none}.save-btn svg[data-saving=true]{animation:spin 1s linear infinite}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.autosave-indicator{padding:8px 12px;margin-bottom:12px;border-radius:6px;background:#f9fafb;border:1px solid #e5e7eb}.autosave-status{display:flex;align-items:center;gap:6px;font-size:12px;color:#6b7280}.autosave-status svg{width:12px;height:12px}.autosave-status.saving{color:#3b82f6}.autosave-status.saving svg{animation:spin 1s linear infinite}.autosave-status.saved{color:#10b981}.autosave-status.saved svg{color:#10b981}@media (max-width: 768px){.floating-toolbar{top:10px;left:10px;right:10px;min-width:auto;padding:12px}.toolbar-section{margin-bottom:12px}.color-palette{grid-template-columns:repeat(5,1fr)}}.whiteboard-container{position:relative;width:100vw;height:100vh;overflow:hidden;background:#f5f5f5}.back-button{position:absolute;top:80px;left:20px;z-index:1000;display:flex;align-items:center;gap:8px;background:#fff;color:#374151;border:1px solid #d1d5db;padding:10px 16px;border-radius:8px;cursor:pointer;font-size:14px;font-weight:500;box-shadow:0 4px 6px #0000001a;transition:all .2s ease}.back-button:hover{background:#f9fafb;border-color:#9ca3af;transform:translateY(-1px);box-shadow:0 6px 12px #00000026}.back-button:active{transform:translateY(0);box-shadow:0 2px 4px #0000001a}.back-button svg{color:#6b7280}.whiteboard-loading{position:absolute;inset:0;background:#ffffffe6;display:flex;flex-direction:column;align-items:center;justify-content:center;z-index:500;pointer-events:none}.loading-spinner{margin-bottom:16px}.loading-spinner svg{animation:spin 1s linear infinite;color:#3b82f6}.whiteboard-loading p{color:#6b7280;font-size:16px;margin:0}.whiteboard-error{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);background:#fff;padding:24px;border-radius:8px;box-shadow:0 4px 12px #0000001a;text-align:center;z-index:500}.whiteboard-error p{color:#dc2626;margin:0 0 16px;font-size:14px}.whiteboard-error button{background:#3b82f6;color:#fff;border:none;padding:8px 16px;border-radius:6px;cursor:pointer;font-size:14px}.whiteboard-error button:hover{background:#2563eb}.whiteboard-canvas{cursor:crosshair;display:block}.whiteboard-canvas.eraser-mode{cursor:grab}.connected-users{position:fixed;top:20px;left:20px;background:#fff;border-radius:12px;padding:16px;box-shadow:0 4px 12px #0000001a;border:1px solid #e5e7eb;z-index:50;min-width:200px}.users-header{display:flex;align-items:center;gap:8px;margin-bottom:12px;color:#6b7280;font-size:14px;font-weight:500}.users-list{display:flex;flex-direction:column;gap:8px}.user-indicator{display:flex;align-items:center;gap:8px}.user-avatar{width:32px;height:32px;border-radius:50%;display:flex;align-items:center;justify-content:center;color:#fff;font-weight:600;font-size:14px}.user-name{font-size:14px;color:#374151;font-weight:500}.you-badge{font-size:12px;color:#6b7280;font-weight:400}.websocket-status{position:fixed;bottom:20px;left:20px;display:flex;align-items:center;gap:8px;padding:8px 12px;background:#fff;border-radius:20px;box-shadow:0 2px 8px #0000001a;border:1px solid #e5e7eb;font-size:12px;z-index:50}.status-indicator{width:8px;height:8px;border-radius:50%;background:#ef4444}.websocket-status.connected .status-indicator{background:#10b981}.websocket-status.connected span{color:#10b981}.websocket-status.disconnected span{color:#ef4444}.user-cursor{position:absolute;pointer-events:none;z-index:1000;transition:all .1s ease-out}.user-cursor svg{filter:drop-shadow(0 2px 4px rgba(0,0,0,.2))}.cursor-label{animation:fadeIn .2s ease-in}@keyframes fadeIn{0%{opacity:0;transform:translateY(-5px)}to{opacity:1;transform:translateY(0)}}.dashboard-home{max-width:800px;margin:0 auto}.dashboard-home h1{font-size:32px;font-weight:600;color:#111827;margin-bottom:12px}.dashboard-home>p{font-size:16px;color:#6b7280;margin-bottom:40px}.features-section h2{font-size:24px;font-weight:600;color:#111827;margin-bottom:24px}.feature-item{background:#fff;padding:24px;border-radius:8px;margin-bottom:16px;border:1px solid #e5e7eb;box-shadow:0 1px 3px #0000000d;position:relative}.feature-item h3{font-size:18px;font-weight:600;color:#111827;margin-bottom:8px}.feature-item p{font-size:14px;color:#6b7280;margin-bottom:0}.coming-soon{position:absolute;top:20px;right:20px;background:#f3f4f6;color:#6b7280;font-size:12px;font-weight:500;padding:4px 8px;border-radius:4px;text-transform:uppercase}.available{position:absolute;top:20px;right:20px;background:#dcfce7;color:#166534;font-size:12px;font-weight:500;padding:4px 8px;border-radius:4px;text-transform:uppercase}.user-actions{margin-top:40px;text-align:center}.logout-button{background:#dc2626;color:#fff;border:none;padding:12px 24px;border-radius:6px;font-size:14px;font-weight:500;cursor:pointer;transition:background .2s ease}.logout-button:hover{background:#b91c1c}.app-placeholder{text-align:center;padding:80px 20px;background:#fff;border-radius:8px;border:1px solid #e5e7eb}.app-placeholder h1{font-size:24px;font-weight:600;color:#111827;margin-bottom:12px}.app-placeholder p{font-size:16px;color:#6b7280}.whiteboard-list-container{max-width:1200px;margin:0 auto;padding-top:80px}.whiteboard-list-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:32px}.whiteboard-list-header h1{font-size:32px;font-weight:600;color:#111827;margin:0}.create-whiteboard-btn{background:#3b82f6;color:#fff;border:none;padding:12px 24px;border-radius:8px;cursor:pointer;font-size:14px;font-weight:500;transition:background .2s ease;box-shadow:0 1px 3px #0000001a}.create-whiteboard-btn:hover{background:#2563eb}.create-whiteboard-form{background:#fff;padding:24px;border-radius:8px;margin-bottom:24px;display:flex;gap:12px;align-items:center;border:1px solid #e5e7eb;box-shadow:0 1px 3px #0000000d}.create-whiteboard-form input{flex:1;padding:12px 16px;border:1px solid #d1d5db;border-radius:6px;font-size:14px;outline:none;transition:border-color .2s ease}.create-whiteboard-form input:focus{border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f61a}.create-whiteboard-form button{padding:12px 20px;border:none;border-radius:6px;cursor:pointer;font-size:14px;font-weight:500;transition:background .2s ease}.create-whiteboard-form button:first-of-type{background:#10b981;color:#fff}.create-whiteboard-form button:first-of-type:hover{background:#059669}.create-whiteboard-form button:last-of-type{background:#6b7280;color:#fff}.create-whiteboard-form button:last-of-type:hover{background:#4b5563}.whiteboard-list-loading,.whiteboard-list-error{text-align:center;padding:80px 20px;background:#fff;border-radius:8px;border:1px solid #e5e7eb}.whiteboard-list-loading{font-size:16px;color:#6b7280}.whiteboard-list-error{font-size:16px;color:#dc2626}.whiteboard-list-empty{text-align:center;padding:80px 20px;background:#fff;border-radius:8px;border:1px solid #e5e7eb;margin-top:24px}.whiteboard-list-empty p{font-size:16px;color:#6b7280;margin:0}.whiteboard-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:24px;margin-top:24px}.whiteboard-card{background:#fff;border-radius:8px;border:1px solid #e5e7eb;box-shadow:0 1px 3px #0000000d;transition:transform .2s ease,box-shadow .2s ease,border-color .2s ease;overflow:hidden;position:relative}.whiteboard-card-content{cursor:pointer}.whiteboard-card:hover{transform:translateY(-2px);box-shadow:0 4px 12px #0000001a;border-color:#d1d5db}.whiteboard-card-preview{height:180px;background:#f9fafb;display:flex;align-items:center;justify-content:center;border-bottom:1px solid #e5e7eb}.whiteboard-placeholder{width:100%;height:100%;display:flex;align-items:center;justify-content:center}.whiteboard-placeholder svg{max-width:80%;max-height:80%;opacity:.6}.whiteboard-card-info{padding:20px}.whiteboard-card-info h3{margin:0 0 8px;color:#111827;font-size:16px;font-weight:600}.whiteboard-card-info p{margin:0;color:#6b7280;font-size:14px}.whiteboard-name-edit{margin-bottom:8px}.whiteboard-name-edit input{width:100%;padding:6px 8px;border:2px solid #3b82f6;border-radius:4px;font-size:16px;font-weight:600;color:#111827;background:#fff;outline:none;box-shadow:0 0 0 3px #3b82f61a;transition:all .2s ease}.whiteboard-name-edit input:disabled{opacity:.6;cursor:not-allowed}.whiteboard-name-edit input::selection{background:#3b82f6;color:#fff}.whiteboard-card-actions{position:absolute;top:12px;right:12px;display:flex;gap:8px;opacity:0;transform:scale(.9);transition:all .2s ease}.whiteboard-card:hover .whiteboard-card-actions{opacity:1;transform:scale(1)}.rename-whiteboard-btn{background:#ffffffe6;border:1px solid #e5e7eb;border-radius:6px;padding:8px;cursor:pointer;color:#6b7280;transition:all .2s ease;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.rename-whiteboard-btn:hover{background:#fef3c7;border-color:#fbbf24;color:#d97706}.rename-whiteboard-btn:disabled{opacity:.5;cursor:not-allowed}.rename-whiteboard-btn svg{display:block;width:16px;height:16px}.delete-whiteboard-btn{background:#ffffffe6;border:1px solid #e5e7eb;border-radius:6px;padding:8px;cursor:pointer;color:#6b7280;transition:all .2s ease;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.delete-whiteboard-btn:hover{background:#fee2e2;border-color:#fca5a5;color:#dc2626}.delete-whiteboard-btn:disabled{opacity:.5;cursor:not-allowed}.delete-whiteboard-btn svg{display:block;width:16px;height:16px}.delete-confirm-overlay{position:fixed;inset:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:1000;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.delete-confirm-dialog{background:#fff;border-radius:12px;padding:32px;max-width:400px;width:90%;box-shadow:0 20px 25px -5px #0000001a,0 10px 10px -5px #0000000a}.delete-confirm-dialog h3{margin:0 0 16px;color:#111827;font-size:18px;font-weight:600}.delete-confirm-dialog p{margin:0 0 8px;color:#6b7280;font-size:14px;line-height:1.5}.delete-confirm-dialog p:last-of-type{margin-bottom:24px;font-weight:500;color:#dc2626}.delete-confirm-actions{display:flex;gap:12px;justify-content:flex-end}.delete-confirm-actions button{padding:10px 20px;border:none;border-radius:6px;cursor:pointer;font-size:14px;font-weight:500;transition:all .2s ease}.delete-confirm-cancel{background:#f3f4f6;color:#374151}.delete-confirm-cancel:hover{background:#e5e7eb}.delete-confirm-delete{background:#dc2626;color:#fff}.delete-confirm-delete:hover:not(:disabled){background:#b91c1c}.delete-confirm-delete:disabled{opacity:.5;cursor:not-allowed}.app{min-height:100vh}
