:root{font-family:-apple-system,BlinkMacSystemFont,PingFang TC,Noto Sans TC,Microsoft JhengHei,sans-serif;color:#181818;background:#fff;font-synthesis:none;text-rendering:optimizeLegibility;--accent: #ef4438;--accent-soft: #fff1ef;--jade: #25a864;--text: #181818;--muted: #77746f;--line: #e8e6e2;--surface: #ffffff;--soft-surface: #faf9f7;--radius: 11px}*{box-sizing:border-box}html,body,#root{min-width:320px;min-height:100%;margin:0}button,textarea{font:inherit}button{color:inherit}.login-screen{min-height:100vh;display:grid;place-items:center;padding:28px;background:radial-gradient(circle at 50% 10%,rgba(239,68,56,.08),transparent 34%),#fff}.login-panel{width:min(440px,100%);padding:38px;border:1px solid var(--line);border-radius:16px;background:#fff;box-shadow:0 24px 70px #271e181f}.login-panel>.brand-mark{justify-content:center}.login-heading{margin:34px 0 28px;text-align:center}.login-lock{display:grid;place-items:center;width:44px;height:44px;margin:0 auto 14px;border-radius:50%;background:#fff0ee;color:var(--accent)}.login-heading h1{margin:0;font-family:Songti TC,"Noto Serif TC",serif;font-size:34px}.login-heading p{margin:8px 0 0;color:var(--muted);font-size:14px}.member-choice{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-bottom:24px}.member-choice button{display:flex;align-items:center;gap:10px;min-height:64px;padding:10px 13px;border:1px solid #ddd9d4;border-radius:11px;background:#fff;cursor:pointer;color:var(--text)}.member-choice button.active{border-color:var(--accent);box-shadow:0 0 0 2px #ef44381a}.member-choice button.wife-choice.active{border-color:#25a864;box-shadow:0 0 0 2px #25a8641a}.login-panel form{display:grid}.login-panel form label{margin-bottom:7px;font-size:13px;font-weight:700}.login-panel input{min-height:52px;padding:0 14px;border:1px solid #cbc8c3;border-radius:10px;outline:none;font:inherit;letter-spacing:.12em}.login-panel input:focus{border-color:var(--accent);box-shadow:0 0 0 3px #ef44381a}.login-submit{justify-content:center;width:100%;margin-top:15px}.login-error{margin:9px 0 0;color:#bb241a;font-size:12px}.login-panel>small{display:block;margin-top:20px;color:var(--muted);text-align:center}.login-loading{display:grid;place-items:center;gap:22px}.login-loading>span{width:28px;height:28px;border:3px solid #eeeae5;border-top-color:var(--accent);border-radius:50%;animation:spin .7s linear infinite}.logout-button{width:100%;margin-top:8px}@media(max-width:520px){.login-screen{padding:18px}.login-panel{padding:28px 20px;border-radius:14px}.member-choice button{justify-content:center;flex-direction:column;min-height:92px}}.app-shell{display:grid;grid-template-columns:236px minmax(560px,1fr) 244px;min-height:100vh;background:#fff}.sidebar{position:sticky;top:0;display:flex;flex-direction:column;height:100vh;padding:26px 16px 20px;border-right:1px solid var(--line);background:var(--soft-surface)}.brand-mark{display:flex;align-items:center;gap:12px;padding:0 10px 25px;font-family:Songti TC,"Noto Serif TC",serif;font-size:23px;font-weight:700;letter-spacing:.04em;white-space:nowrap}.brand-ring,.empty-ring{display:inline-block;width:39px;height:39px;border:7px solid var(--accent);border-right-color:#ff8b7f;border-bottom-color:#f96b5f;border-radius:50%;transform:rotate(-16deg)}.sidebar nav{display:grid;gap:5px}.nav-item,.category-item,.category-heading{display:flex;align-items:center;width:100%;border:0;background:transparent;cursor:pointer}.nav-item{gap:13px;min-height:46px;padding:0 13px;border-radius:9px;font-size:15px;font-weight:600}.nav-item:hover,.nav-item.active{background:#fff0ee}.nav-item.active{color:#b82e25}.category-nav{display:grid;gap:2px;margin-top:21px;padding-top:17px;border-top:1px solid #dcd9d4}.category-heading{min-height:38px;padding:0 13px;font-size:13px;font-weight:700}.category-item{gap:11px;min-height:35px;padding:0 14px;border-radius:8px;color:#4d4a46;font-size:14px}.category-item:hover,.category-item.active{background:#efede9;color:var(--text)}.category-dot{display:inline-block;flex:0 0 auto;width:10px;height:10px;border-radius:50%}.source-status{display:flex;align-items:center;gap:10px;margin-top:auto;padding:12px;border:1px solid #dcd9d4;border-radius:var(--radius);background:#fff}.source-status span{display:grid;gap:2px;min-width:0}.source-status strong{font-size:12px;font-weight:650}.source-status small{overflow:hidden;color:var(--muted);font-size:10px;text-overflow:ellipsis;white-space:nowrap}.source-status i{width:8px;height:8px;margin-left:auto;border-radius:50%;background:#b2aea8}.workspace{min-width:0;padding:27px 34px 80px}.workspace-header{display:flex;align-items:center;justify-content:space-between;min-height:78px;border-bottom:1px solid var(--line)}.workspace-header>div>p{display:none}.heading-button{display:flex;align-items:center;gap:8px;padding:0;border:0;background:transparent;cursor:pointer}.heading-button h1{margin:0;font-size:29px;line-height:1.2;letter-spacing:-.025em}.primary-button,.secondary-button{display:inline-flex;align-items:center;justify-content:center;gap:7px;border-radius:9px;cursor:pointer;transition:transform .14s ease,background .14s ease}.primary-button{min-height:44px;padding:0 18px;border:0;background:var(--accent);color:#fff;font-size:14px;font-weight:700}.primary-button:hover{background:#df382e;transform:translateY(-1px)}.primary-button:disabled{cursor:wait;opacity:.55;transform:none}.secondary-button{min-height:40px;padding:0 16px;border:1px solid #dcd9d4;background:#fff;font-size:13px;font-weight:600}.table-header,.task-row{display:grid;grid-template-columns:42px minmax(220px,1fr) 150px 90px 36px;align-items:center}.table-header{height:48px;border-bottom:1px solid var(--line);color:var(--muted);font-size:12px;font-weight:650}.task-row{min-height:64px;border-bottom:1px solid var(--line);transition:background .14s ease}.task-row:hover{background:#fdfcfa}.check-button{display:grid;place-items:center;width:22px;height:22px;padding:0;border:1.5px solid #aaa7a2;border-radius:5px;background:#fff;color:#fff;cursor:pointer;font-size:15px;line-height:1}.check-button[aria-pressed=true]{border-color:var(--jade);background:var(--jade)}.check-button:focus-visible,.more-button:focus-visible,button:focus-visible,textarea:focus-visible{outline:3px solid rgba(239,68,56,.25);outline-offset:2px}.task-main{min-width:0}.task-title-line{display:flex;align-items:center;gap:12px;min-width:0}.task-title-line h3{overflow:hidden;margin:0;font-size:16px;font-weight:680;letter-spacing:.005em;text-overflow:ellipsis;white-space:nowrap}.note-count{display:inline-flex;align-items:center;gap:3px;color:var(--muted);font-size:11px}.due-date{display:flex;align-items:center;gap:7px;color:#5f5c58;font-size:13px}.due-date.urgent,.mobile-meta .urgent{color:var(--accent)}.assignees{display:flex;align-items:center}.assignees span,.member-avatar,.activity-list>article>span{display:grid;place-items:center;border:2px solid #fff;border-radius:50%;font-weight:650}.assignees span{width:31px;height:31px;margin-left:-6px;font-size:11px}.assignees span:first-child{margin-left:0}.owner{background:#dff1e3;color:#316c42}.wife{background:#ffe1dd;color:#8d3b34}.more-button{display:grid;place-items:center;width:32px;height:32px;padding:0;border:0;border-radius:7px;background:transparent;cursor:pointer}.more-button:hover{background:#efede9}.task-row.completed h3{color:#88847f;text-decoration:line-through;text-decoration-thickness:1px}.mobile-meta,.mobile-topbar,.mobile-nav,.mobile-add,.mobile-filter{display:none}.activity-rail{position:sticky;top:0;height:100vh;padding:35px 0 20px;border-left:1px solid var(--line);background:#fdfcfb}.activity-rail h2{margin:0;padding:0 19px 20px;border-bottom:1px solid var(--line);font-size:13px}.activity-list article{display:grid;grid-template-columns:30px 1fr;gap:9px;padding:15px 17px;border-bottom:1px solid var(--line)}.activity-list>article>span{width:30px;height:30px;font-size:10px}.activity-list article div{display:grid;gap:4px}.activity-list p,.activity-list strong,.activity-list time{margin:0}.activity-list p{color:#55514d;font-size:11px}.activity-list strong{font-size:12px;line-height:1.4}.activity-list time{color:var(--muted);font-size:10px}.activity-rail>.secondary-button{width:calc(100% - 34px);margin:18px 17px 0}.loading-state,.empty-state{display:grid;place-items:center;min-height:360px;text-align:center}.loading-state{align-content:center;gap:16px;color:var(--muted)}.loading-state span{width:27px;height:27px;border:3px solid #efede9;border-top-color:var(--accent);border-radius:50%;animation:spin .75s linear infinite}.empty-state{align-content:center}.empty-state .empty-ring{width:44px;height:44px;margin-bottom:18px;border-width:6px;opacity:.55}.empty-state h2{margin:0 0 8px;font-size:18px}.empty-state p{margin:0 0 20px;color:var(--muted);font-size:13px}.dialog-backdrop{position:fixed;z-index:20;inset:0;display:grid;place-items:center;padding:20px;background:#14121047;animation:fade .16s ease-out}.create-dialog{width:min(540px,100%);padding:24px;border:1px solid #e2dfda;border-radius:15px;background:#fff;box-shadow:0 24px 70px #271e182e;animation:lift .18s ease-out}.create-dialog header{display:flex;justify-content:space-between;margin-bottom:18px}.create-dialog header h2{margin:0 0 5px;font-size:22px}.create-dialog header p{margin:0;color:var(--muted);font-size:13px}.create-dialog header button{display:grid;place-items:center;width:36px;height:36px;padding:0;border:0;border-radius:8px;background:#f5f3f0;cursor:pointer}.create-dialog textarea{width:100%;min-height:135px;resize:vertical;padding:15px;border:1px solid #d8d5d0;border-radius:10px;color:var(--text);font-size:16px;line-height:1.65}.create-dialog textarea::placeholder{color:#aaa6a1}.dialog-examples{display:flex;flex-wrap:wrap;gap:7px;margin-top:10px}.dialog-examples button{min-height:34px;padding:0 11px;border:1px solid #e4e1dc;border-radius:8px;background:#faf9f7;cursor:pointer;color:#5f5b57;font-size:12px}.create-dialog footer{display:flex;align-items:center;justify-content:space-between;margin-top:20px}.create-dialog footer>span{color:var(--muted);font-size:11px}.notice{position:fixed;z-index:30;right:25px;bottom:25px;display:flex;align-items:center;gap:14px;max-width:min(430px,calc(100vw - 30px));min-height:48px;padding:8px 10px 8px 16px;border:1px solid #d8d4ce;border-radius:11px;background:#1f1e1c;box-shadow:0 13px 35px #14121033;color:#fff;font-size:13px}.notice button{border:0;background:transparent;color:#ff8b81;cursor:pointer;font-weight:700}.notice button:last-child{color:#c5c0bb;font-size:18px}@keyframes spin{to{transform:rotate(360deg)}}@keyframes fade{0%{opacity:0}}@keyframes lift{0%{opacity:0;transform:translateY(10px)}}@media(max-width:1050px){.app-shell{grid-template-columns:220px minmax(520px,1fr)}.activity-rail{display:none}}@media(max-width:760px){body{padding-bottom:74px}.app-shell{display:block;min-height:100dvh}.sidebar,.activity-rail,.desktop-add,.table-header,.due-date,.more-button{display:none}.workspace{padding:0 19px 130px}.mobile-topbar{display:flex;align-items:center;justify-content:space-between;height:89px}.mobile-topbar .brand-mark{padding:0;font-size:19px}.mobile-topbar .brand-ring{width:30px;height:30px;border-width:5px}.member-avatar{width:42px;height:42px;font-size:15px}.workspace-header{min-height:auto;padding:19px 0 22px;border-bottom:0}.heading-button h1{font-size:clamp(36px,12vw,50px);letter-spacing:-.045em}.heading-button svg{display:none}.workspace-header>div>p{display:block;margin:7px 0 0;color:var(--muted);font-size:13px}.mobile-filter{display:flex;align-items:center;justify-content:space-between;width:100%;min-height:52px;margin:0 0 24px;padding:0 16px;border:1px solid #cbc8c3;border-radius:10px;background:#fff;cursor:pointer;font-size:16px}.mobile-filter select{width:100%;border:0;outline:0;appearance:none;background:transparent;color:var(--text);font:inherit;cursor:pointer}.mobile-filter svg{flex:0 0 auto;margin-left:-24px;pointer-events:none}.task-row{grid-template-columns:48px minmax(0,1fr) auto;min-height:94px}.task-row .check-button{width:36px;height:36px;border-radius:50%;font-size:22px}.task-title-line{gap:0}.task-title-line>.category-dot,.note-count{display:none}.task-title-line h3{font-size:18px}.mobile-meta{display:flex;flex-wrap:wrap;gap:13px;margin-top:8px;color:#504d49;font-size:13px}.mobile-meta span{display:inline-flex;align-items:center;gap:6px}.mobile-meta i{width:8px;height:8px;border-radius:50%}.assignees{justify-content:flex-end}.assignees span{width:34px;height:34px}.mobile-add{position:fixed;z-index:7;right:21px;bottom:92px;display:grid;place-items:center;width:76px;height:76px;padding:8px;border:0;border-radius:50%;background:var(--accent);box-shadow:0 10px 27px #ef443840;color:#fff;cursor:pointer}.mobile-add span{font-size:10px;font-weight:700}.mobile-nav{position:fixed;z-index:6;right:0;bottom:0;left:0;display:grid;grid-template-columns:repeat(5,1fr);height:74px;padding-bottom:env(safe-area-inset-bottom);border-top:1px solid #d8d5d0;background:#fffffff7}.mobile-nav button{display:grid;place-items:center;align-content:center;gap:4px;padding:0;border:0;background:transparent;cursor:pointer;color:#4c4945;font-size:9px}.mobile-nav button.active{color:var(--accent)}.loading-state,.empty-state{min-height:300px}.create-dialog{align-self:end;width:calc(100% + 40px);margin:0 -20px -20px;padding:22px 20px max(22px,env(safe-area-inset-bottom));border-radius:18px 18px 0 0}.dialog-backdrop{align-items:end}.notice{right:15px;bottom:88px;left:15px;max-width:none}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{scroll-behavior:auto!important;animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}
