:root{--brand: #1007A0;--brand-hover: #0d0690;--brand-muted: rgba(16, 7, 160, .12);--brand-muted-strong: rgba(16, 7, 160, .18);--bg: #f4f5f8;--bg-elevated: #ffffff;--surface: #ffffff;--surface-hover: #f8f9fc;--border: #e8eaef;--border-strong: #dce0e8;--text: #1a1d26;--text-secondary: #5c6370;--text-tertiary: #8b92a0;--textMuted: #5c6370;--surface2: #f8f9fc;--success: #0d9488;--success-bg: rgba(13, 148, 136, .12);--warning: #d97706;--warning-bg: rgba(217, 119, 6, .12);--danger: #dc2626;--danger-bg: rgba(220, 38, 38, .1);--shadow-xs: 0 1px 2px rgba(0, 0, 0, .04);--shadow-sm: 0 2px 8px rgba(0, 0, 0, .06), 0 1px 2px rgba(0, 0, 0, .04);--shadow-md: 0 4px 16px rgba(0, 0, 0, .08), 0 2px 4px rgba(0, 0, 0, .04);--shadow-lg: 0 8px 32px rgba(0, 0, 0, .1), 0 2px 8px rgba(0, 0, 0, .06);--radius-sm: 8px;--radius-md: 12px;--radius-lg: 16px;--radius-xl: 20px;font-family:Geologica,system-ui,-apple-system,sans-serif;font-size:16px;line-height:1.5;font-weight:400;color:var(--text);background:var(--bg);font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}*{box-sizing:border-box}body{margin:0;min-height:100vh}a{color:var(--brand);text-decoration:none;transition:color .15s ease}a:hover{color:var(--brand-hover)}button{border-radius:var(--radius-sm);border:none;padding:.625rem 1.125rem;font-size:.9375rem;font-weight:500;font-family:inherit;background:var(--surface);color:var(--text);cursor:pointer;transition:background .2s ease,box-shadow .2s ease,transform .1s ease;border:1px solid var(--border)}button:hover{background:var(--surface-hover)}button:active{transform:scale(.98)}button.primary{background:var(--brand);color:#fff;border-color:var(--brand);box-shadow:var(--shadow-xs)}button.primary:hover{background:var(--brand-hover);box-shadow:0 2px 8px #1007a040}button.danger{background:var(--danger);color:#fff;border-color:var(--danger)}button.danger:hover{filter:brightness(1.06)}input,textarea,select{font-family:inherit;font-size:.9375rem;padding:.625rem .875rem;border-radius:var(--radius-sm);border:1px solid var(--border);background:var(--surface);color:var(--text);width:100%;transition:border-color .2s ease,box-shadow .2s ease}input::placeholder,textarea::placeholder{color:var(--text-tertiary)}input:focus,textarea:focus,select:focus{outline:none;border-color:var(--brand);box-shadow:0 0 0 3px var(--brand-muted)}textarea{min-height:88px;resize:vertical}.app-shell{display:flex;min-height:100vh}.sidebar-toggle{display:none;position:fixed;top:1rem;left:1rem;z-index:100;width:44px;height:44px;flex-direction:column;justify-content:center;gap:5px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);cursor:pointer;box-shadow:var(--shadow-sm);transition:background .2s}.sidebar-toggle:hover{background:var(--surface-hover)}.sidebar-toggle span{display:block;height:2px;background:var(--text);margin:0 10px;border-radius:1px}.sidebar{width:280px;min-width:280px;background:var(--surface);border-right:1px solid var(--border);display:flex;flex-direction:column;box-shadow:var(--shadow-xs)}.sidebar .app-logo{display:block;padding:1.25rem 1.25rem 1rem;font-size:1.25rem;font-family:Roboto Condensed,sans-serif;font-weight:900;font-style:italic;color:var(--brand);letter-spacing:-.02em;transition:color .15s}.sidebar .app-logo:hover{color:var(--brand-hover)}.sidebar-user{padding:1rem 1.25rem;margin:0 .75rem .75rem;background:var(--bg);border-radius:var(--radius-md)}.sidebar-user-name{display:block;font-size:.875rem;font-weight:600;color:var(--text);margin-bottom:.25rem}.sidebar-logout{padding:0;font-size:.8125rem;background:none!important;border:none!important;color:var(--text-secondary);box-shadow:none!important}.sidebar-logout:hover{color:var(--danger)}.sidebar-nav{flex:1;overflow:auto;padding:0 .75rem 1.25rem}.sidebar-section{margin-bottom:1.25rem}.sidebar-section-title{display:block;padding:0 .5rem .5rem;font-size:.6875rem;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--text-tertiary)}.sidebar-list{list-style:none;margin:0;padding:0}.sidebar-list a{display:flex;align-items:center;justify-content:space-between;padding:.625rem .75rem;margin-bottom:2px;color:var(--text);border-radius:var(--radius-sm);transition:background .15s,color .15s}.sidebar-list a:hover{background:var(--surface-hover);color:var(--brand)}.sidebar-list a.active{background:var(--brand-muted);color:var(--brand);font-weight:500}.sidebar-count{font-size:.75rem;color:var(--text-secondary);background:var(--surface);padding:.2rem .5rem;border-radius:6px;font-weight:500}.sidebar-list a.active .sidebar-count{background:#fffc;color:var(--brand)}.sidebar-project-block{width:100%;padding:0}.sidebar-project-name{display:block;padding:.25rem .75rem .125rem;font-size:.8125rem;font-weight:600;color:var(--text-tertiary)}.sidebar-sublist{list-style:none;margin:0 0 .5rem;padding:0}.sidebar-sublist li{margin:0}.sidebar-sublist a{display:flex;align-items:center;justify-content:space-between;padding:.5rem .75rem .5rem 1.25rem;margin-bottom:2px;color:var(--text);border-radius:var(--radius-sm);transition:background .15s,color .15s;font-size:.9375rem}.sidebar-sublist a:hover{background:var(--surface-hover);color:var(--brand)}.sidebar-sublist a.active{background:var(--brand-muted);color:var(--brand);font-weight:500}.sidebar-overlay{display:none;position:fixed;inset:0;background:#00000040;z-index:98;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.sidebar-overlay.visible{display:block}.main-content{flex:1;min-width:0;padding:1.5rem 1.5rem 3rem;background:var(--bg)}@media(min-width:960px){.main-content{padding:2rem 2.5rem;max-width:1280px}}@media(max-width:768px){.sidebar-toggle{display:flex}.sidebar{position:fixed;top:0;left:0;bottom:0;z-index:99;transform:translate(-100%);transition:transform .25s ease;box-shadow:var(--shadow-lg)}.sidebar-open{transform:translate(0)}.main-content{padding-top:4rem}}.pageHeader{display:flex;align-items:center;justify-content:space-between;gap:1rem;flex-wrap:wrap;margin-bottom:1.75rem}.pageHeader h1{font-size:1.5rem;font-weight:700;margin:0;letter-spacing:-.02em;color:var(--text)}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);padding:1.25rem;margin-bottom:1rem;box-shadow:var(--shadow-xs);transition:box-shadow .2s ease,border-color .2s ease}.card h2{font-weight:700;letter-spacing:-.02em}.card h3{font-weight:600;letter-spacing:-.01em}.card:hover{box-shadow:var(--shadow-sm)}@media(min-width:600px){.card{padding:1.5rem}}.listItem{display:block;padding:1rem 1.25rem;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);margin-bottom:.5rem;color:inherit;transition:border-color .2s,background .2s,box-shadow .2s}.listItem:hover{border-color:var(--border-strong);background:var(--surface);box-shadow:var(--shadow-sm)}.task-card{margin-bottom:.75rem}.task-card-head{display:flex;justify-content:space-between;align-items:flex-start;gap:.75rem;flex-wrap:wrap}.task-card-title-row{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap}.task-card-link{font-weight:600;color:var(--text)}.task-card-link:hover{color:var(--brand)}.task-card-notes{margin:.5rem 0 0;font-size:.9375rem;color:var(--text-secondary);line-height:1.45}.task-card-meta{margin-top:.625rem;font-size:.8125rem;color:var(--text-secondary);display:flex;flex-wrap:wrap;gap:.75rem}.badge{display:inline-flex;align-items:center;padding:.25rem .5rem;border-radius:6px;font-size:.75rem;font-weight:500}.badge.todo{background:var(--surface-hover);color:var(--text-secondary)}.badge.in_progress{background:var(--brand-muted);color:var(--brand)}.badge.review{background:var(--warning-bg);color:var(--warning)}.badge.done{background:var(--success-bg);color:var(--success)}.formRow{margin-bottom:1.25rem}.formRow label{display:block;margin-bottom:.375rem;font-size:.875rem;font-weight:500;letter-spacing:.01em;color:var(--text-secondary)}.formActions{display:flex;gap:.75rem;flex-wrap:wrap;margin-top:1.5rem}.backLink{display:inline-flex;align-items:center;gap:.375rem;margin-bottom:1.25rem;font-size:.875rem;color:var(--text-secondary);transition:color .15s}.backLink:hover{color:var(--brand)}.empty{text-align:center;padding:3rem 1.5rem;color:var(--text-secondary);font-size:.9375rem;font-weight:400}.tags{display:flex;flex-wrap:wrap;gap:.5rem;margin-top:.5rem}.view-toggle{display:inline-flex;border:1px solid var(--border);border-radius:var(--radius-sm);overflow:hidden;box-shadow:var(--shadow-xs)}.view-toggle button{border-radius:0;margin:0;border:none;background:var(--surface);padding:.5rem .875rem;font-size:.875rem;font-weight:500}.view-toggle button:hover{background:var(--surface-hover)}.view-toggle button.active{background:var(--brand);color:#fff;border:none}.view-toggle button.active:hover{background:var(--brand-hover)}.table-wrap{overflow-x:auto;border-radius:var(--radius-md);border:1px solid var(--border);background:var(--surface)}.data-table{width:100%;border-collapse:collapse;font-size:.875rem}.data-table th,.data-table td{padding:.75rem 1rem;text-align:left;border-bottom:1px solid var(--border)}.data-table th{font-weight:600;color:var(--text-secondary);font-size:.75rem;text-transform:uppercase;letter-spacing:.06em;background:var(--bg)}.data-table tbody tr{transition:background .15s}.data-table tbody tr:hover{background:var(--surface-hover)}.data-table tbody tr:last-child td{border-bottom:none}.table-link{color:var(--text);font-weight:500;transition:color .15s}.table-link:hover{color:var(--brand)}.text-muted{color:var(--text-secondary);font-weight:400}.btn-sm{padding:.375rem .75rem;font-size:.8125rem}.kanban{display:grid;grid-template-columns:repeat(4,1fr);gap:1.25rem;align-items:start}@media(max-width:960px){.kanban{grid-template-columns:repeat(2,1fr)}}@media(max-width:520px){.kanban{grid-template-columns:1fr}}.kanban-column{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);padding:1rem;min-height:140px;box-shadow:var(--shadow-xs)}.kanban-column-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:.75rem;padding-bottom:.75rem;border-bottom:1px solid var(--border)}.kanban-column-title{font-weight:700;font-size:.875rem;letter-spacing:-.01em;color:var(--text)}.kanban-column-count{font-size:.75rem;color:var(--text-secondary);background:var(--bg);padding:.25rem .5rem;border-radius:6px;font-weight:500}.kanban-column-cards{display:flex;flex-direction:column;gap:.5rem}.kanban-card{display:block;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);padding:.875rem;color:var(--text);transition:border-color .2s,box-shadow .2s,background .2s}.kanban-card{cursor:grab}.kanban-card:active{cursor:grabbing}.kanban-card:hover{border-color:var(--brand);box-shadow:0 4px 12px #1007a014;background:var(--surface)}.kanban-card-dragging{opacity:.6;cursor:grabbing}.kanban-column-drag-over{background:var(--brand-muted);border-color:var(--brand)}.kanban-card-title{font-weight:500;margin-bottom:.25rem;font-size:.9375rem}.kanban-card-meta,.kanban-card-notes{font-size:.8125rem;color:var(--text-secondary)}.kanban-card-notes{margin-top:.375rem;line-height:1.4}.settings-list{list-style:none;margin:0;padding:0}.settings-list-item{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:1rem 0;border-bottom:1px solid var(--border)}.settings-list-item:last-child{border-bottom:none}.settings-project-link{flex:1;text-align:left;background:none;border:none;padding:0;cursor:pointer;color:inherit;font:inherit}.settings-project-link:hover{color:var(--primary)}.settings-project-link strong{font-weight:700}.finance-summary{display:flex;gap:2rem;flex-wrap:wrap;margin-bottom:1.5rem}.finance-summary-item{display:flex;flex-direction:column;gap:.25rem}.finance-summary-label{font-size:.875rem;font-weight:500;color:var(--text-secondary)}.finance-summary-value{font-size:1.375rem;font-weight:700;letter-spacing:-.02em}.finance-outcome{color:var(--danger)}.finance-income{color:var(--success)}.assignee-checkboxes{display:flex;flex-direction:column;gap:.5rem}.assignee-checkbox{display:flex;align-items:center;gap:.625rem;cursor:pointer;font-size:.9375rem}.assignee-checkbox input{width:auto;accent-color:var(--brand)}.login-page{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:1.5rem;background:linear-gradient(160deg,var(--bg) 0%,#eef0f5 100%)}.login-card{width:100%;max-width:400px;box-shadow:var(--shadow-lg);border-radius:var(--radius-xl);padding:2rem}.login-title{margin:0 0 .25rem;font-size:1.5rem;font-family:Roboto Condensed,sans-serif;font-weight:900;font-style:italic;color:var(--brand);letter-spacing:-.02em}.login-subtitle{color:var(--text-secondary);font-size:.9375rem;font-weight:400;margin-bottom:1.75rem}.login-error{padding:.75rem 1rem;background:var(--danger-bg);color:var(--danger);border-radius:var(--radius-sm);font-size:.875rem;margin-bottom:1rem}.card-error{margin-bottom:1rem;padding:.75rem 1rem;background:var(--danger-bg);color:var(--danger);border:1px solid rgba(220,38,38,.2);border-radius:var(--radius-sm);font-size:.875rem}.page-description{color:var(--text-secondary);font-size:.9375rem;font-weight:400;margin-bottom:1.25rem;line-height:1.5}.detail-meta{font-size:.9375rem;color:var(--text-secondary)}.detail-meta strong{color:var(--text)}.detail-meta>div+div{margin-top:.5rem}.detail-label{font-size:.875rem;color:var(--text-secondary);margin-bottom:.25rem}.datetimeLocal{font-family:inherit}.modal-overlay{position:fixed;inset:0;background:#0006;display:flex;align-items:center;justify-content:center;z-index:200;padding:1rem;overflow-y:auto;animation:modalFadeIn .2s ease}@keyframes modalFadeIn{0%{opacity:0}to{opacity:1}}.modal-box{position:relative;background:var(--surface);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);width:100%;max-width:520px;max-height:calc(100vh - 2rem);overflow-y:auto;animation:modalSlideIn .25s ease}@keyframes modalSlideIn{0%{opacity:0;transform:scale(.98) translateY(-8px)}to{opacity:1;transform:scale(1) translateY(0)}}.modal-title{padding:1.25rem 1.5rem 0;font-size:1.25rem;font-weight:700;letter-spacing:-.02em;color:var(--text)}.modal-close{position:absolute;top:1rem;right:1rem;width:32px;height:32px;padding:0;display:flex;align-items:center;justify-content:center;font-size:1.5rem;line-height:1;color:var(--text-secondary);background:none;border:none;border-radius:var(--radius-sm);cursor:pointer;transition:color .15s,background .15s}.modal-close:hover{color:var(--text);background:var(--surface-hover)}.modal-body{padding:1.25rem 1.5rem 1.5rem}.modal-form{background:none;border:none;padding:0;margin:0;box-shadow:none}.modal-form:hover{box-shadow:none}.settings-toggle-label{display:inline-flex;align-items:center;gap:.5rem;margin-top:.5rem;font-size:.9rem;color:var(--text-secondary);cursor:pointer}.settings-toggle-label input{width:auto;accent-color:var(--brand)}.clients-list{display:flex;flex-direction:column;gap:1rem}.client-card{margin-bottom:0}.client-card-head{display:flex;justify-content:space-between;align-items:flex-start;gap:1rem;flex-wrap:wrap}.client-name{font-size:1.1rem}.client-contact{font-size:.9rem;color:var(--text-secondary);margin-top:.25rem}.client-contact span+span:before{content:" · "}.client-card-actions{display:flex;gap:.5rem;flex-wrap:wrap}.client-notes{margin:.75rem 0 0;font-size:.9375rem;color:var(--text-secondary);line-height:1.45}.client-payments{margin-top:1rem;padding-top:1rem;border-top:1px solid var(--border)}.client-payments-title{font-size:.875rem;font-weight:500;color:var(--text-secondary);margin-bottom:.5rem}.client-payments-total{color:var(--success)}.client-payments-list{margin:0;padding-left:1.25rem;font-size:.875rem;color:var(--text-secondary)}.client-payments-list li{margin-bottom:.25rem}
