:root{--paper: #f6f5f2;--desk: #e9e7e2;--ink: #16181c;--muted: #5c5f66;--faint: #8a8d94;--accent: #2d4a63;--line: #ddd9d2;--panel: #ffffff;--danger: #a33d2e;--serif: Georgia, "Times New Roman", serif;--sans: "Helvetica Neue", Helvetica, Arial, sans-serif}*{box-sizing:border-box}html,body{margin:0;padding:0}body{font-family:var(--sans);font-size:13px;line-height:1.5;color:var(--ink);background:var(--paper)}#root{height:100vh}.app{height:100%;display:flex;flex-direction:column}.topbar{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:10px 24px;padding:14px 24px 10px}.brand{display:flex;align-items:baseline;gap:10px}.brand-name{font-family:var(--serif);font-size:24px;letter-spacing:.01em}.brand-sub{font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.22em;color:var(--accent)}.top-rule{margin:0 24px;height:0;border-top:2px solid var(--accent);border-bottom:1px solid var(--line);padding-top:3px}.toolbar{display:flex;align-items:center;flex-wrap:wrap;gap:8px}.saved-hint{font-size:11px;color:var(--faint);margin-right:4px}.btn{font-family:var(--sans);font-size:12.5px;padding:7px 12px;border:1px solid var(--line);border-radius:5px;background:var(--panel);color:var(--ink);cursor:pointer}.btn:hover{border-color:var(--faint)}.btn--primary{background:var(--accent);border-color:var(--accent);color:#fff;font-weight:600}.btn--primary:hover{border-color:var(--accent);filter:brightness(1.12)}.btn--ghost{background:transparent;border-color:transparent;color:var(--muted)}.btn--ghost:hover{border-color:var(--line)}.notice{display:flex;justify-content:space-between;align-items:center;gap:12px;margin:10px 24px 0;padding:8px 12px;border-radius:5px;font-size:12.5px}.notice--error{background:#f7e9e6;border:1px solid #e0bcb4;color:var(--danger)}.notice--info{background:#e9eef3;border:1px solid #c6d2dd;color:var(--accent)}.workbench{flex:1;min-height:0;display:grid;grid-template-columns:minmax(380px,500px) 1fr}.editor-pane{overflow-y:auto;padding:18px 20px 60px 24px;border-right:1px solid var(--line)}.preview-wrap{overflow-y:auto;background:var(--desk)}.pane-block{margin-bottom:26px}.pane-label,.editor-section summary .section-label{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.18em;color:var(--ink)}.pane-label{margin:0 0 12px}.pane-label:after,.editor-section summary .section-label:after{content:"";display:inline-block;vertical-align:2px;width:18px;height:2px;background:var(--accent);margin-left:10px}.editor-section{border-top:1px solid var(--line);padding:10px 0 4px}.editor-section:last-child{border-bottom:1px solid var(--line)}.editor-section summary{display:flex;align-items:center;gap:8px;cursor:pointer;list-style:none;padding:4px 0}.editor-section summary::-webkit-details-marker{display:none}.editor-section summary:before{content:"▸";font-size:10px;color:var(--faint);transition:transform .15s ease}.editor-section[open] summary:before{transform:rotate(90deg)}.section-count{font-size:10.5px;color:var(--faint);border:1px solid var(--line);border-radius:999px;padding:0 7px;line-height:16px}.section-body{padding:8px 0 12px 18px}.section-hint{margin:0 0 10px;font-size:11.5px;color:var(--muted)}.empty-hint{margin:0 0 10px;font-size:12px;color:var(--faint);font-style:italic}.field{margin-bottom:10px}.field--grow{flex:1 1 120px;min-width:0}.field label{display:block;font-size:11px;color:var(--muted);margin-bottom:3px}.field input[type=text],.field input[type=number],.field textarea{width:100%;font-family:var(--sans);font-size:13px;color:var(--ink);background:var(--panel);border:1px solid var(--line);border-radius:4px;padding:6px 8px}.field textarea{resize:vertical;line-height:1.45}.field input:focus-visible,.field textarea:focus-visible,.skill-add input:focus-visible{outline:2px solid var(--accent);outline-offset:0;border-color:var(--accent)}button:focus-visible,select:focus-visible,input[type=color]:focus-visible,input[type=checkbox]:focus-visible,summary:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.field-row{display:flex;gap:10px;flex-wrap:wrap}.field-row>.field{flex:0 1 auto}.field-row>.field input[type=number]{width:76px}.field-row--grow{flex:1}.field-error{margin:4px 0 8px;font-size:11.5px;color:var(--danger)}.item-card{background:var(--panel);border:1px solid var(--line);border-radius:6px;padding:10px 12px;margin-bottom:10px}.item-card--row{display:flex;align-items:flex-end;gap:10px}.item-card--row .item-actions{margin-bottom:10px}.item-head{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-bottom:8px}.item-title{font-weight:600;font-size:12.5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.item-actions{display:flex;gap:4px;flex-shrink:0}.icon-btn{font-size:12px;line-height:1;padding:4px 6px;border:1px solid transparent;border-radius:4px;background:transparent;color:var(--muted);cursor:pointer}.icon-btn:hover:not(:disabled){border-color:var(--line);background:var(--paper)}.icon-btn:disabled{color:var(--line);cursor:default}.icon-btn--danger:hover:not(:disabled){color:var(--danger)}.add-btn{font-family:var(--sans);font-size:12px;padding:6px 10px;border:1px dashed var(--faint);border-radius:5px;background:transparent;color:var(--muted);cursor:pointer}.add-btn:hover{border-color:var(--accent);color:var(--accent)}.skill-list{list-style:none;margin:0 0 10px;padding:0;display:flex;flex-direction:column;gap:6px}.skill-chip{display:flex;align-items:center;gap:8px;background:var(--panel);border:1px solid var(--line);border-radius:6px;padding:4px 8px}.skill-chip.is-featured{border-color:var(--accent)}.skill-chip-name{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.star-btn{font-size:14px;line-height:1;border:none;background:transparent;color:var(--faint);cursor:pointer;padding:2px}.skill-chip.is-featured .star-btn{color:var(--accent)}.level-select{font-family:var(--sans);font-size:11.5px;color:var(--muted);border:1px solid var(--line);border-radius:4px;background:var(--panel);padding:3px 4px}.skill-add{display:flex;gap:8px}.skill-add input{flex:1;font-family:var(--sans);font-size:13px;border:1px solid var(--line);border-radius:4px;padding:6px 8px;background:var(--panel)}.template-picker{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-bottom:14px}.template-card{font-family:var(--sans);display:flex;flex-direction:column;align-items:center;gap:4px;padding:10px 8px 8px;background:var(--panel);border:1px solid var(--line);border-radius:6px;cursor:pointer}.template-card:hover{border-color:var(--faint)}.template-card.is-active{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent)}.thumb{display:block;width:123px;height:174px;overflow:hidden;border:1px solid var(--line);background:#fff;pointer-events:none}.thumb-scale{display:block;transform:scale(.155);transform-origin:top left;width:210mm}.template-name{font-size:12px;font-weight:600}.template-card.is-active .template-name{color:var(--accent)}.template-desc{font-size:10.5px;color:var(--faint);text-align:center;line-height:1.3}.config-panel .field-row{align-items:flex-end}.accent-input{display:flex;gap:6px;align-items:center}.accent-input input[type=color]{width:30px;height:30px;padding:2px;border:1px solid var(--line);border-radius:4px;background:var(--panel);cursor:pointer}.accent-hex{width:84px;font-family:var(--sans);font-size:12.5px;border:1px solid var(--line);border-radius:4px;padding:6px 8px;background:var(--panel)}.sections-fieldset{border:1px solid var(--line);border-radius:6px;padding:8px 12px 10px;margin:4px 0 0}.sections-fieldset legend{font-size:11px;color:var(--muted);padding:0 4px}.sections-grid{display:flex;flex-wrap:wrap;gap:4px 14px}.check-label{display:flex;align-items:center;gap:5px;font-size:12px;color:var(--ink);cursor:pointer}.preview-pane{padding:18px 28px 60px}.preview-meta{display:flex;justify-content:space-between;align-items:baseline;gap:12px;margin-bottom:12px;font-size:11px;text-transform:uppercase;letter-spacing:.14em;color:var(--faint)}.preview-fit{max-width:210mm;margin:0 auto}.preview-scaled{overflow:hidden}.preview-page{position:relative;width:210mm;box-shadow:0 2px 5px #16181c1a,0 12px 34px #16181c21}.page-guides{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none}.page-guide{position:absolute;left:0;right:0;border-top:1px dashed rgba(163,61,46,.55)}.page-guide span{position:absolute;right:6px;top:2px;font-size:10px;color:#a33d2ecc;background:#ffffffd9;padding:0 4px;border-radius:3px}.visually-hidden{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}@media (max-width: 1040px){#root,.app{height:auto}.workbench{grid-template-columns:1fr}.editor-pane{overflow-y:visible;border-right:none;border-bottom:1px solid var(--line)}.preview-wrap{overflow-y:visible}}@media (prefers-reduced-motion: reduce){.editor-section summary:before{transition:none}}.cv--classic{--ink: #16181c;--muted: #55585e;--faint: #85888f;--hairline: #d8d5cf;--serif: Georgia, "Times New Roman", serif;--sans: "Helvetica Neue", Helvetica, Arial, sans-serif}.cv--classic,.cv--classic *{margin:0;padding:0;box-sizing:border-box}.cv--classic{background:#fff;font-family:var(--sans);font-size:9.3pt;line-height:1.45;color:var(--ink);width:210mm;min-height:297mm;padding:14mm 17mm;-webkit-print-color-adjust:exact;print-color-adjust:exact;font-variant-numeric:tabular-nums}.cv--classic header{text-align:center}.cv--classic .name{font-family:var(--serif);font-size:26pt;font-weight:400;letter-spacing:.01em;line-height:1.12}.cv--classic .headline{margin-top:2.2mm;font-size:8.6pt;font-weight:500;text-transform:uppercase;letter-spacing:.22em;color:var(--accent)}.cv--classic .contact{margin-top:2.6mm;font-size:8.2pt;color:var(--muted)}.cv--classic .contact a{color:var(--muted);text-decoration:none}.cv--classic .contact>span:not(:first-child):before{content:"·";margin:0 2.4mm;color:var(--faint)}.cv--classic .masthead-rule{margin:5mm 0 7mm;height:0;border-top:1.6px solid var(--accent);border-bottom:.5px solid var(--hairline);padding-top:1.1mm}.cv--classic .columns{display:grid;grid-template-columns:1fr 52mm;column-gap:10mm}.cv--classic section{margin-bottom:6mm}.cv--classic h2{font-size:7.6pt;font-weight:700;text-transform:uppercase;letter-spacing:.2em;color:var(--ink);margin-bottom:3mm}.cv--classic h2:after{content:"";display:inline-block;vertical-align:.5mm;width:7mm;height:1.5px;background:var(--accent);margin-left:2.6mm}.cv--classic .summary{font-family:var(--serif);font-size:9.5pt;line-height:1.52;color:var(--ink)}.cv--classic .xp{margin-bottom:4.6mm;break-inside:avoid}.cv--classic .xp:last-child{margin-bottom:0}.cv--classic .xp-condensed{margin-bottom:1.8mm}.cv--classic .xp-head{display:flex;justify-content:space-between;align-items:baseline;gap:5mm}.cv--classic .xp-title{font-weight:700;font-size:9.7pt}.cv--classic .xp-company{font-weight:400;color:var(--muted)}.cv--classic .xp-condensed .xp-title{font-weight:400;font-size:9.3pt}.cv--classic .xp-dates{font-size:8.1pt;color:var(--faint);white-space:nowrap}.cv--classic .xp-location{font-size:8.1pt;color:var(--faint);margin-top:.4mm}.cv--classic .xp-desc{margin-top:1.2mm}.cv--classic .xp ul{margin-top:1.2mm;padding-left:4mm;list-style:none}.cv--classic .xp li{position:relative;margin-bottom:.7mm}.cv--classic .xp li:before{content:"–";position:absolute;left:-4mm;color:var(--accent)}.cv--classic .edu{margin-bottom:2.8mm;break-inside:avoid}.cv--classic .edu-degree{font-weight:700}.cv--classic .edu-school{color:var(--muted)}.cv--classic .edu-dates{font-size:8.1pt;color:var(--faint)}.cv--classic aside{font-size:8.7pt}.cv--classic .skills{list-style:none}.cv--classic .skills li{padding:1.1mm 0;border-bottom:.5px solid var(--hairline)}.cv--classic .skills li:last-child{border-bottom:none}.cv--classic .side-item{margin-bottom:2.6mm;break-inside:avoid}.cv--classic .side-item .primary{font-weight:600}.cv--classic .side-item .secondary{font-size:8.1pt;color:var(--muted)}.cv--classic .lang{display:flex;justify-content:space-between;gap:3mm;padding:1.1mm 0;border-bottom:.5px solid var(--hairline)}.cv--classic .lang:last-child{border-bottom:none}.cv--classic .lang .secondary{font-size:8.1pt;color:var(--muted);text-align:right}.cv--classic .side-link{color:var(--muted);text-decoration:none;font-size:8.1pt}.cv--sidebar{--ink: #16181c;--muted: #55585e;--faint: #85888f;--hairline: #dcdcdc;--panel-w: 66mm;--panel: color-mix(in srgb, var(--accent) 82%, #0b0f14);--panel-ink: rgba(255, 255, 255, .93);--panel-muted: rgba(255, 255, 255, .62);--panel-hairline: rgba(255, 255, 255, .22);--sans: "Helvetica Neue", Helvetica, Arial, sans-serif}.cv--sidebar,.cv--sidebar *{margin:0;padding:0;box-sizing:border-box}.cv--sidebar{font-family:var(--sans);font-size:9.3pt;line-height:1.45;color:var(--ink);width:210mm;min-height:297mm;display:grid;grid-template-columns:var(--panel-w) 1fr;background:linear-gradient(to right,var(--panel) var(--panel-w),#fff var(--panel-w));-webkit-print-color-adjust:exact;print-color-adjust:exact;font-variant-numeric:tabular-nums}.cv--sidebar aside{color:var(--panel-ink);padding:16mm 8mm 12mm 11mm;font-size:8.4pt}.cv--sidebar .side-section{margin-bottom:7mm}.cv--sidebar aside h2{font-size:7.3pt;font-weight:700;text-transform:uppercase;letter-spacing:.2em;color:var(--panel-muted);border-bottom:.5px solid var(--panel-hairline);padding-bottom:1.4mm;margin-bottom:3mm}.cv--sidebar .side-contact{line-height:1.6}.cv--sidebar .contact-line{color:var(--panel-ink)}.cv--sidebar .contact-line a{color:var(--panel-ink);text-decoration:none}.cv--sidebar .skill{margin-bottom:2.6mm;break-inside:avoid}.cv--sidebar .skill-name{margin-bottom:1mm}.cv--sidebar .bar{height:1.5mm;border-radius:1mm;background:#ffffff29;overflow:hidden}.cv--sidebar .bar-fill{height:100%;border-radius:1mm;background:#ffffffeb}.cv--sidebar .tags{margin-top:3mm;display:flex;flex-wrap:wrap;gap:1.6mm}.cv--sidebar .tag{border:.5px solid rgba(255,255,255,.4);border-radius:2mm;padding:.7mm 2.2mm;font-size:7.6pt;color:var(--panel-ink);break-inside:avoid}.cv--sidebar .lang{display:flex;justify-content:space-between;align-items:baseline;gap:3mm;padding:1.1mm 0;border-bottom:.5px solid var(--panel-hairline)}.cv--sidebar .lang:last-child{border-bottom:none}.cv--sidebar .lang-level{font-size:7.6pt;color:var(--panel-muted);text-align:right}.cv--sidebar .side-item{margin-bottom:2.8mm;break-inside:avoid}.cv--sidebar .side-item .primary{font-weight:600}.cv--sidebar .side-item .secondary{font-size:7.7pt;color:var(--panel-muted)}.cv--sidebar main{padding:14mm 14mm 12mm 10mm}.cv--sidebar header{margin-bottom:7mm}.cv--sidebar .name{font-size:24pt;font-weight:700;letter-spacing:-.015em;line-height:1.06}.cv--sidebar .headline{margin-top:2.4mm;font-size:10.2pt;font-weight:500;color:var(--accent)}.cv--sidebar main section{margin-bottom:6mm}.cv--sidebar main h2{font-size:7.6pt;font-weight:700;text-transform:uppercase;letter-spacing:.2em;color:var(--ink);margin-bottom:3mm}.cv--sidebar main h2:after{content:"";display:inline-block;vertical-align:.5mm;width:7mm;height:1.5px;background:var(--accent);margin-left:2.6mm}.cv--sidebar .summary{color:var(--ink)}.cv--sidebar .xp{margin-bottom:4.6mm;break-inside:avoid}.cv--sidebar .xp:last-child{margin-bottom:0}.cv--sidebar .xp-condensed{margin-bottom:1.8mm}.cv--sidebar .xp-head{display:flex;justify-content:space-between;align-items:baseline;gap:5mm}.cv--sidebar .xp-title{font-weight:700;font-size:9.7pt}.cv--sidebar .xp-company{font-weight:400;color:var(--muted)}.cv--sidebar .xp-condensed .xp-title{font-weight:400;font-size:9.3pt}.cv--sidebar .xp-dates{font-size:8.1pt;color:var(--faint);white-space:nowrap}.cv--sidebar .xp-location{font-size:8.1pt;color:var(--faint);margin-top:.4mm}.cv--sidebar .xp-desc{margin-top:1.2mm}.cv--sidebar .xp ul{margin-top:1.2mm;padding-left:4mm;list-style:none}.cv--sidebar .xp li{position:relative;margin-bottom:.7mm}.cv--sidebar .xp li:before{content:"–";position:absolute;left:-4mm;color:var(--accent)}.cv--sidebar .edu{margin-bottom:2.8mm;break-inside:avoid}.cv--sidebar .edu-degree{font-weight:700}.cv--sidebar .edu-school{color:var(--muted)}.cv--sidebar .edu-dates{font-size:8.1pt;color:var(--faint)}.cv--sidebar .proj{margin-bottom:3mm;break-inside:avoid}.cv--sidebar .proj-title{font-weight:700}.cv--sidebar .proj-desc{font-size:8.7pt;color:var(--ink)}.cv--sidebar .proj-link{color:var(--muted);text-decoration:none;font-size:8.1pt}.cv--compact{--ink: #16181c;--muted: #55585e;--faint: #85888f;--hairline: #dcdcdc;--sans: "Helvetica Neue", Helvetica, Arial, sans-serif}.cv--compact,.cv--compact *{margin:0;padding:0;box-sizing:border-box}.cv--compact{background:#fff;font-family:var(--sans);font-size:8.4pt;line-height:1.38;color:var(--ink);width:210mm;min-height:297mm;padding:11mm 13mm;-webkit-print-color-adjust:exact;print-color-adjust:exact;font-variant-numeric:tabular-nums}.cv--compact header{display:flex;justify-content:space-between;align-items:baseline;gap:8mm;padding-bottom:2.6mm;border-bottom:1.5px solid var(--accent);margin-bottom:4.5mm}.cv--compact .id{flex:1 1 auto;min-width:0}.cv--compact .name{display:block;font-size:15pt;font-weight:700;letter-spacing:-.01em}.cv--compact .headline{display:block;margin-top:.8mm;font-size:8.8pt;color:var(--accent);font-weight:500}.cv--compact .contact{flex:0 0 auto;max-width:62mm;font-size:7.6pt;color:var(--muted);text-align:right}.cv--compact .contact a{color:var(--muted);text-decoration:none}.cv--compact .contact>span:not(:first-child):before{content:"·";margin:0 1.6mm;color:var(--faint)}.cv--compact section{margin-bottom:3.8mm}.cv--compact h2{font-size:7pt;font-weight:700;text-transform:uppercase;letter-spacing:.18em;color:var(--accent);margin-bottom:1.8mm}.cv--compact .summary{max-width:165mm}.cv--compact .skills{line-height:1.6}.cv--compact .skill{white-space:nowrap}.cv--compact .skill:not(:last-child):after{content:"·";white-space:normal;margin:0 1.8mm;color:var(--faint)}.cv--compact .xp{display:grid;grid-template-columns:24mm 1fr;column-gap:4mm;margin-bottom:2.8mm;break-inside:avoid}.cv--compact .xp:last-child{margin-bottom:0}.cv--compact .xp-condensed{margin-bottom:1.2mm}.cv--compact .xp-dates{font-size:7.4pt;color:var(--faint);padding-top:.3mm;text-align:right;border-right:.5px solid var(--hairline);padding-right:3mm}.cv--compact .xp-title{font-weight:700;font-size:8.8pt}.cv--compact .xp-company{font-weight:400;color:var(--muted)}.cv--compact .xp-location{font-weight:400;font-size:7.4pt;color:var(--faint)}.cv--compact .xp-condensed .xp-title{font-weight:400;font-size:8.4pt}.cv--compact .xp-desc{margin-top:.6mm}.cv--compact .xp ul{margin-top:.6mm;padding-left:3.4mm;list-style:none}.cv--compact .xp li{position:relative;margin-bottom:.4mm}.cv--compact .xp li:before{content:"–";position:absolute;left:-3.4mm;color:var(--accent)}.cv--compact .proj{margin-bottom:1.2mm;break-inside:avoid}.cv--compact .proj-title{font-weight:700}.cv--compact .proj-desc{color:var(--ink)}.cv--compact .proj-link{color:var(--muted)}.cv--compact .footer-grid{display:grid;grid-template-columns:1fr 1fr 1fr;column-gap:7mm;border-top:.5px solid var(--hairline);padding-top:3.2mm;break-inside:avoid}.cv--compact .footer-grid section{margin-bottom:0}.cv--compact .edu,.cv--compact .cert{margin-bottom:1.8mm;break-inside:avoid}.cv--compact .edu-degree,.cv--compact .cert-name{font-weight:600}.cv--compact .edu-meta,.cv--compact .cert-meta{font-size:7.4pt;color:var(--muted)}.cv--compact .lang{display:flex;justify-content:space-between;align-items:baseline;gap:2mm;margin-bottom:.8mm}.cv--compact .lang-level{font-size:7.4pt;color:var(--muted);text-align:right}@page{size:A4;margin:0}@media screen{#print-root{display:none}}@media print{html,body{margin:0;padding:0;background:#fff!important}#root{display:none!important}#print-root{display:block!important}}
