.tabulator{background-color:#888;border:1px solid #999;font-size:14px;overflow:hidden;position:relative;text-align:left;-webkit-transform:translateZ(0);-moz-transform:translateZ(0);-ms-transform:translateZ(0);-o-transform:translateZ(0);transform:translateZ(0)}.tabulator[tabulator-layout=fitDataFill] .tabulator-tableholder .tabulator-table{min-width:100%}.tabulator[tabulator-layout=fitDataTable]{display:inline-block}.tabulator.tabulator-block-select,.tabulator.tabulator-ranges .tabulator-cell:not(.tabulator-editing){-webkit-user-select:none;user-select:none}.tabulator .tabulator-header{background-color:#e6e6e6;border-bottom:1px solid #999;box-sizing:border-box;color:#555;font-weight:700;outline:none;overflow:hidden;position:relative;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none;white-space:nowrap;width:100%}.tabulator .tabulator-header.tabulator-header-hidden{display:none}.tabulator .tabulator-header .tabulator-header-contents{overflow:hidden;position:relative}.tabulator .tabulator-header .tabulator-header-contents .tabulator-headers{display:inline-block}.tabulator .tabulator-header .tabulator-col{background:#e6e6e6;border-right:1px solid #aaa;box-sizing:border-box;display:inline-flex;flex-direction:column;justify-content:flex-start;overflow:hidden;position:relative;text-align:left;vertical-align:bottom}.tabulator .tabulator-header .tabulator-col.tabulator-moving{background:#cdcdcd;border:1px solid #999;pointer-events:none;position:absolute}.tabulator .tabulator-header .tabulator-col.tabulator-range-highlight{background-color:#d6d6d6;color:#000}.tabulator .tabulator-header .tabulator-col.tabulator-range-selected{background-color:#3876ca;color:#fff}.tabulator .tabulator-header .tabulator-col .tabulator-col-content{box-sizing:border-box;padding:4px;position:relative}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-popup-button{padding:0 8px}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-popup-button:hover{cursor:pointer;opacity:.6}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title-holder{position:relative}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title{box-sizing:border-box;overflow:hidden;text-overflow:ellipsis;vertical-align:bottom;white-space:nowrap;width:100%}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title.tabulator-col-title-wrap{text-overflow:clip;white-space:normal}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-title-editor{background:#fff;border:1px solid #999;box-sizing:border-box;padding:1px;width:100%}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-header-popup-button+.tabulator-title-editor{width:calc(100% - 22px)}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter{align-items:center;bottom:0;display:flex;position:absolute;right:4px;top:0}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter .tabulator-arrow{border-bottom:6px solid #bbb;border-left:6px solid transparent;border-right:6px solid transparent;height:0;width:0}.tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols{border-top:1px solid #aaa;display:flex;margin-right:-1px;overflow:hidden;position:relative}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter{box-sizing:border-box;margin-top:2px;position:relative;text-align:center;width:100%}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter textarea{height:auto!important}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter svg{margin-top:3px}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter input::-ms-clear{height:0;width:0}.tabulator .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title{padding-right:25px}@media(hover:hover)and (pointer:fine){.tabulator .tabulator-header .tabulator-col.tabulator-sortable.tabulator-col-sorter-element:hover{background-color:#cdcdcd;cursor:pointer}}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=none] .tabulator-col-content .tabulator-col-sorter{color:#bbb}@media(hover:hover)and (pointer:fine){.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=none] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover{border-bottom:6px solid #555;cursor:pointer}}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=none] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow{border-bottom:6px solid #bbb;border-top:none}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=ascending] .tabulator-col-content .tabulator-col-sorter{color:#666}@media(hover:hover)and (pointer:fine){.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=ascending] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover{border-bottom:6px solid #555;cursor:pointer}}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=ascending] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow{border-bottom:6px solid #666;border-top:none}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=descending] .tabulator-col-content .tabulator-col-sorter{color:#666}@media(hover:hover)and (pointer:fine){.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=descending] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover{border-top:6px solid #555;cursor:pointer}}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=descending] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow{border-bottom:none;border-top:6px solid #666;color:#666}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical .tabulator-col-content .tabulator-col-title{align-items:center;display:flex;justify-content:center;text-orientation:mixed;writing-mode:vertical-rl}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-col-vertical-flip .tabulator-col-title{transform:rotate(180deg)}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-title{padding-right:0;padding-top:20px}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable.tabulator-col-vertical-flip .tabulator-col-title{padding-bottom:20px;padding-right:0}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-sorter{bottom:auto;justify-content:center;left:0;right:0;top:4px}.tabulator .tabulator-header .tabulator-frozen{left:0;position:sticky;z-index:11}.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-left{border-right:2px solid #aaa}.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-right{border-left:2px solid #aaa}.tabulator .tabulator-header .tabulator-calcs-holder{background:#f3f3f3!important;border-bottom:1px solid #aaa;border-top:1px solid #aaa;box-sizing:border-box;display:inline-block}.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row{background:#f3f3f3!important}.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle{display:none}.tabulator .tabulator-header .tabulator-frozen-rows-holder{display:inline-block;padding-top:1em}.tabulator .tabulator-header .tabulator-frozen-rows-holder:empty{display:none}.tabulator .tabulator-tableholder{-webkit-overflow-scrolling:touch;overflow:auto;position:relative;white-space:nowrap;width:100%}.tabulator .tabulator-tableholder:focus{outline:none}.tabulator .tabulator-tableholder .tabulator-placeholder{align-items:center;box-sizing:border-box;display:flex;justify-content:center;min-width:100%;width:100%}.tabulator .tabulator-tableholder .tabulator-placeholder[tabulator-render-mode=virtual]{min-height:100%}.tabulator .tabulator-tableholder .tabulator-placeholder .tabulator-placeholder-contents{color:#ccc;display:inline-block;font-size:20px;font-weight:700;padding:10px;text-align:center;white-space:normal}.tabulator .tabulator-tableholder .tabulator-table{background-color:#fff;color:#333;display:inline-block;overflow:visible;position:relative;white-space:nowrap}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs{background:#e2e2e2!important;font-weight:700}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-top{border-bottom:2px solid #aaa}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-bottom{border-top:2px solid #aaa}.tabulator .tabulator-tableholder .tabulator-range-overlay{top:0;right:0;bottom:0;left:0;pointer-events:none;position:absolute;z-index:10}.tabulator .tabulator-tableholder .tabulator-range-overlay .tabulator-range{border:1px solid #2975dd;box-sizing:border-box;position:absolute}.tabulator .tabulator-tableholder .tabulator-range-overlay .tabulator-range.tabulator-range-active:after{background-color:#2975dd;border-radius:999px;bottom:-3px;content:"";height:6px;position:absolute;right:-3px;width:6px}.tabulator .tabulator-tableholder .tabulator-range-overlay .tabulator-range-cell-active{border:2px solid #2975dd;box-sizing:border-box;position:absolute}.tabulator .tabulator-footer{background-color:#e6e6e6;border-top:1px solid #999;color:#555;font-weight:700;user-select:none;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none;white-space:nowrap}.tabulator .tabulator-footer .tabulator-footer-contents{align-items:center;display:flex;flex-direction:row;justify-content:space-between;padding:5px 10px}.tabulator .tabulator-footer .tabulator-footer-contents:empty{display:none}.tabulator .tabulator-footer .tabulator-spreadsheet-tabs{margin-top:-5px;overflow-x:auto}.tabulator .tabulator-footer .tabulator-spreadsheet-tabs .tabulator-spreadsheet-tab{border:1px solid #999;border-bottom-left-radius:5px;border-bottom-right-radius:5px;border-top:none;display:inline-block;font-size:.9em;padding:5px}.tabulator .tabulator-footer .tabulator-spreadsheet-tabs .tabulator-spreadsheet-tab:hover{cursor:pointer;opacity:.7}.tabulator .tabulator-footer .tabulator-spreadsheet-tabs .tabulator-spreadsheet-tab.tabulator-spreadsheet-tab-active{background:#fff}.tabulator .tabulator-footer .tabulator-calcs-holder{background:#f3f3f3!important;border-bottom:1px solid #aaa;border-top:1px solid #aaa;box-sizing:border-box;overflow:hidden;text-align:left;width:100%}.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row{background:#f3f3f3!important;display:inline-block}.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle{display:none}.tabulator .tabulator-footer .tabulator-calcs-holder:only-child{border-bottom:none;margin-bottom:-5px}.tabulator .tabulator-footer>*+.tabulator-page-counter{margin-left:10px}.tabulator .tabulator-footer .tabulator-page-counter{font-weight:400}.tabulator .tabulator-footer .tabulator-paginator{color:#555;flex:1;font-family:inherit;font-size:inherit;font-weight:inherit;text-align:right}.tabulator .tabulator-footer .tabulator-page-size{border:1px solid #aaa;border-radius:3px;display:inline-block;margin:0 5px;padding:2px 5px}.tabulator .tabulator-footer .tabulator-pages{margin:0 7px}.tabulator .tabulator-footer .tabulator-page{background:#fff3;border:1px solid #aaa;border-radius:3px;display:inline-block;margin:0 2px;padding:2px 5px}.tabulator .tabulator-footer .tabulator-page.active{color:#d00}.tabulator .tabulator-footer .tabulator-page:disabled{opacity:.5}@media(hover:hover)and (pointer:fine){.tabulator .tabulator-footer .tabulator-page:not(disabled):hover{background:#0003;color:#fff;cursor:pointer}}.tabulator .tabulator-col-resize-handle{display:inline-block;margin-left:-3px;margin-right:-3px;position:relative;vertical-align:middle;width:6px;z-index:11}@media(hover:hover)and (pointer:fine){.tabulator .tabulator-col-resize-handle:hover{cursor:ew-resize}}.tabulator .tabulator-col-resize-handle:last-of-type{margin-right:0;width:3px}.tabulator .tabulator-col-resize-guide{background-color:#999;height:100%;margin-left:-.5px;opacity:.5;position:absolute;top:0;width:4px}.tabulator .tabulator-row-resize-guide{background-color:#999;height:4px;left:0;margin-top:-.5px;opacity:.5;position:absolute;width:100%}.tabulator .tabulator-alert{align-items:center;background:#0006;display:flex;height:100%;left:0;position:absolute;text-align:center;top:0;width:100%;z-index:100}.tabulator .tabulator-alert .tabulator-alert-msg{background:#fff;border-radius:10px;display:inline-block;font-size:16px;font-weight:700;margin:0 auto;padding:10px 20px}.tabulator .tabulator-alert .tabulator-alert-msg.tabulator-alert-state-msg{border:4px solid #333;color:#000}.tabulator .tabulator-alert .tabulator-alert-msg.tabulator-alert-state-error{border:4px solid #d00;color:#590000}.tabulator-row{background-color:#fff;box-sizing:border-box;min-height:22px;position:relative}.tabulator-row.tabulator-row-even{background-color:#efefef}@media(hover:hover)and (pointer:fine){.tabulator-row.tabulator-selectable:hover{background-color:#bbb;cursor:pointer}}.tabulator-row.tabulator-selected{background-color:#9abcea}@media(hover:hover)and (pointer:fine){.tabulator-row.tabulator-selected:hover{background-color:#769bcc;cursor:pointer}}.tabulator-row.tabulator-row-moving{background:#fff;border:1px solid #000}.tabulator-row.tabulator-moving{border-bottom:1px solid #aaa;border-top:1px solid #aaa;pointer-events:none;position:absolute;z-index:15}.tabulator-row.tabulator-range-highlight .tabulator-cell.tabulator-range-row-header{background-color:#d6d6d6;color:#000}.tabulator-row.tabulator-range-highlight.tabulator-range-selected .tabulator-cell.tabulator-range-row-header,.tabulator-row.tabulator-range-selected .tabulator-cell.tabulator-range-row-header{background-color:#3876ca;color:#fff}.tabulator-row .tabulator-row-resize-handle{bottom:0;height:5px;left:0;position:absolute;right:0}.tabulator-row .tabulator-row-resize-handle.prev{bottom:auto;top:0}@media(hover:hover)and (pointer:fine){.tabulator-row .tabulator-row-resize-handle:hover{cursor:ns-resize}}.tabulator-row .tabulator-responsive-collapse{border-bottom:1px solid #aaa;border-top:1px solid #aaa;box-sizing:border-box;padding:5px}.tabulator-row .tabulator-responsive-collapse:empty{display:none}.tabulator-row .tabulator-responsive-collapse table{font-size:14px}.tabulator-row .tabulator-responsive-collapse table tr td{position:relative}.tabulator-row .tabulator-responsive-collapse table tr td:first-of-type{padding-right:10px}.tabulator-row .tabulator-cell{border-right:1px solid #aaa;box-sizing:border-box;display:inline-block;outline:none;overflow:hidden;padding:4px;position:relative;text-overflow:ellipsis;vertical-align:middle;white-space:nowrap}.tabulator-row .tabulator-cell .tabulator-tick{fill:#2dc214}.tabulator-row .tabulator-cell .tabulator-cross{fill:#ce1515}.tabulator-row .tabulator-cell.tabulator-row-header{background:#e6e6e6;border-bottom:1px solid #aaa;border-right:1px solid #999}.tabulator-row .tabulator-cell.tabulator-frozen{background-color:inherit;display:inline-block;left:0;position:sticky;z-index:11}.tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-left{border-right:2px solid #aaa}.tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-right{border-left:2px solid #aaa}.tabulator-row .tabulator-cell.tabulator-editing{border:1px solid #1d68cd;outline:none;padding:0}.tabulator-row .tabulator-cell.tabulator-editing input,.tabulator-row .tabulator-cell.tabulator-editing select{background:transparent;border:1px;outline:none}.tabulator-row .tabulator-cell.tabulator-validation-fail{border:1px solid #d00}.tabulator-row .tabulator-cell.tabulator-validation-fail input,.tabulator-row .tabulator-cell.tabulator-validation-fail select{background:transparent;border:1px;color:#d00}.tabulator-row .tabulator-cell.tabulator-row-handle{align-items:center;display:inline-flex;justify-content:center;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none}.tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box{width:80%}.tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box .tabulator-row-handle-bar{background:#666;height:3px;margin-top:2px;width:100%}.tabulator-row .tabulator-cell.tabulator-range-selected:not(.tabulator-range-only-cell-selected):not(.tabulator-range-row-header){background-color:#9abcea}.tabulator-row .tabulator-cell .tabulator-data-tree-branch-empty{display:inline-block;width:7px}.tabulator-row .tabulator-cell .tabulator-data-tree-branch{border-bottom:2px solid #aaa;border-bottom-left-radius:1px;border-left:2px solid #aaa;display:inline-block;height:9px;margin-right:5px;margin-top:-9px;vertical-align:middle;width:7px}.tabulator-row .tabulator-cell .tabulator-data-tree-control{align-items:center;background:#0000001a;border:1px solid #333;border-radius:2px;display:inline-flex;height:11px;justify-content:center;margin-right:5px;overflow:hidden;vertical-align:middle;width:11px}@media(hover:hover)and (pointer:fine){.tabulator-row .tabulator-cell .tabulator-data-tree-control:hover{background:#0003;cursor:pointer}}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse{background:transparent;display:inline-block;height:7px;position:relative;width:1px}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after{background:#333;content:"";height:1px;left:-3px;position:absolute;top:3px;width:7px}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand{background:#333;display:inline-block;height:7px;position:relative;width:1px}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand:after{background:#333;content:"";height:1px;left:-3px;position:absolute;top:3px;width:7px}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle{align-items:center;background:#666;border-radius:20px;color:#fff;display:inline-flex;font-size:1.1em;font-weight:700;height:15px;justify-content:center;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none;width:15px}@media(hover:hover)and (pointer:fine){.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle:hover{cursor:pointer;opacity:.7}}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-close{display:initial}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-open{display:none}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle svg{stroke:#fff}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle .tabulator-responsive-collapse-toggle-close{display:none}.tabulator-row .tabulator-cell .tabulator-traffic-light{border-radius:14px;display:inline-block;height:14px;width:14px}.tabulator-row.tabulator-group{background:#ccc;border-bottom:1px solid #999;border-right:1px solid #aaa;border-top:1px solid #999;box-sizing:border-box;font-weight:700;min-width:100%;padding:5px 5px 5px 10px}@media(hover:hover)and (pointer:fine){.tabulator-row.tabulator-group:hover{background-color:#0000001a;cursor:pointer}}.tabulator-row.tabulator-group.tabulator-group-visible .tabulator-arrow{border-bottom:0;border-left:6px solid transparent;border-right:6px solid transparent;border-top:6px solid #666;margin-right:10px}.tabulator-row.tabulator-group.tabulator-group-level-1{padding-left:30px}.tabulator-row.tabulator-group.tabulator-group-level-2{padding-left:50px}.tabulator-row.tabulator-group.tabulator-group-level-3{padding-left:70px}.tabulator-row.tabulator-group.tabulator-group-level-4{padding-left:90px}.tabulator-row.tabulator-group.tabulator-group-level-5{padding-left:110px}.tabulator-row.tabulator-group .tabulator-group-toggle{display:inline-block}.tabulator-row.tabulator-group .tabulator-arrow{border-bottom:6px solid transparent;border-left:6px solid #666;border-right:0;border-top:6px solid transparent;display:inline-block;height:0;margin-right:16px;vertical-align:middle;width:0}.tabulator-row.tabulator-group span{color:#d00;margin-left:10px}.tabulator-toggle{background:#dcdcdc;border:1px solid #ccc;box-sizing:border-box;display:flex;flex-direction:row}.tabulator-toggle.tabulator-toggle-on{background:#1c6cc2}.tabulator-toggle .tabulator-toggle-switch{background:#fff;border:1px solid #ccc;box-sizing:border-box}.tabulator-popup-container{-webkit-overflow-scrolling:touch;background:#fff;border:1px solid #aaa;box-shadow:0 0 5px #0003;box-sizing:border-box;display:inline-block;font-size:14px;overflow-y:auto;position:absolute;z-index:10000}.tabulator-popup{border-radius:3px;padding:5px}.tabulator-tooltip{border-radius:2px;box-shadow:none;font-size:12px;max-width:min(500px,100%);padding:3px 5px;pointer-events:none}.tabulator-menu .tabulator-menu-item{box-sizing:border-box;padding:5px 10px;position:relative;-webkit-user-select:none;user-select:none}.tabulator-menu .tabulator-menu-item.tabulator-menu-item-disabled{opacity:.5}@media(hover:hover)and (pointer:fine){.tabulator-menu .tabulator-menu-item:not(.tabulator-menu-item-disabled):hover{background:#efefef;cursor:pointer}}.tabulator-menu .tabulator-menu-item.tabulator-menu-item-submenu{padding-right:25px}.tabulator-menu .tabulator-menu-item.tabulator-menu-item-submenu:after{border-color:#aaa;border-style:solid;border-width:1px 1px 0 0;content:"";display:inline-block;height:7px;position:absolute;right:10px;top:calc(5px + .4em);transform:rotate(45deg);vertical-align:top;width:7px}.tabulator-menu .tabulator-menu-separator{border-top:1px solid #aaa}.tabulator-edit-list{-webkit-overflow-scrolling:touch;font-size:14px;max-height:200px;overflow-y:auto}.tabulator-edit-list .tabulator-edit-list-item{color:#333;outline:none;padding:4px}.tabulator-edit-list .tabulator-edit-list-item.active{background:#1d68cd;color:#fff}.tabulator-edit-list .tabulator-edit-list-item.active.focused{outline:1px solid hsla(0,0%,100%,.5)}.tabulator-edit-list .tabulator-edit-list-item.focused{outline:1px solid #1d68cd}@media(hover:hover)and (pointer:fine){.tabulator-edit-list .tabulator-edit-list-item:hover{background:#1d68cd;color:#fff;cursor:pointer}}.tabulator-edit-list .tabulator-edit-list-placeholder{color:#333;padding:4px;text-align:center}.tabulator-edit-list .tabulator-edit-list-group{border-bottom:1px solid #aaa;color:#333;font-weight:700;padding:6px 4px 4px}.tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-2,.tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-2{padding-left:12px}.tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-3,.tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-3{padding-left:20px}.tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-4,.tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-4{padding-left:28px}.tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-5,.tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-5{padding-left:36px}.tabulator.tabulator-ltr{direction:ltr}.tabulator.tabulator-rtl{direction:rtl;text-align:initial}.tabulator.tabulator-rtl .tabulator-header .tabulator-col{border-left:1px solid #aaa;border-right:initial;text-align:initial}.tabulator.tabulator-rtl .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols{margin-left:-1px;margin-right:0}.tabulator.tabulator-rtl .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title{padding-left:25px;padding-right:0}.tabulator.tabulator-rtl .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter{left:8px;right:auto}.tabulator.tabulator-rtl .tabulator-tableholder .tabulator-range-overlay .tabulator-range.tabulator-range-active:after{background-color:#2975dd;border-radius:999px;bottom:-3px;content:"";height:6px;left:-3px;position:absolute;right:auto;width:6px}.tabulator.tabulator-rtl .tabulator-row .tabulator-cell{border-left:1px solid #aaa;border-right:initial}.tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-branch{border-bottom-left-radius:0;border-bottom-right-radius:1px;border-left:initial;border-right:2px solid #aaa;margin-left:5px;margin-right:0}.tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-control{margin-left:5px;margin-right:0}.tabulator.tabulator-rtl .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-left{border-left:2px solid #aaa}.tabulator.tabulator-rtl .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-right{border-right:2px solid #aaa}.tabulator.tabulator-rtl .tabulator-row .tabulator-col-resize-handle:last-of-type{margin-left:0;margin-right:-3px;width:3px}.tabulator.tabulator-rtl .tabulator-footer .tabulator-calcs-holder{text-align:initial}.tabulator-print-fullscreen{bottom:0;left:0;position:absolute;right:0;top:0;z-index:10000}body.tabulator-print-fullscreen-hide>:not(.tabulator-print-fullscreen){display:none!important}.tabulator-print-table{border-collapse:collapse}.tabulator-print-table .tabulator-data-tree-branch{border-bottom:2px solid #aaa;border-bottom-left-radius:1px;border-left:2px solid #aaa;display:inline-block;height:9px;margin-right:5px;margin-top:-9px;vertical-align:middle;width:7px}.tabulator-print-table .tabulator-print-table-group{background:#ccc;border-bottom:1px solid #999;border-right:1px solid #aaa;border-top:1px solid #999;box-sizing:border-box;font-weight:700;min-width:100%;padding:5px 5px 5px 10px}@media(hover:hover)and (pointer:fine){.tabulator-print-table .tabulator-print-table-group:hover{background-color:#0000001a;cursor:pointer}}.tabulator-print-table .tabulator-print-table-group.tabulator-group-visible .tabulator-arrow{border-bottom:0;border-left:6px solid transparent;border-right:6px solid transparent;border-top:6px solid #666;margin-right:10px}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-1 td{padding-left:30px!important}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-2 td{padding-left:50px!important}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-3 td{padding-left:70px!important}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-4 td{padding-left:90px!important}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-5 td{padding-left:110px!important}.tabulator-print-table .tabulator-print-table-group .tabulator-group-toggle{display:inline-block}.tabulator-print-table .tabulator-print-table-group .tabulator-arrow{border-bottom:6px solid transparent;border-left:6px solid #666;border-right:0;border-top:6px solid transparent;display:inline-block;height:0;margin-right:16px;vertical-align:middle;width:0}.tabulator-print-table .tabulator-print-table-group span{color:#d00;margin-left:10px}.tabulator-print-table .tabulator-data-tree-control{align-items:center;background:#0000001a;border:1px solid #333;border-radius:2px;display:inline-flex;height:11px;justify-content:center;margin-right:5px;overflow:hidden;vertical-align:middle;width:11px}@media(hover:hover)and (pointer:fine){.tabulator-print-table .tabulator-data-tree-control:hover{background:#0003;cursor:pointer}}.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse{background:transparent;display:inline-block;height:7px;position:relative;width:1px}.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after{background:#333;content:"";height:1px;left:-3px;position:absolute;top:3px;width:7px}.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand{background:#333;display:inline-block;height:7px;position:relative;width:1px}.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand:after{background:#333;content:"";height:1px;left:-3px;position:absolute;top:3px;width:7px}:root{--color-bg: #f8fafc;--color-surface: #ffffff;--color-text: #0f172a;--color-text-muted: #475569;--color-border: #e2e8f0;--color-accent: #0d9488;--color-accent-hover: #0f766e;--color-accent-soft: #ccfbf1;--color-navy: #1e293b;--color-tag-bg: #f1f5f9;--skill-language-bg: #fffbeb;--skill-language-border: #fcd34d;--skill-language-fg: #b45309;--skill-backend-bg: #ecfdf5;--skill-backend-border: #6ee7b7;--skill-backend-fg: #047857;--skill-frontend-bg: #eff6ff;--skill-frontend-border: #93c5fd;--skill-frontend-fg: #1d4ed8;--skill-db-bg: #eef2ff;--skill-db-border: #a5b4fc;--skill-db-fg: #4338ca;--skill-infra-bg: #f5f3ff;--skill-infra-border: #c4b5fd;--skill-infra-fg: #6d28d9;--skill-tooling-bg: #f8fafc;--skill-tooling-border: #cbd5e1;--skill-tooling-fg: #475569;--shadow-sm: 0 1px 2px rgba(15, 23, 42, .06);--shadow-md: 0 8px 24px rgba(15, 23, 42, .08);--radius: 12px;--radius-sm: 8px;--font-sans: "Pretendard Variable", Pretendard, -apple-system, BlinkMacSystemFont, system-ui, Roboto, "Helvetica Neue", "Segoe UI", "Apple SD Gothic Neo", "Noto Sans KR", "Malgun Gothic", sans-serif;--font-mono: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, monospace;--max-width: 1080px;--header-height: 64px}*,*:before,*:after{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;font-family:var(--font-sans);font-size:16px;line-height:1.6;color:var(--color-text);background:var(--color-bg);-webkit-font-smoothing:antialiased}img{max-width:100%;height:auto;display:block}a{color:var(--color-accent);text-decoration:none}a:hover{color:var(--color-accent-hover);text-decoration:underline}h1,h2,h3,h4{line-height:1.3;color:var(--color-text)}h1{font-size:clamp(1.75rem,4vw,2.5rem);margin:0 0 .5rem}h2{font-size:clamp(1.25rem,3vw,1.75rem);margin:0 0 1rem}h3{font-size:1.125rem;margin:0 0 .5rem}p{margin:0 0 1rem}ul,ol{margin:0 0 1rem;padding-left:1.25rem}code{font-family:var(--font-mono);font-size:.875em}code:not([class*=language-]){background:var(--color-tag-bg);padding:.15em .4em;border-radius:4px}.skip-link{position:absolute;top:-100%;left:1rem;z-index:200;padding:.5rem 1rem;background:var(--color-accent);color:#fff;border-radius:var(--radius-sm)}.skip-link:focus{top:1rem}.container{width:min(100% - 2rem,var(--max-width));margin-inline:auto}.btn{display:inline-flex;align-items:center;justify-content:center;gap:.5rem;padding:.625rem 1.25rem;font-size:.9375rem;font-weight:600;border-radius:var(--radius-sm);border:1px solid transparent;cursor:pointer;text-decoration:none;transition:background .15s,color .15s,border-color .15s}.btn:hover{text-decoration:none}.btn-primary{background:var(--color-accent);color:#fff}.btn-primary:hover{background:var(--color-accent-hover);color:#fff}.btn-secondary{background:var(--color-surface);color:var(--color-text);border-color:var(--color-border)}.btn-secondary:hover{border-color:var(--color-accent);color:var(--color-accent)}.btn-ghost{background:transparent;color:var(--color-text-muted);border-color:var(--color-border)}.tag{display:inline-block;padding:.25rem .625rem;font-size:.8125rem;font-weight:500;background:var(--color-tag-bg);color:var(--color-text-muted);border-radius:999px;margin:.125rem}.tag-accent{background:var(--color-accent-soft);color:var(--color-accent-hover)}.skill-tag{display:inline-flex;align-items:center;gap:.375rem;padding:.3125rem .75rem;font-size:.8125rem;font-weight:600;line-height:1.2;border:1px solid transparent;border-radius:999px}.skill-tag__icon{width:.875rem;height:.875rem;flex-shrink:0}.skill-tag__label{white-space:nowrap}.skill-tag--language{background:var(--skill-language-bg);border-color:var(--skill-language-border);color:var(--skill-language-fg)}.skill-tag--backend{background:var(--skill-backend-bg);border-color:var(--skill-backend-border);color:var(--skill-backend-fg)}.skill-tag--frontend{background:var(--skill-frontend-bg);border-color:var(--skill-frontend-border);color:var(--skill-frontend-fg)}.skill-tag--db{background:var(--skill-db-bg);border-color:var(--skill-db-border);color:var(--skill-db-fg)}.skill-tag--infra{background:var(--skill-infra-bg);border-color:var(--skill-infra-border);color:var(--skill-infra-fg)}.skill-tag--tooling{background:var(--skill-tooling-bg);border-color:var(--skill-tooling-border);color:var(--skill-tooling-fg)}.section{padding:3rem 0}.section-title{margin-bottom:1.5rem;padding-bottom:.5rem;border-bottom:2px solid var(--color-accent);display:inline-block}.card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);padding:1.5rem;box-shadow:var(--shadow-sm)}.card-grid{display:grid;gap:1.25rem;grid-template-columns:repeat(auto-fill,minmax(280px,1fr))}.meta{color:var(--color-text-muted);font-size:.875rem}.case-block{margin-bottom:1.5rem}.case-block h4{font-size:.875rem;text-transform:uppercase;letter-spacing:.05em;color:var(--color-accent);margin-bottom:.5rem}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.site-header{position:sticky;top:0;z-index:100;height:var(--header-height);background:color-mix(in srgb,var(--color-surface) 92%,transparent);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-bottom:1px solid var(--color-border)}.header-inner{display:flex;align-items:center;justify-content:space-between;height:var(--header-height);gap:1rem}.site-logo{font-weight:700;font-size:1.125rem;color:var(--color-text);text-decoration:none}.site-logo:hover{color:var(--color-accent);text-decoration:none}.site-nav ul{display:flex;align-items:center;gap:.25rem;list-style:none;margin:0;padding:0}.site-nav a{display:block;padding:.5rem .75rem;font-size:.875rem;font-weight:500;color:var(--color-text-muted);border-radius:var(--radius-sm);text-decoration:none}.site-nav a:hover,.site-nav a.active,.site-nav a[aria-current=page]{color:var(--color-accent);background:var(--color-accent-soft);text-decoration:none}.nav-toggle{display:none;width:36px;height:36px;padding:0;border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface);cursor:pointer}.nav-toggle span{display:block;width:18px;height:2px;margin:4px auto;background:var(--color-text)}.site-footer{margin-top:4rem;padding:2rem 0;border-top:1px solid var(--color-border);background:var(--color-surface)}.footer-inner{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:1rem}.footer-links{display:flex;flex-wrap:wrap;gap:1rem;list-style:none;margin:0;padding:0}.footer-links a{font-size:.875rem;color:var(--color-text-muted)}.hero{padding:4rem 0 3rem;text-align:center}.hero-badge{display:inline-block;padding:.375rem .875rem;margin-bottom:1rem;font-size:.8125rem;font-weight:600;color:var(--color-accent);background:var(--color-accent-soft);border-radius:999px}.hero-subtitle{font-size:clamp(1rem,2.5vw,1.25rem);color:var(--color-text-muted);max-width:640px;margin:0 auto 2rem}.hero-cta{display:flex;flex-wrap:wrap;gap:.75rem;justify-content:center;margin-bottom:2rem}.hero-meta{display:flex;flex-wrap:wrap;gap:1rem;justify-content:center;font-size:.875rem;color:var(--color-text-muted)}.featured-project{margin-top:3rem;text-align:left}.featured-project .card{display:grid;gap:1.5rem;grid-template-columns:1fr;border-color:var(--color-accent);box-shadow:var(--shadow-md)}@media(min-width:768px){.featured-project .card{grid-template-columns:1fr auto;align-items:center}}.skills-grid{display:flex;flex-wrap:wrap;gap:.5rem}.project-card{display:flex;flex-direction:column;height:100%;transition:transform .15s,box-shadow .15s}.project-card:hover{transform:translateY(-2px);box-shadow:var(--shadow-md)}.project-card h3{margin-bottom:.5rem}.project-card .tags{margin-top:auto;padding-top:1rem}.project-card a.card-link{color:inherit;text-decoration:none}.project-card a.card-link:hover{text-decoration:none}.filter-bar{display:flex;flex-wrap:wrap;gap:.5rem;margin-bottom:1.5rem}.filter-btn{padding:.375rem .875rem;font-size:.8125rem;font-weight:500;border:1px solid var(--color-border);border-radius:999px;background:var(--color-surface);color:var(--color-text-muted);cursor:pointer}.filter-btn.active,.filter-btn:hover{border-color:var(--color-accent);color:var(--color-accent);background:var(--color-accent-soft)}.portfolio-group{margin-top:2rem}.portfolio-group:first-of-type{margin-top:1.5rem}.portfolio-group+.portfolio-group{margin-top:2.5rem;padding-top:2rem;border-top:2px solid var(--color-navy)}.resume-header{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1rem;margin-bottom:0;padding-bottom:0}.resume-contact{list-style:none;padding:0;margin:0;font-size:.875rem}.resume-contact li{margin-bottom:.25rem}.resume-contact li:last-child{margin-bottom:0}.resume-contact-link{display:inline-flex;align-items:center;gap:.5rem}.resume-contact-icon{width:1rem;height:1rem;flex-shrink:0;color:var(--color-text-muted)}.resume-section{padding:2rem 0;border-top:2px solid var(--color-navy)}.resume-section:first-of-type{padding-top:1.75rem}.resume-section h2{margin:0 0 1.25rem;padding-bottom:.625rem;font-size:1.125rem;letter-spacing:-.01em;border-bottom:1px solid var(--color-border)}.resume-skills-table th[scope=row]{width:7.5rem;font-weight:600;vertical-align:top;white-space:nowrap;background:var(--color-tag-bg)}.resume-skills-table td{vertical-align:top}.resume-skill-chips{display:flex;flex-wrap:wrap;gap:.5rem}.resume-skill-chip{display:inline-flex;align-items:center;gap:.375rem;padding:.3125rem .75rem;font-size:.8125rem;font-weight:600;line-height:1.2;border:1px solid var(--color-border);border-radius:999px;background:var(--color-tag-bg);color:var(--color-text)}.resume-skill-chip--branded{color:var(--chip-brand, var(--color-text))}.resume-skill-chip--neutral{color:var(--color-text);border-color:var(--color-border);background:var(--color-tag-bg)}.resume-skill-chip__icon{width:1rem;height:1rem;flex-shrink:0}.resume-skill-chip__label{white-space:nowrap}.resume-table{width:100%;border-collapse:separate;border-spacing:0;font-size:.875rem;border:1px solid var(--color-border);border-radius:var(--radius-sm);overflow:hidden}.resume-table th,.resume-table td{padding:.625rem .75rem;text-align:left;border-bottom:1px solid var(--color-border)}.resume-table tbody tr:last-child td{border-bottom:none}.resume-table th{background:var(--color-tag-bg);font-weight:600}.resume-company-list{display:flex;flex-direction:column;gap:1.25rem}.resume-company{padding:1.25rem 1.5rem;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);box-shadow:var(--shadow-sm)}.resume-company-header h3{margin:0 0 .35rem;font-size:1.0625rem;line-height:1.4}.resume-company-header .meta{margin:0}.resume-company-header+.resume-project-list,.resume-company-header+.resume-project-items{margin-top:1rem;padding-top:1rem;border-top:1px solid var(--color-border)}.resume-project-list{display:flex;flex-direction:column;gap:1rem}.resume-project{padding:.875rem 0 .875rem 1rem;border-left:3px solid var(--color-accent);background:var(--color-tag-bg);border-radius:0 var(--radius-sm) var(--radius-sm) 0}.resume-project h4{margin:0 0 .5rem;font-size:.9375rem;font-weight:600;line-height:1.4}.resume-project ul,.resume-project-items{margin:0;padding-left:1.25rem;font-size:.875rem;line-height:1.6}.resume-project li,.resume-project-items li{margin-bottom:.35rem}.resume-project li:last-child,.resume-project-items li:last-child{margin-bottom:0}.case-study-hero{margin-bottom:2rem}.case-study-hero .meta{margin-bottom:1rem}.case-study-hero__lead{margin-top:1rem;line-height:1.75}.case-study-hero__lead+.case-study-hero__lead{margin-top:.75rem}.case-study-hero__actions{display:flex;flex-wrap:wrap;gap:.5rem;margin-top:1rem}.case-study-section p+p{margin-top:.75rem}.case-study-blocks{display:flex;flex-direction:column;gap:1.25rem}.case-study-block{padding:1rem 1.25rem;border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface)}.case-study-block__title{margin:0 0 .5rem;font-size:1rem;font-weight:600;line-height:1.45}.case-study-block__body{margin:0;line-height:1.75;color:var(--color-text-muted)}.case-study-block__body+.case-study-block__body{margin-top:.75rem}.case-study-block__note{margin:.5rem 0 0;font-size:.875rem;font-style:italic;font-weight:400;line-height:1.6;color:var(--color-text-muted)}.case-study-tech-table{background:var(--color-surface)}.case-study-tech-table th{background:var(--color-tag-bg);color:var(--color-text)}.case-study-tech-table td:first-child{width:11rem;font-weight:600;white-space:nowrap;color:var(--color-text)}.case-study-tech-table td:last-child{color:var(--color-text-muted)}.case-study-tech-table__note{display:block;margin-top:.4rem;font-size:.875rem;font-style:italic;font-weight:400;line-height:1.6;color:var(--color-text-muted)}.case-study-glossary td:first-child{width:8rem;font-weight:600;white-space:nowrap}.case-study-trouble-list{display:flex;flex-direction:column;gap:1.25rem}.case-study-trouble{padding:1.25rem 1.5rem}.case-study-trouble__block+.case-study-trouble__block{margin-top:1.25rem;padding-top:1.25rem;border-top:1px solid var(--color-border)}.case-study-trouble__block--resolution:not(.case-study-trouble__block--labeled){margin-top:0;padding-top:0;border-top:none}.case-study-trouble__label{margin:0 0 .5rem;font-size:.75rem;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--color-text-muted)}.case-study-trouble__issue{margin:0 0 .75rem;font-size:1rem;font-weight:600;line-height:1.45;color:var(--color-accent)}.case-study-trouble__body{margin:0;font-size:.9375rem;line-height:1.75;color:var(--color-text-muted)}.case-study-trouble__issue+.case-study-trouble__body,.case-study-trouble__body+.case-study-trouble__body{margin-top:.75rem}.case-study-trouble__context{margin:0 0 1rem;padding-left:1.25rem;line-height:1.7;color:var(--color-text-muted)}.case-study-trouble__context li+li{margin-top:.4rem}.case-study-trouble__resolution{margin:0;font-size:.9375rem;line-height:1.75;color:var(--color-text-muted)}.case-study-trouble__block--labeled .case-study-trouble__resolution{color:var(--color-text)}.case-study-trouble p{margin:0}.case-study-approach{padding:1.25rem 1.5rem;display:flex;flex-direction:column;gap:.75rem}.case-study-approach__paragraph{margin:0;line-height:1.75}.case-study-approach__list{margin:.25rem 0 0;padding-left:1.25rem;line-height:1.75}.case-study-approach__list li+li{margin-top:.35rem}.case-study-demo-links{margin:0 0 1rem;padding-left:1.25rem}.case-study-demo-context{margin:0 0 1rem;padding:1rem 1.25rem;background:var(--color-tag-bg);border:1px solid var(--color-border);border-radius:var(--radius-sm)}.case-study-demo-context__label{margin:0 0 .5rem;font-size:.875rem;font-weight:700;color:var(--color-text)}.case-study-demo-context__list{margin:0;padding-left:1.25rem;color:var(--color-text-muted)}.case-study-demo-context__list li+li{margin-top:.35rem}.paging-comparison-demo{margin:0}.paging-comparison-demo__caption{margin:0 0 .5rem;font-size:.875rem;color:var(--color-text-muted)}.paging-comparison-demo__lead{margin:0 0 1rem;color:var(--color-text-muted)}.paging-comparison-demo__status{margin:0 0 1rem;padding:.75rem 1rem;border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-tag-bg)}.paging-comparison-demo__status--error{color:var(--color-accent)}.paging-comparison-demo__grid{display:grid;gap:1rem;align-items:stretch}@media(min-width:960px){.paging-comparison-demo__grid{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}}.paging-demo-panel{position:relative;display:flex;flex-direction:column;min-width:0;height:100%;padding:1rem;border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface);box-shadow:var(--shadow-sm)}.paging-demo-panel__header{margin-bottom:.75rem}.paging-demo-panel__header h3{margin:0 0 .35rem;font-size:1rem}.paging-demo-panel__header p{margin:0;color:var(--color-text-muted);font-size:.875rem}.paging-demo-panel__stats{display:flex;flex-wrap:wrap;gap:.5rem 1rem;margin-bottom:.75rem;padding:.75rem .875rem;font-size:.875rem;background:var(--color-tag-bg);border:1px solid var(--color-border);border-radius:var(--radius-sm)}.paging-demo-panel__stats strong{color:var(--color-text)}.paging-demo-panel__table-wrap{position:relative;flex:1 1 auto;min-height:0;overflow-x:hidden;overflow-y:auto;height:332px}.paging-demo-panel__loading{position:absolute;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;background:color-mix(in srgb,var(--color-surface) 82%,transparent);font-size:.875rem;color:var(--color-text-muted);z-index:1}.paging-demo-panel__table{width:100%;min-width:0;height:100%;border-collapse:collapse;font-size:.8125rem;table-layout:fixed}.paging-demo-panel__table th,.paging-demo-panel__table td{padding:.5rem .6rem;border-bottom:1px solid var(--color-border);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.paging-demo-panel__table th{position:sticky;top:0;background:var(--color-tag-bg);z-index:1}.paging-demo-panel__table td{color:var(--color-text)}.paging-demo-panel__footer{display:flex;flex-wrap:wrap;gap:.75rem 1rem;align-items:center;justify-content:space-between;margin-top:.75rem}.paging-demo-panel__page-info{display:flex;flex-wrap:wrap;gap:.5rem .75rem;font-size:.875rem;color:var(--color-text-muted)}.paging-demo-panel__pager{display:flex;flex-wrap:wrap;gap:.35rem}.paging-demo-panel__pager button{min-width:2.25rem;padding:.35rem .6rem;border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface);color:var(--color-text-muted);cursor:pointer}.paging-demo-panel__pager button:disabled{cursor:default;opacity:.5}.paging-demo-panel__pager button.is-active{border-color:var(--color-accent);color:var(--color-accent);background:var(--color-accent-soft)}.paging-demo-panel__ellipsis{align-self:center;color:var(--color-text-muted)}.paging-demo-panel__tabulator{width:100%;min-width:0;height:100%}.paging-demo-panel .tabulator{font-size:.8125rem;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-sm);height:100%;width:100%}.paging-demo-panel .tabulator-header{background:var(--color-tag-bg);border-bottom:1px solid var(--color-border);color:var(--color-text)}.paging-demo-panel .tabulator .tabulator-col{border-right:1px solid var(--color-border);background:transparent}.paging-demo-panel .tabulator .tabulator-col-content{padding:.5rem .6rem}.paging-demo-panel .tabulator .tabulator-col-title{padding:0;white-space:nowrap}.paging-demo-panel .tabulator-row{background:var(--color-surface);border-bottom:1px solid var(--color-border);color:var(--color-text)}.paging-demo-panel .tabulator .tabulator-cell{padding:.5rem .6rem;border-right:1px solid var(--color-border)}.paging-demo-panel .tabulator-row.tabulator-row-even{background:color-mix(in srgb,var(--color-tag-bg) 50%,var(--color-surface))}.paging-demo-panel .tabulator .tabulator-row .tabulator-cell{border-bottom:1px solid var(--color-border)}.paging-demo-panel .tabulator-footer{display:none}.session-allowlist-demo{display:flex;flex-direction:column;gap:1rem}.session-allowlist-demo__lead{margin:0;color:var(--color-text-muted);font-size:.9375rem}.session-allowlist-demo__actions{display:flex;flex-wrap:wrap;gap:.5rem}.session-allowlist-demo__actions button{padding:.45rem .85rem;border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface);color:var(--color-text-muted);cursor:pointer;font-size:.875rem}.session-allowlist-demo__actions button.is-active{border-color:var(--color-accent);color:var(--color-accent);background:var(--color-accent-soft)}.session-allowlist-demo__reset{margin-left:auto}.session-allowlist-demo__grid{display:grid;gap:1rem}@media(min-width:720px){.session-allowlist-demo__grid{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}}.session-demo-panel{padding:1rem;border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface);box-shadow:var(--shadow-sm)}.session-demo-panel h3{margin:0 0 .75rem;font-size:1rem}.session-demo-panel__list{margin:0;display:grid;gap:.75rem}.session-demo-panel__list div{display:grid;gap:.25rem}.session-demo-panel__list dt{font-size:.8125rem;color:var(--color-text-muted)}.session-demo-panel__list dd{margin:0;font-size:.875rem}.session-demo-panel__sessions{margin:0;padding-left:1.1rem;font-size:.875rem}.session-demo-panel__sessions li+li{margin-top:.35rem}.session-demo-panel__empty{color:var(--color-text-muted);font-size:.875rem}.session-demo-panel__result{margin:.75rem 0 0}.session-demo-badge{display:inline-block;padding:.2rem .55rem;border-radius:var(--radius-sm);font-size:.8125rem;font-weight:600}.session-demo-badge.is-ok{color:#166534;background:#dcfce7}.session-demo-badge.is-fail{color:#991b1b;background:#fee2e2}.session-allowlist-demo__note{margin:0;padding:.75rem .875rem;font-size:.875rem;color:var(--color-text-muted);background:var(--color-tag-bg);border:1px solid var(--color-border);border-radius:var(--radius-sm)}.case-study-back{margin-top:2rem}.case-study-figures{display:flex;flex-direction:column;gap:1.25rem;margin-top:1.25rem}.case-study-figure{margin:0;padding:0;border:1px solid var(--color-border);border-radius:var(--radius-sm);overflow:hidden;background:var(--color-tag-bg)}.case-study-figure img{display:block;width:100%;height:auto}.case-study-figure figcaption{padding:.75rem 1rem;margin:0;border-top:1px solid var(--color-border);line-height:1.5}.case-study-impl-group__header{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem;margin-bottom:.5rem}.case-study-impl-group__tag{display:inline-block;padding:.2rem .5rem;font-size:.6875rem;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--color-accent);background:var(--color-accent-soft);border-radius:var(--radius-sm)}.case-study-impl-group__title{margin:0;font-size:1rem;font-weight:600;line-height:1.45}.case-study-impl-group__list{margin:0;padding-left:1.25rem;line-height:1.65;color:var(--color-text-muted)}.case-study-impl-group__list li+li{margin-top:.35rem}.case-study-impl-group .case-study-code{margin-top:1rem}.case-study-impl-flat{margin:0;padding-left:1.25rem;line-height:1.65}.case-study-next-steps{margin-top:1.5rem;padding:1rem 1.25rem;border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface)}.case-study-next-steps__heading{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem;margin:0 0 .75rem;font-size:.9375rem;font-weight:600}.case-study-next-steps__badge{display:inline-block;padding:.2rem .5rem;font-size:.6875rem;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--color-text-muted);background:var(--color-tag-bg);border:1px solid var(--color-border);border-radius:var(--radius-sm)}.case-study-next-steps__list{margin:0;padding:0;list-style:none}.case-study-next-steps__item{display:flex;flex-direction:column;gap:.25rem;line-height:1.6}.case-study-next-steps__item+.case-study-next-steps__item{margin-top:.75rem}.case-study-next-steps__item-title{font-size:.875rem;font-weight:600}.case-study-next-steps__item-text{font-size:.9375rem;line-height:1.65;color:var(--color-text-muted)}.case-study-diagram{margin-top:1.5rem}.case-study-content-blocks{display:flex;flex-direction:column;gap:1.75rem;margin-top:1.25rem}.case-study-content-blocks__text{margin:0;line-height:1.7}.case-study-code-section{padding:1rem 1.25rem;display:flex;flex-direction:column;gap:.75rem}.case-study-code-section__intro{margin:0;line-height:1.75;color:var(--color-text-muted)}.case-study-code-section .case-study-code{margin:0}.case-study-code{margin:0;border:1px solid var(--color-border);border-radius:var(--radius-sm);overflow:hidden;background:#fff}.case-study-code__caption{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem;padding:.625rem 1rem;margin:0;font-size:.8125rem;border-bottom:1px solid var(--color-border);color:var(--color-text-muted)}.case-study-code__file{font-family:var(--font-mono, ui-monospace, monospace)}.case-study-code__lang{margin-left:auto;font-size:.75rem;text-transform:uppercase;letter-spacing:.04em}.case-study-code__pre{margin:0;padding:1rem;overflow-x:auto;font-size:.8125rem;line-height:1.55}.case-study-code__pre--highlighted{background:transparent;padding:0}.case-study-code__pre--highlighted code{font-family:var(--font-mono, ui-monospace, monospace);display:block;padding:0!important;margin:0;text-indent:0!important;white-space:pre;background:none!important;border-radius:0}.case-study-code__pre--highlighted .token{padding:0;margin:0;text-indent:0;background:transparent!important;background-color:transparent!important}.case-study-code__pre code{font-family:var(--font-mono, ui-monospace, monospace);white-space:pre}.case-study-compare__title{margin:0 0 .75rem;font-size:1rem}.case-study-compare__grid{display:grid;gap:1rem}@media(min-width:768px){.case-study-compare__grid{grid-template-columns:1fr 1fr}}.login-flow-compare{display:grid;gap:1.25rem}@media(min-width:768px){.login-flow-compare{grid-template-columns:1fr 1fr;align-items:start}}.login-flow-compare__card .case-study-block__title{margin-bottom:.75rem}.login-flow-compare__steps{margin:0;padding:0;list-style:none;counter-reset:flow-step}.login-flow-compare__step{display:flex;gap:.625rem;align-items:flex-start;font-size:.875rem;line-height:1.5;color:var(--color-text-muted)}.login-flow-compare__step+.login-flow-compare__step{margin-top:.5rem}.login-flow-compare__step:before{counter-increment:flow-step;content:counter(flow-step);flex-shrink:0;width:1.375rem;height:1.375rem;display:flex;align-items:center;justify-content:center;font-size:.75rem;font-weight:600;color:var(--color-text);background:var(--color-tag-bg);border:1px solid var(--color-border);border-radius:999px}.login-flow-compare__step-text{padding-top:.1rem}.login-flow-compare__highlight{margin:.875rem 0 0;padding:.625rem .75rem;font-size:.8125rem;line-height:1.55;border-radius:var(--radius-sm);border-left:3px solid var(--color-border)}.login-flow-compare__highlight--legacy{background:color-mix(in srgb,var(--skill-language-fg) 8%,var(--color-surface));border-left-color:var(--skill-language-fg);color:var(--color-text-muted)}.login-flow-compare__highlight--improved{background:var(--color-accent-soft);border-left-color:var(--color-accent);color:var(--color-text)}.case-study-outcomes__list{margin:0;padding-left:1.25rem;line-height:1.65;color:var(--color-text-muted)}.case-study-outcomes__list li+li{margin-top:.5rem}.login-security-demo{display:flex;flex-direction:column;gap:1rem}.case-study-section__note a{color:var(--color-accent);text-decoration:underline;text-underline-offset:2px}.case-study-section__note{margin:1rem 0 0;color:var(--color-text-muted);font-size:.9375rem;line-height:1.6}.login-security-demo__lead{margin:0;color:var(--color-text-muted);font-size:.9375rem;line-height:1.6}.login-security-demo__form{display:grid;gap:.75rem}@media(min-width:600px){.login-security-demo__form{grid-template-columns:repeat(3,minmax(0,1fr))}}.login-security-demo__field{display:grid;gap:.35rem;font-size:.875rem}.login-security-demo__field span{color:var(--color-text-muted)}.login-security-demo__field input{padding:.5rem .65rem;border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface);font-size:.875rem}.login-security-demo__field input:disabled{opacity:.65;cursor:not-allowed}.login-security-demo__transport{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem;padding:.5rem .75rem;border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface)}.login-security-demo__transport-btn{display:inline-flex;align-items:center;justify-content:center;width:2.25rem;height:2.25rem;padding:0;border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface);color:var(--color-text);cursor:pointer}.login-security-demo__transport-btn--primary{width:2.5rem;height:2.5rem;border-color:var(--color-accent);color:var(--color-accent);background:var(--color-accent-soft)}.login-security-demo__transport-btn:disabled{opacity:.45;cursor:not-allowed}.login-security-demo__transport-btn:not(:disabled):hover{border-color:var(--color-accent);color:var(--color-accent)}.login-security-demo__transport-btn:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}.login-security-demo__progress{min-width:3rem;font-size:.8125rem;font-variant-numeric:tabular-nums;color:var(--color-text-muted)}.login-security-demo__restart{margin-left:auto;padding:.45rem .85rem;border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface);color:var(--color-text-muted);cursor:pointer;font-size:.875rem}.login-security-demo__restart:disabled{opacity:.45;cursor:not-allowed}.login-security-demo__restart:not(:disabled):hover{border-color:var(--color-accent);color:var(--color-accent)}.login-security-demo__grid{display:grid;gap:1rem}@media(min-width:768px){.login-security-demo__grid{grid-template-columns:1fr 1fr;align-items:start}}.login-security-demo__panel{margin:0}.login-security-demo__steps{margin:0;padding:0;list-style:none;display:grid;gap:.5rem}.login-security-demo__step{padding:.5rem .625rem;border:1px solid transparent;border-radius:var(--radius-sm);transition:background .15s ease,border-color .15s ease}.login-security-demo__step.is-active{background:var(--color-tag-bg);border-color:var(--color-border)}.login-security-demo__step.is-done .login-security-demo__step-label{color:var(--color-text-muted)}.login-security-demo__step.is-done .login-security-demo__step-num{background:var(--color-accent-soft);border-color:var(--color-accent);color:var(--color-accent)}.login-security-demo__step-header{display:flex;gap:.625rem;align-items:center;width:100%;padding:0;border:none;background:none;text-align:left;cursor:pointer;font:inherit;color:inherit}.login-security-demo__step-header:hover .login-security-demo__step-label{color:var(--color-accent)}.login-security-demo__step-header:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px;border-radius:var(--radius-sm)}.login-security-demo__step-num{flex-shrink:0;width:1.375rem;height:1.375rem;display:flex;align-items:center;justify-content:center;font-size:.75rem;font-weight:600;color:var(--color-text);background:var(--color-tag-bg);border:1px solid var(--color-border);border-radius:999px}.login-security-demo__step.is-active .login-security-demo__step-num{background:var(--color-accent-soft);border-color:var(--color-accent);color:var(--color-accent)}.login-security-demo__step-label{font-size:.875rem;line-height:1.45}.login-security-demo__payload{margin-top:.625rem}.login-security-demo__payload-pre{margin:0;padding:.625rem .75rem;font-family:var(--font-mono, ui-monospace, monospace);font-size:.75rem;line-height:1.55;background:var(--color-code-bg, #f4f4f5);border:1px solid var(--color-border);border-radius:var(--radius-sm);overflow-x:auto;white-space:pre-wrap;word-break:break-word}.login-security-demo__payload-key{color:var(--color-text-muted)}.login-security-demo__field--risk{color:#b45309;font-weight:600}.login-security-demo__field--safe{color:var(--color-accent);font-weight:600}.login-security-demo__badge{display:inline-block;margin-top:.5rem;padding:.2rem .55rem;border-radius:var(--radius-sm);font-size:.75rem;font-weight:600;color:var(--color-accent);background:var(--color-accent-soft)}.login-security-demo__summary{margin:0}.login-security-demo__summary-list{margin:0;padding-left:1.25rem;line-height:1.65;color:var(--color-text-muted);font-size:.9375rem}.login-security-demo__summary-list li+li{margin-top:.5rem}.tabulator-wms-demo{margin:1.25rem 0 0}.tabulator-wms-demo__caption{margin:0 0 .75rem;line-height:1.6;color:var(--color-text-muted)}.tabulator-wms-demo__stats{display:flex;flex-wrap:wrap;gap:.75rem 1.5rem;margin-bottom:.75rem;padding:.75rem 1rem;font-size:.875rem;background:var(--color-tag-bg);border:1px solid var(--color-border);border-radius:var(--radius-sm)}.tabulator-wms-demo__loading,.tabulator-wms-demo__error{margin:0 0 .75rem;font-size:.875rem}.tabulator-wms-demo__error{color:var(--color-accent)}.tabulator-wms-demo__table{border:1px solid var(--color-border);border-radius:var(--radius-sm);overflow:hidden}.tabulator-wms-demo .tabulator{font-size:.8125rem;background:var(--color-surface);border:none}.tabulator-wms-demo .tabulator-header{background:var(--color-tag-bg);border-bottom:1px solid var(--color-border);color:var(--color-text)}.tabulator-wms-demo .tabulator-row{background:var(--color-surface);border-bottom:1px solid var(--color-border);color:var(--color-text)}.tabulator-wms-demo .tabulator-row.tabulator-row-even{background:color-mix(in srgb,var(--color-tag-bg) 50%,var(--color-surface))}.tabulator-wms-demo .tabulator-footer{background:var(--color-tag-bg);border-top:1px solid var(--color-border);color:var(--color-text-muted)}.diagram-box{background:var(--color-tag-bg);border:1px solid var(--color-border);border-radius:var(--radius);padding:1.25rem;overflow-x:auto}.diagram-box__error{margin:0 0 .75rem;font-size:.875rem;color:var(--color-accent)}.diagram-box__source{margin:0;white-space:pre-wrap;font-family:var(--font-mono, ui-monospace, monospace);font-size:.75rem;line-height:1.5;color:var(--color-text-muted)}.mermaid-diagram{min-height:4rem;font-family:var(--font-sans);text-align:center}.mermaid-diagram svg{display:inline-block;width:auto;max-width:100%;height:auto;margin:0 auto}.breadcrumb{font-size:.875rem;color:var(--color-text-muted);margin-bottom:1.5rem}.breadcrumb a{color:var(--color-text-muted)}.qr-section{text-align:center;padding:1.5rem;background:var(--color-tag-bg);border-radius:var(--radius);margin-top:2rem}@media(max-width:768px){.nav-toggle{display:block}.site-nav{position:absolute;top:var(--header-height);left:0;right:0;background:var(--color-surface);border-bottom:1px solid var(--color-border);padding:1rem;display:none}.site-nav.is-open{display:block}.site-nav ul{flex-direction:column;align-items:stretch}.site-nav a{padding:.75rem 1rem}}@media print{:root{--color-bg: #fff;--color-surface: #fff;--color-text: #000;--color-text-muted: #333;--color-border: #ccc;--color-accent: #0d9488;--color-navy: #000;--color-tag-bg: #f5f5f5}body{font-size:11pt;line-height:1.4;background:#fff;color:#000}.site-header,.site-footer,.nav-toggle,.skip-link,.hero-cta,.filter-bar,.no-print,.btn{display:none!important}.container{width:100%;max-width:none;margin:0;padding:0}a{color:#000;text-decoration:none}a[href^=http]:after{content:" (" attr(href) ")";font-size:9pt;color:#555}a[href^=mailto]:after,a[href^=tel]:after,a[href^="#"]:after{content:""}.card{box-shadow:none;border:1px solid #ccc;break-inside:avoid}.section{padding:1rem 0}h1{font-size:18pt}h2{font-size:14pt;page-break-after:avoid}h3{font-size:12pt;page-break-after:avoid}.resume-header{margin-bottom:0;padding-bottom:0}.resume-section{margin-bottom:0;padding:1rem 0;page-break-inside:avoid;border-top:2px solid #000}.resume-section h2{border-bottom:1px solid #ccc;padding-bottom:.35rem;margin-bottom:.75rem}.resume-skill-chip{border:1px solid #ccc;background:#f9f9f9;print-color-adjust:exact;-webkit-print-color-adjust:exact}.resume-skill-chip__icon path{print-color-adjust:exact;-webkit-print-color-adjust:exact}.resume-company{page-break-inside:avoid;margin-bottom:.75rem;padding:.75rem 1rem;border:1px solid #ccc;border-radius:0;box-shadow:none;background:#fff}.resume-project{background:#f9f9f9;border-left-color:#0d9488}.tag{border:1px solid #ccc;background:#f5f5f5;color:#333}.print-only{display:block!important}.print-footer{position:fixed;bottom:0;left:0;right:0;padding:.5rem 1rem;font-size:9pt;color:#555;border-top:1px solid #ccc;background:#fff;text-align:center}@page{size:A4;margin:15mm 12mm 20mm}}.print-only{display:none}
