:root{--bg: #fbfbfd;--surface: #ffffff;--surface-2: #f4f5f8;--fg: #15171c;--muted: #666d7a;--faint: #e7e9ef;--line: #e2e4ec;--accent: #3b40e0;--accent-ink: #2a2fc4;--accent-soft: #ecedfb;--good: #1f9d57;--warn: #c67a00;--info: #3b40e0;--danger: #d4463c;--radius: 14px;--shadow: 0 1px 2px rgba(20,22,40,.05), 0 10px 30px rgba(20,22,40,.07);--maxw: 730px;--font-display: "Bricolage Grotesque", "Segoe UI", system-ui, sans-serif;--font-body: "Hanken Grotesk", system-ui, -apple-system, sans-serif;color-scheme:light}@media (prefers-color-scheme: dark){:root:not([data-theme=light]){--bg: #0c0d11;--surface: #15171d;--surface-2: #1b1e26;--fg: #ecedf2;--muted: #969cab;--faint: #22252e;--line: #282c37;--accent: #8b90ff;--accent-ink: #a6aaff;--accent-soft: #1c1f34;--good: #4ccb86;--warn: #e2a640;--info: #8b90ff;--danger: #ff6b61;--shadow: 0 1px 2px rgba(0,0,0,.4), 0 12px 34px rgba(0,0,0,.45);color-scheme:dark}}:root[data-theme=dark]{--bg: #0c0d11;--surface: #15171d;--surface-2: #1b1e26;--fg: #ecedf2;--muted: #969cab;--faint: #22252e;--line: #282c37;--accent: #8b90ff;--accent-ink: #a6aaff;--accent-soft: #1c1f34;--good: #4ccb86;--warn: #e2a640;--info: #8b90ff;--danger: #ff6b61;--shadow: 0 1px 2px rgba(0,0,0,.4), 0 12px 34px rgba(0,0,0,.45);color-scheme:dark}*{box-sizing:border-box}html,body{margin:0}body{background:var(--bg);color:var(--fg);font-family:var(--font-body);font-size:16px;line-height:1.6;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;overflow-x:hidden}h1,h2,h3,h4{font-family:var(--font-display);font-weight:650;line-height:1.15;text-wrap:balance;margin:0;letter-spacing:-.01em}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}button{font-family:inherit;cursor:pointer}input,textarea,select{font-family:inherit}:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:6px}.bar{position:sticky;top:0;z-index:20;background:color-mix(in srgb,var(--bg) 86%,transparent);-webkit-backdrop-filter:saturate(1.3) blur(10px);backdrop-filter:saturate(1.3) blur(10px);border-bottom:1px solid var(--line)}.bar-inner{max-width:var(--maxw);margin:0 auto;display:flex;align-items:center;gap:8px;padding:11px 18px}.brand{font-family:var(--font-display);font-weight:700;font-size:15.5px;letter-spacing:-.02em;margin-right:auto;color:var(--fg);max-width:46%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.brand:hover{text-decoration:none}nav.tabs{display:flex;gap:1px}.tab{border:0;background:none;color:var(--muted);font-size:13.5px;font-weight:550;padding:6px 9px;border-radius:9px;letter-spacing:-.01em;white-space:nowrap}.tab:hover{color:var(--fg);background:var(--surface-2);text-decoration:none}.tab.active{color:var(--accent-ink);background:var(--accent-soft)}.icon-btn{border:1px solid var(--line);background:var(--surface);color:var(--muted);width:34px;height:34px;border-radius:9px;display:grid;place-items:center;flex:none}.icon-btn:hover{color:var(--fg);border-color:var(--muted)}.icon-btn svg{width:17px;height:17px}.link-btn{border:0;background:none;color:var(--muted);font-size:13px;font-weight:550;padding:6px 8px;border-radius:8px;white-space:nowrap}.link-btn:hover{color:var(--fg);background:var(--surface-2);text-decoration:none}.wrap{max-width:var(--maxw);margin:0 auto;padding:34px 18px 90px}.view{display:flex;flex-direction:column}.setup-notice{background:var(--accent-soft);border:1px solid color-mix(in srgb,var(--accent) 30%,var(--line));border-radius:var(--radius);padding:15px 17px;margin-bottom:28px}.setup-notice h3{font-size:15px;margin-bottom:4px}.setup-notice p{margin:0;font-size:13.5px;color:var(--muted)}.setup-notice code{font-family:ui-monospace,SF Mono,Menlo,monospace;font-size:.86em;background:var(--surface);padding:1px 5px;border-radius:5px}.hero-banner{min-height:68vh;margin:-34px calc(50% - 50vw) 42px;padding:72px 24px;display:flex;flex-direction:column;justify-content:flex-end;align-items:center;text-align:center;gap:12px;color:#fff;background:linear-gradient(#0a0c1073,#0a0c10a6),url(/banner.jpg) center / cover no-repeat}.hero-banner h1{font-size:clamp(40px,8vw,64px)}.hero-banner .tagline{color:#fff;max-width:36ch;font-size:clamp(18px,3.5vw,22px);font-weight:450}.hero{display:flex;flex-direction:column;gap:13px;margin-bottom:42px}.hero .eyebrow{font-size:13px;font-weight:600;letter-spacing:.06em;color:var(--accent-ink)}.hero h1{font-size:clamp(32px,7vw,46px)}.hero .tagline{font-size:clamp(18px,3.5vw,21px);color:var(--muted);font-weight:450;max-width:36ch}.hero .about{font-size:16.5px;max-width:60ch;margin-top:2px}.links{display:flex;flex-wrap:wrap;gap:8px;margin-top:6px}.link-chip{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--line);background:var(--surface);color:var(--fg);font-size:13.5px;font-weight:550;padding:6px 12px;border-radius:999px}.link-chip:hover{border-color:var(--accent);color:var(--accent-ink);text-decoration:none}.link-chip svg{width:13px;height:13px}.home-section{margin-top:10px}.home-section+.home-section{margin-top:38px}.section-head{display:flex;align-items:baseline;justify-content:space-between;gap:10px;margin-bottom:14px}.section-head h2{font-size:14px;letter-spacing:.05em;text-transform:uppercase;color:var(--muted);font-weight:600}.theme-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}.theme-card{text-align:left;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:17px 16px;display:flex;flex-direction:column;gap:7px;cursor:pointer;color:var(--fg);min-height:128px;transition:border-color .12s,transform .12s}.theme-card:hover{border-color:color-mix(in srgb,var(--accent) 45%,var(--line));transform:translateY(-1px)}.theme-card .tc-label{font-family:var(--font-display);font-size:18px;font-weight:650;display:flex;align-items:center;gap:8px}.tc-dot,.th-dot{width:9px;height:9px;border-radius:50%;flex:none}.theme-card .tc-desc{font-size:13.5px;color:var(--muted);line-height:1.5}.theme-card .tc-count{font-size:12px;color:var(--muted);margin-top:auto;padding-top:6px;font-weight:600;font-variant-numeric:tabular-nums}.theme-header{display:flex;flex-direction:column;gap:8px;margin-bottom:8px}.theme-header .th-eyebrow{font-size:12.5px;font-weight:600;letter-spacing:.05em;display:inline-flex;align-items:center;gap:7px}.theme-header h1{font-size:clamp(27px,5.5vw,34px)}.theme-header .th-desc{color:var(--muted);font-size:16px;max-width:48ch}.new-bar{display:flex;gap:8px;margin:18px 0 6px;flex-wrap:wrap}.subsec{margin-top:30px}.subsec>.sub-h{font-size:13px;letter-spacing:.05em;text-transform:uppercase;color:var(--muted);font-weight:600;margin-bottom:12px}.post-list{display:flex;flex-direction:column}.post-row{display:flex;flex-direction:column;gap:5px;padding:18px 0;border-top:1px solid var(--line);cursor:pointer;color:inherit}.post-row:hover{text-decoration:none}.post-list .post-row:first-child{border-top:0}.post-row:hover .post-row-title{color:var(--accent-ink)}.post-row-meta{font-size:12.5px;color:var(--muted);letter-spacing:.02em;font-variant-numeric:tabular-nums;display:flex;gap:8px;align-items:center}.post-row-cat{color:var(--accent-ink);font-weight:600}.post-row-title{font-family:var(--font-display);font-size:20px;font-weight:600;transition:color .12s}.post-row-excerpt{color:var(--muted);font-size:15px;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.reader{display:flex;flex-direction:column;gap:6px}.back{align-self:flex-start;display:inline-flex;align-items:center;gap:6px;background:none;border:0;color:var(--muted);font-size:14px;font-weight:550;padding:4px 0;margin-bottom:16px}.back:hover{color:var(--accent-ink);text-decoration:none}.back svg{width:16px;height:16px}.reader .r-meta{font-size:13px;color:var(--muted);letter-spacing:.02em;font-variant-numeric:tabular-nums}.reader .r-meta .r-cat{color:var(--accent-ink);font-weight:600}.reader h1.r-title{font-size:clamp(27px,5.5vw,36px);margin:4px 0 18px}.reader-edit{margin-top:30px;display:flex;gap:8px}.prose{font-size:17px;line-height:1.72}.prose>*:first-child{margin-top:0}.prose p{margin:0 0 1.05em}.prose h1{font-size:26px;margin:1.4em 0 .5em}.prose h2{font-size:22px;margin:1.6em 0 .5em}.prose h3{font-size:18.5px;margin:1.4em 0 .4em}.prose ul,.prose ol{margin:0 0 1.05em;padding-left:1.3em}.prose li{margin:.25em 0}.prose blockquote{margin:0 0 1.05em;padding:2px 0 2px 16px;border-left:3px solid var(--accent);color:var(--muted);font-style:italic}.prose code{font-family:ui-monospace,SF Mono,Menlo,monospace;font-size:.88em;background:var(--surface-2);padding:1px 5px;border-radius:5px}.prose pre{background:var(--surface-2);border:1px solid var(--line);border-radius:10px;padding:14px 16px;overflow-x:auto;margin:0 0 1.1em}.prose pre code{background:none;padding:0;font-size:13.5px;line-height:1.6}.prose a{text-decoration:underline;text-underline-offset:2px}.prose hr{border:0;border-top:1px solid var(--line);margin:1.8em 0}.prose img{max-width:100%;border-radius:10px}.proj-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:14px}.proj-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:18px;display:flex;flex-direction:column;gap:9px;min-width:0;position:relative}.proj-card:hover{border-color:color-mix(in srgb,var(--accent) 40%,var(--line))}.proj-top{display:flex;align-items:center;justify-content:space-between;gap:8px}.proj-name{font-family:var(--font-display);font-size:18px;font-weight:600;min-width:0;overflow-wrap:break-word}.status{display:inline-flex;align-items:center;gap:6px;font-size:12px;font-weight:600;color:var(--muted);white-space:nowrap;flex:none}.status .dot{width:8px;height:8px;border-radius:50%;background:var(--muted)}.proj-desc{font-size:14.5px;color:var(--muted);line-height:1.55;min-width:0;overflow-wrap:break-word}.proj-tags{display:flex;flex-wrap:wrap;gap:5px;margin-top:auto;padding-top:4px}.tag{font-size:11.5px;font-weight:550;color:var(--fg);background:var(--surface-2);border-radius:6px;padding:2px 8px}.proj-link{font-size:13.5px;font-weight:600;display:inline-flex;align-items:center;gap:5px}.proj-link svg{width:14px;height:14px}.proj-card .card-edit{position:absolute;top:12px;right:12px;opacity:0}.proj-card:hover .card-edit,.proj-card:focus-within .card-edit{opacity:1}.j-note{display:flex;align-items:center;gap:8px;font-size:13px;color:var(--muted);background:var(--surface-2);border:1px solid var(--line);border-radius:10px;padding:9px 13px;margin-bottom:22px}.j-note svg{width:15px;height:15px;flex:none}.j-entry{border-top:1px solid var(--line);padding:20px 0;display:flex;flex-direction:column;gap:8px}.journal-list .j-entry:first-child{border-top:0}.j-head{display:flex;align-items:center;justify-content:space-between;gap:10px}.j-date{font-size:13px;font-weight:600;color:var(--fg);font-variant-numeric:tabular-nums}.j-body{font-size:15.5px;line-height:1.68}.btn{display:inline-flex;align-items:center;justify-content:center;gap:7px;border-radius:10px;font-size:14px;font-weight:600;letter-spacing:-.01em;padding:9px 15px;border:1px solid transparent;transition:background .12s,border-color .12s}.btn:hover{text-decoration:none}.btn svg{width:16px;height:16px}.btn.primary{background:var(--accent);color:#fff}:root[data-theme=dark] .btn.primary,:root:not([data-theme=light]) .btn.primary{color:#0c0d11}@media (prefers-color-scheme: light){:root:not([data-theme=dark]) .btn.primary{color:#fff}}.btn.primary:hover{background:var(--accent-ink)}.btn.ghost{background:var(--surface);border-color:var(--line);color:var(--fg)}.btn.ghost:hover{border-color:var(--muted)}.btn.subtle{background:var(--surface-2);color:var(--fg)}.btn.subtle:hover{background:var(--faint)}.btn.danger{background:none;color:var(--danger);border-color:transparent}.btn.danger:hover{background:color-mix(in srgb,var(--danger) 12%,transparent)}.btn.block{width:100%}.btn.mini{font-size:12.5px;padding:5px 10px;border-radius:8px}.btn:disabled{opacity:.6;cursor:default}.view-title{font-size:clamp(26px,5vw,32px)}.view-sub{color:var(--muted);font-size:15px;margin-top:2px}.empty{text-align:center;padding:50px 18px;color:var(--muted);border:1px dashed var(--line);border-radius:var(--radius);display:flex;flex-direction:column;align-items:center;gap:10px}.empty h3{font-size:18px;color:var(--fg)}.empty p{margin:0;font-size:14.5px;max-width:36ch}.empty .row{display:flex;gap:8px;flex-wrap:wrap;justify-content:center}.sk{background:linear-gradient(90deg,var(--surface-2) 25%,var(--faint) 37%,var(--surface-2) 63%);background-size:400% 100%;animation:sh 1.4s ease infinite;border-radius:7px}@keyframes sh{0%{background-position:100% 0}to{background-position:-100% 0}}@media (prefers-reduced-motion: reduce){.sk{animation:none}}.overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:50;background:#0c0d116b;display:flex;align-items:flex-end;justify-content:center}@media (min-width: 640px){.overlay{align-items:center;padding:24px}}.sheet{background:var(--surface);width:100%;max-width:640px;max-height:92vh;overflow-y:auto;border-radius:20px 20px 0 0;box-shadow:var(--shadow);padding:22px;animation:rise .22s ease}@media (min-width: 640px){.sheet{border-radius:18px}}@keyframes rise{0%{transform:translateY(16px);opacity:.6}to{transform:none;opacity:1}}@media (prefers-reduced-motion: reduce){.sheet{animation:none}}.sheet-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px}.sheet-head h3{font-size:19px}.save-err{font-size:13px;color:var(--danger);margin-bottom:10px}.field{display:flex;flex-direction:column;gap:6px;margin-bottom:14px}.field>label{font-size:12.5px;font-weight:600;color:var(--muted);letter-spacing:.02em;text-transform:uppercase}.field input,.field select,.field textarea{font-size:15px;color:var(--fg);background:var(--bg);border:1px solid var(--line);border-radius:10px;padding:10px 12px;width:100%}.field textarea{resize:vertical;min-height:220px;line-height:1.6}.field textarea.mono{font-family:ui-monospace,SF Mono,Menlo,monospace;font-size:14px}.field input:focus,.field select:focus,.field textarea:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}.field .hint{font-size:12px;color:var(--muted)}.row2{display:flex;gap:12px}.row2>.field{flex:1;min-width:0}.link-row{display:flex;gap:8px;margin-bottom:8px;align-items:center}.link-row input{min-width:0}.sheet-foot{display:flex;align-items:center;gap:8px;margin-top:18px}.sheet-foot .spacer{margin-left:auto}.confirm{display:inline-flex;gap:6px;align-items:center}.confirm .q{font-size:13px;color:var(--muted)}.auth-card{max-width:360px;margin:40px auto 0;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:24px;display:flex;flex-direction:column;gap:4px}.auth-card h1{font-size:23px;margin-bottom:6px}.auth-card p.sub{color:var(--muted);font-size:14px;margin:0 0 14px}@media (max-width: 580px){.proj-grid,.theme-grid{grid-template-columns:1fr}.theme-card{min-height:0}.row2{flex-direction:column;gap:0}nav.tabs .tab{padding:6px 7px;font-size:13px}.brand{max-width:32%}.link-btn{padding:6px 4px}}
