:root{--bg:#f6f7f9;--ink:#1b1f27;--muted:#5b6372;--faint:#6b7280;--line:#e3e6eb;--chip:#d6dae1;
--accent:#2b59c3;--accent-soft:#eaf0fb;--danger:#b42318;--warn:#c2410c;
--d1:#6d4ad8;--d2:#0f8a5f;--d3:#2b59c3;--d4:#c2410c;--d5:#a16207;--d6:#be123c;
--sans:ui-sans-serif,-apple-system,BlinkMacSystemFont,"SF Pro Text","Segoe UI",Inter,Roboto,"Helvetica Neue",Arial,sans-serif}
*{box-sizing:border-box}html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--bg);color:var(--ink);font:15px/1.5 var(--sans);-webkit-font-smoothing:antialiased;overflow-wrap:anywhere}
.top{background:#fff;border-bottom:1px solid var(--line);padding:0 max(16px,env(safe-area-inset-right)) 0 max(16px,env(safe-area-inset-left))}
.bar{max-width:1240px;margin:0 auto;min-height:56px;display:flex;align-items:center;gap:22px}
.brand{font-weight:500;font-size:17px;text-decoration:none;color:var(--ink);letter-spacing:-.01em;min-height:44px;display:flex;align-items:center}
.brand b{color:var(--accent);font-weight:700}
.brand svg{width:22px;height:22px;margin-right:9px}
.foot{border-top:1px solid var(--line);background:#fff;padding:20px max(16px,env(safe-area-inset-right)) calc(28px + env(safe-area-inset-bottom)) max(16px,env(safe-area-inset-left));color:var(--faint);font-size:14px}
.foot .in{max-width:1240px;margin:0 auto;display:flex;flex-wrap:wrap;justify-content:space-between;gap:8px 32px}
.foot .fcols{display:flex;flex-wrap:wrap;gap:8px 40px}.foot .fcols div{display:flex;flex-direction:column}
.foot strong{color:var(--ink);font-size:13px;font-weight:600;margin:10px 0 2px}
.foot a{color:var(--muted);text-decoration:none;min-height:44px;display:inline-flex;align-items:center}
.foot a:hover{color:var(--ink)}
.links{display:flex;align-items:center;gap:4px;flex:1}
.links a,.links button{color:var(--muted);text-decoration:none;font:inherit;font-size:14px;padding:0 10px;min-height:44px;display:inline-flex;align-items:center;gap:6px;border-radius:8px;background:none;border:0;cursor:pointer}
.links a:hover,.links button:hover{color:var(--ink);background:var(--bg)}
.links a.on{color:#111;font-weight:600}
.links form{margin:0 0 0 auto}
.pick{background:var(--accent-soft);border-radius:10px;padding:10px 12px}
.badge{background:var(--warn);color:#fff;border-radius:10px;font-size:11px;font-weight:700;padding:1px 7px;line-height:16px}
details.menu{display:none;margin-left:auto}
details.menu>summary{list-style:none;min-height:44px;min-width:44px;display:flex;align-items:center;justify-content:center;gap:6px;border:1px solid var(--chip);border-radius:10px;padding:0 12px;font-size:14px;color:var(--ink);background:#fff}
details.menu>summary::-webkit-details-marker{display:none}
details.menu .sheet{position:absolute;left:0;right:0;top:56px;background:#fff;border-bottom:1px solid var(--line);box-shadow:0 8px 20px rgba(17,24,39,.08);padding:6px max(12px,env(safe-area-inset-right)) 12px max(12px,env(safe-area-inset-left));z-index:5}
details.menu .sheet a,details.menu .sheet button{display:flex;align-items:center;gap:8px;width:100%;min-height:48px;padding:0 10px;color:var(--ink);text-decoration:none;font:inherit;font-size:16px;background:none;border:0;border-radius:8px;text-align:left;cursor:pointer}
details.menu .sheet a.on{font-weight:600;background:var(--bg)}
details.menu .sheet form{margin:0;border-top:1px solid var(--line);padding-top:6px;margin-top:6px}
main{max-width:1240px;margin:0 auto;padding:22px max(32px,env(safe-area-inset-right)) calc(48px + env(safe-area-inset-bottom)) max(32px,env(safe-area-inset-left))}
main.narrow>.col{max-width:760px}
h1{font-weight:650;font-size:24px;line-height:1.25;letter-spacing:-.015em;margin:0 0 14px}
h2{font-weight:650;font-size:17px;margin:0 0 8px}
h3{font-size:14px;margin:0 0 8px}
section{background:#fff;border:1px solid var(--line);border-radius:10px;padding:16px 18px;margin:0 0 14px}
.eyebrow{font-size:12px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);margin:0 0 6px}
.muted{color:var(--muted)}.faint{color:var(--faint);font-size:13px}.small{font-size:13px}
.note{background:var(--accent-soft);border:1px solid #c9d6f2;border-radius:10px;padding:10px 14px;margin:0 0 16px}
.bad{background:#fdecea;border:1px solid #f5c2bc;color:var(--danger);border-radius:10px;padding:10px 14px;margin:0 0 16px}
.stub{background:#fdf6e3;border:1px solid #f0dfae;border-radius:10px;padding:10px 14px;margin:0 0 16px;font-size:14px}
.side{border:1px solid var(--line);border-radius:10px;padding:12px 14px;background:var(--bg);margin:0 0 10px}
.row{display:flex;flex-wrap:wrap;gap:10px;align-items:center;margin-top:12px}
.row form{margin:0}form{margin:0}label{display:block;margin:6px 0}
input[type=text]{font:inherit;font-size:16px;width:100%;max-width:24rem;min-height:44px;padding:8px 12px;border:1px solid var(--chip);border-radius:8px;background:#fff;color:var(--ink);display:block;margin-top:4px}
select{font:inherit;font-size:16px;min-height:44px;padding:8px 12px;border:1px solid var(--chip);border-radius:8px;background:#fff;color:var(--ink);max-width:100%}
input[type=radio],input[type=checkbox]{width:20px;height:20px;vertical-align:-4px;margin:0 8px 0 0;accent-color:var(--accent)}
label:has(input[type=radio]),label:has(input[type=checkbox]){min-height:44px;display:flex;align-items:center}
button{font:inherit;font-size:14px;font-weight:600;min-height:44px;padding:9px 18px;border-radius:8px;border:1px solid var(--ink);background:var(--ink);color:#fff;cursor:pointer}
button:hover{background:#000}
button.ghost{background:#fff;color:var(--ink);border-color:var(--chip)}
button.ghost:hover{background:var(--bg)}
button.danger{background:var(--danger);border-color:var(--danger)}button.danger:hover{background:#8f1c12}
a{color:var(--accent)}
a:focus-visible,button:focus-visible,summary:focus-visible,input:focus-visible{outline:3px solid var(--accent);outline-offset:2px}
ul.saved{padding-left:18px}ul.saved li{margin:0 0 10px}
.state{font-size:12px;color:var(--muted);background:var(--bg);border:1px solid var(--line);border-radius:10px;padding:1px 8px;margin-left:8px;white-space:nowrap}
pre{white-space:pre-wrap;font:inherit;margin:6px 0}
ul.plain,ul.recs{list-style:none;padding:0;margin:0}
ul.recs li{border-bottom:1px solid var(--line)}ul.recs li:last-child{border-bottom:0}
ul.recs a{display:flex;gap:12px;align-items:baseline;justify-content:space-between;padding:12px 2px;min-height:44px;color:var(--ink);text-decoration:none}
ul.recs a:hover .x{color:var(--accent)}
ul.recs .when{color:var(--faint);font-size:12px;white-space:nowrap}
summary{cursor:pointer}
dl{margin:0;font-size:15px}dt{color:var(--muted);font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;margin-top:14px}dd{margin:2px 0 0}dd pre{margin:0}
nav.toc{display:block;font-size:14px;margin:0 0 8px}nav.toc ul{padding-left:18px;margin:8px 0}
.grid{display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:28px;align-items:start}
.aside{display:flex;flex-direction:column;gap:14px}
.chips{display:flex;gap:8px;overflow-x:auto;-webkit-overflow-scrolling:touch;scrollbar-width:none;padding:2px 0 4px;margin:0 0 6px}
.chips::-webkit-scrollbar{display:none}
.chip{flex:none;display:inline-flex;align-items:center;min-height:36px;padding:0 14px;border:1px solid var(--chip);border-radius:18px;background:#fff;color:var(--ink);text-decoration:none;font-size:13px;white-space:nowrap}
.chip:hover{border-color:#9aa3b2}.chip.on{background:var(--ink);border-color:var(--ink);color:#fff}
.day{font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);margin:22px 0 8px}
.feed{list-style:none;margin:0;padding:0}
.ev{display:grid;grid-template-columns:64px 24px minmax(0,1fr);align-items:start;margin:0 0 8px}
.ev .tm{font-size:12px;color:var(--faint);padding-top:12px;white-space:nowrap}
.dot{width:12px;height:12px;border-radius:50%;border:2px solid #fff;box-shadow:0 0 0 1px #c9ced6;margin-top:15px}
.k-decision{background:var(--d1)}.k-learning,.k-solution{background:var(--d2)}.k-change{background:var(--d3)}
.k-problem{background:var(--d4)}.k-review{background:var(--d5)}.k-todo,.k-todo_done{background:var(--d6)}
a.box{display:block;background:#fff;border:1px solid var(--line);border-radius:10px;padding:10px 14px;color:var(--ink);text-decoration:none;min-height:44px}
a.box:hover{border-color:#b9c0cc}
.box .h{font-size:13px;color:var(--muted)}.box .h b{color:var(--ink);font-weight:600}
.box .x{font-weight:500;margin-top:2px;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
.more{margin:18px 0 0 88px}
a.btn{display:inline-flex;align-items:center;justify-content:center;min-height:44px;padding:0 18px;border-radius:8px;border:1px solid var(--chip);background:#fff;color:var(--ink);text-decoration:none;font-weight:600;font-size:14px}
a.btn.warn{background:var(--warn);border-color:var(--warn);color:#fff}
.card{background:#fff;border:1px solid var(--line);border-radius:10px;padding:14px 16px}
.card h2{font-size:14px;margin:0 0 8px}
.card.rev{background:#fff7f2;border-color:#f1c9b0}.card.rev h2{color:#9a3412;font-size:15px}
.card.rev a.btn{width:100%;margin-top:10px}
.card ul{list-style:none;margin:0;padding:0}
.card li a,.card li>span{display:flex;justify-content:space-between;gap:10px;min-height:40px;align-items:center;color:var(--ink);text-decoration:none;font-size:14px;border-top:1px solid var(--line)}
.card li:first-child a,.card li:first-child>span{border-top:0}
.card li .n{color:var(--faint);font-size:12px;white-space:nowrap}
.card.skill>summary{list-style:none}.card.skill>summary::-webkit-details-marker{display:none}
.card.skill>summary h2{margin:0;display:inline}.card.skill>summary::after{content:' \25BE';color:var(--faint)}
.card.skill p{margin:8px 0}.card .done{font-size:12px;font-weight:600;color:#166534;background:#ecfdf3;border-radius:999px;padding:2px 8px;margin-left:6px}
.card.connect p{margin:8px 0}button.copy{min-height:36px}pre.cmd{background:var(--bg);border:1px solid var(--line);border-radius:8px;padding:8px 10px;font:12px/1.5 ui-monospace,Menlo,monospace;overflow-wrap:anywhere;user-select:all}
.empty{background:#fff;border:1px dashed var(--chip);border-radius:10px;padding:28px 20px;text-align:center;color:var(--muted)}
.phead{background:#fff;border-bottom:1px solid var(--line);margin:-22px calc(-1 * max(32px,env(safe-area-inset-right))) 22px calc(-1 * max(32px,env(safe-area-inset-left)));padding:18px max(32px,env(safe-area-inset-right)) 0 max(32px,env(safe-area-inset-left))}
.phead .in{max-width:1240px;margin:0 auto}
.crumb{font-size:13px;color:var(--muted);margin:0 0 4px}.crumb a{color:var(--muted)}
.phead h1{margin:0 0 4px}
.tabs{display:flex;gap:2px;overflow-x:auto;-webkit-overflow-scrolling:touch;scrollbar-width:none;margin-top:12px}
.tabs::-webkit-scrollbar{display:none}
.tabs a{flex:none;display:inline-flex;align-items:center;gap:6px;min-height:44px;padding:0 12px;color:var(--muted);text-decoration:none;font-size:14px;border-bottom:2px solid transparent;white-space:nowrap}
.tabs a.on{color:var(--ink);font-weight:600;border-bottom-color:var(--ink)}
.tabs .c{font-size:12px;color:var(--faint)}
.rec h1{font-size:22px}
.rec dd{font-size:16px;line-height:1.6}
ul.stack li{margin:0 0 10px}ul.recs .flat{display:flex;gap:12px;justify-content:space-between;padding:12px 2px}
.kv{display:flex;flex-wrap:wrap;gap:6px 14px;font-size:13px;color:var(--muted);margin:0 0 14px}
@media (max-width:860px){
.links{display:none}details.menu{display:block}
.bar{gap:10px}
main{padding:16px max(16px,env(safe-area-inset-right)) calc(40px + env(safe-area-inset-bottom)) max(16px,env(safe-area-inset-left))}
.phead{margin:-16px calc(-1 * max(16px,env(safe-area-inset-right))) 16px calc(-1 * max(16px,env(safe-area-inset-left)));padding:14px max(16px,env(safe-area-inset-right)) 0 max(16px,env(safe-area-inset-left))}
.grid{grid-template-columns:minmax(0,1fr);gap:16px}
.aside{order:-1}.aside .card.projs{display:none}
.chips{margin-left:-16px;margin-right:-16px;padding-left:16px;padding-right:16px}
.tabs{margin-left:-16px;margin-right:-16px;padding:0 8px}
.ev{grid-template-columns:54px 18px minmax(0,1fr)}.ev .tm{font-size:11px}.dot{margin-left:2px}
.more{margin-left:0}.more a.btn{width:100%}
h1{font-size:22px}section{padding:14px}
.card.rev{display:flex;flex-wrap:wrap;align-items:center;gap:8px 12px}.card.rev h2{margin:0;flex:1}
.card.rev ul{display:none}.card.rev a.btn{width:auto;margin:0}
}
@media (prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important;scroll-behavior:auto!important}}
