:root{--bg: #f5f4ef;--surface: #ecebe3;--surface-2: #fbfaf6;--border: #e2e0d5;--text: #1f1e1d;--text-2: #6e6c64;--accent: #d97757;--accent-soft: rgba(217, 119, 87, .12);--serif: "Charter", "Iowan Old Style", Georgia, "Times New Roman", serif;--sans: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif}:root[data-theme=dark]{--bg: #262624;--surface: #31302e;--surface-2: #2d2c2a;--border: #3d3c38;--text: #eceae4;--text-2: #9a988f;--accent: #d97757;--accent-soft: rgba(217, 119, 87, .16)}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;background:var(--bg);color:var(--text);font-family:var(--sans);font-size:15px;line-height:1.6;-webkit-font-smoothing:antialiased;transition:background .25s ease,color .25s ease}a{color:inherit}button{font:inherit;cursor:pointer}.app{display:flex;flex-direction:column;height:100%;max-width:760px;margin:0 auto;padding:0 20px}.header{display:flex;justify-content:space-between;align-items:center;padding:18px 2px 12px}.brand{display:flex;align-items:center;gap:8px;text-decoration:none;font-family:var(--serif);font-size:19px;letter-spacing:.01em}.brand-mark{color:var(--accent)}.header-nav{display:flex;align-items:center;gap:16px}.header-nav a{text-decoration:none;color:var(--text-2);font-size:13.5px}.header-nav a:hover{color:var(--text)}.icon-btn{display:grid;place-items:center;width:30px;height:30px;border:1px solid var(--border);border-radius:8px;background:transparent;color:var(--text-2)}.icon-btn:hover{color:var(--text);background:var(--surface)}.thread{flex:1;overflow-y:auto;padding:8px 0 16px}.thread.empty{display:grid;place-items:center}.greeting{text-align:center;padding-bottom:8vh;animation:fadeUp .5s ease both}.greeting-mark{color:var(--accent);animation:spinIn .9s cubic-bezier(.2,.8,.2,1) both}.greeting h1{font-family:var(--serif);font-weight:500;font-size:clamp(30px,5.5vw,42px);margin:14px 0 10px;letter-spacing:-.01em}.greeting-sub{color:var(--text-2);max-width:440px;margin:0 auto 28px}.chip-row{display:flex;flex-wrap:wrap;gap:8px}.chip-row.center{justify-content:center}.chip-row.compact{margin-bottom:10px}.chip{border:1px solid var(--border);background:var(--surface-2);color:var(--text);border-radius:999px;padding:7px 14px;font-size:13.5px;transition:border-color .15s ease,background .15s ease,transform .15s ease}.chip:hover{border-color:var(--accent);background:var(--accent-soft);transform:translateY(-1px)}.chip.small{padding:5px 11px;font-size:12.5px}.messages{display:flex;flex-direction:column;gap:22px;padding-top:12px}.msg.user{display:flex;justify-content:flex-end;animation:fadeUp .3s ease both}.user-bubble{background:var(--surface);border-radius:16px 16px 4px;padding:9px 15px;max-width:75%}.msg.assistant{display:flex;gap:12px;animation:fadeUp .3s ease both}.avatar{flex-shrink:0;display:grid;place-items:center;width:28px;height:28px;margin-top:2px;border-radius:999px;background:var(--accent);color:#fff}.thinking-avatar{animation:pulse 1.2s ease-in-out infinite}.msg-content{flex:1;min-width:0;padding-top:3px}.thinking{color:var(--text-2);font-style:italic;animation:shimmer 1.4s ease-in-out infinite}.prose{margin:0 0 10px}.prose.intro{font-family:var(--serif);font-size:16.5px}.muted{color:var(--text-2)}.small{font-size:13px}.cursor{color:var(--accent);animation:blink 1s steps(1) infinite}.block{animation:fadeUp .4s ease both}.timeline{display:flex;flex-direction:column;gap:2px}.job{display:flex;gap:14px;padding:8px 0}.job-marker{flex-shrink:0;width:9px;height:9px;margin-top:7px;border-radius:999px;background:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}.job-head{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 10px}.job-role{font-weight:600}.job-company{color:var(--accent);font-size:13.5px}.job-dates{color:var(--text-2);font-size:12.5px}.job-bullets{margin:6px 0 0;padding-left:18px;color:var(--text-2);font-size:13.5px}.job-bullets li{margin-bottom:3px}.cards{display:flex;flex-direction:column;gap:10px}.card{border:1px solid var(--border);background:var(--surface-2);border-radius:12px;padding:14px 16px;transition:border-color .15s ease}.card:hover{border-color:var(--accent)}.card-head{display:flex;justify-content:space-between;align-items:baseline;gap:10px}.card-title{font-family:var(--serif);font-size:16px}.card-links{display:flex;gap:12px;font-size:12.5px}.card-links a{color:var(--accent);text-decoration:none;display:inline-flex;align-items:center;gap:3px}.card-links a:hover{text-decoration:underline}.card-desc{margin:6px 0 10px;color:var(--text-2);font-size:13.5px}.tags{display:inline-flex;flex-wrap:wrap;gap:6px}.tag{background:var(--surface);border-radius:6px;padding:2px 8px;font-size:11.5px;color:var(--text-2)}.skill-row{display:flex;flex-wrap:wrap;align-items:center;gap:6px 12px;padding:7px 0;border-bottom:1px solid var(--border)}.skill-row:last-of-type{border-bottom:none}.skill-group{font-weight:600;font-size:13.5px;min-width:210px}.edu{display:flex;justify-content:space-between;align-items:baseline;gap:10px;padding:6px 0}.contact-row{display:flex;flex-wrap:wrap;gap:10px}.contact-btn{border:1px solid var(--border);border-radius:10px;padding:9px 18px;text-decoration:none;font-size:14px;background:var(--surface-2);transition:border-color .15s ease,background .15s ease}.contact-btn:hover{border-color:var(--accent)}.contact-btn.primary{background:var(--accent);border-color:var(--accent);color:#fff}.contact-btn.primary:hover{filter:brightness(1.06)}.composer-wrap{padding:6px 0 14px}.composer{display:flex;align-items:center;gap:8px;background:var(--surface-2);border:1px solid var(--border);border-radius:16px;padding:6px 6px 6px 18px;box-shadow:0 4px 24px #0000000d;transition:border-color .15s ease}.composer:focus-within{border-color:var(--accent)}.composer input{flex:1;border:none;outline:none;background:transparent;color:var(--text);font:inherit;padding:8px 0}.composer input::placeholder{color:var(--text-2)}.send{display:grid;place-items:center;width:34px;height:34px;border:none;border-radius:10px;background:var(--accent);color:#fff;transition:opacity .15s ease,transform .15s ease}.send:disabled{opacity:.35;cursor:default}.send:not(:disabled):hover{transform:translateY(-1px)}.disclaimer{text-align:center;color:var(--text-2);font-size:11.5px;margin:10px 0 0}@keyframes fadeUp{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}@keyframes spinIn{0%{opacity:0;transform:rotate(-120deg) scale(.6)}to{opacity:1;transform:none}}@keyframes blink{50%{opacity:0}}@keyframes pulse{50%{transform:scale(.88);opacity:.75}}@keyframes shimmer{50%{opacity:.45}}:root[data-mode=terminal]{--bg: #0c0c0c;--surface: #1a1a1a;--surface-2: #121212;--border: #2b2b2b;--text: #d8d8d8;--text-2: #8f8f8f;--accent: #d97757;--accent-soft: rgba(217, 119, 87, .15);--green: #57e389;--serif: ui-monospace, "SF Mono", SFMono-Regular, Menlo, Consolas, monospace;--sans: ui-monospace, "SF Mono", SFMono-Regular, Menlo, Consolas, monospace}:root[data-mode=terminal] body{font-size:13.5px}[data-mode=terminal] .thread.empty{display:block}.tgreet{padding:26px 2px;animation:fadeUp .3s ease both}.tline{margin:0 0 8px}.tprompt{color:var(--green)}.tgreet .chip-row{margin:16px 0}[data-mode=terminal] .avatar{display:none}[data-mode=terminal] .msg.user{justify-content:flex-start}[data-mode=terminal] .user-bubble{background:transparent;padding:0;border-radius:0;max-width:100%}[data-mode=terminal] .user-bubble:before{content:"kavleen@portfolio:~$ ";color:var(--green)}[data-mode=terminal] .prose.intro{font-size:13.5px}[data-mode=terminal] .chip{border-radius:4px;background:transparent}[data-mode=terminal] .chip:before{content:"$ ";color:var(--green)}[data-mode=terminal] .card{border-radius:4px}[data-mode=terminal] .tag{border-radius:2px;border:1px solid var(--border);background:transparent}[data-mode=terminal] .job-marker{border-radius:0;box-shadow:none}[data-mode=terminal] .contact-btn{border-radius:4px}[data-mode=terminal] .composer{background:transparent;box-shadow:none;border-radius:6px;padding:6px 12px}[data-mode=terminal] .composer:before{content:"$";color:var(--green);margin-right:10px}[data-mode=terminal] .composer input{caret-color:var(--green)}[data-mode=terminal] .send{display:none}@media (prefers-reduced-motion: reduce){*{animation:none!important;transition:none!important}}@media (max-width: 560px){.app{padding:0 14px}.skill-group{min-width:100%}.user-bubble{max-width:88%}}
