:root{--bg:#0a0a0a;--surface:#141414;--surface-2:#1e1e1e;--border:#2a2a2a;--accent:#22d3ee;--accent-dim:#22d3ee1f;--text:#f0f0f0;--text-muted:#777;--radius:18px;--radius-sm:10px;--gap:12px}[data-theme=light]{--bg:#f5f5f5;--surface:#fff;--surface-2:#efefef;--border:#e0e0e0;--accent:#0891b2;--accent-dim:#0891b21a;--text:#111;--text-muted:#888}[data-vibe=dnd]{--accent:#d4a843;--accent-dim:#d4a8431f;--bg:#0c0a08;--surface:#181410;--surface-2:#221e18;--border:#3d3020;--radius:10px;--radius-sm:6px}[data-theme=light][data-vibe=dnd]{--accent:#a07828;--accent-dim:#a078281a;--bg:#fdf8f0;--surface:#fff;--surface-2:#f5ede0;--border:#e0d0b0;--radius:10px;--radius-sm:6px}[data-vibe=fun]{--accent:#c084fc;--accent-dim:#c084fc1f;--bg:#0d0b12;--surface:#17121f;--surface-2:#211830;--border:#3a2d50;--radius:24px;--radius-sm:14px}[data-theme=light][data-vibe=fun]{--accent:#9333ea;--accent-dim:#9333ea1a;--bg:#faf7ff;--surface:#fff;--surface-2:#f3eeff;--border:#e4d4f7;--radius:24px;--radius-sm:14px}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html{background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased;font-family:system-ui,-apple-system,sans-serif}body{min-height:100vh;padding:24px}a{color:inherit;text-decoration:none}@media (width<=640px){body{padding:12px}}.nav{justify-content:space-between;align-items:center;max-width:1100px;margin:0 auto 20px;padding:0 4px;display:flex}.nav-name{color:var(--text-muted);letter-spacing:.02em;font-size:.9rem;font-weight:600}.nav-links{gap:4px;display:flex}.nav-link{color:var(--text-muted);border:1px solid #0000;border-radius:999px;padding:6px 14px;font-size:.875rem;font-weight:500;transition:color .15s,border-color .15s}.nav-link:hover{color:var(--text)}.nav-link.active{color:var(--text);border-color:var(--border);background:var(--surface)}.theme-toggle{background:var(--surface);border:1px solid var(--border);cursor:pointer;border-radius:999px;padding:6px 10px;font-size:.875rem;line-height:1;transition:border-color .15s}.theme-toggle:hover{border-color:#3a3a3a}:root .theme-toggle{color:#fff}[data-theme=light] .theme-toggle{color:#111}.grid{gap:var(--gap);grid-template-columns:repeat(4,1fr);max-width:1100px;margin:0 auto;display:grid}.area-photo{grid-area:1/1/3}.card.area-photo{padding:3px}.area-hero{grid-area:1/2/auto/4}.area-links{grid-area:1/4}.card.area-links{padding:16px}.area-about{grid-area:2/2/auto/5}.area-experience{grid-area:3/1/auto/5}.area-dice{grid-area:1/1/auto/3}.area-dccheck{grid-area:2/1/auto/3}.area-conditions{grid-area:1/3/3/5}.photo-card-img{object-fit:cover;border-radius:calc(var(--radius) - 1px);width:100%;height:100%;display:block}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);cursor:default;padding:28px;transition:border-color .2s,box-shadow .2s;position:relative;overflow:hidden}.card:hover{border-color:#3a3a3a;box-shadow:0 8px 32px #0006}.card.clickable{cursor:pointer}@media (width<=900px){.grid{grid-template-columns:repeat(2,1fr)}.area-photo{grid-area:1/1;min-height:260px}.area-hero{grid-area:1/2}.area-links{grid-area:2/1/auto/3}.area-about{grid-area:3/1/auto/3}.area-experience{grid-area:4/1/auto/3}}@media (width<=540px){.grid{grid-template-columns:1fr;gap:8px}.card{border-radius:14px;padding:16px}.area-photo{grid-area:auto/1;min-height:280px}.area-hero,.area-links,.area-about,.area-experience{grid-area:auto/1}}.hero-card{background:linear-gradient(135deg, var(--surface) 0%, var(--accent-dim) 100%);border-color:var(--border);flex-direction:column;justify-content:flex-end;min-height:220px;display:flex}@media (width<=540px){.hero-card{min-height:160px}.hero-tagline{font-size:.95rem}}.hero-eyebrow{letter-spacing:.12em;text-transform:uppercase;color:var(--accent);margin-bottom:12px;font-size:12px;font-weight:600}.hero-name{letter-spacing:-.03em;color:var(--text);margin-bottom:10px;font-size:clamp(2.4rem,5vw,3.8rem);font-weight:700;line-height:1}.hero-tagline{color:var(--text-muted);font-size:clamp(1rem,2vw,1.2rem);font-weight:400}.hero-accent-bar{background:linear-gradient(90deg, var(--accent) 0%, transparent 60%);opacity:.6;width:100%;height:3px;position:absolute;bottom:0;left:0}.about-card{flex-direction:column;justify-content:space-between;display:flex}.card-label{letter-spacing:.1em;text-transform:uppercase;color:var(--text-muted);margin-bottom:14px;font-size:11px;font-weight:600}.about-text{color:var(--text-muted);font-size:1rem;line-height:1.65}.about-text strong{color:var(--text)}.about-skills{flex-wrap:wrap;gap:6px;margin-top:16px;display:flex}.skill-tag{background:var(--accent-dim);color:var(--accent);border:1px solid #22d3ee33;border-radius:999px;padding:4px 10px;font-size:.75rem;font-weight:500}.experience-columns{grid-template-columns:1fr 280px;align-items:start;gap:40px;display:grid}.experience-section,.education-section{flex-direction:column;gap:0;display:flex}.jobs{flex-direction:column;gap:28px;display:flex}.job{border-left:2px solid var(--border);padding-left:20px;transition:border-color .2s}.job:hover{border-color:var(--accent)}.job-header{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:10px;display:flex}.job-title{color:var(--text);font-size:1rem;font-weight:600}.job-company{color:var(--accent);margin-top:2px;font-size:.875rem}.job-location{color:var(--text-muted);margin-top:1px;font-size:.8rem}.job-period{color:var(--text-muted);white-space:nowrap;flex-shrink:0;margin-top:2px;font-size:.8rem}.job-bullets{flex-direction:column;gap:6px;list-style:none;display:flex}.job-bullets li{color:var(--text-muted);padding-left:14px;font-size:.9rem;line-height:1.5;position:relative}.job-bullets li:before{content:"—";color:var(--border);position:absolute;left:0}@media (width<=900px){.experience-columns{grid-template-columns:1fr;gap:32px}}.links-card{flex-direction:column;display:flex}.links-list{flex-direction:column;gap:5px;margin-top:4px;display:flex}.link-row{border-radius:var(--radius-sm);background:var(--surface-2);border:1px solid var(--border);color:inherit;align-items:center;gap:10px;padding:7px 10px;text-decoration:none;transition:border-color .2s,background .2s;display:flex}.link-row--enabled{cursor:pointer}.link-row--enabled:hover{border-color:var(--accent);background:var(--accent-dim)}.link-row--disabled{opacity:.4;cursor:default}.link-row-icon{color:var(--accent);flex-shrink:0;align-items:center;display:flex}.link-row-text{flex-direction:column;flex:1;gap:1px;min-width:0;display:flex}.link-row-label{color:var(--text);font-size:.9rem;font-weight:600}.link-row-sublabel{color:var(--text-muted);white-space:nowrap;text-overflow:ellipsis;font-size:.75rem;overflow:hidden}.link-row-arrow{color:var(--accent);flex-shrink:0;font-size:.9rem}.dice-card{flex-direction:column;gap:12px;display:flex}.dice-selector{flex-wrap:wrap;gap:6px;display:flex}.die-btn{background:var(--surface-2);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text-muted);cursor:pointer;padding:6px 10px;font-size:.8rem;font-weight:600;transition:border-color .15s,color .15s,background .15s}.die-btn:hover{border-color:var(--accent);color:var(--text)}.die-btn--active{border-color:var(--accent);background:var(--accent-dim);color:var(--accent)}.dice-quantity-row{align-items:center;gap:10px;display:flex}.dice-quantity-label{letter-spacing:.1em;text-transform:uppercase;color:var(--text-muted);font-size:.7rem;font-weight:600}.dice-summary{color:var(--accent);margin-left:auto;font-size:.85rem;font-weight:700}.dice-type-row{flex-wrap:wrap;gap:5px;display:flex}.dice-custom-input{background:var(--surface-2);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text);outline:none;width:100%;padding:6px 10px;font-size:.85rem;transition:border-color .15s}.dice-custom-input:focus{border-color:var(--accent)}.dice-custom-input::placeholder{color:var(--text-muted)}.roll-btn{background:var(--accent);border-radius:var(--radius-sm);color:#000;cursor:pointer;letter-spacing:.02em;border:none;padding:12px;font-size:1rem;font-weight:700;transition:opacity .15s,transform .1s}.roll-btn:hover{opacity:.88}.roll-btn:active{transform:scale(.97)}.roll-result{flex-direction:column;align-items:center;gap:2px;display:flex}.roll-result-number{color:var(--text);letter-spacing:-.04em;font-size:3.5rem;font-weight:800;line-height:1}.roll-result-dice{color:var(--text-muted);font-family:monospace;font-size:.8rem}.roll-result--crit .roll-result-number{color:var(--accent)}.roll-result--fail .roll-result-number{color:#ef4444}.roll-result-label{letter-spacing:.1em;text-transform:uppercase;color:var(--accent);font-size:.75rem;font-weight:700}.roll-result--fail .roll-result-label{color:#ef4444}.save-btn{background:var(--surface-2);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text-muted);cursor:pointer;padding:7px 12px;font-size:.8rem;font-weight:600;transition:border-color .15s,color .15s,background .15s}.save-btn:hover:not(:disabled){border-color:var(--accent);color:var(--accent);background:var(--accent-dim)}.save-btn--saved{color:#22c55e;cursor:default;border-color:#22c55e}.save-btn:disabled:not(.save-btn--saved){opacity:.5;cursor:default}.dice-auth-row{align-items:center;gap:6px;display:flex}.dice-auth-row .dice-custom-input{flex:1}.roll-history{flex-direction:column;gap:3px;margin-top:auto;display:flex}.roll-history-item{color:var(--text-muted);font-family:monospace;font-size:.72rem}.dccheck-card{flex-direction:column;gap:14px;display:flex}.dccheck-row{align-items:flex-start;gap:24px;display:flex}.dccheck-field{flex-direction:column;gap:8px;display:flex}.dccheck-field-label{letter-spacing:.1em;text-transform:uppercase;color:var(--text-muted);font-size:.7rem;font-weight:600}.dccheck-quick{flex-wrap:wrap;gap:4px;display:flex}.dc-btn{background:var(--surface-2);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text-muted);cursor:pointer;flex-direction:column;align-items:center;gap:1px;padding:5px 8px;font-size:.75rem;font-weight:600;transition:border-color .15s,color .15s,background .15s;display:flex}.dc-btn-number{font-size:.85rem;font-weight:700;line-height:1}.dc-btn-label{letter-spacing:.02em;white-space:nowrap;font-size:.6rem;font-weight:500;line-height:1}.dc-btn:hover{border-color:var(--accent);color:var(--text)}.dc-btn--active{border-color:var(--accent);background:var(--accent-dim);color:var(--accent)}.dccheck-stepper{border:1px solid var(--border);border-radius:var(--radius-sm);align-items:center;gap:0;width:fit-content;display:flex;overflow:hidden}.dccheck-stepper button{background:var(--surface-2);color:var(--text-muted);cursor:pointer;border:none;padding:4px 10px;font-size:1rem;line-height:1;transition:background .15s,color .15s}.dccheck-stepper button:hover{background:var(--accent-dim);color:var(--accent)}.dccheck-value{color:var(--text);text-align:center;border-left:1px solid var(--border);border-right:1px solid var(--border);min-width:36px;padding:4px 6px;font-size:.95rem;font-weight:700}.dccheck-result{border-radius:var(--radius-sm);border:1px solid #0000;flex-direction:column;gap:4px;padding:12px 16px;display:flex}.dccheck-result--pass{background:#22c55e1a;border-color:#22c55e4d}.dccheck-result--fail{background:#ef44441a;border-color:#ef44444d}.dccheck-outcome{letter-spacing:-.02em;font-size:1.4rem;font-weight:800}.dccheck-result--pass .dccheck-outcome{color:#22c55e}.dccheck-result--fail .dccheck-outcome{color:#ef4444}.dccheck-detail{color:var(--text-muted);font-family:monospace;font-size:.78rem}.conditions-card{flex-direction:column;display:flex}.conditions-list{flex-direction:column;flex:1;gap:2px;margin-top:4px;display:flex;overflow-y:auto}.condition-row{border-radius:var(--radius-sm);cursor:pointer;border:1px solid #0000;padding:7px 10px;transition:background .15s,border-color .15s}.condition-row:hover{background:var(--surface-2);border-color:var(--border)}.condition-row--open{background:var(--accent-dim);border-color:var(--accent)}.condition-name{color:var(--accent);font-size:.85rem;font-weight:600}.condition-row--open .condition-name{margin-bottom:5px}.condition-desc{color:var(--text-muted);font-size:.78rem;line-height:1.5}.feed{max-width:680px;margin:0 auto}.feed-header{margin-bottom:32px}.feed-title{letter-spacing:-.03em;color:var(--text);margin-bottom:6px;font-size:1.8rem;font-weight:700}.feed-subtitle{color:var(--text-muted);font-size:.9rem}.feed-empty{color:var(--text-muted);text-align:center;padding:40px 0;font-size:.9rem}.feed-posts{flex-direction:column;gap:2px;display:flex}.feed-post{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:20px 24px;transition:border-color .15s}.feed-post:hover{border-color:#3a3a3a}.feed-post-meta{align-items:center;gap:10px;margin-bottom:10px;display:flex}.feed-post-type{letter-spacing:.08em;text-transform:uppercase;color:var(--accent);background:var(--accent-dim);border:1px solid #22d3ee33;border-radius:999px;padding:2px 8px;font-size:.7rem;font-weight:600}.feed-post--thought .feed-post-type{color:#a78bfa;background:#a78bfa1a;border-color:#a78bfa33}.feed-post-time{color:var(--text-muted);font-size:.8rem}.feed-post-link{color:var(--text);align-items:center;gap:6px;margin-bottom:8px;font-size:1rem;font-weight:600;text-decoration:none;transition:color .15s;display:inline-flex}.feed-post-link:hover{color:var(--accent)}.feed-post-link-arrow{color:var(--accent);font-size:.85rem}.feed-post-content{color:var(--text-muted);font-size:.95rem;line-height:1.6}.feed-links-section{margin-top:40px}.admin{max-width:680px;margin:0 auto}.admin-login{flex-direction:column;gap:12px;max-width:320px;margin:80px auto 0;display:flex}.admin-title{letter-spacing:-.03em;color:var(--text);margin-bottom:16px;font-size:1.5rem;font-weight:700}.admin-form{flex-direction:column;gap:12px;margin-bottom:48px;display:flex}.admin-type-toggle{gap:6px;display:flex}.admin-type-btn{border:1px solid var(--border);color:var(--text-muted);cursor:pointer;background:0 0;border-radius:999px;padding:8px 20px;font-size:.875rem;font-weight:500;transition:all .15s}.admin-type-btn.active{background:var(--surface-2);border-color:var(--accent);color:var(--accent)}.admin-input,.admin-textarea{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text);outline:none;width:100%;padding:12px 14px;font-family:inherit;font-size:.95rem;transition:border-color .15s}.admin-input:focus,.admin-textarea:focus{border-color:var(--accent)}.admin-textarea{resize:vertical;min-height:100px}.admin-btn{background:var(--accent);color:#000;cursor:pointer;border:none;border-radius:999px;align-self:flex-start;padding:10px 24px;font-size:.9rem;font-weight:600;transition:opacity .15s}.admin-btn:hover{opacity:.85}.admin-btn--submit{margin-top:4px}.admin-status{color:var(--text-muted);font-size:.85rem}.admin-section-title{color:var(--text-muted);margin-bottom:12px;font-size:1rem;font-weight:600}.admin-posts{flex-direction:column;gap:8px;display:flex}.admin-post{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-sm);justify-content:space-between;align-items:center;gap:12px;padding:12px 16px;display:flex}.admin-post-info{align-items:center;gap:10px;min-width:0;display:flex}.admin-post-type{text-transform:uppercase;letter-spacing:.08em;color:var(--accent);flex-shrink:0;font-size:.7rem;font-weight:600}.admin-post-content{color:var(--text-muted);white-space:nowrap;text-overflow:ellipsis;font-size:.875rem;overflow:hidden}.admin-delete{color:var(--text-muted);cursor:pointer;background:0 0;border:1px solid #3a3a3a;border-radius:999px;flex-shrink:0;padding:4px 12px;font-size:.8rem;transition:border-color .15s,color .15s}.admin-delete:hover{color:#ef4444;border-color:#ef4444}.admin-bsky-label{color:var(--text-muted);cursor:pointer;align-items:center;gap:8px;font-size:.875rem;display:flex}
