:root{--bg: #f7f7f5;--surface: #ffffff;--ink: #111111;--muted: #666666;--faint: #8a8a86;--line: #ebebea;--line-strong: #e2e2df;--accent: #2563eb;--accent-hover: #1d4ed8;--accent-soft: rgba(37, 99, 235, .1);--orange: #ea580c;--orange-soft: rgba(234, 88, 12, .1);--green: #16a34a;--green-soft: rgba(22, 163, 74, .1);--amber: #ca8a04;--amber-soft: rgba(202, 138, 4, .12);--red: #dc2626;--red-soft: rgba(220, 38, 38, .1);--shadow: 0 1px 2px rgba(16, 16, 16, .04), 0 4px 16px rgba(16, 16, 16, .04);--shadow-hover: 0 4px 8px rgba(16, 16, 16, .05), 0 12px 28px rgba(16, 16, 16, .08);--radius: 16px;--radius-sm: 10px;--shell: min(1360px, calc(100% - 48px) );--font: "Plus Jakarta Sans", "Segoe UI", sans-serif}*,*:before,*:after{box-sizing:border-box}html,body,#root{min-height:100%}body{margin:0;font-family:var(--font);color:var(--ink);background:var(--bg);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}button,input,textarea,select{font:inherit;color:inherit}button{cursor:pointer}.app{min-height:100vh;background:var(--bg)}.sync-banner{position:sticky;top:0;z-index:50;padding:.55rem 1rem;text-align:center;font-size:.85rem;font-weight:500;color:#9a3412;background:#ffedd5;border-bottom:1px solid #fed7aa}.shell{width:var(--shell);max-width:1360px;margin-inline:auto}.topbar{position:sticky;top:0;z-index:40;background:#f7f7f5db;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-bottom:1px solid var(--line)}.topbar-inner{display:flex;align-items:center;justify-content:space-between;gap:1rem;height:56px}.brand-block{display:flex;align-items:center;gap:.65rem;flex-shrink:0}.logo-mark{width:22px;height:22px;border-radius:7px;background:linear-gradient(135deg,#2563eb,#60a5fa);box-shadow:0 2px 8px #2563eb59}.brand-name{font-size:.95rem;font-weight:700;letter-spacing:-.02em}.topbar-actions{display:flex;align-items:center;gap:.55rem;min-width:0}.search-box{display:flex;align-items:center;gap:.45rem;width:min(280px,32vw);height:36px;padding:0 .75rem;border:1px solid var(--line-strong);border-radius:10px;background:var(--surface);color:var(--faint);transition:border-color .15s,box-shadow .15s}.search-box:focus-within{border-color:#2563eb73;box-shadow:0 0 0 3px var(--accent-soft);color:var(--muted)}.search-box input{flex:1;min-width:0;border:none;outline:none;background:transparent;font-size:.875rem;color:var(--ink)}.search-box input::placeholder{color:var(--faint)}.icon-chip,.user-avatar{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;border:1px solid var(--line-strong);border-radius:10px;background:var(--surface);color:var(--muted);transition:background .15s,border-color .15s,color .15s}.icon-chip:hover{background:#f0f0ee;color:var(--ink)}.user-avatar{border:none;background:#111;color:#fff;font-size:.75rem;font-weight:600}.page{padding:1.35rem 0 3.5rem}.page-intro{display:flex;align-items:flex-end;justify-content:space-between;gap:1rem;margin-bottom:1.15rem}.page-intro h1{margin:0;font-size:1.35rem;font-weight:700;letter-spacing:-.03em;line-height:1.2}.page-intro p{margin:.25rem 0 0;font-size:.9rem;color:var(--muted)}.dashboard{display:grid;grid-template-columns:repeat(4,1fr);gap:.85rem;margin-bottom:1.35rem}.stat-card{display:flex;flex-direction:column;gap:.35rem;padding:1rem 1.1rem;background:var(--surface);border:1px solid var(--line);border-radius:14px;box-shadow:var(--shadow);min-height:88px}.stat-label{font-size:.78rem;font-weight:500;color:var(--muted)}.stat-value{font-size:1.65rem;font-weight:700;letter-spacing:-.04em;line-height:1}.stat-value.accent{color:var(--orange)}.stat-bar{margin-top:.35rem;height:4px;border-radius:2px;background:#efefed;overflow:hidden}.stat-bar>div{height:100%;border-radius:2px;background:var(--accent);transition:width .35s ease}.list-section{display:flex;flex-direction:column;gap:.95rem}.toolbar{display:flex;align-items:center;justify-content:space-between;gap:.85rem;flex-wrap:wrap}.filter-group{display:flex;flex-wrap:wrap;gap:.35rem;padding:.25rem;background:#efefed;border-radius:12px}.chip{border:none;background:transparent;color:var(--muted);padding:.45rem .85rem;border-radius:9px;font-size:.84rem;font-weight:600;transition:background .15s,color .15s,box-shadow .15s}.chip:hover{color:var(--ink)}.chip.active{background:var(--surface);color:var(--ink);box-shadow:0 1px 3px #0000000f}.sort-control{display:inline-flex;align-items:center;gap:.5rem;font-size:.82rem;color:var(--muted)}.sort-control select{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:1px solid var(--line-strong);background:var(--surface) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath fill='%23666666' d='M1 1l5 5 5-5'/%3E%3C/svg%3E") no-repeat right .65rem center;border-radius:9px;padding:.45rem 1.85rem .45rem .7rem;font-size:.84rem;font-weight:500;color:var(--ink);cursor:pointer}.sort-control select:focus{outline:none;border-color:#2563eb73;box-shadow:0 0 0 3px var(--accent-soft)}.project-grid{column-count:3;column-gap:.9rem}.card-enter{display:inline-block;width:100%;min-width:0;margin-bottom:.9rem;break-inside:avoid;animation:cardIn .35s ease both}.project-card{width:100%;min-width:0;display:flex;flex-direction:column;min-height:210px;height:auto;padding:1rem 1.05rem .9rem;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);transition:transform .2s ease,box-shadow .2s ease,border-color .2s ease}.project-card:hover{transform:translateY(-3px);box-shadow:var(--shadow-hover);border-color:#dddcd8}.card-header{display:flex;align-items:flex-start;justify-content:space-between;gap:.6rem}.card-title-group{flex:1;min-width:0;display:flex;align-items:center;gap:.48rem}.project-status-icon{width:18px;height:18px;flex:0 0 18px;display:inline-grid;place-items:center;border-radius:50%;color:#fff;background:var(--accent);font-size:.62rem;font-style:normal;font-weight:800;line-height:1}.project-status-icon:before{content:"▶";transform:translate(.5px) scale(.72)}.project-status-icon.status-paused{background:var(--amber)}.project-status-icon.status-paused:before{content:"Ⅱ";transform:none}.project-status-icon.status-completed{background:var(--green)}.project-status-icon.status-completed:before{content:"✓";transform:none}.project-status-icon.status-overdue{background:var(--red)}.project-status-icon.status-overdue:before{content:"!";transform:none}.card-title{margin:0;flex:1;min-width:0;font-size:.98rem;font-weight:700;letter-spacing:-.02em;line-height:1.3;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.card-title-input{flex:1;min-width:0;height:30px;padding:0 .45rem;border:1px solid rgba(37,99,235,.5);border-radius:7px;background:#ffffffe6;box-shadow:0 0 0 3px var(--accent-soft);font-size:.98rem;font-weight:700;outline:none}.card-header-right{display:flex;align-items:center;gap:.25rem;flex-shrink:0}.status-badge{display:inline-flex;align-items:center;height:22px;padding:0 .5rem;border-radius:999px;font-size:.7rem;font-weight:600;letter-spacing:.01em;animation:badgePop .35s ease both}.priority-badge{display:inline-flex;align-items:center;justify-content:center;height:22px;min-width:28px;padding:0 .4rem;border-radius:6px;font-size:.68rem;font-weight:700;letter-spacing:.02em;font-variant-numeric:tabular-nums}.priority-p0{background:#450a0a;color:#fecaca}.priority-p1{background:var(--red-soft);color:var(--red)}.priority-p2{background:var(--amber-soft);color:var(--amber)}.priority-p3{background:#ececea;color:var(--muted)}.badge-active{background:var(--accent-soft);color:var(--accent)}.badge-paused{background:var(--amber-soft);color:var(--amber)}.badge-completed{background:var(--green-soft);color:var(--green)}.badge-overdue{background:var(--red-soft);color:var(--red)}.card-desc{margin:.55rem 0 0;flex:1;width:100%;border:none;padding:0;background:transparent;text-align:left;font-size:.84rem;line-height:1.45;color:var(--muted);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;cursor:text;border-radius:6px;transition:background .15s,color .15s}.card-desc:hover{color:var(--ink);background:#11111108}.card-desc.is-empty{color:var(--faint);font-style:italic}.card-follow-summary{margin:.55rem 0 0;width:100%;min-height:56px;display:flex;flex-direction:column;align-items:stretch;justify-content:center;gap:.28rem;padding:.45rem .55rem;border:1px solid transparent;border-radius:9px;background:#ffffff57;text-align:left;transition:background .15s,border-color .15s,transform .15s}.card-follow-summary:hover{background:#ffffffb8;border-color:var(--line-strong);transform:translateY(-1px)}.card-follow-summary.is-empty{border-style:dashed;border-color:var(--line-strong)}.card-follow-meta{display:flex;align-items:center;justify-content:space-between;gap:.5rem;font-size:.72rem}.card-follow-meta strong{color:var(--accent)}.card-follow-meta em{color:var(--faint);font-style:normal;font-weight:500}.card-attach-flag{display:inline-flex;align-items:center;height:20px;padding:0 .45rem;border-radius:999px;background:var(--accent-soft);color:var(--accent);font-size:.7rem;font-weight:600;font-style:normal}.card-follow-latest{color:var(--muted);font-size:.82rem;line-height:1.35;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.card-follow-list{display:flex;flex-direction:column;gap:.28rem;padding-top:.1rem}.card-follow-item{min-width:0;display:grid;grid-template-columns:7px minmax(0,1fr) auto;align-items:center;gap:.38rem;color:var(--muted);font-size:.78rem;line-height:1.35}.card-follow-item>span{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.card-follow-item small{color:var(--faint);font-size:.65rem;white-space:nowrap}.follow-dot{width:6px;height:6px;border-radius:50%;background:var(--faint)}.follow-dot.status-in_progress{background:var(--accent)}.follow-dot.status-completed{background:var(--green)}.card-desc-input{margin:.55rem 0 0;flex:1;width:100%;min-height:2.7rem;resize:none;border:1px solid rgba(37,99,235,.35);border-radius:8px;padding:.35rem .45rem;background:#fafafa;font-size:.84rem;line-height:1.45;color:var(--ink);box-shadow:0 0 0 3px var(--accent-soft);outline:none}.card-footer{display:flex;flex-direction:column;gap:.55rem;margin-top:auto;padding-top:.55rem;border-top:1px solid var(--line)}.card-meta-row{display:flex;align-items:center;justify-content:space-between;gap:.5rem}.deadline{font-size:.75rem;font-weight:500;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.deadline.is-overdue{color:var(--red)}.deadline.has-alert{font-weight:600}.deadline-hint{display:block;margin-top:.1rem;font-style:normal;font-size:.72rem;font-weight:600}.deadline-warn-2d .deadline-hint{color:#dc2626}.deadline-warn-1d .deadline-hint,.status-overdue .deadline-hint{color:#b91c1c}.owner-chip{display:inline-flex;align-items:center;gap:.35rem;min-width:0;max-width:42%}.owner-avatar{display:inline-flex;align-items:center;justify-content:center;width:18px;height:18px;border-radius:50%;background:#ececea;color:var(--ink);font-size:.62rem;font-weight:700;flex-shrink:0}.owner-name{font-size:.74rem;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.progress-row{display:flex;align-items:center;gap:.55rem}.progress-track{flex:1;height:6px;border-radius:3px;background:#efefed;overflow:hidden}.progress-fill{height:100%;border-radius:3px;background:linear-gradient(90deg,#2563eb,#60a5fa);transition:width .3s ease}.status-overdue .progress-fill{background:linear-gradient(90deg,#dc2626,#f87171)}.status-completed .progress-fill{background:linear-gradient(90deg,#16a34a,#4ade80)}.status-paused .progress-fill{background:linear-gradient(90deg,#ca8a04,#facc15)}.progress-pct{flex-shrink:0;min-width:2.2rem;text-align:right;font-size:.75rem;font-weight:600;color:var(--ink);font-variant-numeric:tabular-nums}.card-updated{font-size:.7rem;color:var(--faint)}.card-menu{position:relative}.icon-btn{display:inline-flex;align-items:center;justify-content:center;width:26px;height:26px;border:none;border-radius:7px;background:transparent;color:var(--faint);font-size:.85rem;line-height:1;transition:background .15s,color .15s}.icon-btn:hover{background:#f0f0ee;color:var(--ink)}.menu-trigger{letter-spacing:.05em}.menu-scrim{position:fixed;top:0;right:0;bottom:0;left:0;z-index:20;border:none;background:transparent;cursor:default}.menu-dropdown{position:absolute;top:calc(100% + 4px);right:0;z-index:30;width:180px;padding:.45rem;background:var(--surface);border:1px solid var(--line-strong);border-radius:12px;box-shadow:var(--shadow-hover);display:flex;flex-direction:column;gap:.35rem;animation:menuIn .15s ease}.menu-row{display:flex;flex-direction:column;gap:.25rem;padding:.35rem .4rem;font-size:.72rem;font-weight:600;color:var(--faint)}.menu-row select,.menu-row input[type=range]{width:100%}.menu-row select{border:1px solid var(--line);border-radius:7px;padding:.35rem .45rem;font-size:.8rem;font-weight:500;color:var(--ink);background:#fafafa}.menu-row input[type=range]{accent-color:var(--accent)}.menu-action,.menu-danger{border:none;background:transparent;text-align:left;padding:.5rem .55rem;border-radius:8px;font-size:.82rem;font-weight:600}.menu-action{color:var(--ink)}.menu-action:hover{background:#f0f0ee}.menu-danger{color:var(--red)}.menu-danger:hover{background:var(--red-soft)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:.35rem;border:none;border-radius:10px;padding:.7rem 1.15rem;font-weight:600;font-size:.9rem;transition:background .15s,transform .12s,box-shadow .15s}.btn:active{transform:scale(.98)}.btn.compact{height:36px;padding:0 .9rem;font-size:.84rem}.btn.primary{background:var(--accent);color:#fff;box-shadow:0 1px 2px #2563eb33}.btn.primary:hover{background:var(--accent-hover)}.btn.ghost{background:transparent;color:var(--muted)}.btn.ghost:hover{background:#f0f0ee;color:var(--ink)}.plus{font-size:1.05rem;line-height:1;font-weight:500}.empty{display:flex;flex-direction:column;align-items:flex-start;gap:.45rem;padding:2.5rem 1.5rem;background:var(--surface);border:1px dashed var(--line-strong);border-radius:var(--radius)}.empty-title{margin:0;font-size:1rem;font-weight:700}.empty-sub{margin:0 0 .65rem;font-size:.88rem;color:var(--muted)}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:60;display:grid;place-items:center;padding:1.25rem;background:#11111159;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);animation:fadeIn .18s ease}.modal{width:min(100%,440px);display:flex;flex-direction:column;gap:.9rem;padding:1.25rem 1.3rem 1.15rem;background:var(--surface);border:1px solid var(--line);border-radius:18px;box-shadow:0 24px 64px #0000002e;animation:modalIn .22s ease}.modal-header{display:flex;justify-content:space-between;align-items:flex-start;gap:.75rem}.modal-header h2{margin:0;font-size:1.15rem;font-weight:700;letter-spacing:-.02em}.modal-sub{margin:.2rem 0 0;font-size:.82rem;color:var(--muted)}.field{display:flex;flex-direction:column;gap:.35rem}.field>span{font-size:.74rem;font-weight:600;color:var(--muted)}.field input,.field textarea,.field select{border:1px solid var(--line-strong);border-radius:10px;padding:.6rem .75rem;background:#fafafa;transition:border-color .15s,box-shadow .15s,background .15s}.field input:focus,.field textarea:focus,.field select:focus{outline:none;background:#fff;border-color:#2563eb73;box-shadow:0 0 0 3px var(--accent-soft)}.field textarea{resize:vertical;line-height:1.45}.field input[type=range]{padding:.35rem 0;border:none;background:transparent;accent-color:var(--accent);box-shadow:none}.field-row{display:grid;grid-template-columns:1fr 1fr;gap:.75rem}.modal-footer{display:flex;justify-content:flex-end;gap:.45rem;margin-top:.2rem}.follow-up-backdrop{z-index:100;place-items:center;padding:2rem}.follow-up-modal{width:min(1240px,100%);height:min(760px,calc(100vh - 4rem));max-height:calc(100vh - 4rem);display:flex;flex-direction:column;overflow:hidden;background:var(--surface);border:1px solid var(--line);border-radius:20px;box-shadow:0 28px 80px #00000038;animation:modalIn .22s ease}.follow-up-header{display:flex;align-items:flex-start;justify-content:space-between;gap:1rem;padding:1.25rem 1.4rem 1rem;border-bottom:1px solid var(--line)}.follow-up-header h2{margin:.12rem 0 0;font-size:1.25rem;letter-spacing:-.02em}.follow-up-eyebrow{margin:0;color:var(--accent);font-size:.72rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase}.follow-up-add{margin:1rem 1.4rem;padding:.9rem;background:#f8fafc;border:1px solid var(--line);border-radius:13px}.follow-up-add-heading{display:flex;align-items:baseline;gap:.6rem;margin-bottom:.65rem}.follow-up-add-heading strong{font-size:.88rem}.follow-up-add-heading span{color:var(--faint);font-size:.72rem}.follow-up-add-grid{display:grid;grid-template-columns:minmax(180px,1.8fr) 110px 120px 150px minmax(170px,1.4fr) auto;gap:.55rem;align-items:end}.follow-field{min-width:0;display:flex;flex-direction:column;gap:.3rem}.follow-field>span{color:var(--muted);font-size:.7rem;font-weight:600}.follow-field input,.follow-field select,.follow-table-input{width:100%;min-width:0;height:36px;padding:0 .58rem;border:1px solid var(--line-strong);border-radius:8px;background:var(--surface);font-size:.78rem;outline:none}.follow-field input:focus,.follow-field select:focus,.follow-table-input:focus{border-color:#2563eb8c;box-shadow:0 0 0 3px var(--accent-soft)}.follow-add-button{height:36px;white-space:nowrap}.follow-up-table-wrap{flex:1;min-height:180px;overflow:auto;padding:0 1.4rem 1.4rem}.follow-up-table{width:100%;border-collapse:separate;border-spacing:0;table-layout:fixed;border:1px solid var(--line);border-radius:12px;overflow:hidden}.follow-up-table th{padding:.68rem .65rem;color:var(--muted);background:#f8fafc;border-bottom:1px solid var(--line);text-align:left;font-size:.7rem;font-weight:700}.follow-up-table th:nth-child(1){width:25%}.follow-up-table th:nth-child(2){width:12%}.follow-up-table th:nth-child(3){width:12%}.follow-up-table th:nth-child(4){width:14%}.follow-up-table th:nth-child(5){width:24%}.follow-up-table th:nth-child(6){width:13%}.follow-up-table td{padding:.7rem .65rem;border-bottom:1px solid var(--line);vertical-align:middle;color:var(--muted);font-size:.78rem;overflow-wrap:anywhere}.follow-up-table tr:last-child td{border-bottom:none}.follow-up-table tbody tr:hover{background:#fafafa}.follow-record-title{color:var(--ink);font-weight:600;line-height:1.4}.follow-record-notes{display:-webkit-box;overflow:hidden;-webkit-box-orient:vertical;-webkit-line-clamp:2;line-height:1.4}.follow-notes-view,.follow-notes-edit{display:flex;flex-direction:column;gap:.45rem;min-width:0}.follow-attach-block{display:flex;flex-direction:column;gap:.45rem;margin-top:.75rem;padding-top:.75rem;border-top:1px dashed var(--line)}.follow-attach-label{font-size:.74rem;font-weight:600;color:var(--muted)}.attach-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.3rem}.attach-item{display:flex;align-items:center;gap:.45rem;min-width:0}.attach-item a{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--accent);font-size:.8rem;font-weight:600;text-decoration:none}.attach-item a:hover{text-decoration:underline}.attach-remove{flex-shrink:0;border:none;background:transparent;color:var(--faint);font-size:.72rem;padding:.1rem .25rem;border-radius:4px;cursor:pointer}.attach-remove:hover{color:var(--red);background:var(--red-soft)}.attach-composer-wrap{display:flex;flex-direction:column;gap:.35rem}.attach-hint{margin:0;font-size:.72rem;color:var(--faint);line-height:1.4}.follow-up-table tr.is-editing{background:#2563eb0a}.attach-add-btn{height:34px;padding:0 .7rem;white-space:nowrap;font-size:.78rem}@media(max-width:900px){.attach-composer{grid-template-columns:1fr}}.follow-status{max-width:100%;height:30px;padding:0 .35rem;border:none;border-radius:999px;font-size:.72rem;font-weight:600;outline:none}.follow-status.status-pending{color:var(--muted);background:#f1f5f9}.follow-status.status-in_progress{color:var(--accent);background:var(--accent-soft)}.follow-status.status-completed{color:var(--green);background:var(--green-soft)}.follow-actions{display:flex;align-items:center;gap:.25rem;flex-wrap:wrap}.follow-action{padding:.28rem .4rem;border:none;border-radius:6px;color:var(--muted);background:transparent;font-size:.72rem;font-weight:600}.follow-action:hover{color:var(--ink);background:#f1f5f9}.follow-action.save{color:var(--accent)}.follow-action.danger{color:var(--red)}.follow-up-empty{min-height:180px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.35rem;color:var(--muted);border:1px dashed var(--line-strong);border-radius:12px}.follow-up-empty strong{color:var(--ink);font-size:.9rem}.follow-up-empty span{font-size:.78rem}.fade-in{animation:rise .4s ease both}.delay-1{animation-delay:.05s}.delay-2{animation-delay:.1s}@keyframes rise{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@keyframes cardIn{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes modalIn{0%{opacity:0;transform:translateY(8px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes badgePop{0%{opacity:0;transform:scale(.92)}to{opacity:1;transform:scale(1)}}@keyframes menuIn{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}.login-page{min-height:100vh;display:grid;place-items:center;padding:1.5rem;background:radial-gradient(ellipse 80% 50% at 50% -20%,rgba(37,99,235,.12),transparent),var(--bg)}.login-card{width:min(380px,100%);padding:2rem 1.75rem 1.75rem;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow-hover);display:flex;flex-direction:column;gap:1rem}.login-brand{display:flex;align-items:center;gap:.7rem}.login-brand h1{margin:0;font-size:1.15rem;font-weight:700;letter-spacing:-.02em}.login-sub{margin:0;color:var(--muted);font-size:.9rem}.login-field{display:flex;flex-direction:column;gap:.4rem;font-size:.85rem;font-weight:600;color:var(--muted)}.login-field input{height:42px;padding:0 .85rem;border:1px solid var(--line-strong);border-radius:var(--radius-sm);background:var(--bg);outline:none;font-weight:500;color:var(--ink);transition:border-color .15s ease,box-shadow .15s ease}.login-field input:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}.login-error{margin:0;color:var(--red);font-size:.85rem;font-weight:500}.login-submit{width:100%;height:42px;margin-top:.25rem}@media(max-width:1100px){.project-grid{column-count:2}.dashboard{grid-template-columns:repeat(2,1fr)}.follow-up-add-grid{grid-template-columns:2fr 1fr 1fr 1.2fr}.follow-notes-field{grid-column:span 3}}@media(max-width:720px){:root{--shell: calc(100% - 28px) }.topbar-inner{height:auto;padding:.65rem 0;flex-wrap:wrap}.search-box{order:3;width:100%}.page-intro h1{font-size:1.2rem}.dashboard{grid-template-columns:1fr 1fr}.project-grid{column-count:1}.field-row{grid-template-columns:1fr}.follow-up-backdrop{align-items:end;padding:0}.follow-up-modal{width:100%;height:94vh;max-height:94vh;border-radius:18px 18px 0 0}.follow-up-header,.follow-up-add{margin-left:0;margin-right:0}.follow-up-header{padding:1rem}.follow-up-add{margin:.8rem 1rem}.follow-up-add-heading{align-items:flex-start;flex-direction:column;gap:.15rem}.follow-up-add-grid{grid-template-columns:1fr 1fr}.follow-title-field,.follow-notes-field,.follow-add-button{grid-column:1 / -1}.follow-up-table-wrap{padding:0 1rem 1rem}.follow-up-table,.follow-up-table tbody{display:block;border:none;overflow:visible}.follow-up-table thead{display:none}.follow-up-table tr{display:grid;grid-template-columns:1fr 1fr;gap:.65rem;margin-bottom:.7rem;padding:.85rem;border:1px solid var(--line);border-radius:12px;background:var(--surface)}.follow-up-table td{display:flex;min-width:0;flex-direction:column;gap:.3rem;padding:0;border:none}.follow-up-table td:before{content:attr(data-label);color:var(--faint);font-size:.66rem;font-weight:700}.follow-up-table td:first-child,.follow-up-table td:nth-child(5),.follow-up-table td:last-child{grid-column:1 / -1}}@media(min-width:1600px){:root{--shell: min(1400px, calc(100% - 64px) )}}
