:root{--page-bg: #eaeef2;--paper-bg: #ffffff;--sidebar-bg: #f5f7fa;--text-color: #222222;--text-muted: #555555;--heading-color: #1a1a1a;--accent-color: #1a4b8c;--border-color: #d8dde3;--link-color: #1a4b8c;--link-hover: #0d3160;--tag-bg: #e8edf3;--tag-text: #2c4a6e;--table-stripe: #f8f9fa;--paper-shadow: 0 2px 12px rgba(0, 0, 0, .08);--photo-border: #d0d7df}[data-theme=dark]{--page-bg: #111318;--paper-bg: #1e2128;--sidebar-bg: #181b21;--text-color: #d0d4da;--text-muted: #8a909a;--heading-color: #e4e8ed;--accent-color: #6ea8e6;--border-color: #2e333b;--link-color: #6ea8e6;--link-hover: #a0c8f0;--tag-bg: #262b34;--tag-text: #8bb8e8;--table-stripe: #22262e;--paper-shadow: 0 2px 12px rgba(0, 0, 0, .35);--photo-border: #3a4048}*,*:before,*:after{margin:0;padding:0;box-sizing:border-box}html{scroll-behavior:smooth}body{font-family:"Source Sans 3",Segoe UI,Helvetica Neue,Arial,sans-serif;font-size:15px;line-height:1.6;color:var(--text-color);background-color:var(--page-bg);transition:background-color .3s ease,color .3s ease;-webkit-font-smoothing:antialiased}a{color:var(--link-color);text-decoration:none;transition:color .2s}a:hover{color:var(--link-hover);text-decoration:underline}.page{width:100%;max-width:900px;min-height:1250px;margin:40px auto;background-color:var(--paper-bg);box-shadow:var(--paper-shadow);border-radius:3px;display:grid;grid-template-columns:280px 1fr;overflow:hidden;transition:background-color .3s ease,box-shadow .3s ease}.sidebar{background-color:var(--sidebar-bg);border-right:1px solid var(--border-color);padding:40px 28px;display:flex;flex-direction:column;gap:28px;transition:background-color .3s ease}.photo-wrapper{text-align:center}.photo{width:160px;height:160px;border-radius:50%;object-fit:cover;border:3px solid var(--photo-border);background-color:var(--border-color);transition:border-color .3s}.sidebar-name{text-align:center}.sidebar-name h1{font-family:Merriweather,Georgia,serif;font-size:20px;font-weight:700;color:var(--heading-color);line-height:1.35;margin-bottom:4px}.sidebar-name .position{font-size:14px;color:var(--accent-color);font-weight:600}.sidebar-section h3{font-family:Merriweather,Georgia,serif;font-size:13px;font-weight:700;color:var(--heading-color);text-transform:uppercase;letter-spacing:1.2px;border-bottom:1px solid var(--border-color);padding-bottom:5px;margin-bottom:12px}.contact-list{list-style:none}.contact-list li{font-size:13.5px;padding:4px 0;color:var(--text-color);word-break:break-word}.contact-list a{font-size:13.5px}.tags{display:flex;flex-wrap:wrap;gap:6px}.tag{background-color:var(--tag-bg);color:var(--tag-text);padding:3px 10px;border-radius:3px;font-size:12.5px;font-weight:600;letter-spacing:.3px;transition:background-color .3s,color .3s}.plain-list{list-style:none}.plain-list li{font-size:13.5px;padding:3px 0;color:var(--text-color)}.content{padding:40px 44px}.resume-section{margin-bottom:30px}.resume-section:last-child{margin-bottom:0}.resume-section h2{font-family:Merriweather,Georgia,serif;font-size:16px;font-weight:700;color:var(--heading-color);text-transform:uppercase;letter-spacing:1.5px;border-bottom:1px solid var(--border-color);padding-bottom:6px;margin-bottom:16px}.resume-section>p{font-size:15px;color:var(--text-color)}.entry{margin-bottom:18px}.entry:last-child{margin-bottom:0}.entry-header{display:flex;justify-content:space-between;align-items:baseline;flex-wrap:wrap;gap:4px;margin-bottom:6px}.entry-header strong{color:var(--heading-color)}.entry-date{font-size:13.5px;color:var(--text-muted);white-space:nowrap}.project-tech{color:var(--text-muted);font-size:14px}.project-link{font-size:13px}.entry ul{margin-top:4px;padding-left:20px}.entry li{margin-bottom:4px;font-size:14.5px;color:var(--text-color)}.entry li::marker{color:var(--accent-color)}.entry>p{font-size:14.5px;color:var(--text-muted)}.timeline{border-left:2px solid var(--accent-color);padding-left:20px;position:relative;margin-left:6px;margin-top:10px}.timeline .entry{position:relative;margin-bottom:20px}.timeline .entry:last-child{margin-bottom:0}.timeline .entry:before{content:"";position:absolute;left:-26.8px;top:4px;width:12px;height:12px;border-radius:50%;background-color:var(--paper-bg);border:2px solid var(--accent-color)}.timeline .entry-date{font-weight:700;color:var(--accent-color);margin-bottom:2px;font-size:13.5px;display:block}.timeline .entry-header{flex-direction:column;align-items:flex-start;gap:2px;margin-bottom:4px}.timeline .entry ul{padding-left:18px;margin-top:2px}.timeline .entry li{margin-bottom:2px;font-size:13.5px;line-height:1.4;color:var(--text-color)}.floating-controls{position:fixed;top:16px;right:16px;z-index:100;display:flex;flex-direction:column;gap:8px}.control-btn{background:var(--paper-bg);border:1px solid var(--border-color);border-radius:50%;width:38px;height:38px;cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:16px;box-shadow:0 1px 4px #0000001a;transition:background-color .3s,border-color .3s;color:var(--text-muted)}.control-btn:hover{border-color:var(--accent-color)}.lang-btn{font-size:11px;font-weight:700;letter-spacing:.5px;font-family:"Source Sans 3",sans-serif}[data-theme=dark] .icon-moon,[data-theme=light] .icon-sun{display:none}@media(max-width:768px){.page{grid-template-columns:1fr;margin:0;border-radius:0;box-shadow:none}.sidebar{border-right:none;border-bottom:1px solid var(--border-color);padding:28px 24px;align-items:center;text-align:center}.contact-list{text-align:left}.tags{justify-content:center}.content{padding:28px 24px}.entry-header{flex-direction:column}.floating-controls{top:8px;right:8px}}@media print{:root{--bg-color: #f5f7fa;--card-bg: #ffffff;--text-main: #2d3748;--text-muted: #718096;--border-color: #e2e8f0;--accent-color: #3182ce;--sidebar-bg: #f8fafc}@page{margin:0;size:A4 portrait}html,body{width:100%;margin:0;padding:0;background:#fff;-webkit-print-color-adjust:exact!important;print-color-adjust:exact!important}body{font-size:13px}.page{margin:0;box-shadow:none;max-width:100%;border-radius:0;display:grid;grid-template-columns:260px 1fr;min-height:100vh}.sidebar{background-color:var(--sidebar-bg)!important;border-right:1px solid var(--border-color);padding:30px 20px}.content{padding:30px}.floating-controls{display:none!important}a,a:visited{color:var(--text-main);text-decoration:none}}
