*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}:root{--bg: #0f1117;--bg-surface: #1a1d27;--bg-elevated: #222535;--bg-hover: #2a2d3e;--border: #2e3147;--border-light: #3a3d52;--text: #e2e4f0;--text-muted: #7b7f9e;--text-dim: #4a4d65;--accent: #4f86c6;--accent-hover: #6499d4;--danger: #e84a5f;--danger-hover: #f05070;--warning: #d4a017;--success: #5aaa6f;--toolbar-height: 52px;--row-label-width: 48px;--scrollbar-width: 8px;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,system-ui,sans-serif;font-size:14px;color:var(--text);background:var(--bg)}body{overflow:hidden;height:100vh}#root{height:100vh;display:flex;flex-direction:column}::-webkit-scrollbar{width:var(--scrollbar-width);height:var(--scrollbar-width)}::-webkit-scrollbar-track{background:var(--bg)}::-webkit-scrollbar-thumb{background:var(--border-light);border-radius:4px}::-webkit-scrollbar-thumb:hover{background:var(--text-dim)}.login-container{flex:1;display:flex;align-items:center;justify-content:center;background:var(--bg)}.login-card{background:var(--bg-surface);border:1px solid var(--border);border-radius:12px;padding:40px;width:360px;display:flex;flex-direction:column;gap:16px}.login-logo{display:flex;justify-content:center}.login-card h1{text-align:center;font-size:22px;font-weight:600;color:var(--text)}.login-subtitle{text-align:center;color:var(--text-muted);font-size:13px}.login-card form{display:flex;flex-direction:column;gap:12px;margin-top:4px}.form-group{display:flex;flex-direction:column;gap:6px}.form-group label{font-size:12px;font-weight:500;color:var(--text-muted);text-transform:uppercase;letter-spacing:.04em}input[type=text],input[type=password],input[type=number],textarea{background:var(--bg-elevated);border:1px solid var(--border);border-radius:6px;padding:8px 12px;color:var(--text);font-size:14px;font-family:inherit;outline:none;transition:border-color .15s;width:100%}input[type=text]:focus,input[type=password]:focus,input[type=number]:focus,textarea:focus{border-color:var(--accent)}textarea{resize:vertical;min-height:70px}input[type=number]{width:70px}.lead-months-input{display:flex;align-items:center;gap:8px}.input-suffix{color:var(--text-muted);font-size:13px}.error-message{color:var(--danger);font-size:13px;padding:8px 12px;background:#e84a5f1a;border-radius:6px;border:1px solid rgba(232,74,95,.2)}.btn-primary{background:var(--accent);color:#fff;border:none;border-radius:6px;padding:9px 16px;font-size:14px;font-weight:500;cursor:pointer;transition:background .15s;font-family:inherit}.btn-primary:hover:not(:disabled){background:var(--accent-hover)}.btn-primary:disabled{opacity:.5;cursor:not-allowed}.btn-secondary{background:var(--bg-elevated);color:var(--text);border:1px solid var(--border);border-radius:6px;padding:9px 16px;font-size:14px;cursor:pointer;font-family:inherit;transition:background .15s}.btn-secondary:hover{background:var(--bg-hover)}.btn-danger{background:transparent;color:var(--danger);border:1px solid rgba(232,74,95,.3);border-radius:6px;padding:9px 16px;font-size:14px;cursor:pointer;font-family:inherit;transition:all .15s}.btn-danger:hover,.btn-danger.confirm{background:#e84a5f1f;border-color:var(--danger)}.toolbar{height:var(--toolbar-height);background:var(--bg-surface);border-bottom:1px solid var(--border);display:flex;align-items:center;padding:0 12px;gap:8px;flex-shrink:0;z-index:20}.toolbar-left{display:flex;align-items:center;gap:8px;min-width:160px}.toolbar-center{flex:1;display:flex;align-items:center;justify-content:center}.toolbar-right{display:flex;align-items:center;gap:6px}.toolbar-brand{display:flex;align-items:center;gap:8px}.toolbar-title{font-weight:600;font-size:15px;color:var(--text)}.toolbar-btn{display:flex;align-items:center;gap:6px;background:var(--bg-elevated);border:1px solid var(--border);border-radius:6px;padding:6px 12px;color:var(--text-muted);font-size:13px;cursor:pointer;font-family:inherit;transition:all .15s;white-space:nowrap}.toolbar-btn:hover{background:var(--bg-hover);color:var(--text);border-color:var(--border-light)}.toolbar-btn.active{background:#4f86c626;border-color:#4f86c666;color:var(--accent)}.toolbar-btn.active.warning{background:#d4a0171f;border-color:#d4a01759;color:var(--warning)}.toolbar-btn.icon-only{padding:6px 8px}.toolbar-divider{width:1px;height:20px;background:var(--border);margin:0 2px}.planner-app{flex:1;display:flex;flex-direction:column;overflow:hidden}.timeline-container{flex:1;display:flex;flex-direction:column;overflow:hidden;position:relative}.timeline-scroll{flex:1;overflow-x:scroll;overflow-y:auto;position:relative}.timeline-header{position:sticky;top:0;z-index:10;background:var(--bg-surface);border-bottom:1px solid var(--border);-webkit-user-select:none;user-select:none;display:flex}.header-quarters{display:flex;border-bottom:1px solid var(--border)}.header-quarter{flex-shrink:0;padding:4px 8px;font-size:11px;font-weight:600;color:var(--text-muted);text-transform:uppercase;letter-spacing:.05em;border-right:1px solid var(--border);white-space:nowrap;overflow:hidden}.header-quarter.even{background:#ffffff05}.header-quarter.odd{background:transparent}.header-months{display:flex}.header-month{flex-shrink:0;padding:4px 0;display:flex;flex-direction:column;align-items:center;justify-content:center;border-right:1px solid var(--border);position:relative;overflow:hidden}.header-month.year-boundary{border-left:2px solid var(--border-light)}.month-label{font-size:11px;color:var(--text-muted);font-weight:500}.year-label{font-size:10px;color:var(--text-dim);font-weight:600;position:absolute;top:1px;left:4px}.timeline-body{position:relative}.timeline-empty{padding:40px;text-align:center;color:var(--text-muted);font-size:14px}.timeline-row{display:flex;border-bottom:1px solid var(--border);position:relative;transition:background .1s}.timeline-row:hover{background:#ffffff03}.timeline-row.drop-target{background:#4f86c60d;border-bottom:2px solid var(--accent)}.timeline-row.dragging-row{opacity:.4}.row-label{position:sticky;left:0;z-index:5;background:var(--bg-surface);border-right:1px solid var(--border);display:flex;align-items:center;justify-content:center;gap:4px;flex-shrink:0;padding:0 4px}.row-number{font-size:11px;font-weight:600;color:var(--text-dim);min-width:16px;text-align:center}.row-drag-handle{color:var(--text-dim);cursor:grab;padding:2px;display:flex;align-items:center;border-radius:3px}.row-drag-handle:hover{color:var(--text-muted);background:var(--bg-hover)}.row-delete-btn{background:none;border:none;color:var(--text-dim);cursor:pointer;padding:2px;display:flex;align-items:center;border-radius:3px;opacity:0;transition:opacity .15s}.timeline-row:hover .row-delete-btn{opacity:1}.row-delete-btn:hover{color:var(--danger)}.row-canvas{position:relative;flex-shrink:0}.row-canvas.create-mode{cursor:crosshair}.row-canvas:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background-image:repeating-linear-gradient(to right,transparent,transparent calc(var(--month-col-width, 80px) * 3 - 1px),var(--border) calc(var(--month-col-width, 80px) * 3 - 1px),var(--border) calc(var(--month-col-width, 80px) * 3));pointer-events:none}.project-bar{position:absolute;border-radius:4px;pointer-events:none;overflow:hidden}.project-bar.main-bar{pointer-events:all;display:flex;align-items:center;padding:0 10px;cursor:default;-webkit-user-select:none;user-select:none;transition:filter .1s}.project-bar.main-bar.editable{cursor:grab}.project-bar.main-bar.editable:hover{filter:brightness(1.1)}.bar-label{font-size:12px;font-weight:600;color:#ffffffeb;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex:1;text-shadow:0 1px 2px rgba(0,0,0,.3);pointer-events:none}.resize-handle{position:absolute;top:0;bottom:0;width:8px;cursor:ew-resize;z-index:2;pointer-events:all}.resize-handle-left{left:0;border-radius:4px 0 0 4px}.resize-handle-right{right:0;border-radius:0 4px 4px 0}.resize-handle:after{content:"";position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:2px;height:14px;background:#fff6;border-radius:1px}.project-bar.lead-bar{pointer-events:none;opacity:.35;border-radius:4px}.project-bar.main-bar.is-dragging{opacity:.25;pointer-events:none}.ghost-bar{position:absolute;border-radius:4px;background:#4f86c64d;border:2px dashed rgba(79,134,198,.7);pointer-events:none;z-index:1}.move-ghost{background:transparent!important;border:2px dashed rgba(255,255,255,.3)}.dialog-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0009;display:flex;align-items:center;justify-content:center;z-index:100;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.dialog{background:var(--bg-surface);border:1px solid var(--border);border-radius:12px;width:440px;max-width:95vw;max-height:90vh;display:flex;flex-direction:column;box-shadow:0 24px 80px #00000080}.dialog-header{display:flex;align-items:center;justify-content:space-between;padding:20px 24px 0}.dialog-header h2{font-size:16px;font-weight:600;color:var(--text)}.dialog-close{background:none;border:none;color:var(--text-muted);cursor:pointer;padding:4px;border-radius:4px;display:flex;align-items:center}.dialog-close:hover{color:var(--text);background:var(--bg-hover)}.dialog-date-range{display:flex;align-items:center;gap:6px;padding:8px 24px 0;color:var(--text-muted);font-size:13px}.dialog-body{padding:16px 24px;overflow-y:auto;display:flex;flex-direction:column;gap:16px}.dialog-footer{display:flex;align-items:center;justify-content:space-between;padding:16px 24px;border-top:1px solid var(--border);gap:8px}.dialog-footer-right{display:flex;gap:8px;margin-left:auto}.color-picker{display:flex;gap:8px;flex-wrap:wrap}.color-swatch{width:28px;height:28px;border-radius:50%;border:3px solid transparent;cursor:pointer;transition:transform .1s,border-color .1s;outline:none}.color-swatch:hover{transform:scale(1.1)}.color-swatch.selected{border-color:#fff;box-shadow:0 0 0 2px #ffffff4d;transform:scale(1.05)}
