:root{--paper:#f5f7f8;--surface:#ffffff;--ink:#1a2530;--ink-soft:#46586a;--ink-faint:#6e8093;--line:#d5dde3;--accent:#2a6584;--accent-ink:#1d4a62;--accent-wash:#e4eef3;--good:#2f6b45;--good-wash:#e3efe7;--warn:#a05c10;--warn-wash:#f6ecdd;--sans:"Libre Franklin","Segoe UI",Arial,sans-serif;--mono:"IBM Plex Mono",ui-monospace,monospace}*{box-sizing:border-box}body,html{margin:0;padding:0}body{background:var(--paper);color:var(--ink);font-family:var(--sans);font-size:15px;line-height:1.55}a{color:var(--accent-ink)}button{font-family:var(--sans);cursor:pointer}input,select,textarea{font-family:var(--sans);font-size:15px}.topbar{display:flex;align-items:center;gap:1.5rem;padding:.8rem 1.5rem;background:var(--surface);border-bottom:1px solid var(--line)}.topbar .brand{font-weight:800;font-size:1.15rem;letter-spacing:-.01em;color:var(--ink);text-decoration:none}.topbar .brand span{color:var(--accent)}.topbar nav{display:flex;gap:1rem;margin-left:auto;align-items:center}.topbar nav a{text-decoration:none;color:var(--ink-soft);font-weight:500}.topbar nav a:hover{color:var(--accent-ink)}.page{max-width:72rem;margin:0 auto;padding:2rem 1.25rem 4rem}.page-narrow{max-width:34rem;margin:0 auto;padding:3rem 1.25rem}.hero{text-align:center;padding:3rem 1rem 1.5rem}.hero h1{font-size:clamp(1.9rem,4.5vw,2.8rem);font-weight:800;letter-spacing:-.02em;margin:0 0 .6rem;text-wrap:balance}.hero p.dek{color:var(--ink-soft);font-size:1.12rem;max-width:42rem;margin:0 auto .5rem}.dropzone{max-width:34rem;margin:1.5rem auto;padding:2.6rem 1.5rem;border:2px dashed var(--accent);border-radius:10px;background:var(--surface);text-align:center;transition:background .15s}.dropzone.drag{background:var(--accent-wash)}.dropzone .big{font-weight:700;font-size:1.1rem;margin-bottom:.3rem}.dropzone .hint{color:var(--ink-faint);font-size:.9rem}.btn{display:inline-block;background:var(--accent);color:#fff;border:none;border-radius:6px;padding:.55rem 1.1rem;font-weight:600;font-size:.95rem;text-decoration:none}.btn:hover{background:var(--accent-ink)}.btn:disabled{opacity:.5;cursor:default}.btn.secondary{background:var(--surface);color:var(--accent-ink);border:1px solid var(--line)}.btn.small{padding:.3rem .7rem;font-size:.85rem}.card{border:1px solid var(--line);border-radius:8px;padding:1rem 1.2rem}.card,.panel{background:var(--surface)}.panel{border:1px solid var(--line);border-radius:10px}.panel .panel-head{padding:.7rem 1.1rem;border-bottom:1px solid var(--line);font-weight:700;font-size:.95rem;display:flex;align-items:center;gap:.6rem}.tag{display:inline-block;font-size:.72rem;font-weight:600;letter-spacing:.06em;text-transform:uppercase;padding:.12rem .5rem;border-radius:3px;background:var(--accent-wash);color:var(--accent-ink)}.tag.good{background:var(--good-wash);color:var(--good)}.tag.warn{background:var(--warn-wash);color:var(--warn)}.field{display:flex;flex-direction:column;gap:.25rem;margin-bottom:.9rem}.field label{font-weight:600;font-size:.88rem}.field input,.field textarea{border:1px solid var(--line);border-radius:6px;padding:.5rem .7rem;background:var(--surface);color:var(--ink)}.chat-input input:focus,.field input:focus,.field textarea:focus{outline:2px solid var(--accent);outline-offset:1px}.error-box{background:var(--warn-wash);color:var(--warn)}.error-box,.ok-box{border-radius:6px;padding:.7rem 1rem;margin:.8rem 0}.ok-box{background:var(--good-wash);color:var(--good)}.chat{display:flex;flex-direction:column;height:100%;min-height:420px}.chat-log{flex:1 1;overflow-y:auto;padding:1rem 1.1rem;display:flex;flex-direction:column;gap:.8rem}.msg{max-width:88%;padding:.6rem .9rem;border-radius:10px;white-space:pre-wrap}.msg.user{align-self:flex-end;background:var(--accent);color:#fff;border-bottom-right-radius:3px}.msg.assistant{align-self:flex-start;background:var(--paper);border:1px solid var(--line);border-bottom-left-radius:3px}.msg.thinking{align-self:flex-start;color:var(--ink-faint);font-style:italic}.msg.md{white-space:normal}.msg.md>:first-child{margin-top:0}.msg.md>:last-child{margin-bottom:0}.msg.md p{margin:.4rem 0}.msg.md ol,.msg.md ul{margin:.4rem 0;padding-left:1.2rem}.msg.md li{margin-bottom:.2rem}.msg.md h1,.msg.md h2,.msg.md h3{font-size:.95rem;margin:.7rem 0 .3rem}.msg.md code{background:var(--accent-wash);padding:.05rem .3rem;border-radius:3px;font-size:.85em}.msg.md table{border-collapse:collapse;display:block;overflow-x:auto;font-size:.85rem;margin:.5rem 0}.msg.md td,.msg.md th{border:1px solid var(--line);padding:.3rem .55rem;text-align:left}.msg.md th{background:var(--accent-wash);font-size:.78rem}.msg.md hr{border:none;margin:.6rem 0}.chat-input,.msg.md hr{border-top:1px solid var(--line)}.chat-input{display:flex;gap:.6rem;padding:.8rem 1rem}.chat-input input{flex:1 1;border:1px solid var(--line);border-radius:8px;padding:.6rem .9rem;background:var(--surface);color:var(--ink)}.cards-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));grid-gap:.8rem;gap:.8rem;padding:0 1.1rem 1rem}.result-card{border:1px solid var(--line);border-radius:8px;padding:.8rem 1rem;background:var(--surface);font-size:.9rem}.result-card h4{margin:0 0 .3rem;font-size:.98rem}.result-card .meta{color:var(--ink-soft);font-size:.85rem;margin-bottom:.4rem}.result-card .skills{color:var(--ink-faint);font-size:.82rem;margin:.35rem 0}.result-card .row{display:flex;gap:.4rem;flex-wrap:wrap;margin:.35rem 0}.split{display:grid;grid-template-columns:1fr 1fr;grid-gap:1.2rem;gap:1.2rem;align-items:start}@media (max-width:900px){.split{grid-template-columns:1fr}}.todo-item{display:flex;align-items:flex-start;gap:.6rem;padding:.55rem .2rem;border-bottom:1px solid var(--line)}.todo-item:last-child{border-bottom:none}.todo-item input[type=checkbox]{margin-top:.25rem;accent-color:var(--accent)}.todo-item .t{font-weight:500}.todo-item.done .t{text-decoration:line-through;color:var(--ink-faint)}.todo-item .n{color:var(--ink-faint);font-size:.84rem}.todo-item .x{margin-left:auto;background:none;border:none;color:var(--ink-faint);font-size:1rem}table.data{border-collapse:collapse;width:100%;font-size:.9rem}table.data th{text-align:left;font-size:.76rem;text-transform:uppercase;letter-spacing:.05em;color:var(--ink-faint);padding:.5rem .7rem;border-bottom:2px solid var(--line)}table.data td{padding:.5rem .7rem;border-bottom:1px solid var(--line);vertical-align:top}.stat-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(130px,1fr));grid-gap:.8rem;gap:.8rem;margin-bottom:1.2rem}.stat{background:var(--surface);border:1px solid var(--line);border-radius:8px;padding:.7rem 1rem}.stat .v{font-size:1.5rem;font-weight:800;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.stat .l{color:var(--ink-faint);font-size:.8rem}.resume-md{background:var(--paper);border:1px solid var(--line);border-radius:6px;padding:1.2rem 1.4rem;max-height:560px;overflow-y:auto;font-size:.9rem;color:var(--ink-soft)}.resume-md h1{font-size:1.25rem;font-weight:800;letter-spacing:-.01em;color:var(--ink);margin:0 0 .2rem}.resume-md h1+p{margin-top:.2rem}.resume-md h2{font-size:.82rem;font-weight:700;text-transform:uppercase;letter-spacing:.07em;color:var(--accent-ink);border-bottom:1px solid var(--line);padding-bottom:.25rem;margin:1.4rem 0 .5rem}.resume-md h3{font-size:.95rem;font-weight:600;color:var(--ink);margin:.9rem 0 .2rem}.resume-md p{margin:.35rem 0}.resume-md ul{margin:.3rem 0 .8rem;padding-left:1.15rem}.resume-md li{margin-bottom:.25rem}.resume-md strong{color:var(--ink);font-weight:600}.resume-md hr{border:none;border-top:1px solid var(--line);margin:1rem 0}.resume-md a{color:var(--accent-ink)}.scan-stage{position:relative;width:320px;margin:2.2rem auto 0}.scan-doc{position:relative;background:var(--surface);border:1px solid var(--line);border-radius:10px;padding:1.4rem 1.3rem;box-shadow:0 12px 30px rgba(26,37,48,.1);overflow:hidden;animation:doc-breathe 3.4s ease-in-out infinite}.scan-line{height:9px;border-radius:4px;background:linear-gradient(90deg,var(--line) 0,#e8edf1 45%,var(--line) 90%);background-size:220% 100%;margin-bottom:.65rem;animation:skel-shimmer 2.4s linear infinite}.scan-line.head{height:14px;width:55%;margin-bottom:1rem}.scan-line.w80{width:80%}.scan-line.w95{width:95%}.scan-line.w70{width:70%}.scan-line.w60{width:60%}.scan-beam{position:absolute;left:0;right:0;top:0;height:46px;background:linear-gradient(180deg,rgba(42,101,132,0) 0,rgba(42,101,132,.16) 45%,rgba(42,101,132,.45) 50%,rgba(42,101,132,.16) 55%,rgba(42,101,132,0));animation:beam-sweep 2.6s ease-in-out infinite;pointer-events:none}.scan-chip{position:absolute;padding:.3rem .7rem;border-radius:999px;background:var(--accent-wash);color:var(--accent-ink);border:1px solid var(--accent);font-size:.78rem;font-weight:700;white-space:nowrap;opacity:0;animation:chip-pop 7.5s ease-in-out infinite;box-shadow:0 6px 16px rgba(42,101,132,.18)}.scan-chip.good{background:var(--good-wash);color:var(--good);border-color:var(--good)}.scan-chip.c1{top:8%;left:-26%;animation-delay:.4s}.scan-chip.c2{top:26%;right:-24%;animation-delay:1.7s}.scan-chip.c3{top:52%;left:-30%;animation-delay:3s}.scan-chip.c4{top:70%;right:-28%;animation-delay:4.3s}.scan-chip.c5{top:90%;left:-18%;animation-delay:5.6s}.scan-dots,.scan-dots span{display:inline-block}.scan-dots span{width:6px;height:6px;border-radius:50%;background:var(--accent);margin-left:4px;animation:dot-bounce 1.2s ease-in-out infinite}.scan-dots span:nth-child(2){animation-delay:.15s}.scan-dots span:nth-child(3){animation-delay:.3s}@keyframes beam-sweep{0%{transform:translateY(-46px)}55%{transform:translateY(300px)}to{transform:translateY(-46px)}}@keyframes skel-shimmer{0%{background-position:120% 0}to{background-position:-120% 0}}@keyframes chip-pop{0%,6%{opacity:0;transform:translateY(10px) scale(.85)}12%,32%{opacity:1;transform:translateY(0) scale(1)}40%,to{opacity:0;transform:translateY(-12px) scale(.9)}}@keyframes doc-breathe{0%,to{transform:translateY(0)}50%{transform:translateY(-5px)}}@keyframes dot-bounce{0%,60%,to{transform:translateY(0);opacity:.5}30%{transform:translateY(-5px);opacity:1}}@media (prefers-reduced-motion:reduce){.scan-beam,.scan-chip,.scan-doc,.scan-dots span,.scan-line{animation:none}.scan-chip{opacity:1}}.trust-strip{display:flex;gap:2rem;justify-content:center;flex-wrap:wrap;margin:2rem auto 0;max-width:52rem}.trust-strip .item{max-width:15rem;text-align:center}.trust-strip .item b{display:block;margin-bottom:.2rem}.trust-strip .item span{color:var(--ink-soft);font-size:.88rem}