/*!
 * Quill Editor v1.3.7
 * https://quilljs.com/
 * Copyright (c) 2014, Jason Chen
 * Copyright (c) 2013, salesforce.com
 */.ql-container{box-sizing:border-box;font-family:Helvetica,Arial,sans-serif;font-size:13px;height:100%;margin:0;position:relative}.ql-container.ql-disabled .ql-tooltip{visibility:hidden}.ql-container.ql-disabled .ql-editor ul[data-checked]>li:before{pointer-events:none}.ql-clipboard{left:-100000px;height:1px;overflow-y:hidden;position:absolute;top:50%}.ql-clipboard p{margin:0;padding:0}.ql-editor{box-sizing:border-box;line-height:1.42;height:100%;outline:none;overflow-y:auto;padding:12px 15px;tab-size:4;-moz-tab-size:4;text-align:left;white-space:pre-wrap;word-wrap:break-word}.ql-editor>*{cursor:text}.ql-editor p,.ql-editor ol,.ql-editor ul,.ql-editor pre,.ql-editor blockquote,.ql-editor h1,.ql-editor h2,.ql-editor h3,.ql-editor h4,.ql-editor h5,.ql-editor h6{margin:0;padding:0;counter-reset:list-1 list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9}.ql-editor ol,.ql-editor ul{padding-left:1.5em}.ql-editor ol>li,.ql-editor ul>li{list-style-type:none}.ql-editor ul>li:before{content:"•"}.ql-editor ul[data-checked=true],.ql-editor ul[data-checked=false]{pointer-events:none}.ql-editor ul[data-checked=true]>li *,.ql-editor ul[data-checked=false]>li *{pointer-events:all}.ql-editor ul[data-checked=true]>li:before,.ql-editor ul[data-checked=false]>li:before{color:#777;cursor:pointer;pointer-events:all}.ql-editor ul[data-checked=true]>li:before{content:"☑"}.ql-editor ul[data-checked=false]>li:before{content:"☐"}.ql-editor li:before{display:inline-block;white-space:nowrap;width:1.2em}.ql-editor li:not(.ql-direction-rtl):before{margin-left:-1.5em;margin-right:.3em;text-align:right}.ql-editor li.ql-direction-rtl:before{margin-left:.3em;margin-right:-1.5em}.ql-editor ol li:not(.ql-direction-rtl),.ql-editor ul li:not(.ql-direction-rtl){padding-left:1.5em}.ql-editor ol li.ql-direction-rtl,.ql-editor ul li.ql-direction-rtl{padding-right:1.5em}.ql-editor ol li{counter-reset:list-1 list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9;counter-increment:list-0}.ql-editor ol li:before{content:counter(list-0,decimal) ". "}.ql-editor ol li.ql-indent-1{counter-increment:list-1}.ql-editor ol li.ql-indent-1:before{content:counter(list-1,lower-alpha) ". "}.ql-editor ol li.ql-indent-1{counter-reset:list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9}.ql-editor ol li.ql-indent-2{counter-increment:list-2}.ql-editor ol li.ql-indent-2:before{content:counter(list-2,lower-roman) ". "}.ql-editor ol li.ql-indent-2{counter-reset:list-3 list-4 list-5 list-6 list-7 list-8 list-9}.ql-editor ol li.ql-indent-3{counter-increment:list-3}.ql-editor ol li.ql-indent-3:before{content:counter(list-3,decimal) ". "}.ql-editor ol li.ql-indent-3{counter-reset:list-4 list-5 list-6 list-7 list-8 list-9}.ql-editor ol li.ql-indent-4{counter-increment:list-4}.ql-editor ol li.ql-indent-4:before{content:counter(list-4,lower-alpha) ". "}.ql-editor ol li.ql-indent-4{counter-reset:list-5 list-6 list-7 list-8 list-9}.ql-editor ol li.ql-indent-5{counter-increment:list-5}.ql-editor ol li.ql-indent-5:before{content:counter(list-5,lower-roman) ". "}.ql-editor ol li.ql-indent-5{counter-reset:list-6 list-7 list-8 list-9}.ql-editor ol li.ql-indent-6{counter-increment:list-6}.ql-editor ol li.ql-indent-6:before{content:counter(list-6,decimal) ". "}.ql-editor ol li.ql-indent-6{counter-reset:list-7 list-8 list-9}.ql-editor ol li.ql-indent-7{counter-increment:list-7}.ql-editor ol li.ql-indent-7:before{content:counter(list-7,lower-alpha) ". "}.ql-editor ol li.ql-indent-7{counter-reset:list-8 list-9}.ql-editor ol li.ql-indent-8{counter-increment:list-8}.ql-editor ol li.ql-indent-8:before{content:counter(list-8,lower-roman) ". "}.ql-editor ol li.ql-indent-8{counter-reset:list-9}.ql-editor ol li.ql-indent-9{counter-increment:list-9}.ql-editor ol li.ql-indent-9:before{content:counter(list-9,decimal) ". "}.ql-editor .ql-indent-1:not(.ql-direction-rtl){padding-left:3em}.ql-editor li.ql-indent-1:not(.ql-direction-rtl){padding-left:4.5em}.ql-editor .ql-indent-1.ql-direction-rtl.ql-align-right{padding-right:3em}.ql-editor li.ql-indent-1.ql-direction-rtl.ql-align-right{padding-right:4.5em}.ql-editor .ql-indent-2:not(.ql-direction-rtl){padding-left:6em}.ql-editor li.ql-indent-2:not(.ql-direction-rtl){padding-left:7.5em}.ql-editor .ql-indent-2.ql-direction-rtl.ql-align-right{padding-right:6em}.ql-editor li.ql-indent-2.ql-direction-rtl.ql-align-right{padding-right:7.5em}.ql-editor .ql-indent-3:not(.ql-direction-rtl){padding-left:9em}.ql-editor li.ql-indent-3:not(.ql-direction-rtl){padding-left:10.5em}.ql-editor .ql-indent-3.ql-direction-rtl.ql-align-right{padding-right:9em}.ql-editor li.ql-indent-3.ql-direction-rtl.ql-align-right{padding-right:10.5em}.ql-editor .ql-indent-4:not(.ql-direction-rtl){padding-left:12em}.ql-editor li.ql-indent-4:not(.ql-direction-rtl){padding-left:13.5em}.ql-editor .ql-indent-4.ql-direction-rtl.ql-align-right{padding-right:12em}.ql-editor li.ql-indent-4.ql-direction-rtl.ql-align-right{padding-right:13.5em}.ql-editor .ql-indent-5:not(.ql-direction-rtl){padding-left:15em}.ql-editor li.ql-indent-5:not(.ql-direction-rtl){padding-left:16.5em}.ql-editor .ql-indent-5.ql-direction-rtl.ql-align-right{padding-right:15em}.ql-editor li.ql-indent-5.ql-direction-rtl.ql-align-right{padding-right:16.5em}.ql-editor .ql-indent-6:not(.ql-direction-rtl){padding-left:18em}.ql-editor li.ql-indent-6:not(.ql-direction-rtl){padding-left:19.5em}.ql-editor .ql-indent-6.ql-direction-rtl.ql-align-right{padding-right:18em}.ql-editor li.ql-indent-6.ql-direction-rtl.ql-align-right{padding-right:19.5em}.ql-editor .ql-indent-7:not(.ql-direction-rtl){padding-left:21em}.ql-editor li.ql-indent-7:not(.ql-direction-rtl){padding-left:22.5em}.ql-editor .ql-indent-7.ql-direction-rtl.ql-align-right{padding-right:21em}.ql-editor li.ql-indent-7.ql-direction-rtl.ql-align-right{padding-right:22.5em}.ql-editor .ql-indent-8:not(.ql-direction-rtl){padding-left:24em}.ql-editor li.ql-indent-8:not(.ql-direction-rtl){padding-left:25.5em}.ql-editor .ql-indent-8.ql-direction-rtl.ql-align-right{padding-right:24em}.ql-editor li.ql-indent-8.ql-direction-rtl.ql-align-right{padding-right:25.5em}.ql-editor .ql-indent-9:not(.ql-direction-rtl){padding-left:27em}.ql-editor li.ql-indent-9:not(.ql-direction-rtl){padding-left:28.5em}.ql-editor .ql-indent-9.ql-direction-rtl.ql-align-right{padding-right:27em}.ql-editor li.ql-indent-9.ql-direction-rtl.ql-align-right{padding-right:28.5em}.ql-editor .ql-video{display:block;max-width:100%}.ql-editor .ql-video.ql-align-center{margin:0 auto}.ql-editor .ql-video.ql-align-right{margin:0 0 0 auto}.ql-editor .ql-bg-black{background-color:#000}.ql-editor .ql-bg-red{background-color:#e60000}.ql-editor .ql-bg-orange{background-color:#f90}.ql-editor .ql-bg-yellow{background-color:#ff0}.ql-editor .ql-bg-green{background-color:#008a00}.ql-editor .ql-bg-blue{background-color:#06c}.ql-editor .ql-bg-purple{background-color:#93f}.ql-editor .ql-color-white{color:#fff}.ql-editor .ql-color-red{color:#e60000}.ql-editor .ql-color-orange{color:#f90}.ql-editor .ql-color-yellow{color:#ff0}.ql-editor .ql-color-green{color:#008a00}.ql-editor .ql-color-blue{color:#06c}.ql-editor .ql-color-purple{color:#93f}.ql-editor .ql-font-serif{font-family:Georgia,Times New Roman,serif}.ql-editor .ql-font-monospace{font-family:Monaco,Courier New,monospace}.ql-editor .ql-size-small{font-size:.75em}.ql-editor .ql-size-large{font-size:1.5em}.ql-editor .ql-size-huge{font-size:2.5em}.ql-editor .ql-direction-rtl{direction:rtl;text-align:inherit}.ql-editor .ql-align-center{text-align:center}.ql-editor .ql-align-justify{text-align:justify}.ql-editor .ql-align-right{text-align:right}.ql-editor.ql-blank:before{color:#0009;content:attr(data-placeholder);font-style:italic;left:15px;pointer-events:none;position:absolute;right:15px}.ql-snow.ql-toolbar:after,.ql-snow .ql-toolbar:after{clear:both;content:"";display:table}.ql-snow.ql-toolbar button,.ql-snow .ql-toolbar button{background:none;border:none;cursor:pointer;display:inline-block;float:left;height:24px;padding:3px 5px;width:28px}.ql-snow.ql-toolbar button svg,.ql-snow .ql-toolbar button svg{float:left;height:100%}.ql-snow.ql-toolbar button:active:hover,.ql-snow .ql-toolbar button:active:hover{outline:none}.ql-snow.ql-toolbar input.ql-image[type=file],.ql-snow .ql-toolbar input.ql-image[type=file]{display:none}.ql-snow.ql-toolbar button:hover,.ql-snow .ql-toolbar button:hover,.ql-snow.ql-toolbar button:focus,.ql-snow .ql-toolbar button:focus,.ql-snow.ql-toolbar button.ql-active,.ql-snow .ql-toolbar button.ql-active,.ql-snow.ql-toolbar .ql-picker-label:hover,.ql-snow .ql-toolbar .ql-picker-label:hover,.ql-snow.ql-toolbar .ql-picker-label.ql-active,.ql-snow .ql-toolbar .ql-picker-label.ql-active,.ql-snow.ql-toolbar .ql-picker-item:hover,.ql-snow .ql-toolbar .ql-picker-item:hover,.ql-snow.ql-toolbar .ql-picker-item.ql-selected,.ql-snow .ql-toolbar .ql-picker-item.ql-selected{color:#06c}.ql-snow.ql-toolbar button:hover .ql-fill,.ql-snow .ql-toolbar button:hover .ql-fill,.ql-snow.ql-toolbar button:focus .ql-fill,.ql-snow .ql-toolbar button:focus .ql-fill,.ql-snow.ql-toolbar button.ql-active .ql-fill,.ql-snow .ql-toolbar button.ql-active .ql-fill,.ql-snow.ql-toolbar .ql-picker-label:hover .ql-fill,.ql-snow .ql-toolbar .ql-picker-label:hover .ql-fill,.ql-snow.ql-toolbar .ql-picker-label.ql-active .ql-fill,.ql-snow .ql-toolbar .ql-picker-label.ql-active .ql-fill,.ql-snow.ql-toolbar .ql-picker-item:hover .ql-fill,.ql-snow .ql-toolbar .ql-picker-item:hover .ql-fill,.ql-snow.ql-toolbar .ql-picker-item.ql-selected .ql-fill,.ql-snow .ql-toolbar .ql-picker-item.ql-selected .ql-fill,.ql-snow.ql-toolbar button:hover .ql-stroke.ql-fill,.ql-snow .ql-toolbar button:hover .ql-stroke.ql-fill,.ql-snow.ql-toolbar button:focus .ql-stroke.ql-fill,.ql-snow .ql-toolbar button:focus .ql-stroke.ql-fill,.ql-snow.ql-toolbar button.ql-active .ql-stroke.ql-fill,.ql-snow .ql-toolbar button.ql-active .ql-stroke.ql-fill,.ql-snow.ql-toolbar .ql-picker-label:hover .ql-stroke.ql-fill,.ql-snow .ql-toolbar .ql-picker-label:hover .ql-stroke.ql-fill,.ql-snow.ql-toolbar .ql-picker-label.ql-active .ql-stroke.ql-fill,.ql-snow .ql-toolbar .ql-picker-label.ql-active .ql-stroke.ql-fill,.ql-snow.ql-toolbar .ql-picker-item:hover .ql-stroke.ql-fill,.ql-snow .ql-toolbar .ql-picker-item:hover .ql-stroke.ql-fill,.ql-snow.ql-toolbar .ql-picker-item.ql-selected .ql-stroke.ql-fill,.ql-snow .ql-toolbar .ql-picker-item.ql-selected .ql-stroke.ql-fill{fill:#06c}.ql-snow.ql-toolbar button:hover .ql-stroke,.ql-snow .ql-toolbar button:hover .ql-stroke,.ql-snow.ql-toolbar button:focus .ql-stroke,.ql-snow .ql-toolbar button:focus .ql-stroke,.ql-snow.ql-toolbar button.ql-active .ql-stroke,.ql-snow .ql-toolbar button.ql-active .ql-stroke,.ql-snow.ql-toolbar .ql-picker-label:hover .ql-stroke,.ql-snow .ql-toolbar .ql-picker-label:hover .ql-stroke,.ql-snow.ql-toolbar .ql-picker-label.ql-active .ql-stroke,.ql-snow .ql-toolbar .ql-picker-label.ql-active .ql-stroke,.ql-snow.ql-toolbar .ql-picker-item:hover .ql-stroke,.ql-snow .ql-toolbar .ql-picker-item:hover .ql-stroke,.ql-snow.ql-toolbar .ql-picker-item.ql-selected .ql-stroke,.ql-snow .ql-toolbar .ql-picker-item.ql-selected .ql-stroke,.ql-snow.ql-toolbar button:hover .ql-stroke-miter,.ql-snow .ql-toolbar button:hover .ql-stroke-miter,.ql-snow.ql-toolbar button:focus .ql-stroke-miter,.ql-snow .ql-toolbar button:focus .ql-stroke-miter,.ql-snow.ql-toolbar button.ql-active .ql-stroke-miter,.ql-snow .ql-toolbar button.ql-active .ql-stroke-miter,.ql-snow.ql-toolbar .ql-picker-label:hover .ql-stroke-miter,.ql-snow .ql-toolbar .ql-picker-label:hover .ql-stroke-miter,.ql-snow.ql-toolbar .ql-picker-label.ql-active .ql-stroke-miter,.ql-snow .ql-toolbar .ql-picker-label.ql-active .ql-stroke-miter,.ql-snow.ql-toolbar .ql-picker-item:hover .ql-stroke-miter,.ql-snow .ql-toolbar .ql-picker-item:hover .ql-stroke-miter,.ql-snow.ql-toolbar .ql-picker-item.ql-selected .ql-stroke-miter,.ql-snow .ql-toolbar .ql-picker-item.ql-selected .ql-stroke-miter{stroke:#06c}@media (pointer: coarse){.ql-snow.ql-toolbar button:hover:not(.ql-active),.ql-snow .ql-toolbar button:hover:not(.ql-active){color:#444}.ql-snow.ql-toolbar button:hover:not(.ql-active) .ql-fill,.ql-snow .ql-toolbar button:hover:not(.ql-active) .ql-fill,.ql-snow.ql-toolbar button:hover:not(.ql-active) .ql-stroke.ql-fill,.ql-snow .ql-toolbar button:hover:not(.ql-active) .ql-stroke.ql-fill{fill:#444}.ql-snow.ql-toolbar button:hover:not(.ql-active) .ql-stroke,.ql-snow .ql-toolbar button:hover:not(.ql-active) .ql-stroke,.ql-snow.ql-toolbar button:hover:not(.ql-active) .ql-stroke-miter,.ql-snow .ql-toolbar button:hover:not(.ql-active) .ql-stroke-miter{stroke:#444}}.ql-snow,.ql-snow *{box-sizing:border-box}.ql-snow .ql-hidden{display:none}.ql-snow .ql-out-bottom,.ql-snow .ql-out-top{visibility:hidden}.ql-snow .ql-tooltip{position:absolute;transform:translateY(10px)}.ql-snow .ql-tooltip a{cursor:pointer;text-decoration:none}.ql-snow .ql-tooltip.ql-flip{transform:translateY(-10px)}.ql-snow .ql-formats{display:inline-block;vertical-align:middle}.ql-snow .ql-formats:after{clear:both;content:"";display:table}.ql-snow .ql-stroke{fill:none;stroke:#444;stroke-linecap:round;stroke-linejoin:round;stroke-width:2}.ql-snow .ql-stroke-miter{fill:none;stroke:#444;stroke-miterlimit:10;stroke-width:2}.ql-snow .ql-fill,.ql-snow .ql-stroke.ql-fill{fill:#444}.ql-snow .ql-empty{fill:none}.ql-snow .ql-even{fill-rule:evenodd}.ql-snow .ql-thin,.ql-snow .ql-stroke.ql-thin{stroke-width:1}.ql-snow .ql-transparent{opacity:.4}.ql-snow .ql-direction svg:last-child{display:none}.ql-snow .ql-direction.ql-active svg:last-child{display:inline}.ql-snow .ql-direction.ql-active svg:first-child{display:none}.ql-snow .ql-editor h1{font-size:2em}.ql-snow .ql-editor h2{font-size:1.5em}.ql-snow .ql-editor h3{font-size:1.17em}.ql-snow .ql-editor h4{font-size:1em}.ql-snow .ql-editor h5{font-size:.83em}.ql-snow .ql-editor h6{font-size:.67em}.ql-snow .ql-editor a{text-decoration:underline}.ql-snow .ql-editor blockquote{border-left:4px solid #ccc;margin-bottom:5px;margin-top:5px;padding-left:16px}.ql-snow .ql-editor code,.ql-snow .ql-editor pre{background-color:#f0f0f0;border-radius:3px}.ql-snow .ql-editor pre{white-space:pre-wrap;margin-bottom:5px;margin-top:5px;padding:5px 10px}.ql-snow .ql-editor code{font-size:85%;padding:2px 4px}.ql-snow .ql-editor pre.ql-syntax{background-color:#23241f;color:#f8f8f2;overflow:visible}.ql-snow .ql-editor img{max-width:100%}.ql-snow .ql-picker{color:#444;display:inline-block;float:left;font-size:14px;font-weight:500;height:24px;position:relative;vertical-align:middle}.ql-snow .ql-picker-label{cursor:pointer;display:inline-block;height:100%;padding-left:8px;padding-right:2px;position:relative;width:100%}.ql-snow .ql-picker-label:before{display:inline-block;line-height:22px}.ql-snow .ql-picker-options{background-color:#fff;display:none;min-width:100%;padding:4px 8px;position:absolute;white-space:nowrap}.ql-snow .ql-picker-options .ql-picker-item{cursor:pointer;display:block;padding-bottom:5px;padding-top:5px}.ql-snow .ql-picker.ql-expanded .ql-picker-label{color:#ccc;z-index:2}.ql-snow .ql-picker.ql-expanded .ql-picker-label .ql-fill{fill:#ccc}.ql-snow .ql-picker.ql-expanded .ql-picker-label .ql-stroke{stroke:#ccc}.ql-snow .ql-picker.ql-expanded .ql-picker-options{display:block;margin-top:-1px;top:100%;z-index:1}.ql-snow .ql-color-picker,.ql-snow .ql-icon-picker{width:28px}.ql-snow .ql-color-picker .ql-picker-label,.ql-snow .ql-icon-picker .ql-picker-label{padding:2px 4px}.ql-snow .ql-color-picker .ql-picker-label svg,.ql-snow .ql-icon-picker .ql-picker-label svg{right:4px}.ql-snow .ql-icon-picker .ql-picker-options{padding:4px 0}.ql-snow .ql-icon-picker .ql-picker-item{height:24px;width:24px;padding:2px 4px}.ql-snow .ql-color-picker .ql-picker-options{padding:3px 5px;width:152px}.ql-snow .ql-color-picker .ql-picker-item{border:1px solid transparent;float:left;height:16px;margin:2px;padding:0;width:16px}.ql-snow .ql-picker:not(.ql-color-picker):not(.ql-icon-picker) svg{position:absolute;margin-top:-9px;right:0;top:50%;width:18px}.ql-snow .ql-picker.ql-header .ql-picker-label[data-label]:not([data-label=""]):before,.ql-snow .ql-picker.ql-font .ql-picker-label[data-label]:not([data-label=""]):before,.ql-snow .ql-picker.ql-size .ql-picker-label[data-label]:not([data-label=""]):before,.ql-snow .ql-picker.ql-header .ql-picker-item[data-label]:not([data-label=""]):before,.ql-snow .ql-picker.ql-font .ql-picker-item[data-label]:not([data-label=""]):before,.ql-snow .ql-picker.ql-size .ql-picker-item[data-label]:not([data-label=""]):before{content:attr(data-label)}.ql-snow .ql-picker.ql-header{width:98px}.ql-snow .ql-picker.ql-header .ql-picker-label:before,.ql-snow .ql-picker.ql-header .ql-picker-item:before{content:"Normal"}.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="1"]:before,.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="1"]:before{content:"Heading 1"}.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="2"]:before,.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="2"]:before{content:"Heading 2"}.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="3"]:before,.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="3"]:before{content:"Heading 3"}.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="4"]:before,.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="4"]:before{content:"Heading 4"}.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="5"]:before,.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="5"]:before{content:"Heading 5"}.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="6"]:before,.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="6"]:before{content:"Heading 6"}.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="1"]:before{font-size:2em}.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="2"]:before{font-size:1.5em}.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="3"]:before{font-size:1.17em}.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="4"]:before{font-size:1em}.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="5"]:before{font-size:.83em}.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="6"]:before{font-size:.67em}.ql-snow .ql-picker.ql-font{width:108px}.ql-snow .ql-picker.ql-font .ql-picker-label:before,.ql-snow .ql-picker.ql-font .ql-picker-item:before{content:"Sans Serif"}.ql-snow .ql-picker.ql-font .ql-picker-label[data-value=serif]:before,.ql-snow .ql-picker.ql-font .ql-picker-item[data-value=serif]:before{content:"Serif"}.ql-snow .ql-picker.ql-font .ql-picker-label[data-value=monospace]:before,.ql-snow .ql-picker.ql-font .ql-picker-item[data-value=monospace]:before{content:"Monospace"}.ql-snow .ql-picker.ql-font .ql-picker-item[data-value=serif]:before{font-family:Georgia,Times New Roman,serif}.ql-snow .ql-picker.ql-font .ql-picker-item[data-value=monospace]:before{font-family:Monaco,Courier New,monospace}.ql-snow .ql-picker.ql-size{width:98px}.ql-snow .ql-picker.ql-size .ql-picker-label:before,.ql-snow .ql-picker.ql-size .ql-picker-item:before{content:"Normal"}.ql-snow .ql-picker.ql-size .ql-picker-label[data-value=small]:before,.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=small]:before{content:"Small"}.ql-snow .ql-picker.ql-size .ql-picker-label[data-value=large]:before,.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=large]:before{content:"Large"}.ql-snow .ql-picker.ql-size .ql-picker-label[data-value=huge]:before,.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=huge]:before{content:"Huge"}.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=small]:before{font-size:10px}.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=large]:before{font-size:18px}.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=huge]:before{font-size:32px}.ql-snow .ql-color-picker.ql-background .ql-picker-item{background-color:#fff}.ql-snow .ql-color-picker.ql-color .ql-picker-item{background-color:#000}.ql-toolbar.ql-snow{border:1px solid #ccc;box-sizing:border-box;font-family:Helvetica Neue,Helvetica,Arial,sans-serif;padding:8px}.ql-toolbar.ql-snow .ql-formats{margin-right:15px}.ql-toolbar.ql-snow .ql-picker-label{border:1px solid transparent}.ql-toolbar.ql-snow .ql-picker-options{border:1px solid transparent;box-shadow:#0003 0 2px 8px}.ql-toolbar.ql-snow .ql-picker.ql-expanded .ql-picker-label,.ql-toolbar.ql-snow .ql-picker.ql-expanded .ql-picker-options{border-color:#ccc}.ql-toolbar.ql-snow .ql-color-picker .ql-picker-item.ql-selected,.ql-toolbar.ql-snow .ql-color-picker .ql-picker-item:hover{border-color:#000}.ql-toolbar.ql-snow+.ql-container.ql-snow{border-top:0px}.ql-snow .ql-tooltip{background-color:#fff;border:1px solid #ccc;box-shadow:0 0 5px #ddd;color:#444;padding:5px 12px;white-space:nowrap}.ql-snow .ql-tooltip:before{content:"Visit URL:";line-height:26px;margin-right:8px}.ql-snow .ql-tooltip input[type=text]{display:none;border:1px solid #ccc;font-size:13px;height:26px;margin:0;padding:3px 5px;width:170px}.ql-snow .ql-tooltip a.ql-preview{display:inline-block;max-width:200px;overflow-x:hidden;text-overflow:ellipsis;vertical-align:top}.ql-snow .ql-tooltip a.ql-action:after{border-right:1px solid #ccc;content:"Edit";margin-left:16px;padding-right:8px}.ql-snow .ql-tooltip a.ql-remove:before{content:"Remove";margin-left:8px}.ql-snow .ql-tooltip a{line-height:26px}.ql-snow .ql-tooltip.ql-editing a.ql-preview,.ql-snow .ql-tooltip.ql-editing a.ql-remove{display:none}.ql-snow .ql-tooltip.ql-editing input[type=text]{display:inline-block}.ql-snow .ql-tooltip.ql-editing a.ql-action:after{border-right:0px;content:"Save";padding-right:0}.ql-snow .ql-tooltip[data-mode=link]:before{content:"Enter link:"}.ql-snow .ql-tooltip[data-mode=formula]:before{content:"Enter formula:"}.ql-snow .ql-tooltip[data-mode=video]:before{content:"Enter video:"}.ql-snow a{color:#06c}.ql-container.ql-snow{border:1px solid #ccc}:root{--primary-50: #faf5ff;--primary-100: #f3e8ff;--primary-200: #e9d5ff;--primary-300: #d8b4fe;--primary-400: #c084fc;--primary-500: #a855f7;--primary-600: #9333ea;--primary-700: #7c3aed;--primary-800: #6b21a8;--primary-900: #581c87;--secondary-50: #fffbeb;--secondary-100: #fef3c7;--secondary-200: #fde68a;--secondary-300: #fcd34d;--secondary-400: #fbbf24;--secondary-500: #f59e0b;--secondary-600: #d97706;--secondary-700: #b45309;--secondary-800: #92400e;--secondary-900: #78350f;--neutral-50: #fafafa;--neutral-100: #f5f5f5;--neutral-200: #e5e5e5;--neutral-300: #d4d4d4;--neutral-400: #a3a3a3;--neutral-500: #737373;--neutral-600: #525252;--neutral-700: #404040;--neutral-800: #262626;--neutral-900: #171717;--success: #10b981;--warning: #f59e0b;--error: #ef4444;--text-xs: .75rem;--text-sm: .875rem;--text-base: 1rem;--text-lg: 1.125rem;--text-xl: 1.25rem;--text-2xl: 1.5rem;--text-3xl: 1.875rem;--text-4xl: 2.25rem;--text-5xl: 3rem;--space-1: .25rem;--space-2: .5rem;--space-3: .75rem;--space-4: 1rem;--space-5: 1.25rem;--space-6: 1.5rem;--space-8: 2rem;--space-10: 2.5rem;--space-12: 3rem;--space-16: 4rem;--space-20: 5rem;--space-24: 6rem;--shadow-sm: 0 1px 2px 0 rgb(0 0 0 / .05);--shadow-md: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1);--shadow-lg: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--shadow-xl: 0 20px 25px -5px rgb(0 0 0 / .1), 0 8px 10px -6px rgb(0 0 0 / .1);--radius-sm: .25rem;--radius-md: .375rem;--radius-lg: .5rem;--radius-xl: .75rem;--radius-2xl: 1rem;--transition-fast: .15s ease-in-out;--transition-normal: .25s ease-in-out;--transition-slow: .35s ease-in-out}:root[data-theme=light]{--bg-primary: var(--neutral-50);--bg-secondary: #ffffff;--bg-tertiary: var(--primary-50);--text-primary: var(--neutral-900);--text-secondary: var(--neutral-600);--text-tertiary: var(--neutral-500);--border-light: var(--neutral-200);--border-medium: var(--neutral-300);--accent: var(--primary-600);--accent-hover: var(--primary-700);--accent-secondary: var(--secondary-500);--accent-secondary-hover: var(--secondary-600);--surface: #ffffff;--surface-elevated: #ffffff}:root[data-theme=dark]{--bg-primary: var(--neutral-900);--bg-secondary: var(--neutral-800);--bg-tertiary: var(--primary-900);--text-primary: var(--neutral-50);--text-secondary: var(--neutral-300);--text-tertiary: var(--neutral-400);--border-light: var(--neutral-700);--border-medium: var(--neutral-600);--accent: var(--primary-500);--accent-hover: var(--primary-400);--accent-secondary: var(--secondary-400);--accent-secondary-hover: var(--secondary-300);--surface: var(--neutral-800);--surface-elevated: var(--neutral-700)}*,*:before,*:after{box-sizing:border-box}html{height:100%;scroll-behavior:smooth}body{margin:0;height:100%;background:var(--bg-primary);color:var(--text-primary);font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,sans-serif;font-size:var(--text-base);line-height:1.6;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;transition:background-color var(--transition-normal),color var(--transition-normal)}#root{min-height:100%;display:flex;flex-direction:column}h1,h2,h3,h4,h5,h6{margin:0 0 var(--space-4) 0;font-weight:700;line-height:1.2;color:var(--text-primary)}h1{font-size:var(--text-4xl)}h2{font-size:var(--text-3xl)}h3{font-size:var(--text-2xl)}h4{font-size:var(--text-xl)}h5{font-size:var(--text-lg)}h6{font-size:var(--text-base)}@media (min-width: 768px){h1{font-size:var(--text-5xl)}h2{font-size:var(--text-4xl)}h3{font-size:var(--text-3xl)}}p{margin:0 0 var(--space-4) 0;color:var(--text-secondary)}a{color:var(--accent);text-decoration:none;transition:color var(--transition-fast)}a:hover{color:var(--accent-hover)}button{font:inherit;border:none;border-radius:var(--radius-md);cursor:pointer;transition:all var(--transition-fast);font-weight:500;display:inline-flex;align-items:center;gap:var(--space-2)}.btn-primary{background:var(--accent);color:#fff;padding:var(--space-3) var(--space-6);font-size:var(--text-sm);box-shadow:var(--shadow-sm)}.btn-primary:hover{background:var(--accent-hover);box-shadow:var(--shadow-md);transform:translateY(-1px)}.btn-secondary{background:var(--surface);color:var(--text-primary);padding:var(--space-3) var(--space-6);font-size:var(--text-sm);border:1px solid var(--border-light);box-shadow:var(--shadow-sm)}.btn-secondary:hover{background:var(--bg-tertiary);border-color:var(--border-medium);box-shadow:var(--shadow-md)}.btn-gold{background:var(--accent-secondary);color:#fff;padding:var(--space-3) var(--space-6);font-size:var(--text-sm);box-shadow:var(--shadow-sm)}.btn-gold:hover{background:var(--accent-secondary-hover);box-shadow:var(--shadow-md);transform:translateY(-1px)}.btn-ghost{background:transparent;color:var(--text-secondary);padding:var(--space-2) var(--space-4);font-size:var(--text-sm)}.btn-ghost:hover{background:var(--bg-tertiary);color:var(--text-primary)}.card{background:var(--surface);border-radius:var(--radius-xl);border:1px solid var(--border-light);box-shadow:var(--shadow-sm);transition:all var(--transition-normal)}.card:hover{box-shadow:var(--shadow-lg);transform:translateY(-2px)}.card-elevated{background:var(--surface-elevated);box-shadow:var(--shadow-md)}.container{max-width:1200px;margin:0 auto;padding:0 var(--space-6)}@media (min-width: 768px){.container{padding:0 var(--space-8)}}.text-gradient{background:linear-gradient(135deg,var(--accent),var(--primary-700));background-clip:text;-webkit-background-clip:text;-webkit-text-fill-color:transparent}.section{padding:var(--space-16) 0}@media (min-width: 768px){.section{padding:var(--space-24) 0}}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}.animate-pulse{animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite}*:focus{outline:2px solid var(--accent);outline-offset:2px}button:focus{outline-offset:2px}::-webkit-scrollbar{width:8px}::-webkit-scrollbar-track{background:var(--bg-tertiary)}::-webkit-scrollbar-thumb{background:var(--border-medium);border-radius:var(--radius-lg)}::-webkit-scrollbar-thumb:hover{background:var(--text-tertiary)}.app-container{min-height:100vh;display:flex;flex-direction:column}.main-content{flex:1}.main-header{background:var(--surface);border-bottom:1px solid var(--border-light);position:sticky;top:0;z-index:100;backdrop-filter:blur(8px);background:#fffc}[data-theme=dark] .main-header{background:#262626cc}.header-content{display:flex;align-items:center;justify-content:space-between;padding:var(--space-4) 0;gap:var(--space-8)}.logo-section{flex-shrink:0}.logo{display:flex;flex-direction:column;text-decoration:none;color:var(--text-primary);transition:all var(--transition-fast)}.logo:hover{transform:translateY(-1px)}.logo-text{font-size:var(--text-2xl);font-weight:800;line-height:1;background:linear-gradient(135deg,var(--accent),var(--primary-700));background-clip:text;-webkit-background-clip:text;-webkit-text-fill-color:transparent}.logo-subtitle{font-size:var(--text-xs);color:var(--text-secondary);text-transform:uppercase;letter-spacing:.05em;margin-top:2px}.nav-links{display:flex;gap:var(--space-8);align-items:center}.nav-link{position:relative;color:var(--text-secondary);font-weight:500;font-size:var(--text-sm);text-decoration:none;padding:var(--space-2) 0;transition:color var(--transition-fast)}.nav-link:hover{color:var(--text-primary)}.nav-link.active{color:var(--accent)}.nav-link.active:after{content:"";position:absolute;bottom:-1px;left:0;right:0;height:2px;background:var(--accent);border-radius:1px}.header-actions{display:flex;align-items:center;gap:var(--space-4);flex-shrink:0}.main-footer{background:var(--surface);border-top:1px solid var(--border-light);margin-top:var(--space-24)}.footer-content{display:grid;grid-template-columns:2fr 1fr 1fr;gap:var(--space-12);padding:var(--space-16) 0 var(--space-8) 0}@media (max-width: 768px){.footer-content{grid-template-columns:1fr;gap:var(--space-8);text-align:center}}.footer-section h3{font-size:var(--text-xl);margin-bottom:var(--space-4);background:linear-gradient(135deg,var(--accent),var(--primary-700));background-clip:text;-webkit-background-clip:text;-webkit-text-fill-color:transparent}.footer-section h4{font-size:var(--text-sm);text-transform:uppercase;letter-spacing:.05em;margin-bottom:var(--space-3);color:var(--text-primary)}.footer-section p{color:var(--text-secondary);margin-bottom:var(--space-4);line-height:1.6}.footer-status{display:flex;align-items:center;gap:var(--space-2);font-size:var(--text-sm);color:var(--text-secondary);margin-top:var(--space-3)}.status-indicator{width:8px;height:8px;background:#10b981;border-radius:50%;animation:pulse-dot 2s ease-in-out infinite}@keyframes pulse-dot{0%,to{opacity:1}50%{opacity:.5}}.footer-section a{display:block;color:var(--text-secondary);text-decoration:none;margin-bottom:var(--space-2);transition:color var(--transition-fast);font-size:var(--text-sm)}.footer-section a:hover{color:var(--accent)}.footer-bottom{border-top:1px solid var(--border-light);padding:var(--space-6) 0;text-align:center}.footer-bottom p{margin:0;color:var(--text-tertiary);font-size:var(--text-sm);line-height:1.6}.footer-bottom small{display:block;margin-top:var(--space-2);font-size:var(--text-xs);opacity:.8;font-style:italic}@media (max-width: 768px){.header-content{flex-direction:column;gap:var(--space-4);align-items:stretch}.nav-links{justify-content:center;gap:var(--space-6)}.header-actions{justify-content:center}.logo-section{text-align:center}}.home-page{min-height:100vh}.hero-section{padding:var(--space-20) 0;background:linear-gradient(135deg,var(--bg-primary) 0%,var(--bg-secondary) 100%);position:relative;overflow:hidden}.hero-section:before{content:"";position:absolute;inset:0;background:radial-gradient(circle at 30% 20%,rgba(168,85,247,.1) 0%,transparent 50%),radial-gradient(circle at 70% 80%,rgba(245,158,11,.05) 0%,transparent 50%);pointer-events:none}.hero-content{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-16);align-items:center;position:relative;z-index:1}@media (max-width: 768px){.hero-content{grid-template-columns:1fr;gap:var(--space-12);text-align:center}}.greeting{display:flex;align-items:center;gap:var(--space-3);font-size:var(--text-lg);color:var(--text-secondary);margin-bottom:var(--space-4);font-weight:500}.wave{font-size:var(--text-2xl);animation:wave 2s ease-in-out infinite;transform-origin:70% 70%;display:inline-block}@keyframes wave{0%,to{transform:rotate(0)}10%,30%{transform:rotate(14deg)}20%{transform:rotate(-8deg)}40%{transform:rotate(14deg)}50%{transform:rotate(10deg)}60%{transform:rotate(0)}}.hero-title{font-size:var(--text-5xl);font-weight:800;line-height:1.1;margin-bottom:var(--space-2)}.subtitle{display:block;font-size:var(--text-lg);font-weight:400;color:var(--text-tertiary);font-style:italic;margin-top:var(--space-2)}@media (min-width: 768px){.hero-title{font-size:3.5rem}}.hero-description{font-size:var(--text-lg);color:var(--text-secondary);line-height:1.7;margin-bottom:var(--space-8);max-width:500px}.hero-actions{display:flex;gap:var(--space-4);flex-wrap:wrap}@media (max-width: 768px){.hero-actions{justify-content:center}}.personal-quirks{margin-top:var(--space-6);padding:var(--space-4);background:var(--bg-tertiary);border-radius:var(--radius-lg);border:1px solid var(--border-light)}.quirk-item{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-2) 0;font-size:var(--text-sm);color:var(--text-secondary)}.quirk-item:not(:last-child){border-bottom:1px solid var(--border-light)}.quirk-emoji{font-size:var(--text-lg);flex-shrink:0}.quirk-text{font-style:italic;line-height:1.4}.personal-note{display:flex;align-items:flex-start;gap:var(--space-2);margin:var(--space-4) 0;padding:var(--space-3);background:var(--bg-tertiary);border-radius:var(--radius-md);border-left:3px solid var(--accent)}.note-emoji{font-size:var(--text-sm);flex-shrink:0;margin-top:2px}.personal-note em{font-size:var(--text-sm);color:var(--text-secondary);line-height:1.4}.skill-vibe{font-size:var(--text-sm);color:var(--text-tertiary);font-style:italic;margin-bottom:var(--space-4);border-bottom:1px solid var(--border-light);padding-bottom:var(--space-3)}.tech-tag{background:var(--bg-tertiary);color:var(--text-secondary);padding:var(--space-1) var(--space-3);border-radius:var(--radius-md);font-size:var(--text-xs);font-weight:500;transition:all var(--transition-fast);position:relative;overflow:hidden}.tech-tag:hover{background:var(--accent);color:#fff;transform:translateY(-1px) scale(1.05)}.cta-content{position:relative}.cta-content:before{content:"✨";position:absolute;top:-var(--space-8);left:50%;transform:translate(-50%);font-size:var(--text-4xl);opacity:.3;animation:sparkle 3s ease-in-out infinite}@keyframes sparkle{0%,to{opacity:.3;transform:translate(-50%) rotate(0)}50%{opacity:.6;transform:translate(-50%) rotate(180deg)}}.btn-primary{position:relative;overflow:hidden}.btn-primary:before{content:"";position:absolute;top:0;left:-100%;width:100%;height:100%;background:linear-gradient(90deg,transparent,rgba(255,255,255,.2),transparent);transition:left var(--transition-slow)}.btn-primary:hover:before{left:100%}.debug-banner strong{position:relative}.debug-banner strong:after{content:"👀";margin-left:var(--space-2);font-size:var(--text-sm);animation:blink 2s ease-in-out infinite}@keyframes blink{0%,90%,to{opacity:1}95%{opacity:0}}.portfolio-page{min-height:100vh}.portfolio-hero{padding:var(--space-16) 0 var(--space-12) 0;background:linear-gradient(135deg,var(--bg-primary) 0%,var(--bg-secondary) 100%);position:relative;overflow:hidden}.portfolio-hero:before{content:"";position:absolute;inset:0;background:radial-gradient(circle at 80% 20%,rgba(168,85,247,.1) 0%,transparent 50%);pointer-events:none}.portfolio-header{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-12);align-items:center;position:relative;z-index:1}@media (max-width: 768px){.portfolio-header{grid-template-columns:1fr;gap:var(--space-8);text-align:center}}.header-content h1{margin-bottom:var(--space-4);font-size:var(--text-4xl)}@media (min-width: 768px){.header-content h1{font-size:var(--text-5xl)}}.hero-subtitle{font-size:var(--text-lg);color:var(--text-secondary);line-height:1.7;margin-bottom:var(--space-8)}.portfolio-stats{display:grid;grid-template-columns:repeat(4,1fr);gap:var(--space-6)}@media (max-width: 768px){.portfolio-stats{grid-template-columns:repeat(2,1fr);gap:var(--space-4)}}.stat-item{text-align:center;padding:var(--space-4);background:var(--surface);border-radius:var(--radius-lg);border:1px solid var(--border-light);box-shadow:var(--shadow-sm)}.stat-number{display:block;font-size:var(--text-2xl);font-weight:800;color:var(--accent);margin-bottom:var(--space-1)}.stat-item:nth-child(2n) .stat-number{color:var(--accent-secondary)}.stat-label{font-size:var(--text-sm);color:var(--text-secondary);text-transform:uppercase;letter-spacing:.05em}.header-visual{display:flex;justify-content:center;align-items:center}.code-window{background:var(--surface-elevated);border-radius:var(--radius-xl);border:1px solid var(--border-light);box-shadow:var(--shadow-lg);overflow:hidden;max-width:400px;width:100%;animation:float 8s ease-in-out infinite}.window-header{display:flex;align-items:center;justify-content:space-between;padding:var(--space-3) var(--space-4);background:var(--border-light);border-bottom:1px solid var(--border-medium)}.window-dots{display:flex;gap:var(--space-2)}.window-dots span{width:12px;height:12px;border-radius:50%;background:var(--text-tertiary)}.window-dots span:nth-child(1){background:#ff5f57}.window-dots span:nth-child(2){background:#ffbd2e}.window-dots span:nth-child(3){background:#28ca42}.window-title{font-size:var(--text-xs);color:var(--text-secondary);font-family:Monaco,Menlo,Ubuntu Mono,monospace}.window-content{padding:var(--space-4);font-family:Monaco,Menlo,Ubuntu Mono,monospace;font-size:var(--text-sm);line-height:1.6;background:var(--bg-tertiary)}.portfolio-controls{padding:var(--space-8) 0;background:var(--surface);border-bottom:1px solid var(--border-light)}.controls-wrapper{display:flex;justify-content:space-between;align-items:flex-start;gap:var(--space-8)}@media (max-width: 768px){.controls-wrapper{flex-direction:column;gap:var(--space-6)}}.category-filters h3{margin-bottom:var(--space-4);font-size:var(--text-lg);color:var(--text-primary)}.filter-buttons{display:flex;flex-wrap:wrap;gap:var(--space-3)}.filter-btn{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-4);background:var(--bg-tertiary);color:var(--text-secondary);border:1px solid var(--border-light);border-radius:var(--radius-lg);font-size:var(--text-sm);font-weight:500;transition:all var(--transition-fast);cursor:pointer}.filter-btn:hover{background:var(--surface);color:var(--text-primary);border-color:var(--border-medium)}.filter-btn.active{background:var(--accent);color:#fff;border-color:var(--accent)}.filter-emoji{font-size:var(--text-base)}.view-controls{display:flex;align-items:center;gap:var(--space-4)}.toggle-control{display:flex;align-items:center;gap:var(--space-3);cursor:pointer;font-size:var(--text-sm);color:var(--text-secondary)}.toggle-control input{display:none}.toggle-slider{width:40px;height:20px;background:var(--bg-tertiary);border-radius:10px;position:relative;transition:background var(--transition-fast)}.toggle-slider:before{content:"";position:absolute;top:2px;left:2px;width:16px;height:16px;background:var(--text-tertiary);border-radius:50%;transition:all var(--transition-fast)}.toggle-control input:checked+.toggle-slider{background:var(--accent)}.toggle-control input:checked+.toggle-slider:before{transform:translate(20px);background:#fff}.portfolio-projects{padding:var(--space-12) 0}.projects-header{text-align:center;margin-bottom:var(--space-12)}.projects-header h2{margin-bottom:var(--space-3)}.category-description{font-size:var(--text-lg);color:var(--text-secondary);font-style:italic}.projects-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(380px,1fr));gap:var(--space-8)}.project-card{overflow:hidden;transition:all var(--transition-normal);position:relative}.project-image{position:relative;overflow:hidden;height:240px}.project-status{position:absolute;top:var(--space-3);right:var(--space-3);background:var(--accent);color:#fff;padding:var(--space-1) var(--space-3);border-radius:var(--radius-md);font-size:var(--text-xs);font-weight:600;z-index:2}.project-overlay{position:absolute;inset:0;background:#000000b3;display:flex;align-items:center;justify-content:center;opacity:0;transition:opacity var(--transition-fast)}.project-card:hover .project-overlay{opacity:1}.project-links{display:flex;gap:var(--space-3)}.project-link{text-decoration:none;font-size:var(--text-sm);padding:var(--space-2) var(--space-4)}.project-header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:var(--space-3)}.project-header h3{margin:0;flex:1}.project-year{background:var(--bg-tertiary);color:var(--text-tertiary);padding:var(--space-1) var(--space-2);border-radius:var(--radius-sm);font-size:var(--text-xs);font-weight:600;margin-left:var(--space-3)}.project-description{line-height:1.6;margin-bottom:var(--space-4)}.project-footer{margin-top:var(--space-4)}.project-tech{display:flex;flex-wrap:wrap;gap:var(--space-2);margin-bottom:var(--space-4)}.project-links-bottom{display:flex;gap:var(--space-4)}.project-link-simple{color:var(--accent);text-decoration:none;font-size:var(--text-sm);font-weight:500;transition:color var(--transition-fast)}.project-link-simple:hover{color:var(--accent-hover)}.empty-state{text-align:center;padding:var(--space-16) var(--space-8);color:var(--text-secondary)}.empty-icon{font-size:var(--text-5xl);margin-bottom:var(--space-4)}.empty-state h3{margin-bottom:var(--space-3);color:var(--text-primary)}.portfolio-footer{padding:var(--space-16) 0;background:var(--bg-secondary);text-align:center}.portfolio-footer h2{margin-bottom:var(--space-4)}.portfolio-footer p{font-size:var(--text-lg);line-height:1.7;max-width:600px;margin:0 auto var(--space-8) auto}.next-projects{max-width:500px;margin:0 auto}.coming-soon{background:var(--surface);padding:var(--space-6);border-radius:var(--radius-xl);border:1px solid var(--border-light);text-align:left}.coming-soon h4{margin-bottom:var(--space-4);text-align:center}.coming-soon ul{list-style:none;padding:0;margin:0}.coming-soon li{padding:var(--space-2) 0;color:var(--text-secondary);font-style:italic}.hero-visual{display:flex;justify-content:center;align-items:center}.hero-card{background:var(--surface-elevated);border-radius:var(--radius-2xl);padding:var(--space-6);box-shadow:var(--shadow-xl);border:1px solid var(--border-light);max-width:400px;width:100%}.floating{animation:float 6s ease-in-out infinite}.code-snippet{font-family:Monaco,Menlo,Ubuntu Mono,monospace;font-size:var(--text-sm);border-radius:var(--radius-lg);overflow:hidden;background:var(--bg-tertiary)}.code-header{display:flex;align-items:center;justify-content:space-between;padding:var(--space-3) var(--space-4);background:var(--border-light);border-bottom:1px solid var(--border-medium)}.code-dots{display:flex;gap:var(--space-2)}.code-dots span{width:12px;height:12px;border-radius:50%;background:var(--text-tertiary)}.code-dots span:nth-child(1){background:#ff5f57}.code-dots span:nth-child(2){background:#ffbd2e}.code-dots span:nth-child(3){background:#28ca42}.code-title{font-size:var(--text-xs);color:var(--text-secondary)}.code-content{padding:var(--space-4);line-height:1.6}.code-line{margin-bottom:var(--space-1)}.code-indent{padding-left:var(--space-4)}.code-keyword{color:#ff79c6}.code-variable{color:#8be9fd}.code-operator{color:#ff79c6}.code-property{color:#50fa7b}.code-string{color:#f1fa8c}.code-punctuation{color:#f8f8f2}[data-theme=light] .code-keyword{color:#d73a49}[data-theme=light] .code-variable{color:#005cc5}[data-theme=light] .code-operator{color:#d73a49}[data-theme=light] .code-property{color:#22863a}[data-theme=light] .code-string{color:#032f62}[data-theme=light] .code-punctuation{color:#24292e}.section-header{text-align:center;margin-bottom:var(--space-16);max-width:600px;margin-left:auto;margin-right:auto}.section-header h2{margin-bottom:var(--space-4)}.section-header p{font-size:var(--text-lg);color:var(--text-secondary)}.section-footer{text-align:center;margin-top:var(--space-12)}.featured-projects{background:var(--bg-secondary)}.projects-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(350px,1fr));gap:var(--space-8)}@media (max-width: 768px){.projects-grid{grid-template-columns:1fr}}.project-card{overflow:hidden;transition:all var(--transition-normal)}.project-card:hover{transform:translateY(-4px);box-shadow:var(--shadow-xl)}.project-image{position:relative;overflow:hidden;height:200px}.project-image img{width:100%;height:100%;object-fit:cover;transition:transform var(--transition-slow)}.project-card:hover .project-image img{transform:scale(1.05)}.project-status{position:absolute;top:var(--space-3);right:var(--space-3);background:var(--accent);color:#fff;padding:var(--space-1) var(--space-3);border-radius:var(--radius-md);font-size:var(--text-xs);font-weight:600}.project-content{padding:var(--space-6)}.project-content h3{margin-bottom:var(--space-3);font-size:var(--text-xl)}.project-content p{margin-bottom:var(--space-4);line-height:1.6}.project-tech{display:flex;flex-wrap:wrap;gap:var(--space-2)}.tech-tag{background:var(--bg-tertiary);color:var(--text-secondary);padding:var(--space-1) var(--space-3);border-radius:var(--radius-md);font-size:var(--text-xs);font-weight:500}.skills-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:var(--space-6)}.skill-category{padding:var(--space-6);text-align:center}.skill-category h3{margin-bottom:var(--space-4);color:var(--accent);font-size:var(--text-lg)}.skill-items{display:flex;flex-direction:column;gap:var(--space-2)}.skill-item{background:var(--bg-tertiary);padding:var(--space-2) var(--space-4);border-radius:var(--radius-md);font-size:var(--text-sm);color:var(--text-secondary);transition:all var(--transition-fast)}.skill-item:hover{background:var(--accent);color:#fff;transform:translateY(-1px)}.cta-section{background:linear-gradient(135deg,var(--accent) 0%,var(--primary-700) 100%);color:#fff;text-align:center}.cta-content h2{color:#fff;margin-bottom:var(--space-4)}.cta-content p{color:#ffffffe6;font-size:var(--text-lg);max-width:600px;margin:0 auto var(--space-8) auto;line-height:1.7}.cta-actions{display:flex;gap:var(--space-4);justify-content:center;flex-wrap:wrap}.cta-actions .btn-primary{background:#fff;color:var(--accent)}.cta-actions .btn-primary:hover{background:var(--neutral-100);transform:translateY(-2px)}.cta-actions .btn-ghost{color:#fff;border:1px solid rgba(255,255,255,.3)}.cta-actions .btn-ghost:hover{background:#ffffff1a}.debug-section{padding:var(--space-8) 0;background:var(--warning);color:#856404}.debug-banner{background:#fff3cd;border:1px solid #ffeaa7;padding:var(--space-4);border-radius:var(--radius-lg);margin-bottom:var(--space-6);text-align:center}.debug-banner strong{display:block;margin-bottom:var(--space-2)}.debug-banner p{margin:0;font-size:var(--text-sm);color:#856404}.personal-note{margin-top:var(--space-4);padding:var(--space-4);background:var(--bg-tertiary);border-radius:var(--radius-lg);border-left:4px solid var(--accent);font-style:italic;position:relative}.personal-note:before{content:"💭";position:absolute;top:var(--space-3);right:var(--space-3);font-size:var(--text-lg)}.personal-note p{margin:0;color:var(--text-secondary);line-height:1.6}.tech-tag{background:var(--bg-tertiary);color:var(--text-secondary);padding:var(--space-1) var(--space-2);border-radius:var(--radius-sm);font-size:var(--text-xs);font-weight:500;border:1px solid var(--border-light);transition:all var(--transition-fast)}.tech-tag:hover{background:var(--surface);color:var(--text-primary);border-color:var(--border-medium)}@keyframes float{0%,to{transform:translateY(0)}50%{transform:translateY(-10px)}}@keyframes slideIn{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.project-card{animation:slideIn .6s ease-out}.portfolio-hero{animation:slideIn .8s ease-out}.portfolio-controls{animation:slideIn .8s ease-out .2s both}.portfolio-projects{animation:slideIn .8s ease-out .4s both}.blog-page{min-height:100vh}.blog-hero{padding:var(--space-16) 0 var(--space-12) 0;background:linear-gradient(135deg,var(--bg-primary) 0%,var(--bg-secondary) 100%);position:relative;overflow:hidden}.blog-hero:before{content:"";position:absolute;inset:0;background:radial-gradient(circle at 20% 80%,rgba(168,85,247,.1) 0%,transparent 50%);pointer-events:none}.blog-header{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-12);align-items:center;position:relative;z-index:1}@media (max-width: 768px){.blog-header{grid-template-columns:1fr;gap:var(--space-8);text-align:center}}.blog-header h1{margin-bottom:var(--space-4);font-size:var(--text-4xl)}@media (min-width: 768px){.blog-header h1{font-size:var(--text-5xl)}}.blog-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--space-4);max-width:300px;margin:0 auto}.blog-controls{padding:var(--space-8) 0;background:var(--surface);border-bottom:1px solid var(--border-light)}.tag-filters h3{margin-bottom:var(--space-4);font-size:var(--text-lg);color:var(--text-primary)}.blog-info{display:flex;align-items:center}.showing-count{margin:0;font-size:var(--text-sm);color:var(--text-secondary);font-style:italic}.blog-content{padding:var(--space-12) 0}.loading-state,.error-state,.empty-state{text-align:center;padding:var(--space-16) var(--space-8)}.loading-spinner,.error-icon,.empty-icon{font-size:var(--text-5xl);margin-bottom:var(--space-4);animation:float 3s ease-in-out infinite}.error-state h3,.empty-state h3{margin-bottom:var(--space-3);color:var(--text-primary)}.error-state p,.empty-state p{color:var(--text-secondary);font-size:var(--text-lg)}.articles-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(400px,1fr));gap:var(--space-8)}@media (max-width: 768px){.articles-grid{grid-template-columns:1fr}}.article-card{background:var(--surface);border-radius:var(--radius-xl);border:1px solid var(--border-light);box-shadow:var(--shadow-sm);overflow:hidden;transition:all var(--transition-normal);animation:slideIn .6s ease-out}.article-card:hover{transform:translateY(-4px);box-shadow:var(--shadow-lg)}.article-card-link{display:block;text-decoration:none;color:inherit;transition:all var(--transition-normal)}.article-card-link:hover .article-card{transform:translateY(-4px);box-shadow:var(--shadow-lg)}.article-card-link:hover .article-title{color:var(--accent)}.card-content{padding:var(--space-6)}.card-header{margin-bottom:var(--space-4)}.article-title{color:var(--text-primary);font-size:var(--text-xl);font-weight:700;line-height:1.3;transition:color var(--transition-fast);margin:0;margin-bottom:var(--space-3)}.article-title-link{background:none;border:none;padding:0;margin:0;text-align:left;cursor:pointer;color:var(--text-primary);font-size:var(--text-xl);font-weight:700;line-height:1.3;transition:color var(--transition-fast);text-decoration:none;display:block;width:100%}.article-title-link:hover{color:var(--accent)}.card-meta{display:flex;justify-content:space-between;align-items:center;margin-top:var(--space-3);gap:var(--space-4)}@media (max-width: 480px){.card-meta{flex-direction:column;align-items:flex-start;gap:var(--space-2)}}.author-info{display:flex;align-items:center;gap:var(--space-2)}.author-photo-small{width:28px;height:28px;border-radius:50%;border:2px solid var(--border-light)}.author-name{font-size:var(--text-sm);font-weight:500;color:var(--text-secondary)}.publish-date{font-size:var(--text-sm);color:var(--text-tertiary)}.card-excerpt{margin-bottom:var(--space-4)}.card-excerpt p{margin:0;line-height:1.6;color:var(--text-secondary)}.card-footer{display:flex;justify-content:space-between;align-items:center;gap:var(--space-4);padding-top:var(--space-4);border-top:1px solid var(--border-light)}@media (max-width: 480px){.card-footer{flex-direction:column;align-items:flex-start;gap:var(--space-3)}}.card-tags{display:flex;flex-wrap:wrap;gap:var(--space-2)}.card-tag{background:var(--bg-tertiary);color:var(--text-secondary);padding:var(--space-1) var(--space-2);border-radius:var(--radius-sm);font-size:var(--text-xs);font-weight:500;border:1px solid var(--border-light)}.more-tags{background:var(--accent-secondary);color:#fff;padding:var(--space-1) var(--space-2);border-radius:var(--radius-sm);font-size:var(--text-xs);font-weight:600}.reading-time{font-size:var(--text-xs);color:var(--text-tertiary);font-weight:500}.article-view{max-width:800px;margin:0 auto}.back-button{background:var(--surface);border:1px solid var(--border-light);color:var(--text-secondary);padding:var(--space-2) var(--space-4);border-radius:var(--radius-lg);font-size:var(--text-sm);font-weight:500;cursor:pointer;transition:all var(--transition-fast);margin-bottom:var(--space-8);text-decoration:none;display:inline-flex;align-items:center;gap:var(--space-2)}.back-button:hover{background:var(--bg-tertiary);color:var(--text-primary);border-color:var(--border-medium)}.article{background:var(--surface);border-radius:var(--radius-xl);border:1px solid var(--border-light);box-shadow:var(--shadow-lg);overflow:hidden}.article-header{padding:var(--space-8) var(--space-8) var(--space-6) var(--space-8);border-bottom:1px solid var(--border-light);background:var(--bg-secondary)}.article-header h1{margin-bottom:var(--space-6);font-size:var(--text-3xl);line-height:1.2}@media (min-width: 768px){.article-header h1{font-size:var(--text-4xl)}}.article-meta{display:flex;justify-content:space-between;align-items:center;margin-bottom:var(--space-6);gap:var(--space-4)}@media (max-width: 480px){.article-meta{flex-direction:column;align-items:flex-start;gap:var(--space-3)}}.author-photo{width:40px;height:40px;border-radius:50%;border:2px solid var(--border-light)}.author-details{display:flex;flex-direction:column;gap:var(--space-1)}.author-details .author-name{font-weight:600;color:var(--text-primary)}.author-details .publish-date{font-size:var(--text-sm);color:var(--text-secondary)}.reading-info{text-align:right}@media (max-width: 480px){.reading-info{text-align:left}}.article-tags{display:flex;flex-wrap:wrap;gap:var(--space-2)}.article-tag{background:var(--accent-secondary);color:#fff;padding:var(--space-2) var(--space-3);border-radius:var(--radius-md);font-size:var(--text-sm);font-weight:500}.article-content{padding:var(--space-8)}.article-content p{margin-bottom:var(--space-6);line-height:1.8;font-size:var(--text-lg);color:var(--text-primary)}.article-content p:last-child{margin-bottom:0}.blog-footer{padding:var(--space-16) 0;background:var(--bg-secondary);text-align:center}.blog-footer h2{margin-bottom:var(--space-4)}.blog-footer p{font-size:var(--text-lg);line-height:1.7;max-width:600px;margin:0 auto var(--space-8) auto}.newsletter-note{background:var(--surface);padding:var(--space-6);border-radius:var(--radius-xl);border:1px solid var(--border-light);max-width:500px;margin:0 auto}.article-content h1,.article-content h2,.article-content h3{margin-top:var(--space-8);margin-bottom:var(--space-4);line-height:1.3}.article-content h1{font-size:var(--text-3xl);color:var(--text-primary)}.article-content h2{font-size:var(--text-2xl);color:var(--text-primary)}.article-content h3{font-size:var(--text-xl);color:var(--text-primary)}.article-content ul,.article-content ol{margin-bottom:var(--space-6);padding-left:var(--space-6)}.article-content li{margin-bottom:var(--space-2);line-height:1.7}.article-content blockquote{border-left:4px solid var(--accent);padding-left:var(--space-4);margin:var(--space-6) 0;font-style:italic;color:var(--text-secondary);background:var(--bg-tertiary);padding:var(--space-4) var(--space-4) var(--space-4) var(--space-6);border-radius:var(--radius-md)}.article-content code{background:var(--bg-tertiary);padding:var(--space-1) var(--space-2);border-radius:var(--radius-sm);font-family:Courier New,monospace;font-size:.9em;color:var(--text-primary)}.article-content pre{background:var(--neutral-900);color:var(--neutral-100);padding:var(--space-4);border-radius:var(--radius-md);overflow-x:auto;margin:var(--space-6) 0}.article-content pre code{background:none;padding:0;color:inherit}.article-content img{max-width:100%;height:auto;border-radius:var(--radius-md);box-shadow:var(--shadow-sm);margin:var(--space-4) 0}.article-content a{color:var(--accent);text-decoration:underline;transition:color var(--transition-fast)}.article-content a:hover{color:var(--accent-secondary)}.article-content strong{font-weight:700;color:var(--text-primary)}.article-content em{font-style:italic}.card-featured-image{border-radius:var(--radius-xl) var(--radius-xl) 0 0;overflow:hidden;background:var(--bg-tertiary)}.card-featured-image img{transition:transform var(--transition-normal)}.article-card:hover .card-featured-image img{transform:scale(1.05)}.ql-toolbar{border-top:1px solid #ddd!important;border-left:1px solid #ddd!important;border-right:1px solid #ddd!important;border-bottom:none!important}.ql-container{border-bottom:1px solid #ddd!important;border-left:1px solid #ddd!important;border-right:1px solid #ddd!important;border-top:none!important}.ql-editor{min-height:200px;font-family:inherit;font-size:var(--text-base);line-height:1.6}.newsletter-note p{margin:0;font-style:italic;color:var(--text-secondary)}
