:root{--bone: #f5f4ef;--bone-2: #eeece3;--hairline: #d9d5c8;--midnight: #141828;--midnight-2: #1e2436;--slate: #3a4356;--mist: #66738a;--whisper: #8892a3;--sunset: #ff5a2e;--sunset-soft: #ffe6dc;--accent: var(--sunset);--success: #2b9c6d;--warn: #d18e1a;--danger: #c73e3a;--display: "Geist", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--mono: "Geist Mono", ui-monospace, monospace;--radius: 12px;--radius-lg: 20px;--shadow-sm: 0 1px 2px rgba(20, 24, 40, .04), 0 0 0 1px rgba(20, 24, 40, .06);--shadow-md: 0 8px 24px -8px rgba(20, 24, 40, .12), 0 0 0 1px rgba(20, 24, 40, .06);--shadow-lg: 0 20px 60px -20px rgba(20, 24, 40, .24)}*{box-sizing:border-box;margin:0;padding:0}html,body,#root{min-height:100%;background:var(--bone)}body{font-family:var(--display);color:var(--midnight);font-size:15px;line-height:1.5;-webkit-font-smoothing:antialiased}button{font:inherit;cursor:pointer;border:none;background:none;color:inherit}a{color:inherit;text-decoration:none}input,textarea,select{font:inherit;color:inherit}.mono{font-family:var(--mono);font-size:12px;letter-spacing:.02em}.app{min-height:100vh;display:grid;grid-template-rows:auto 1fr}.container{max-width:1240px;margin:0 auto;padding:0 24px;width:100%}.container-narrow{max-width:720px;margin:0 auto;padding:0 24px;width:100%}main.container,main.container-narrow{padding-top:40px;padding-bottom:80px}.nav{background:#fff;border-bottom:1px solid var(--hairline);padding:14px 0;position:sticky;top:0;z-index:20}.nav-inner{display:flex;align-items:center;justify-content:space-between;gap:24px}.nav-brand{display:flex;align-items:center;gap:12px}.nav-logo{font-weight:700;font-size:18px;letter-spacing:-.01em}.nav-logo .dot{color:var(--sunset)}.nav-client{font-family:var(--mono);font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--mist);padding-left:12px;border-left:1px solid var(--hairline)}.nav-links{display:flex;gap:4px}.nav-links a{padding:8px 14px;border-radius:8px;font-size:14px;font-weight:500;color:var(--slate);transition:background .15s}.nav-links a:hover{background:var(--bone-2);color:var(--midnight)}.nav-links a.active{background:var(--midnight);color:#fff}.nav-user{display:flex;align-items:center;gap:10px;font-size:13px;color:var(--slate)}.nav-user .avatar{width:30px;height:30px;border-radius:50%;background:var(--midnight);color:#fff;display:grid;place-items:center;font-weight:600;font-size:12px}.nav-user .logout{font-size:13px;color:var(--mist);text-decoration:underline;text-underline-offset:3px}.btn{display:inline-flex;align-items:center;gap:8px;padding:10px 18px;border-radius:8px;font-weight:500;font-size:14px;letter-spacing:-.003em;transition:background .15s,transform .15s;border:1px solid transparent}.btn-primary{background:var(--midnight);color:#fff}.btn-primary:hover:not(:disabled){background:var(--midnight-2)}.btn-accent{background:var(--sunset);color:#fff}.btn-accent:hover:not(:disabled){background:#e04d24}.btn-secondary{background:#fff;color:var(--midnight);border-color:var(--hairline)}.btn-secondary:hover:not(:disabled){background:var(--bone-2)}.btn-ghost{color:var(--slate)}.btn-ghost:hover:not(:disabled){background:var(--bone-2);color:var(--midnight)}.btn-danger{color:var(--danger)}.btn-danger:hover:not(:disabled){background:#fbe9e8}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-sm{padding:6px 12px;font-size:13px;border-radius:6px}.card{background:#fff;border-radius:var(--radius);border:1px solid var(--hairline);padding:24px}.card h2,.card h3{letter-spacing:-.015em}.section-head{display:flex;align-items:baseline;justify-content:space-between;margin-bottom:20px;gap:16px;flex-wrap:wrap}.section-head h1{font-size:28px;font-weight:600;letter-spacing:-.02em}.section-head h2{font-size:20px;font-weight:600;letter-spacing:-.015em}.section-head .sub{color:var(--mist);font-size:14px;margin-top:2px}.eyebrow{font-family:var(--mono);font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--sunset);display:inline-flex;align-items:center;gap:8px}.eyebrow:before{content:"";width:6px;height:6px;border-radius:50%;background:var(--sunset)}table.data{width:100%;border-collapse:collapse;font-size:14px}table.data th{text-align:left;font-family:var(--mono);font-size:11px;text-transform:uppercase;letter-spacing:.1em;color:var(--mist);font-weight:500;padding:12px 16px;border-bottom:1px solid var(--hairline);background:var(--bone)}table.data td{padding:14px 16px;border-bottom:1px solid var(--hairline);vertical-align:middle}table.data tbody tr:hover{background:var(--bone)}table.data tbody tr:last-child td{border-bottom:none}.field{display:flex;flex-direction:column;gap:6px;margin-bottom:16px}.field label{font-family:var(--mono);font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(--slate);font-weight:500}.field input,.field textarea,.field select{padding:10px 14px;border-radius:8px;border:1px solid var(--hairline);background:#fff;font-size:14px;transition:border-color .15s}.field input:focus,.field textarea:focus,.field select:focus{outline:none;border-color:var(--midnight)}.field textarea{resize:vertical;min-height:80px}.empty{text-align:center;padding:60px 20px;color:var(--mist)}.empty h3{font-size:16px;font-weight:600;margin-bottom:8px;color:var(--midnight)}.empty p{max-width:340px;margin:0 auto;font-size:14px}.login{min-height:100vh;display:grid;place-items:center;padding:24px;background:var(--bone)}.login-card{background:#fff;border-radius:var(--radius-lg);padding:44px 40px;max-width:420px;width:100%;box-shadow:var(--shadow-md)}.login-brand{font-size:22px;font-weight:700;letter-spacing:-.01em;margin-bottom:4px}.login-brand .dot{color:var(--sunset)}.login-sub{font-family:var(--mono);font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--mist);margin-bottom:28px}.login-title{font-size:26px;font-weight:600;letter-spacing:-.02em;margin-bottom:12px}.login-body{color:var(--slate);font-size:14px;line-height:1.6;margin-bottom:28px}.toast{position:fixed;bottom:24px;left:50%;transform:translate(-50%);background:var(--midnight);color:#fff;padding:12px 20px;border-radius:8px;font-size:14px;box-shadow:var(--shadow-lg);z-index:100}.toast.error{background:var(--danger)}.toast.success{background:var(--success)}.chip{display:inline-flex;align-items:center;gap:6px;padding:4px 10px;border-radius:999px;font-family:var(--mono);font-size:11px;letter-spacing:.06em}.chip-todo{background:var(--bone-2);color:var(--slate)}.chip-inprogress{background:#e0ecff;color:#1f4a8a}.chip-review{background:#fff0d4;color:#8a5b1f}.chip-blocked{background:#fbe4e1;color:var(--danger)}.chip-done{background:#d9f0e4;color:#1f6f4a}.chip-admin{background:var(--sunset-soft);color:var(--sunset)}.chip-manager{background:#e6ddfc;color:#4b2f8d}.chip-client{background:var(--bone-2);color:var(--slate)}.chip-cat{background:var(--bone-2);color:var(--slate);border:1px solid transparent;transition:background .15s,border-color .15s}button.chip-cat{cursor:pointer}button.chip-cat:hover{background:#fff;border-color:var(--hairline)}.ws-tabs{display:flex;flex-wrap:wrap;gap:4px;padding:6px;background:#fff;border:1px solid var(--hairline);border-radius:12px;margin-bottom:16px}.ws-tab{display:inline-flex;align-items:center;gap:8px;padding:8px 16px;border-radius:8px;font-size:14px;font-weight:500;color:var(--slate);transition:background .15s}.ws-tab:hover{background:var(--bone)}.ws-tab.active{background:var(--midnight);color:#fff}.ws-tab-count{display:inline-flex;align-items:center;justify-content:center;min-width:20px;height:20px;padding:0 6px;border-radius:999px;background:var(--bone-2);color:var(--mist);font-family:var(--mono);font-size:11px;line-height:1}.ws-tab.active .ws-tab-count{background:#ffffff26;color:#fff}.kanban{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-top:8px}.kanban-5{grid-template-columns:repeat(5,1fr);gap:12px}@media (max-width: 1100px){.kanban-5{grid-template-columns:repeat(2,1fr)}}@media (max-width: 900px){.kanban,.kanban-5{grid-template-columns:1fr}}.item-card.overdue{border-left:3px solid var(--danger)}.overdue-text{color:var(--danger);font-weight:600}.progress-track{height:8px;background:var(--bone-2);border-radius:999px;overflow:hidden}.progress-track.progress-lg{height:12px}.progress-fill{height:100%;background:var(--sunset);border-radius:999px;transition:width .4s ease}.progress-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px 32px}@media (max-width: 800px){.progress-grid{grid-template-columns:1fr}}.progress-row{display:grid;grid-template-columns:150px 1fr 48px;align-items:center;gap:12px}.progress-label{font-size:13px;font-weight:500;color:var(--slate);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.progress-nums{color:var(--mist);text-align:right}.comments{border-top:1px solid var(--hairline);padding-top:16px;margin-bottom:20px}.comments-list{display:flex;flex-direction:column;gap:10px;margin-bottom:12px}.comment{background:var(--bone);border-radius:10px;padding:10px 14px}.comment-head{display:flex;align-items:center;gap:8px;margin-bottom:4px}.comment-author{font-weight:600;font-size:13px}.comment-time{color:var(--mist);margin-left:auto}.comment-body{font-size:14px;color:var(--slate);line-height:1.55;white-space:pre-wrap;word-break:break-word}.comment-form{display:flex;gap:8px;align-items:flex-end}.comment-form textarea{flex:1;padding:8px 12px;border-radius:8px;border:1px solid var(--hairline);resize:vertical;font-size:14px}.comment-form textarea:focus{outline:none;border-color:var(--midnight)}.file-name-link{text-align:left;font-weight:500;color:var(--midnight);text-decoration:underline;text-underline-offset:3px;text-decoration-color:var(--hairline);word-break:break-word;cursor:pointer}.file-name-link:hover{text-decoration-color:var(--midnight)}.preview-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#141828c7;z-index:300;display:grid;place-items:center;padding:24px}.preview-modal{background:#fff;border-radius:16px;box-shadow:var(--shadow-lg);width:min(980px,100%);height:min(84vh,940px);display:flex;flex-direction:column;overflow:hidden}.preview-head{display:flex;align-items:center;gap:10px;padding:12px 16px;border-bottom:1px solid var(--hairline)}.preview-name{font-weight:600;font-size:14px;flex:1;word-break:break-word}.preview-body{flex:1;overflow:auto;background:var(--bone-2);display:grid;place-items:center}.preview-body img{max-width:100%;max-height:100%;object-fit:contain}.preview-body iframe{width:100%;height:100%;border:0;background:#fff}.preview-body pre{width:100%;height:100%;margin:0;padding:20px 24px;overflow:auto;background:#fff;font-family:var(--mono);font-size:12px;line-height:1.6;white-space:pre-wrap;word-break:break-word}.preview-msg{color:var(--mist);text-align:center;padding:40px;font-size:14px}.client-logo{height:26px;width:auto;max-width:140px;object-fit:contain}.column{background:var(--bone-2);border-radius:var(--radius);padding:12px;min-height:400px;display:flex;flex-direction:column;gap:8px}.column-head{display:flex;align-items:center;justify-content:space-between;padding:4px 8px 8px}.column-title{font-family:var(--mono);font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--slate)}.column-count{background:#fff;padding:2px 8px;border-radius:999px;font-family:var(--mono);font-size:11px;color:var(--mist)}.column.drop-over{background:var(--sunset-soft);outline:2px dashed var(--sunset);outline-offset:-4px}.item-card{background:#fff;border-radius:8px;padding:12px 14px;box-shadow:var(--shadow-sm);cursor:grab;transition:transform .1s,box-shadow .1s;border:1px solid transparent}.item-card:hover{box-shadow:var(--shadow-md)}.item-card.dragging{opacity:.5;transform:scale(.98)}.item-card .title{font-weight:600;font-size:14px;letter-spacing:-.01em;margin-bottom:6px;word-break:break-word}.item-card .description{font-size:13px;color:var(--slate);line-height:1.5;margin-bottom:8px;word-break:break-word}.item-card .meta{display:flex;gap:10px;align-items:center;font-family:var(--mono);font-size:11px;color:var(--mist)}.attachments{border-top:1px solid var(--hairline);padding-top:16px;margin-top:4px;margin-bottom:20px}.attachments-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px;gap:12px}.attachments-head label{font-family:var(--mono);font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(--slate);font-weight:500;display:flex;align-items:center;gap:8px}.attachments-count{display:inline-flex;align-items:center;justify-content:center;min-width:20px;height:20px;padding:0 6px;border-radius:999px;background:var(--bone-2);color:var(--mist);font-size:11px}.attachments-empty{font-size:13px;color:var(--mist);padding:8px 0}.attachments-list{display:flex;flex-direction:column;gap:6px}.attachments-row{display:grid;grid-template-columns:1fr auto auto;gap:12px;align-items:center;padding:8px 12px;background:var(--bone);border-radius:8px;font-size:14px}.attachments-name{text-align:left;color:var(--midnight);font-weight:500;word-break:break-word;text-decoration:underline;text-underline-offset:3px;text-decoration-color:var(--hairline)}.attachments-name:hover{text-decoration-color:var(--midnight)}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#14182899;z-index:200;display:grid;place-items:center;padding:24px}.modal{background:#fff;border-radius:var(--radius-lg);padding:32px;max-width:520px;width:100%;box-shadow:var(--shadow-lg)}.modal-title{font-size:20px;font-weight:600;letter-spacing:-.015em;margin-bottom:20px}.modal-actions{display:flex;gap:10px;justify-content:flex-end;margin-top:8px}.row{display:flex;align-items:center;gap:12px}.grow{flex:1}.gap-24{gap:24px}.mt-16{margin-top:16px}.mt-24{margin-top:24px}.mt-32{margin-top:32px}
