:root{--color-background:#fff;--color-surface:#f6f6f6;--color-border:#e2e2e2;--color-text:#111;--color-muted:#6b6b6b;--color-accent:#1f4fd8;--color-danger:#c62828;--color-overlay:#11111180;--font-sans:Inter, system-ui, sans-serif;--sidebar-width:240px;--content-max-width:1200px;--radius:0}*,:before,:after{box-sizing:border-box}html,body,#root{min-height:100%}body{background:var(--color-background);color:var(--color-text);font-family:var(--font-sans);margin:0;font-size:15px;line-height:1.5}h1,h2,h3,p{margin-top:0}a{color:var(--color-accent)}button,input,select,textarea{font:inherit;border-radius:0}:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}.visually-hidden{clip:rect(0 0 0 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.app-shell{grid-template-columns:var(--sidebar-width) minmax(0, 1fr);min-height:100vh;display:grid}.sidebar{border-right:1px solid var(--color-border);background:var(--color-surface);padding:24px 16px}.brand{letter-spacing:.08em;text-transform:uppercase;margin:0 0 32px;padding:0 8px;font-size:14px;font-weight:700}.nav{flex-direction:column;gap:2px;display:flex}.nav-label{color:var(--color-muted);letter-spacing:.08em;text-transform:uppercase;margin:0 0 8px;padding:0 8px;font-size:11px;font-weight:600}.nav-link{color:var(--color-text);overflow-wrap:anywhere;border-left:3px solid #0000;padding:8px;text-decoration:none}.nav-link:hover{background:var(--color-background)}.nav-link.is-active{border-left-color:var(--color-accent);background:var(--color-background);font-weight:600}.nav-empty{color:var(--color-muted);margin:0;padding:8px;font-size:13px}.main{min-width:0;padding:40px 48px 64px}.page{width:100%;max-width:var(--content-max-width);margin:0 auto}.page-header{border-bottom:1px solid var(--color-border);justify-content:space-between;align-items:flex-start;gap:24px;margin-bottom:28px;padding-bottom:24px;display:flex}.page-kicker{color:var(--color-muted);letter-spacing:.1em;text-transform:uppercase;margin-bottom:6px;font-size:11px;font-weight:600}.page-title{letter-spacing:-.01em;margin:0;font-size:32px;line-height:1.15}.project-form{border:1px solid var(--color-border);background:var(--color-surface);align-items:flex-end;gap:12px;margin-bottom:24px;padding:20px;display:flex}.field{flex-direction:column;gap:6px;min-width:0;display:flex}.field label{letter-spacing:.08em;text-transform:uppercase;font-size:11px;font-weight:600}.input{border:1px solid var(--color-border);background:var(--color-background);width:100%;min-width:280px;color:var(--color-text);padding:9px 10px}.input:hover{border-color:var(--color-muted)}.button{border:1px solid var(--color-text);background:var(--color-text);color:var(--color-background);cursor:pointer;justify-content:center;align-items:center;gap:6px;padding:9px 14px;font-weight:600;display:inline-flex}.button:hover:not(:disabled){border-color:var(--color-accent);background:var(--color-accent)}.button:disabled{cursor:not-allowed;opacity:.55}.button-secondary{border-color:var(--color-border);color:var(--color-text);background:0 0}.button-secondary:hover:not(:disabled){border-color:var(--color-text);background:var(--color-surface)}.button-danger{border-color:var(--color-danger);color:var(--color-danger);background:0 0}.button-danger:hover:not(:disabled){border-color:var(--color-danger);background:var(--color-danger);color:var(--color-background)}.button-small{padding:5px 8px;font-size:12px}.error-banner{border:1px solid var(--color-danger);background:var(--color-background);color:var(--color-danger);margin:0 0 20px;padding:10px 12px}.muted{color:var(--color-muted)}.project-list{border-top:1px solid var(--color-border);margin:0;padding:0;list-style:none}.project-row{border-bottom:1px solid var(--color-border);grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:24px;padding:18px 0;display:grid}.project-name{color:var(--color-text);font-size:17px;font-weight:600;text-decoration:none;display:inline-block}.project-name:hover{color:var(--color-accent);text-underline-offset:3px;text-decoration:underline}.project-summary{min-width:0}.project-summary .part-progress{max-width:280px;margin-top:8px}.project-actions{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:8px;display:flex}.confirm-text{color:var(--color-muted);font-size:13px}.row-form{flex-wrap:wrap;justify-content:flex-end;align-items:flex-end;gap:8px;display:flex}.row-form .input{min-width:220px}.input-compact{min-width:0;padding:6px 8px}.inline-form{align-items:flex-end;gap:8px;margin-top:12px;display:flex}.inline-form .field{flex:1}.empty-state{color:var(--color-muted);padding:24px 0}.part-progress{align-items:center;gap:10px;margin-top:10px;display:flex}.page-header .part-progress{max-width:320px;margin-top:12px}.progress-track{background:var(--color-border);flex:1;height:8px;overflow:hidden}.progress-fill{background:var(--color-accent);height:100%;display:block}.progress-text{color:var(--color-muted);white-space:nowrap;font-size:12px}.progress-empty{color:var(--color-muted);margin:0;font-size:13px}.section-grid{grid-template-columns:minmax(0,1fr);align-items:start;gap:20px;display:grid}@media (width>=1280px){.section-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}.section-card{border:1px solid var(--color-border);background:var(--color-background);padding:20px}.section-header{justify-content:space-between;align-items:flex-start;gap:16px;margin-bottom:16px;display:flex}.section-heading{flex:1;min-width:0}.section-title{overflow-wrap:anywhere;margin:0;font-size:20px;line-height:1.2}.section-title-row{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.section-badge{border:1px solid var(--color-border);color:var(--color-muted);letter-spacing:.08em;text-transform:uppercase;padding:2px 6px;font-size:10px;font-weight:700}.section-badge.is-current{border-color:var(--color-accent);color:var(--color-accent)}.section-badge.is-locked{background:var(--color-surface)}.section-heading .part-progress{max-width:260px}.section-actions{flex-wrap:wrap;justify-content:flex-end;gap:6px;display:flex}.parts-list{border-top:1px solid var(--color-border);margin:0;padding:0;list-style:none}.part-row{border-bottom:1px solid var(--color-border);grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:12px;padding:10px 0;display:grid}.part-row>.row-form{grid-column:1/-1}.part-summary{min-width:0}.part-check{cursor:pointer;align-items:center;gap:8px;min-width:0;display:flex}.part-check input{width:16px;height:16px;accent-color:var(--color-accent);flex:none}.part-title{overflow-wrap:anywhere}.part-title.is-done{color:var(--color-muted);text-decoration:line-through}.part-actions{flex-wrap:wrap;justify-content:flex-end;gap:4px;display:flex}.task-summary{color:var(--color-muted);margin:2px 0 0 24px;font-size:12px}.part-confirm{grid-column:1/-1}.part-tasks{border-top:1px solid var(--color-border);grid-column:1/-1;margin-top:4px;padding-top:8px}.part-tasks .empty-state{padding:8px 0}.task-list{margin:0;padding:0;list-style:none}.task-row{border-bottom:1px solid var(--color-border);grid-template-columns:minmax(0,1fr);align-items:start;gap:8px;padding:8px 0;display:grid}.task-row>.row-form{grid-column:1/-1}.task-main{min-width:0}.task-title{overflow-wrap:anywhere}.task-title.is-done{color:var(--color-muted);text-decoration:line-through}.task-meta{color:var(--color-muted);flex-wrap:wrap;gap:6px;margin-top:4px;font-size:12px;display:flex}.task-due.is-overdue{color:var(--color-danger);font-weight:600}.task-tag{border:1px solid var(--color-border);padding:0 5px}.task-row>.task-details{grid-column:1/-1}.task-details{border:1px solid var(--color-border);background:var(--color-surface);gap:12px;margin:8px 0;padding:14px;display:grid}.details-grid{grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:12px;display:grid}.details-grid .input,.details-grid .select{min-width:0}.details-actions{flex-wrap:wrap;gap:8px;display:flex}.textarea{resize:vertical;min-height:72px}.task-controls,.task-delete-confirm{flex-wrap:wrap;justify-content:flex-start;align-items:center;gap:6px;display:flex}.select{border:1px solid var(--color-border);background:var(--color-background);color:var(--color-text);cursor:pointer;padding:5px 8px}.select:hover{border-color:var(--color-muted)}.dialog-backdrop{z-index:10;background:var(--color-overlay);justify-content:center;align-items:center;padding:24px;display:flex;position:fixed;inset:0}.dialog{border:1px solid var(--color-border);background:var(--color-background);width:100%;max-width:440px;padding:24px}.dialog-title{margin:0 0 8px;font-size:22px}.dialog-message{color:var(--color-muted);margin:0 0 20px}.dialog-actions{flex-wrap:wrap;justify-content:flex-end;gap:8px;display:flex}.project-tabs{border-bottom:1px solid var(--color-border);margin-bottom:24px;display:flex}.project-tab{color:var(--color-muted);border-bottom:2px solid #0000;margin-bottom:-1px;padding:10px 16px;font-weight:600;text-decoration:none}.project-tab:hover{color:var(--color-text)}.project-tab.is-active{border-bottom-color:var(--color-accent);color:var(--color-text)}.page-subtitle{color:var(--color-muted);margin:8px 0 0}.mode-options{border:1px solid var(--color-border);flex-direction:column;gap:10px;max-width:720px;margin:0;padding:20px;display:flex}.mode-legend{letter-spacing:.08em;text-transform:uppercase;padding:0 6px;font-size:11px;font-weight:600}.mode-option{border:1px solid var(--color-border);cursor:pointer;align-items:flex-start;gap:12px;padding:14px;display:flex}.mode-option:hover{border-color:var(--color-muted)}.mode-option:has(input:checked){border-color:var(--color-accent)}.mode-option input{accent-color:var(--color-accent);flex:none;margin-top:3px}.mode-option-body{flex-direction:column;gap:3px;display:flex}.mode-option-title{font-weight:600}.mode-option-text{color:var(--color-muted);font-size:13px}.board-filters{border:1px solid var(--color-border);background:var(--color-surface);flex-wrap:wrap;align-items:flex-end;gap:12px;margin-bottom:16px;padding:14px;display:flex}.board-filters .field{flex:150px}.board-filters .select{width:100%;min-width:150px}.check-field{cursor:pointer;align-items:center;gap:6px;min-height:35px;font-size:13px;display:flex}.check-field input{accent-color:var(--color-accent)}.board{grid-template-columns:repeat(4,minmax(180px,1fr));align-items:start;gap:16px;padding-bottom:8px;display:grid;overflow-x:auto}.board-column{border:1px solid var(--color-border);background:var(--color-surface);min-height:240px;padding:12px}.board-column.is-over{border-color:var(--color-accent)}.board-column-header{border-bottom:1px solid var(--color-border);justify-content:space-between;align-items:center;gap:8px;margin-bottom:12px;padding-bottom:8px;display:flex}.board-column-title{letter-spacing:.06em;text-transform:uppercase;margin:0;font-size:14px}.board-count{border:1px solid var(--color-border);color:var(--color-muted);padding:1px 6px;font-size:12px}.board-list{flex-direction:column;gap:8px;min-height:120px;margin:0;padding:0;list-style:none;display:flex}.board-card{border:1px solid var(--color-border);background:var(--color-background)}.board-card-content{cursor:grab;touch-action:none;padding:10px}.board-card.is-dragging{opacity:.4}.board-card-overlay{border-color:var(--color-accent);cursor:grabbing}.board-card-title{overflow-wrap:anywhere;margin:0 0 6px;font-size:14px;font-weight:600}.board-card-meta{color:var(--color-muted);overflow-wrap:anywhere;margin:0;font-size:11px}.board-card-meta+.board-card-meta{margin-top:2px}.board-card-due{color:var(--color-muted);margin:4px 0 0;font-size:11px}.board-card-due.is-overdue{color:var(--color-danger);font-weight:600}.board-empty{border:1px dashed var(--color-border);color:var(--color-muted);text-align:center;padding:12px;font-size:12px}.confirm-box{border:1px solid var(--color-danger);background:var(--color-surface);margin:12px 0;padding:12px}.confirm-box p{margin:0 0 10px;font-size:13px}.confirm-actions{flex-wrap:wrap;gap:8px;display:flex}.back-link{margin-top:24px;display:inline-block}.back-link-top{margin-top:0}.loading-page{place-items:center;min-height:100vh;padding:32px;display:grid}.sidebar{flex-direction:column;display:flex}.sidebar-footer{flex-direction:column;gap:10px;margin-top:auto;padding-top:24px;display:flex}.sidebar-user{overflow-wrap:anywhere;flex-direction:column;gap:2px;margin:0;padding:0 8px;display:flex}.sidebar-user-name{font-weight:600}.sidebar-user-email{color:var(--color-muted);font-size:12px}.sidebar-action{width:100%}.auth-page{background:var(--color-surface);place-items:center;min-height:100vh;padding:32px;display:grid}.auth-card{border:1px solid var(--color-border);background:var(--color-background);width:100%;max-width:420px;padding:32px}.auth-brand{margin-bottom:24px;padding:0}.auth-title{margin:0 0 8px;font-size:28px;line-height:1.2}.auth-switch{border:1px solid var(--color-border);margin:20px 0 16px;display:flex}.auth-tab{color:var(--color-text);cursor:pointer;background:0 0;border:0;flex:1;padding:10px}.auth-tab.is-active{background:var(--color-accent);color:var(--color-background);font-weight:600}.auth-form{gap:12px;margin-top:16px;display:grid}.auth-submit,.auth-google{width:100%}.auth-divider{color:var(--color-muted);align-items:center;gap:12px;margin:16px 0;font-size:12px;display:flex}.auth-divider:before,.auth-divider:after{content:"";background:var(--color-border);flex:1;height:1px}.toast{z-index:20;border:1px solid var(--color-danger);background:var(--color-surface);flex-wrap:wrap;align-items:center;gap:12px;max-width:420px;padding:14px;display:flex;position:fixed;bottom:24px;right:24px}.project-name-row{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.shared-tag{border:1px solid var(--color-accent);color:var(--color-accent);letter-spacing:.08em;text-transform:uppercase;padding:2px 6px;font-size:10px;font-weight:700}.project-tabs{justify-content:space-between;align-items:center;gap:16px}.project-tab-list{display:flex}.presence-bar{align-items:center;gap:4px;margin:0 0 -1px;padding:0 0 8px;list-style:none;display:flex}.presence-person{display:inline-flex}.presence-avatar{border:1px solid var(--color-border);background:var(--color-surface);width:28px;height:28px;color:var(--color-accent);justify-content:center;align-items:center;font-size:11px;font-weight:700;display:inline-flex}.settings-section{border-top:1px solid var(--color-border);margin-top:24px;padding-top:20px}.settings-heading{margin:0 0 12px;font-size:16px}.member-list{border-top:1px solid var(--color-border);max-width:720px;margin:0 0 20px;padding:0;list-style:none}.member-row{border-bottom:1px solid var(--color-border);grid-template-columns:minmax(0,1fr) auto auto;align-items:center;gap:12px;padding:10px 0;display:grid}.member-summary{flex-direction:column;gap:2px;min-width:0;display:flex}.member-name{overflow-wrap:anywhere;font-weight:600}.member-email{color:var(--color-muted);overflow-wrap:anywhere;font-size:12px}.member-role{border:1px solid var(--color-border);color:var(--color-muted);letter-spacing:.08em;text-transform:uppercase;padding:2px 6px;font-size:10px;font-weight:700}.invite-form{flex-wrap:wrap;align-items:flex-end;gap:8px;max-width:720px;display:flex}.invite-form .field{flex:260px}.invite-form .input{width:100%}.share-message{color:var(--color-muted);margin:10px 0 0}.leave-button{margin-top:4px}.activity-panel{border-top:1px solid var(--color-border);max-width:900px;margin-top:32px;padding-top:20px}.activity-header{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:16px;margin-bottom:12px;display:flex}.activity-hint{color:var(--color-muted);margin:4px 0 0;font-size:12px}.activity-filter{min-width:220px}.activity-filter .input{width:100%}.activity-body{margin-top:4px}.activity-list{border-top:1px solid var(--color-border);max-height:320px;margin:0;padding:0;list-style:none;overflow-y:auto}.activity-item{border-bottom:1px solid var(--color-border);grid-template-columns:minmax(0,1fr) auto;align-items:baseline;gap:16px;padding:10px 0;display:grid}.activity-main{overflow-wrap:anywhere;min-width:0}.activity-actor,.activity-target{font-weight:600}.activity-time{color:var(--color-muted);white-space:nowrap;font-size:12px}.version-section{border-top:1px solid var(--color-border);max-width:900px;margin-top:24px;padding-top:20px}.version-form{gap:12px;max-width:560px;display:grid}.version-list{border-top:1px solid var(--color-border);margin:0;padding:0;list-style:none}.version-row{border-bottom:1px solid var(--color-border);grid-template-columns:minmax(0,1fr) auto;align-items:start;gap:16px;padding:12px 0;display:grid}.version-main{overflow-wrap:anywhere;min-width:0}.version-heading{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.version-name{font-weight:600}.version-kind{border:1px solid var(--color-border);color:var(--color-muted);letter-spacing:.08em;text-transform:uppercase;padding:2px 6px;font-size:10px;font-weight:700}.version-note,.version-meta{color:var(--color-muted);margin:4px 0 0;font-size:12px}.compare-form{flex-wrap:wrap;align-items:flex-end;gap:8px;display:flex}.compare-form .field{flex:220px}.compare-form .select{width:100%}.version-diff{border-top:1px solid var(--color-border);margin-top:16px;padding-top:12px}.diff-heading{margin:0 0 6px;font-size:14px}.diff-progress{color:var(--color-muted);margin:0 0 12px;font-size:13px}.diff-group{margin:0 0 16px}.diff-group h4{color:var(--color-muted);letter-spacing:.08em;text-transform:uppercase;margin:0 0 6px;font-size:12px}.diff-list{margin:0;padding:0;list-style:none}.diff-item{border-bottom:1px solid var(--color-border);overflow-wrap:anywhere;padding:6px 0}.diff-changes{color:var(--color-muted);margin:4px 0 0 12px;padding:0;font-size:12px;list-style:none}
