:root{--bg:#fbfaf8;--surface:#fff;--border:#e3e0da;--text:#23211e;--muted:#6f6a63;--accent:#2f6f4f;--accent-text:#fff;--danger:#a63232;--warn:#8a6316;--radius:10px;--tap:48px;--cm-keyword:#7a4bbd;--cm-heading:#1f5f8b;--cm-comment:#8b8680;--cm-note:#6f6a63;--cm-operator:#a1521c;--cm-tag:#2f6f4f;--cm-id:#7a4bbd;--cm-string:#1f5f8b;--cm-number:#a1521c;--cm-type:#7a4bbd;--cm-text:#23211e}@media (prefers-color-scheme:dark){:root{--bg:#1a1917;--surface:#232120;--border:#38352f;--text:#eeebe6;--muted:#a29b91;--accent:#5fae82;--accent-text:#14231b;--danger:#e08a8a;--warn:#d8b25e;--cm-keyword:#c39bf0;--cm-heading:#7fc0e8;--cm-comment:#7d776f;--cm-note:#a29b91;--cm-operator:#e0a06a;--cm-tag:#7fd0a0;--cm-id:#c39bf0;--cm-string:#7fc0e8;--cm-number:#e0a06a;--cm-type:#c39bf0;--cm-text:#eeebe6}}*{box-sizing:border-box}html,body{background:var(--bg);color:var(--text);-webkit-text-size-adjust:100%;margin:0;font:16px/1.5 system-ui,-apple-system,Segoe UI,sans-serif}.main{max-width:46rem;margin:0 auto;padding:1rem 1rem 5rem}.nav{background:var(--surface);border-bottom:1px solid var(--border);z-index:10;align-items:center;gap:1rem;padding:.75rem 1rem;display:flex;position:sticky;top:0}.brand{color:var(--text);font-weight:700;text-decoration:none}.nav-links{flex:1;gap:1rem;display:flex}.nav a{color:var(--muted);text-decoration:none}.nav a:hover{color:var(--text)}button,.button{min-height:var(--tap);border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);color:var(--text);font:inherit;cursor:pointer;justify-content:center;align-items:center;padding:0 1rem;text-decoration:none;display:inline-flex}button:hover,.button:hover{border-color:var(--muted)}button:disabled{opacity:.5;cursor:default}button.primary,.button.primary{background:var(--accent);border-color:var(--accent);color:var(--accent-text);font-weight:600}.link-button{min-height:auto;color:var(--accent);background:0 0;border:0;padding:0;text-decoration:underline}input,select{min-height:var(--tap);border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);width:100%;color:var(--text);font:inherit;padding:0 .75rem;font-size:16px}input[type=checkbox]{width:1.4rem;height:1.4rem;min-height:auto;accent-color:var(--accent);flex:none}label{margin:1rem 0 .35rem;font-weight:600;display:block}.field label{margin-top:0}.field{margin:1.25rem 0}.hint,.subtle{color:var(--muted);margin:.25rem 0;font-size:.9rem}.error{color:var(--danger);font-weight:600}.ok{color:var(--accent)}.loading,.empty{color:var(--muted);padding:2rem 0}.auth{max-width:22rem;margin:3rem auto}.auth form{margin:1.5rem 0 1rem}.auth button[type=submit]{background:var(--accent);border-color:var(--accent);width:100%;color:var(--accent-text);margin-top:1.5rem;font-weight:600}.page-header{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.75rem;margin-bottom:1rem;display:flex}.page-header h1{margin:0;font-size:1.5rem}.header-actions{gap:.5rem;display:flex}.tabs{gap:.5rem;margin-bottom:1rem;display:flex}.tabs button.active{background:var(--accent);border-color:var(--accent);color:var(--accent-text)}.cards{gap:.75rem;margin:0;padding:0;list-style:none;display:grid}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);color:var(--text);padding:1rem;text-decoration:none;display:block}.card-title{font-weight:600;display:block}.card-meta{color:var(--muted);margin-top:.2rem;font-size:.9rem;display:block}.card-actions{gap:.5rem;margin-top:.75rem;display:flex}.card-link{color:inherit;margin:-1rem -1rem 0;padding:1rem;text-decoration:none;display:block}@media (width>=720px){.cards{gap:.5rem}.card.compact{align-items:center;gap:.75rem;padding:.55rem .9rem;display:flex}.card.compact .card-link{flex:1;align-items:center;gap:.75rem;min-width:0;margin:-.55rem 0 -.55rem -.9rem;padding:.55rem 0 .55rem .9rem;display:flex}.card.compact .card-title{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.card.compact .card-meta{flex:none;margin-top:0}.card.compact .progress-bar.small{flex:none;width:100px;margin-top:0}.card.compact .card-actions{flex:none;margin-top:0}.card.compact .inline-name{flex:1}}button.danger{background:var(--danger);border-color:var(--danger);color:#fff;font-weight:600}.danger-confirm{flex-wrap:wrap;align-items:center;gap:.6rem;display:inline-flex}.danger-hint{color:var(--muted);font-size:.85rem}.checklist-header{margin-bottom:1.5rem}.checklist-header h1{margin:.5rem 0 .25rem;font-size:1.5rem}.title-row{align-items:baseline;gap:.75rem;display:flex}.rename-list{margin:.5rem 0 .25rem}.rename-list input{font-size:1.25rem}.back{color:var(--muted);font-size:.9rem;text-decoration:none}.progress{color:var(--muted);margin:0 0 .5rem}.progress-bar{background:var(--border);border-radius:3px;height:6px;display:block;overflow:hidden}.progress-bar span{background:var(--accent);height:100%;transition:width .2s;display:block}.progress-bar.small{margin-top:.5rem}.section h2{text-transform:uppercase;letter-spacing:.06em;color:var(--muted);margin:1.5rem 0 .5rem;font-size:.85rem}.items{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);margin:0;padding:0;list-style:none;overflow:hidden}.item+.item{border-top:1px solid var(--border)}.item label{min-height:var(--tap);cursor:pointer;align-items:center;gap:.75rem;margin:0;padding:.6rem 1rem;font-weight:400;display:flex}.item.depth-1 label{padding-left:2.5rem}.item-name{flex:1}.item input:checked+.item-name{color:var(--muted)}.qty{font-variant-numeric:tabular-nums;color:var(--muted)}.badge{text-transform:uppercase;letter-spacing:.05em;color:var(--muted);border:1px solid var(--border);border-radius:999px;padding:.1rem .5rem;font-size:.7rem}.badge.warn{color:var(--warn);border-color:var(--warn)}.item .note{color:var(--muted);margin:0;padding:0 1rem .6rem 3.1rem;font-size:.9rem}.item.removed .item-name{color:var(--muted)}.item-row{align-items:center;display:flex}.item-row label{flex:1;min-width:0}.item-actions{white-space:nowrap;align-items:center;gap:.5rem;padding-right:1rem;display:flex}.inline-name{align-items:center;gap:.5rem;display:flex}.inline-name input{flex:1;min-width:0}.edit-item{min-height:var(--tap);padding:.4rem 1rem}.add-item{gap:.5rem;margin:1.5rem 0;display:flex}.checks{gap:.25rem;display:grid}.check,.switch{min-height:var(--tap);cursor:pointer;align-items:center;gap:.6rem;margin:0;font-weight:400;display:flex}.checklist-footer{border-top:1px solid var(--border);flex-wrap:wrap;gap:.5rem;margin-top:2rem;padding-top:1rem;display:flex}.offline{border:1px solid var(--warn);border-radius:var(--radius);color:var(--warn);background:var(--surface);margin-bottom:1rem;padding:.6rem 1rem}.share{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);margin:2rem 0;padding:1rem}.share summary{cursor:pointer;min-height:var(--tap);align-items:center;gap:.5rem;font-weight:600;display:flex}.share-row{flex-wrap:wrap;gap:.5rem;display:flex}.share-row input{flex:12rem}.share-row select{flex:0 12rem}.share-list{gap:.5rem;margin:1rem 0 0;padding:0;list-style:none;display:grid}.share-list li{border-top:1px solid var(--border);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.5rem;padding-top:.5rem;display:flex}.invite-link{border:1px solid var(--accent);border-radius:var(--radius);gap:.5rem;margin-top:1rem;padding:.75rem;display:grid}.shared-heading{text-transform:uppercase;letter-spacing:.06em;color:var(--muted);margin:2rem 0 .75rem;font-size:.85rem}.publish{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);margin:1rem 0;padding:.75rem 1rem}.learn{grid-template-columns:1fr;gap:1.5rem;display:grid}@media (width>=900px){.learn{grid-template-columns:14rem minmax(0,1fr);align-items:start}.learn-nav{position:sticky;top:5rem}}.learn-nav ol{gap:.15rem;margin:0;padding:0;list-style:none;display:grid}.learn-nav a{border-radius:var(--radius);color:var(--muted);align-items:center;gap:.6rem;padding:.5rem .6rem;font-size:.92rem;text-decoration:none;display:flex}.learn-nav a:hover{background:var(--surface);color:var(--text)}.learn-nav .current a{background:var(--surface);color:var(--text);font-weight:600}.learn-num{border:1px solid var(--border);border-radius:50%;flex:none;justify-content:center;align-items:center;width:1.5rem;height:1.5rem;font-size:.75rem;display:inline-flex}.learn-nav .current .learn-num{background:var(--accent);border-color:var(--accent);color:var(--accent-text)}.learn-body h1{margin:.25rem 0 .5rem}.learn-body .lead{color:var(--muted);margin-top:0;font-size:1.05rem}.learn-body code{background:var(--surface);border:1px solid var(--border);border-radius:4px;padding:.05em .3em;font-size:.9em}.learn-editor textarea{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);width:100%;min-height:9rem;color:var(--text);tab-size:2;resize:vertical;padding:.75rem;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:16px;line-height:1.5}.learn-result{gap:1.5rem;margin-top:1.5rem;display:grid}@media (width>=700px){.learn-result{grid-template-columns:1fr 1fr;align-items:start}}.learn-footer{border-top:1px solid var(--border);flex-wrap:wrap;justify-content:space-between;gap:.5rem;margin-top:2rem;padding-top:1rem;display:flex}.source-readonly{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:1rem;font-size:.85rem;overflow-x:auto}.editor-page{max-width:none}.title-input{max-width:20rem;font-size:1.25rem;font-weight:600}.editor-split{grid-template-columns:1fr;gap:1rem;display:grid}@media (width>=900px){.editor-split{grid-template-columns:minmax(0,3fr) minmax(16rem,1fr)}}.editor-host{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);overflow:hidden}.editor-host .cm-editor{height:60vh;font-size:14px}.editor-host .cm-editor.cm-focused{outline:none}.editor-panel{font-size:.9rem}.editor-panel h2{text-transform:uppercase;letter-spacing:.06em;color:var(--muted);margin:1.5rem 0 .5rem;font-size:.85rem}.status{margin:0 0 .75rem;font-weight:600}.status.good{color:var(--accent)}.status.bad{color:var(--danger)}.diags,.questions{gap:.6rem;margin:0;padding:0;list-style:none;display:grid}.diags li{border-left:3px solid var(--danger);padding-left:.6rem}.diags li.warn{border-left-color:var(--warn)}.suggest{color:var(--muted);font-size:.85rem}.questions code{font-weight:600}
