:root{--bg:#faf9f7;--card:#ffffff;--card-soft:#f4f2ef;--ink:#1c1b1a;--ink-soft:#4a4743;--muted:#8a8783;--line:#edebe8;--line-strong:#e2dfdb;--accent:#4f46e5;--accent-hover:#4338ca;--accent-soft:rgba(79,70,229,.09);--on-accent:#ffffff;--hover:rgba(28,27,26,.035);--ok:#2e7d4f;--ok-soft:rgba(46,125,79,.1);--warn:#b45309;--warn-soft:rgba(180,83,9,.1);--danger:#b3261e;--danger-soft:rgba(179,38,30,.08);--shadow-card:0 1px 2px rgba(28,27,26,.05),0 6px 20px rgba(28,27,26,.045);--shadow-pop:0 2px 6px rgba(28,27,26,.08),0 12px 32px rgba(28,27,26,.1);--radius:12px;--radius-sm:9px;--radius-pill:999px;--motion:.15s cubic-bezier(.2,.6,.3,1)}@media(prefers-color-scheme:dark){:root{--bg:#131210;--card:#1c1a18;--card-soft:#242119;--ink:#edece7;--ink-soft:#c9c5bd;--muted:#9b978f;--line:#2a2723;--line-strong:#38342e;--accent:#8f88f2;--accent-hover:#a5a0f6;--accent-soft:rgba(143,136,242,.14);--on-accent:#16142a;--hover:rgba(237,236,231,.05);--ok:#7fc79a;--ok-soft:rgba(127,199,154,.12);--warn:#e0a458;--warn-soft:rgba(224,164,88,.12);--danger:#f08a84;--danger-soft:rgba(240,138,132,.12);--shadow-card:0 1px 2px rgba(0,0,0,.35),0 8px 24px rgba(0,0,0,.25);--shadow-pop:0 2px 8px rgba(0,0,0,.45),0 16px 40px rgba(0,0,0,.35)}}*{box-sizing:border-box}html,body{margin:0;padding:0}body{font:16px/1.55 system-ui,-apple-system,Segoe UI,Roboto,sans-serif;color:var(--ink);background:var(--bg);-webkit-font-smoothing:antialiased}h2{font-size:19px;font-weight:650;letter-spacing:-.01em;margin:20px 0 8px}button{font:inherit;color:var(--ink);background:var(--card);border:1px solid var(--line-strong);border-radius:var(--radius-sm);padding:8px 13px;cursor:pointer;transition:background var(--motion),border-color var(--motion),color var(--motion),box-shadow var(--motion),transform var(--motion)}button:hover{background:var(--hover);border-color:var(--muted)}button:active{transform:translateY(1px)}button:disabled{opacity:.55;cursor:default;transform:none}button:focus-visible,a:focus-visible,input:focus-visible,textarea:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.primary{background:var(--accent);color:var(--on-accent);border-color:transparent;font-weight:600}.primary:hover{background:var(--accent-hover);border-color:transparent}.link{background:none;border:none;color:var(--accent);padding:4px 6px;border-radius:var(--radius-sm);text-decoration:none;font-weight:500}.link:hover{background:var(--accent-soft);border-color:transparent;text-decoration:none}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}input,textarea{color:var(--ink)}input::placeholder,textarea::placeholder{color:var(--muted)}.topbar{display:flex;align-items:center;gap:12px;padding:10px 18px;background:color-mix(in srgb,var(--card) 88%,transparent);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-bottom:1px solid var(--line);position:sticky;top:0;z-index:5}.topbar strong{flex-shrink:0;font-size:15px;font-weight:700;letter-spacing:-.01em}.topbar .status{flex:1}.topbar .link{flex-shrink:0;color:var(--muted)}.topbar .link:hover{color:var(--ink)}.tabs{display:flex;gap:4px;padding:8px 18px;overflow-x:auto;background:color-mix(in srgb,var(--card) 88%,transparent);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-bottom:1px solid var(--line);scrollbar-width:none}.tabs::-webkit-scrollbar{display:none}.tabs button{white-space:nowrap;padding:7px 12px;border-radius:var(--radius-pill);border-color:transparent;background:transparent;color:var(--ink-soft);font-weight:500}.tabs button:hover{background:var(--hover);border-color:transparent}.tabs button.active{background:var(--accent-soft);color:var(--accent);font-weight:650;border-color:transparent}.content{max-width:740px;margin:0 auto;padding:16px 18px calc(56px + env(safe-area-inset-bottom))}.quickadd{background:var(--card);border-radius:var(--radius);box-shadow:var(--shadow-card);padding:12px;transition:box-shadow var(--motion)}.quickadd:focus-within{box-shadow:var(--shadow-pop)}.quickadd textarea{width:100%;resize:none;padding:8px 6px;border:none;border-radius:var(--radius-sm);background:transparent;font:inherit;min-height:52px}.quickadd textarea:focus-visible{outline:none}.quickadd-actions{display:flex;align-items:center;gap:10px;margin-top:8px;flex-wrap:wrap}.quickadd .primary{background:var(--accent-soft);color:var(--accent);font-weight:600}.quickadd:has(textarea:not(:placeholder-shown)) .primary{background:var(--accent);color:var(--on-accent)}.quickadd:has(textarea:not(:placeholder-shown)) .primary:hover{background:var(--accent-hover)}.counter{color:var(--muted);font-size:14px}.list{list-style:none;margin:10px 0;padding:0}.list li{display:flex;align-items:baseline;gap:10px;padding:10px 12px;background:transparent;border:none;border-radius:var(--radius-sm);margin-bottom:2px;transition:background var(--motion)}.list li:hover{background:var(--hover)}.list .text{flex:1;overflow-wrap:anywhere}.list time{white-space:nowrap;font-size:13px}.list .primary{padding:5px 11px;font-size:14px}.list button{padding:6px 11px;font-size:14px;border-color:transparent;background:transparent;color:var(--ink-soft)}.list button:hover{background:var(--card);border-color:var(--line-strong);color:var(--ink)}.list button.primary{background:var(--accent-soft);color:var(--accent);border-color:transparent}.list button.primary:hover{background:var(--accent);color:var(--on-accent)}.star{color:var(--warn)}.star-button{border:none;background:none;padding:2px 6px;font-size:17px;color:var(--line-strong);border-radius:var(--radius-pill)}.star-button:hover{background:var(--warn-soft);border:none}.star-button.on,.star-button.on[aria-pressed=true]{color:var(--warn)}.star-button.on:hover{background:var(--warn-soft)}.card{background:var(--card);border:none;border-radius:var(--radius);box-shadow:var(--shadow-card);padding:16px}.wizard{max-width:580px;margin:0 auto}.wizard header{display:flex;justify-content:space-between;align-items:center;margin-bottom:4px}.wizard .thought{font-size:19px;font-weight:650;letter-spacing:-.01em;margin:10px 0}.wizard fieldset{border:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}.wizard legend{font-weight:600;color:var(--muted);font-size:14px;margin-bottom:8px;padding:0}.wizard label{display:flex;flex-direction:column;gap:4px;font-size:14px;color:var(--ink-soft)}.wizard input{padding:9px 11px;border:1px solid var(--line-strong);border-radius:var(--radius-sm);font:inherit;background:var(--card)}.wizard fieldset>button{align-self:stretch;text-align:left;padding:11px 14px;font-weight:500}.wizard fieldset>button:hover{border-color:var(--accent);background:var(--accent-soft);color:var(--accent)}.wizard fieldset>button.primary:hover{background:var(--accent-hover);color:var(--on-accent)}.help{max-width:640px}.help>section{margin-bottom:26px}.help h3{font-size:17px;font-weight:650;letter-spacing:-.01em;margin:22px 0 6px}.help h4{font-size:15px;font-weight:600;margin:14px 0 4px}.help p{margin:6px 0}.help ol,.help ul{margin:6px 0;padding-left:20px;display:flex;flex-direction:column;gap:6px}.help li{overflow-wrap:anywhere}.focus{display:flex;flex-direction:column;align-items:center;gap:18px;padding:72px 16px;text-align:center}.focus h2{font-size:28px;font-weight:670;letter-spacing:-.02em;margin:0;max-width:600px}.focus-actions{display:flex;gap:10px}.focus-actions .primary{padding:11px 22px;font-size:16px}.muted{color:var(--muted)}.small{font-size:13px}.error{color:var(--danger)}.status{font-size:13px;color:var(--muted);display:inline-flex;align-items:center;gap:7px}.status:before{content:"";width:7px;height:7px;border-radius:var(--radius-pill);background:currentColor;flex-shrink:0;opacity:.85}.status.ok{color:var(--ok)}.status.pending,.status.offline{color:var(--warn)}.status.error{color:var(--danger)}.status .link{font-size:13px}.banner{display:flex;gap:10px;align-items:center;padding:11px 18px;font-size:14px}.banner.update{background:var(--accent-soft);border-bottom:1px solid var(--line);color:var(--accent)}.banner.error{background:var(--danger-soft);border-radius:var(--radius);color:var(--danger);flex-wrap:wrap}.center{min-height:80vh;display:flex;flex-direction:column;justify-content:center;align-items:center;gap:14px;padding:24px;text-align:center}.login h1{font-size:30px;font-weight:700;letter-spacing:-.02em;margin:0 0 4px}.login p{max-width:420px;margin:0}.login .primary{display:inline-block;padding:12px 22px;border-radius:var(--radius);font-weight:600}.visually-hidden{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}footer{margin-top:28px;padding-top:12px}.row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.field{display:flex;flex-direction:column;gap:4px;font-size:14px;margin:10px 0;color:var(--ink-soft)}.field input{padding:9px 11px;border:1px solid var(--line-strong);border-radius:var(--radius-sm);font:inherit;background:var(--card)}.badge{font-size:12px;font-weight:600;padding:3px 9px;border-radius:var(--radius-pill);background:var(--card-soft);color:var(--muted);border:1px solid transparent;white-space:nowrap}.badge.state-active{background:var(--ok-soft);color:var(--ok)}.badge.state-draft{background:var(--warn-soft);color:var(--warn)}.badge.state-stalled{background:var(--danger-soft);color:var(--danger)}.due{color:var(--warn)}.project-detail header{display:flex;justify-content:space-between;align-items:center;gap:8px}.project-detail h3{margin:0;font-weight:650;letter-spacing:-.01em}.steps{margin:10px 0;padding-left:0;list-style:none}.steps li{display:flex;gap:8px;align-items:center;flex-wrap:wrap;padding:7px 4px;border-bottom:1px solid var(--line)}.steps li:last-child{border-bottom:none}.steps li.current{background:var(--accent-soft);border-radius:var(--radius-sm);box-shadow:inset 3px 0 0 var(--accent);padding:7px 10px;border-bottom:none}.step-order{width:22px;text-align:center;color:var(--muted);flex-shrink:0;font-size:13px}.steps .text{flex:1 1 160px;overflow-wrap:anywhere}.step-actions{display:flex;gap:2px;flex-wrap:wrap}.step-actions .link{font-size:13px;padding:2px 7px;color:var(--ink-soft)}.step-actions .link:hover{color:var(--accent)}.steps input[type=text],.steps input:not([type]){flex:1;padding:5px 9px;border:1px solid var(--line-strong);border-radius:var(--radius-sm);background:var(--card)}.waiting-form{display:flex;gap:8px;align-items:flex-end;flex-wrap:wrap;width:100%;background:var(--card-soft);padding:10px;border-radius:var(--radius-sm)}.waiting-form label{display:flex;flex-direction:column;gap:2px;font-size:13px;color:var(--ink-soft)}.waiting-form input{padding:6px 9px;border:1px solid var(--line-strong);border-radius:var(--radius-sm);background:var(--card)}.note-editor label{display:flex;flex-direction:column;gap:4px;font-size:14px;margin:10px 0;color:var(--ink-soft)}.note-editor input{padding:9px 11px;border:1px solid var(--line-strong);border-radius:var(--radius-sm);font:inherit;background:var(--card)}.editor-toolbar{display:flex;gap:4px;flex-wrap:wrap;margin:6px 0}.editor-toolbar button{padding:5px 9px;font-size:14px;border-color:transparent;background:transparent;color:var(--ink-soft)}.editor-toolbar button:hover{background:var(--hover);border-color:transparent;color:var(--ink)}.editor-toolbar button[aria-pressed=true]{background:var(--accent-soft);color:var(--accent);font-weight:600}.tiptap{border:none;border-radius:var(--radius-sm);padding:12px;min-height:160px;background:var(--card-soft)}.tiptap:focus{outline:2px solid var(--accent);outline-offset:2px}.tiptap p,.tiptap ul,.tiptap ol{margin:4px 0}.banner.conflict{display:block;background:var(--danger-soft);border:none;border-radius:var(--radius);margin-bottom:12px}.conflict-card{padding:12px}.conflict-versions{display:flex;gap:12px;flex-wrap:wrap}.conflict-versions fieldset{flex:1;min-width:220px;border:1px solid var(--line-strong);border-radius:var(--radius-sm);background:var(--card)}.conflict-versions legend{font-size:13px;color:var(--muted);padding:0 4px}.snippet{display:block;border-top:1px dashed var(--line-strong);margin-top:4px;font-size:14px}@media(max-width:520px){.topbar{padding:9px 14px}.tabs{padding:7px 14px}.content{padding:12px 14px calc(48px + env(safe-area-inset-bottom))}.quickadd textarea{min-height:46px}.list li{padding:9px 8px}.list button{padding:6px 9px}}@media(prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}
