:root{--paper:#f2f3f0;--paper-raised:#fff;--paper-sunken:#eaebe6;--paper-hover:#e9eae5;--ink:#15181a;--ink-body:#2b3034;--ink-muted:#5f6569;--ink-faint:#8b9195;--on-ink:#f2f3f0;--on-ink-muted:#9aa09b;--on-ink-dim:#f2f3f0b8;--on-ink-hover:#ffffff0f;--on-ink-line:#ffffff24;--paper-veil:#f2f3f0b8;--ink-veil:#15181a66;--rule:#dcded8;--rule-strong:#c3c6bf;--seal:#b23a2f;--seal-deep:#8e2e26;--seal-soft:#d89c97;--seal-tint:#f6e9e7;--seal-on-ink:#e08a80;--pig-info:#3a5a78;--pig-success:#43705a;--pig-warning:#8a6520;--pig-danger:#b23a2f;--chart-1:#3a5a78;--chart-2:#8a6520;--chart-3:#43705a;--chart-4:#b23a2f;--chart-5:#6b4a6e;--chart-6:#4a5b63;--font-ui:-apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Source Han Sans SC", "Noto Sans CJK SC", sans-serif;--font-read:"Songti SC", "STSong", "Source Han Serif SC", "Noto Serif CJK SC", "Noto Serif SC", SimSun, Georgia, serif;--font-mono:ui-monospace, SFMono-Regular, "SF Mono", "Cascadia Mono", "Segoe UI Mono", "JetBrains Mono", Consolas, "Liberation Mono", monospace;--text-xs:12px;--text-sm:13px;--text-base:15px;--text-md:16px;--text-lg:19px;--text-xl:24px;--text-2xl:30px;--text-read:18px;--text-article:clamp(1.625rem, 2.6vw, 2.125rem);--text-lead:clamp(1.75rem, 3.2vw, 2.25rem);--text-masthead:clamp(1.5rem, 2.4vw, 1.875rem);--leading-tight:1.25;--leading-snug:1.5;--leading-normal:1.7;--leading-read:1.9;--tracking-none:0;--tracking-masthead:.16em;--page-max:1120px;--gutter:32px;--rail:104px;--col-gap:32px;--measure:33em;--measure-wide:46em;--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:24px;--space-6:32px;--space-7:48px;--space-8:64px;--space-9:96px;--control-h-sm:32px;--control-h:40px;--control-h-lg:48px;--radius-dot:1px;--radius-mark:2px;--radius-sheet:4px;--radius-round:9999px;--shadow-sheet:0 1px 0 #15181a0d;--shadow-overlay:0 12px 32px #15181a24;--dur-fast:.12s;--dur-base:.2s;--dur-slow:.32s;--ease-out:cubic-bezier(.2, .7, .3, 1);--ease-in-out:cubic-bezier(.5, 0, .2, 1);--z-nav:100;--z-drawer:1200;--z-dialog:2000;--z-message:3000}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;line-break:strict;overflow-x:hidden}html,body,#app{max-width:100vw;height:100%;overflow-x:hidden}body{font-family:var(--font-ui);font-size:var(--text-md);line-height:var(--leading-normal);color:var(--ink-body);background:var(--paper);overflow-wrap:break-word}h1,h2,h3,h4,h5,h6{font-family:var(--font-ui);color:var(--ink);font-weight:600;line-height:var(--leading-tight);letter-spacing:var(--tracking-none)}h1{font-size:var(--text-2xl);line-height:1.3}h2{font-size:var(--text-xl);line-height:1.4}h3{font-size:var(--text-lg);line-height:1.45}h4{font-size:var(--text-md)}h5,h6{font-size:var(--text-base)}p{margin:0}a{color:inherit;transition:color var(--dur-fast) var(--ease-out);text-decoration:none}a:not([class]){text-underline-offset:3px;text-decoration:underline;text-decoration-thickness:1px}a:not([class]):hover{text-decoration-thickness:2px}strong,b{color:var(--ink);font-weight:600}small{font-size:var(--text-sm)}img{max-width:100%;height:auto;display:block}ul,ol{list-style-position:outside}hr{border:0;border-top:1px solid var(--rule);margin:var(--space-5) 0}code,kbd,samp,pre{font-family:var(--font-mono);font-variant-numeric:tabular-nums}.q-container{width:100%;max-width:var(--page-max);padding:0 var(--gutter);box-sizing:border-box;margin:0 auto;overflow-x:hidden}:focus-visible{outline:2px solid var(--seal);outline-offset:2px}.q-on-ink :focus-visible{outline-color:var(--on-ink)}.q-admin__side :focus-visible{outline-color:var(--on-ink)}.q-footer :focus-visible{outline-color:var(--on-ink)}::selection{background:var(--seal-tint);color:var(--ink)}button{font:inherit;color:inherit;cursor:pointer;background:0 0;border:0}input,textarea,select{font-family:var(--font-ui);font-size:var(--text-md);color:var(--ink);background:var(--paper-raised);border:1px solid var(--rule);border-radius:var(--radius-mark);padding:var(--space-2) var(--space-3);transition:border-color var(--dur-fast) var(--ease-out)}input::placeholder,textarea::placeholder,select::placeholder{color:var(--ink-faint)}input:focus,textarea:focus,select:focus{border-color:var(--ink);outline:none}input:disabled,textarea:disabled,select:disabled{color:var(--ink-faint);background:var(--paper-sunken)}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-track{background:var(--paper)}::-webkit-scrollbar-thumb{background:var(--rule-strong);border:3px solid var(--paper);border-radius:var(--radius-round)}::-webkit-scrollbar-thumb:hover{background:var(--ink-faint)}.q-mono{font-family:var(--font-mono);font-variant-numeric:tabular-nums}.q-muted{color:var(--ink-muted)}.q-faint{color:var(--ink-faint)}.q-hairline{border-bottom:1px solid var(--rule)}.q-hairline--strong{border-bottom:1px solid var(--rule-strong)}.text-center{text-align:center}.text-right{text-align:right}.q-link{font-size:var(--text-md);color:var(--ink);text-underline-offset:3px;text-decoration:underline;text-decoration-thickness:1px}.q-link:hover{text-decoration-thickness:2px}.q-sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;padding:0;position:absolute;overflow:hidden}.q-skip-link{left:var(--space-4);z-index:var(--z-message);padding:var(--space-2) var(--space-4);background:var(--ink);color:var(--on-ink);border-radius:var(--radius-mark);transition:top var(--dur-fast) var(--ease-out);position:absolute;top:-100px}.q-skip-link:focus{top:var(--space-4)}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}@media (max-width:992px){:root{--rail:88px}}@media (max-width:767px){:root{--gutter:20px;--text-read:17px;--text-2xl:24px;--text-xl:20px}body{font-size:var(--text-md)}}@media print{body{background:var(--paper-raised)}.q-nav,.q-footer,.q-reading-ruler{display:none!important}}:root:root{--el-color-primary:var(--ink);--el-color-primary-light-3:#5b5d5f;--el-color-primary-light-5:#8a8c8d;--el-color-primary-light-7:#b9baba;--el-color-primary-light-8:#d0d1d1;--el-color-primary-light-9:#e8e8e8;--el-color-primary-dark-2:#111315;--el-color-danger:var(--seal);--el-color-danger-light-3:#c9756d;--el-color-danger-light-5:#d89c97;--el-color-danger-light-7:#e8c4c1;--el-color-danger-light-8:#f0d8d5;--el-color-danger-light-9:#f7ebea;--el-color-danger-dark-2:var(--seal-deep);--el-color-error:var(--seal);--el-color-error-light-3:#c9756d;--el-color-error-light-5:#d89c97;--el-color-error-light-7:#e8c4c1;--el-color-error-light-8:#f0d8d5;--el-color-error-light-9:#f7ebea;--el-color-error-dark-2:var(--seal-deep);--el-color-success:var(--pig-success);--el-color-success-light-3:#7b9b8c;--el-color-success-light-5:#a1b8ad;--el-color-success-light-7:#c7d4ce;--el-color-success-light-8:#d9e2de;--el-color-success-light-9:#ecf1ee;--el-color-success-dark-2:#365a48;--el-color-warning:var(--pig-warning);--el-color-warning-light-3:#ad9363;--el-color-warning-light-5:#c5b290;--el-color-warning-light-7:#dcd1bc;--el-color-warning-light-8:#e8e0d2;--el-color-warning-light-9:#f3f0e9;--el-color-warning-dark-2:#6e511a;--el-color-info:var(--pig-info);--el-color-info-light-3:#758ca1;--el-color-info-light-5:#9dadbc;--el-color-info-light-7:#c4ced7;--el-color-info-light-8:#d8dee4;--el-color-info-light-9:#ebeff2;--el-color-info-dark-2:#2e4860;--el-text-color-primary:var(--ink);--el-text-color-regular:var(--ink-body);--el-text-color-secondary:var(--ink-muted);--el-text-color-placeholder:var(--ink-faint);--el-text-color-disabled:var(--ink-faint);--el-text-color-primary-inverse:var(--on-ink);--el-border-color:var(--rule-strong);--el-border-color-light:var(--rule);--el-border-color-lighter:var(--rule);--el-border-color-extra-light:var(--rule);--el-border-color-dark:var(--rule-strong);--el-border-color-darker:var(--ink-faint);--el-fill-color:var(--paper-sunken);--el-fill-color-light:var(--paper-hover);--el-fill-color-lighter:var(--paper-hover);--el-fill-color-extra-light:var(--paper);--el-fill-color-dark:var(--paper-sunken);--el-fill-color-darker:var(--paper-sunken);--el-fill-color-blank:var(--paper-raised);--el-bg-color:var(--paper-raised);--el-bg-color-page:var(--paper);--el-bg-color-overlay:var(--paper-raised);--el-mask-color:var(--paper-veil);--el-mask-color-extra-light:var(--paper-veil);--el-font-size-base:var(--text-md);--el-font-size-small:var(--text-sm);--el-font-size-large:var(--text-lg);--el-font-family:var(--font-ui);--el-component-size:40px;--el-component-size-small:32px;--el-component-size-large:48px;--el-border-radius-base:var(--radius-mark);--el-border-radius-small:var(--radius-mark);--el-border-radius-round:var(--radius-sheet);--el-border-radius-circle:var(--radius-round);--el-box-shadow:var(--shadow-overlay);--el-box-shadow-light:var(--shadow-sheet);--el-box-shadow-lighter:var(--shadow-sheet);--el-box-shadow-dark:var(--shadow-overlay);--el-disabled-bg-color:var(--paper-sunken);--el-disabled-text-color:var(--ink-faint);--el-disabled-border-color:var(--rule);--el-overlay-color-lighter:var(--ink-veil);--el-transition-duration:var(--dur-base)}body .el-button{--el-button-size:var(--control-h);height:var(--control-h);border-radius:var(--radius-mark);transition:background var(--dur-fast) var(--ease-out), border-color var(--dur-fast) var(--ease-out), color var(--dur-fast) var(--ease-out);font-weight:500}body .el-button--primary{--el-button-bg-color:var(--ink);--el-button-border-color:var(--ink);--el-button-hover-bg-color:#000;--el-button-hover-border-color:#000;--el-button-active-bg-color:#000;--el-button-active-border-color:#000}body .el-button.el-button--large{--el-button-size:var(--control-h-lg);height:var(--control-h-lg)}body .el-button.el-button--small{--el-button-size:var(--control-h-sm);height:var(--control-h-sm)}body .el-button:not(.is-circle):not(.is-link):not(.is-text){padding:0 var(--space-5)}body .el-button.el-button--large:not(.is-circle):not(.is-link):not(.is-text){padding:0 var(--space-6)}body .el-button.is-link,body .el-button.is-text{text-underline-offset:3px;padding:0;text-decoration:underline;text-decoration-thickness:1px}body .el-button.is-link:hover,body .el-button.is-text:hover{text-decoration-thickness:2px}body .el-button.is-link.is-disabled,body .el-button.is-text.is-disabled{text-decoration:none}@media (pointer:coarse){body .el-button.is-link,body .el-button.is-text{align-items:center;min-height:44px;display:inline-flex}}body .el-button.is-round{border-radius:var(--radius-mark)}body .el-button.is-circle{border-radius:var(--radius-round)}body .el-input__wrapper,body .el-textarea__inner,body .el-select__wrapper,body .el-input-number,body .el-date-editor.el-input__wrapper{background:var(--paper-raised);border:1px solid var(--rule);border-radius:var(--radius-mark);box-shadow:none}body .el-input__wrapper:hover,body .el-textarea__inner:hover,body .el-select__wrapper:hover,body .el-input-number:hover,body .el-date-editor.el-input__wrapper:hover{border-color:var(--rule-strong);box-shadow:none}body .el-input__wrapper.is-focus,body .el-input__wrapper:focus,body .el-input__wrapper:focus-within,body .el-textarea__inner.is-focus,body .el-textarea__inner:focus,body .el-textarea__inner:focus-within,body .el-select__wrapper.is-focus,body .el-select__wrapper:focus,body .el-select__wrapper:focus-within,body .el-input-number.is-focus,body .el-input-number:focus,body .el-input-number:focus-within,body .el-date-editor.el-input__wrapper.is-focus,body .el-date-editor.el-input__wrapper:focus,body .el-date-editor.el-input__wrapper:focus-within{border-color:var(--ink);box-shadow:none}body .el-textarea__inner{padding:var(--space-3);line-height:var(--leading-normal)}body .el-input-group__append,body .el-input-group__prepend{background:var(--paper-sunken);border-radius:var(--radius-mark);box-shadow:none;color:var(--ink-muted);border:0}body .el-form-item__label{color:var(--ink-muted);font-weight:400}body .el-form-item__error{color:var(--seal);font-size:var(--text-sm)}body .el-select-dropdown__item.is-selected{color:var(--ink);font-weight:600}body .el-switch{--el-switch-on-color:var(--ink);--el-switch-off-color:var(--rule-strong)}body .el-checkbox,body .el-radio{--el-checkbox-checked-bg-color:var(--ink);--el-checkbox-checked-input-border-color:var(--ink);--el-checkbox-input-border-color-hover:var(--ink);--el-radio-input-border-color-hover:var(--ink);--el-checkbox-text-color:var(--ink-body);--el-radio-text-color:var(--ink-body)}body .el-input-number__decrease,body .el-input-number__increase{background:var(--paper-sunken);color:var(--ink-muted)}body .el-dialog{--el-dialog-bg-color:var(--paper-raised);--el-dialog-border-radius:var(--radius-sheet);box-shadow:var(--shadow-overlay);border:1px solid var(--rule)}body .el-dialog .el-dialog__header{padding-bottom:var(--space-4);margin-right:0}body .el-dialog .el-dialog__title{font-family:var(--font-ui);font-size:var(--text-lg);color:var(--ink);font-weight:600}body .el-dialog .el-dialog__body{color:var(--ink-body)}body .el-dialog .el-dialog__footer{padding-top:var(--space-5)}body .el-drawer{--el-drawer-bg-color:var(--paper);box-shadow:var(--shadow-overlay)}body .el-dropdown-menu,body .el-select-dropdown,body .el-popover.el-popper,body .el-picker__popper{background:var(--paper-raised);border:1px solid var(--rule);border-radius:var(--radius-sheet);box-shadow:var(--shadow-overlay);padding:var(--space-1)}body .el-dropdown-menu__item{border-radius:var(--radius-mark);font-size:var(--text-md);color:var(--ink-body)}body .el-dropdown-menu__item:not(.is-disabled):hover,body .el-dropdown-menu__item:not(.is-disabled):focus{background:var(--paper-hover);color:var(--ink)}body .el-dropdown-menu__item.is-danger{color:var(--seal)}body .el-popper.is-dark{background:var(--ink);border-color:var(--ink);color:var(--on-ink);border-radius:var(--radius-mark)}body .el-popper.is-dark .el-popper__arrow:before{background:var(--ink);border-color:var(--ink)}body .el-message-box{--el-messagebox-title-color:var(--ink);--el-messagebox-content-color:var(--ink-body);background:var(--paper-raised);border:1px solid var(--rule);border-radius:var(--radius-sheet);box-shadow:var(--shadow-overlay);padding:var(--space-5)}body .el-message{background:var(--paper-raised);border:1px solid var(--rule);border-left:3px solid var(--rule-strong);border-radius:var(--radius-sheet);box-shadow:var(--shadow-overlay);padding:var(--space-3) var(--space-4);min-width:0}body .el-message .el-message__content{color:var(--ink-body);font-size:var(--text-md)}body .el-message--success{border-left-color:var(--pig-success)}body .el-message--warning{border-left-color:var(--pig-warning)}body .el-message--error{border-left-color:var(--seal)}body .el-message--info{border-left-color:var(--pig-info)}body .el-notification{background:var(--paper-raised);border:1px solid var(--rule);border-radius:var(--radius-sheet);box-shadow:var(--shadow-overlay)}body .el-notification .el-notification__title{color:var(--ink)}body .el-notification .el-notification__content{color:var(--ink-body)}body .el-table{--el-table-border-color:var(--rule);--el-table-border:1px solid var(--rule);--el-table-text-color:var(--ink-body);--el-table-header-text-color:var(--ink-muted);--el-table-header-bg-color:var(--paper);--el-table-bg-color:var(--paper-raised);--el-table-tr-bg-color:var(--paper-raised);--el-table-row-hover-bg-color:var(--paper-hover);--el-table-current-row-bg-color:var(--paper-hover);--el-table-fixed-box-shadow:none;font-size:var(--text-base)}body .el-table th.el-table__cell{font-weight:500;font-size:var(--text-sm);border-bottom:1px solid var(--rule-strong)}body .el-table td.el-table__cell{border-bottom:1px solid var(--rule);padding:var(--space-3) 0}body .el-table:before,body .el-table:after{display:none}body .el-table .el-table__empty-block{background:var(--paper-raised)}body .el-tag{--el-tag-bg-color:var(--paper-sunken);--el-tag-border-color:var(--rule);--el-tag-text-color:var(--ink-muted);--el-tag-hover-color:var(--rule-strong);border-radius:var(--radius-mark);font-size:var(--text-sm)}body .el-pagination{--el-pagination-bg-color:transparent;--el-pagination-text-color:var(--ink-muted);--el-pagination-button-color:var(--ink-muted);--el-pagination-button-bg-color:transparent;--el-pagination-button-disabled-color:var(--ink-faint);--el-pagination-button-disabled-bg-color:transparent;--el-pagination-hover-color:var(--ink);--el-pagination-font-size:var(--text-md);font-family:var(--font-mono);font-variant-numeric:tabular-nums}body .el-pagination .el-pager li{background:0 0;font-weight:400}body .el-pagination .el-pager li.is-active{color:var(--ink);font-weight:600}body .el-pagination .el-pager li:hover{color:var(--ink)}body .el-pagination .btn-prev,body .el-pagination .btn-next{background:0 0}body .el-pagination .btn-prev:hover:not(:disabled),body .el-pagination .btn-next:hover:not(:disabled){color:var(--ink)}body .el-badge__content{background:var(--ink);color:var(--on-ink);border-radius:var(--radius-mark);font-family:var(--font-mono);border:0}body .el-avatar{--el-avatar-bg-color:var(--paper-sunken);--el-avatar-text-color:var(--ink-muted);border:1px solid var(--rule)}body .el-skeleton{--el-skeleton-color:var(--paper-sunken);--el-skeleton-to-color:var(--paper-hover)}body .el-empty{--el-empty-fill-color-0:var(--paper-sunken);--el-empty-fill-color-1:var(--paper-sunken);--el-empty-fill-color-2:var(--paper-sunken);--el-empty-fill-color-3:var(--paper-sunken);--el-empty-fill-color-4:var(--paper-sunken);--el-empty-fill-color-5:var(--paper-sunken);--el-empty-fill-color-8:var(--paper-sunken);--el-empty-fill-color-9:var(--paper);padding:var(--space-6) 0}body .el-empty .el-empty__description p{color:var(--ink-muted);font-size:var(--text-md)}body .el-menu{--el-menu-bg-color:transparent;--el-menu-text-color:var(--on-ink-dim);--el-menu-hover-text-color:var(--on-ink);--el-menu-hover-bg-color:var(--on-ink-hover);--el-menu-active-color:var(--on-ink);--el-menu-item-height:44px;--el-menu-border-color:transparent;border-right:0}body .el-menu .el-menu-item{border-left:3px solid #0000}body .el-menu .el-menu-item.is-active{background:var(--on-ink-hover);border-left-color:var(--seal);color:var(--on-ink)}body .el-menu .el-menu-item:hover{color:var(--on-ink)}body .el-loading-mask{background:var(--paper-veil)}body .el-loading-spinner .path{stroke:var(--ink)}body .el-loading-spinner .el-loading-text{color:var(--ink-muted)}.hljs{color:#d9dcd6;background:0 0;padding:0;overflow-x:auto}.hljs-comment,.hljs-quote{color:#7c837e;font-style:normal}.hljs-keyword,.hljs-selector-tag,.hljs-subst,.hljs-doctag,.hljs-formula{color:#e08a80}.hljs-string,.hljs-regexp,.hljs-addition,.hljs-attribute,.hljs-meta .hljs-string{color:#c9b27c}.hljs-number,.hljs-literal,.hljs-variable,.hljs-template-variable,.hljs-type,.hljs-selector-attr,.hljs-selector-pseudo{color:#9fbba8}.hljs-title,.hljs-title.function_,.hljs-section,.hljs-name,.hljs-selector-id,.hljs-selector-class{color:#a9bccb}.hljs-attr,.hljs-property,.hljs-params,.hljs-built_in,.hljs-symbol,.hljs-bullet,.hljs-link{color:#c9b27c}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-operator,.hljs-punctuation{color:#9aa09b}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:600}.hljs-deletion{color:#e08a80;text-decoration:line-through}.q-mark{font-family:var(--font-ui);font-size:var(--text-sm);letter-spacing:var(--tracking-none);color:var(--ink);background:var(--paper-raised);border:1px solid var(--ink);border-radius:var(--radius-mark);white-space:nowrap;justify-content:center;align-items:center;padding:5px 7px;font-weight:600;line-height:1;display:inline-flex}.q-mark--lg{font-size:var(--text-md);padding:8px 9px}.q-mark--sm{font-size:var(--text-xs);padding:3px 5px}.q-tag{font-size:var(--text-sm);color:var(--ink-muted);border-left:3px solid var(--tag-color,var(--rule-strong));padding-left:var(--space-2);transition:color var(--dur-fast) var(--ease-out);line-height:1.5;display:inline-block}.q-tag:hover{color:var(--ink)}.q-avatar{border-radius:var(--radius-round);background:var(--paper-sunken);border:1px solid var(--rule);width:32px;height:32px;color:var(--ink-muted);font-size:var(--text-sm);flex-shrink:0;justify-content:center;align-items:center;display:inline-flex;overflow:hidden}.q-avatar img{object-fit:cover;width:100%;height:100%}.q-avatar--sm{width:28px;height:28px}.q-dot{border-radius:var(--radius-dot);background:var(--rule-strong);vertical-align:1px;width:8px;height:8px;margin-right:6px;display:inline-block}.q-dot--ok{background:var(--pig-success)}.q-dot--draft{background:var(--pig-info)}.q-dot--off{background:var(--pig-danger)}.q-dot--top{background:var(--pig-warning)}.q-status{font-size:var(--text-base);color:var(--ink-body);white-space:nowrap;align-items:center;display:inline-flex}.q-rail{font-family:var(--font-mono);font-size:var(--text-sm);font-variant-numeric:tabular-nums;color:var(--ink-muted);line-height:1.9}.q-rail__line{display:block}.q-rail .q-mark{margin:2px 0}.q-row{grid-template-columns:var(--rail) 1fr;column-gap:var(--col-gap);padding:var(--space-6) 0;border-bottom:1px solid var(--rule);display:grid;position:relative}.q-row__title{font-size:var(--text-xl);color:var(--ink);margin-bottom:var(--space-2);font-weight:600;line-height:1.4;transition:none}.q-row__summary{font-size:var(--text-lg);color:var(--ink-muted);max-width:var(--measure-wide);-webkit-line-clamp:2;-webkit-box-orient:vertical;line-height:1.75;display:-webkit-box;overflow:hidden}.q-row__tags{gap:var(--space-4);margin-top:var(--space-3);flex-wrap:wrap;display:flex}.q-row:after{content:"";background:var(--seal);opacity:0;width:2px;height:14px;transition:opacity var(--dur-fast) var(--ease-out);position:absolute;top:50%;right:0;transform:translateY(-50%)}.q-row--link{cursor:pointer}.q-row--link:hover:after,.q-row--link:focus-within:after{opacity:1}.q-row--link:hover .q-row__title,.q-row--link:focus-within .q-row__title{text-underline-offset:3px;text-decoration:underline;text-decoration-thickness:1px}.q-row__link{color:inherit}.q-row__link:after{content:"";position:absolute;top:0;bottom:0;left:0;right:0}.q-lead{grid-template-columns:var(--rail) 1fr;column-gap:var(--col-gap);padding:var(--space-7) 0 var(--space-8);border-bottom:1px solid var(--rule);display:grid}.q-lead__title{font-size:var(--text-lead);color:var(--ink);margin-bottom:var(--space-4);max-width:20em;font-weight:600;line-height:1.3}.q-lead__excerpt{font-family:var(--font-read);font-size:var(--text-read);line-height:var(--leading-read);color:var(--ink-body);max-width:var(--measure);text-align:justify;text-justify:inter-ideograph}.q-lead__excerpt p+p{margin-top:var(--space-4)}.q-lead__more{margin-top:var(--space-4);font-size:var(--text-md);color:var(--ink);text-underline-offset:3px;text-decoration:underline;text-decoration-thickness:1px;display:inline-block}.q-lead__more:hover{text-decoration-thickness:2px}.q-list{border-top:1px solid var(--rule-strong)}.q-list .q-row:last-child{border-bottom:0}@media (max-width:767px){.q-row,.q-lead{padding:var(--space-5) 0;grid-template-columns:1fr}.q-row .q-rail,.q-lead .q-rail{align-items:center;gap:var(--space-3) var(--space-4);padding-bottom:var(--space-3);flex-wrap:wrap;display:flex}.q-row .q-rail__line+.q-row .q-rail__line:before,.q-row .q-rail__line+.q-lead .q-rail__line:before,.q-lead .q-rail__line+.q-row .q-rail__line:before,.q-lead .q-rail__line+.q-lead .q-rail__line:before{content:"";background:var(--rule-strong);width:1px;height:11px;margin-right:var(--space-4);vertical-align:-1px;display:inline-block}.q-row__title{font-size:20px}.q-row__summary{font-size:var(--text-md)}.q-lead__title{font-size:24px}}.q-sheet{background:var(--paper-raised);border:1px solid var(--rule);border-radius:var(--radius-sheet);box-shadow:var(--shadow-sheet);overflow:hidden}.q-sheet__cover{aspect-ratio:16/6;object-fit:cover;border-bottom:1px solid var(--rule);background:var(--paper-sunken);width:100%}.q-sheet__caption{padding:var(--space-2) var(--space-8);font-size:var(--text-sm);color:var(--ink-muted);border-bottom:1px solid var(--rule)}.q-sheet__body{padding:var(--space-7) var(--space-8) var(--space-8)}.q-article__head{padding:var(--space-7) var(--space-8) 0}.q-article__kicker{justify-content:space-between;align-items:center;gap:var(--space-4);margin-bottom:var(--space-5);display:flex}.q-article__date{font-family:var(--font-mono);font-size:var(--text-sm);font-variant-numeric:tabular-nums;color:var(--ink-muted)}.q-article__title{font-size:var(--text-article);color:var(--ink);letter-spacing:var(--tracking-none);max-width:22em;font-weight:600;line-height:1.35}.q-article__byline{align-items:center;gap:var(--space-3);margin-top:var(--space-5);padding:var(--space-4) 0;border-top:1px solid var(--rule);border-bottom:1px solid var(--rule);display:flex}.q-article__author{font-size:var(--text-md);color:var(--ink)}.q-article__stats{gap:var(--space-5);font-family:var(--font-mono);font-size:var(--text-sm);font-variant-numeric:tabular-nums;color:var(--ink-muted);margin-left:auto;display:flex}.q-article__tags{gap:var(--space-4);padding:var(--space-5) var(--space-8);flex-wrap:wrap;display:flex}.q-article__actions{gap:var(--space-3);padding:0 var(--space-8) var(--space-7);flex-wrap:wrap;display:flex}.q-reading-ruler{height:2px;z-index:calc(var(--z-nav) + 1);pointer-events:none;position:fixed;top:0;left:0;right:0}.q-reading-ruler__fill{background:var(--seal);transform-origin:0;width:100%;height:100%;transform:scaleX(0)}@media (max-width:767px){.q-sheet__cover{aspect-ratio:16/9}.q-sheet__caption{padding:var(--space-2) var(--space-5)}.q-sheet__body{padding:var(--space-6) var(--space-5)}.q-article__head{padding:var(--space-6) var(--space-5) 0}.q-article__tags{padding:var(--space-4) var(--space-5)}.q-article__actions{padding:0 var(--space-5) var(--space-6)}.q-article__byline{flex-wrap:wrap}.q-article__stats{width:100%;margin-left:0}}@media (prefers-reduced-motion:reduce){.q-reading-ruler{display:none}}.q-prose{font-family:var(--font-read);font-size:var(--text-read);line-height:var(--leading-read);color:var(--ink-body);max-width:var(--measure);text-align:justify;text-justify:inter-ideograph;line-break:strict;overflow-wrap:break-word}.q-prose>p{text-indent:2em}.q-prose>h1,.q-prose>h2,.q-prose>h3,.q-prose>h4,.q-prose>h5,.q-prose>h6{font-family:var(--font-ui);color:var(--ink);text-indent:0;letter-spacing:var(--tracking-none)}.q-prose>h2{font-size:var(--text-xl);margin:var(--space-7) 0 var(--space-4);line-height:1.45}.q-prose>h3{margin:var(--space-6) 0 var(--space-3);font-size:20px;line-height:1.5}.q-prose>h4{font-size:var(--text-read);margin:var(--space-5) 0 var(--space-3);line-height:1.5}.q-prose>ul,.q-prose>ol{margin:var(--space-4) 0;text-align:left;padding-left:2em}.q-prose>ul li,.q-prose>ol li{margin-bottom:var(--space-2);line-height:var(--leading-read)}.q-prose>ul li::marker{color:var(--ink-muted)}.q-prose>ol li::marker{color:var(--ink-muted)}.q-prose>ul ul,.q-prose>ul ol,.q-prose>ol ul,.q-prose>ol ol{margin:var(--space-2) 0}.q-prose>blockquote{margin:var(--space-5) 0;padding:var(--space-4) var(--space-5);border-left:2px solid var(--rule-strong);background:var(--paper-sunken);color:var(--ink-body);font-size:17px}.q-prose>blockquote p{text-indent:0}.q-prose>blockquote p+p{margin-top:var(--space-3)}.q-prose>blockquote blockquote{margin:var(--space-3) 0}.q-prose>pre{margin:var(--space-5) calc(var(--space-5) * -1);padding:var(--space-5) var(--space-5);background:var(--ink);border-radius:var(--radius-sheet);font-size:var(--text-sm);text-align:left;text-indent:0;-moz-tab-size:2;tab-size:2;line-height:1.75;overflow-x:auto}.q-prose>pre code{color:inherit;font-size:inherit;background:0 0;border:0;padding:0}.q-prose p code,.q-prose li code,.q-prose td code,.q-prose blockquote code{background:var(--paper-sunken);color:var(--ink);border-radius:var(--radius-mark);padding:1px 5px;font-size:.88em}.q-prose>hr{margin:var(--space-7) 0}.q-prose a{color:var(--ink);text-underline-offset:3px;text-decoration:underline;text-decoration-thickness:1px}.q-prose a:hover{text-decoration-thickness:2px}.q-prose img{margin:var(--space-5) auto;border-radius:var(--radius-sheet)}.q-prose figure{margin:var(--space-5) 0}.q-prose figure figcaption{margin-top:var(--space-2);font-family:var(--font-ui);font-size:var(--text-sm);color:var(--ink-muted);text-align:center}.q-prose table{width:100%;margin:var(--space-5) 0;border-collapse:collapse;font-family:var(--font-ui);font-size:var(--text-base);text-align:left}.q-prose table th{background:var(--paper-sunken);color:var(--ink-muted);font-weight:500}.q-prose table th,.q-prose table td{padding:var(--space-2) var(--space-3);border:1px solid var(--rule);text-indent:0}.q-prose strong{color:var(--ink);font-weight:600}.q-prose em{font-style:italic}@media (max-width:767px){.q-prose>pre{padding:var(--space-4);margin-left:0;margin-right:0}.q-prose>h2{font-size:20px}}.q-state{border:1px solid var(--rule);border-radius:var(--radius-sheet);background:var(--paper-raised);padding:var(--space-6)}.q-state--error{border-left:3px solid var(--seal);border-top-left-radius:0;border-bottom-left-radius:0}.q-state--plain{padding:var(--space-5) 0;background:0 0;border:0}.q-state__title{font-size:var(--text-md);color:var(--ink);margin-bottom:var(--space-1);font-weight:600}.q-state__desc{font-size:var(--text-sm);color:var(--ink-muted);line-height:var(--leading-normal)}.q-state__actions{align-items:center;gap:var(--space-4);margin-top:var(--space-4);flex-wrap:wrap;display:flex}.q-skel{gap:var(--space-5);display:grid}.q-skel__row{grid-template-columns:var(--rail) 1fr;column-gap:var(--col-gap);display:grid}.q-skel__bar{background:var(--paper-sunken);border-radius:var(--radius-mark);animation:q-pulse 1.4s var(--ease-in-out) infinite}.q-skel__bar--sm{width:60%;height:12px;margin-bottom:var(--space-2)}.q-skel__bar--md{width:88%;height:14px}.q-skel__bar--lg{width:72%;height:18px;margin-bottom:var(--space-3)}.q-skel__bar--block{width:44px;height:20px}.q-skel__bar--full{width:100%;height:100%}.q-skel--sheet{padding:var(--space-7) var(--space-8)}.q-skel--sheet .q-skel__row{max-width:var(--measure);grid-template-columns:1fr}@keyframes q-pulse{0%,to{opacity:1}50%{opacity:.55}}@media (prefers-reduced-motion:reduce){.q-skel__bar{animation:none}}@media (max-width:767px){.q-skel__row{grid-template-columns:1fr}.q-skel--sheet{padding:var(--space-6) var(--space-5)}}.q-comments{padding:var(--space-7) 0}.q-comments__h{align-items:baseline;gap:var(--space-2);font-size:var(--text-xl);color:var(--ink);padding-bottom:var(--space-4);border-bottom:1px solid var(--rule-strong);margin-bottom:var(--space-6);font-weight:600;display:flex}.q-comments__h .q-mono{font-size:var(--text-md);color:var(--ink-muted);font-weight:400}.q-comments__list{margin:0;padding:0;list-style:none}.q-floor{column-gap:var(--space-4);padding-bottom:var(--space-6);grid-template-columns:40px 1fr;display:grid}.q-floor__no{font-family:var(--font-mono);font-size:var(--text-sm);font-variant-numeric:tabular-nums;color:var(--ink-faint);padding-top:3px}.q-floor__head{align-items:baseline;gap:var(--space-3);margin-bottom:var(--space-2);flex-wrap:wrap;display:flex}.q-floor__user{font-size:var(--text-base);color:var(--ink);font-weight:600}.q-floor__time{font-family:var(--font-mono);font-size:var(--text-xs);font-variant-numeric:tabular-nums;color:var(--ink-faint)}.q-floor__target{font-size:var(--text-sm);color:var(--ink-muted)}.q-floor__body{font-size:var(--text-md);color:var(--ink-body);max-width:var(--measure-wide);white-space:pre-wrap;overflow-wrap:break-word;line-height:1.85}.q-floor__acts{align-items:center;gap:var(--space-5);margin-top:var(--space-3);flex-wrap:wrap;display:flex}.q-floor__act{font-size:var(--text-sm);color:var(--ink-muted);padding:0}.q-floor__act:hover{color:var(--ink);text-underline-offset:3px;text-decoration:underline}.q-floor__act--danger:hover{color:var(--seal)}.q-floor__replies{margin-top:var(--space-5);border-left:1px solid var(--rule);padding-left:var(--space-5);gap:var(--space-5);list-style:none;display:grid}.q-floor__replies .q-floor{padding-bottom:0}.q-floor__empty-replies{margin-top:var(--space-3);font-size:var(--text-sm);color:var(--ink-faint)}.q-comment-form{border:1px solid var(--rule);border-radius:var(--radius-mark);background:var(--paper-raised);padding:var(--space-4);transition:border-color var(--dur-fast) var(--ease-out)}.q-comment-form:focus-within{border-color:var(--ink)}.q-comment-form textarea{resize:vertical;width:100%;min-height:96px;font-family:var(--font-ui);font-size:var(--text-md);color:var(--ink);background:0 0;border:0;padding:0;line-height:1.8}.q-comment-form textarea:focus{border:0;outline:none}.q-comment-form__foot{justify-content:space-between;align-items:center;gap:var(--space-4);border-top:1px solid var(--rule);padding-top:var(--space-3);margin-top:var(--space-2);display:flex}.q-comment-form__count{font-family:var(--font-mono);font-size:var(--text-xs);font-variant-numeric:tabular-nums;color:var(--ink-faint)}.q-comment-form__login{align-items:center;gap:var(--space-4);font-size:var(--text-md);color:var(--ink-muted);display:flex}.q-load-more{padding-top:var(--space-5);justify-content:center;display:flex}@media (pointer:coarse){.q-floor__act{align-items:center;min-height:44px;display:inline-flex}}@media (max-width:767px){.q-floor{column-gap:var(--space-3);grid-template-columns:32px 1fr}.q-floor__replies{padding-left:var(--space-4)}}.q-pagehead{padding:var(--space-7) 0 var(--space-4)}.q-pagehead__row{justify-content:space-between;align-items:baseline;gap:var(--space-5);display:flex}.q-pagehead h1{font-size:var(--text-2xl);letter-spacing:var(--tracking-none);line-height:1.3}.q-pagehead__sub{margin-top:var(--space-2);font-size:var(--text-md);color:var(--ink-muted)}.q-pagehead__meta{font-family:var(--font-mono);font-size:var(--text-sm);font-variant-numeric:tabular-nums;color:var(--ink-muted);white-space:nowrap}.q-backlink{padding:var(--space-5) 0 var(--space-4);font-size:var(--text-sm);color:var(--ink-muted);display:inline-block}.q-backlink:hover{color:var(--ink);text-underline-offset:3px;text-decoration:underline}.q-hl{color:var(--seal);background:0 0}.q-indexbar{align-items:flex-end;gap:var(--space-6);padding-top:var(--space-4);border-bottom:1px solid var(--rule-strong);scrollbar-width:none;display:flex;overflow-x:auto}.q-indexbar::-webkit-scrollbar{display:none}.q-indexbar__item{padding-bottom:var(--space-3);font-size:var(--text-md);color:var(--ink-muted);white-space:nowrap;transition:color var(--dur-fast) var(--ease-out);position:relative}.q-indexbar__item:hover,.q-indexbar__item.is-active{color:var(--ink)}.q-indexbar__item.is-active:after{content:"";background:var(--seal);height:2px;position:absolute;bottom:-1px;left:0;right:0}.q-indexbar__count{font-family:var(--font-mono);font-size:var(--text-sm);font-variant-numeric:tabular-nums;color:var(--ink-faint);margin-left:6px}.q-index{gap:var(--col-gap);padding:var(--space-7) 0;grid-template-columns:repeat(3,1fr);display:grid}.q-index__h{font-size:var(--text-md);color:var(--ink);padding-bottom:var(--space-3);border-bottom:1px solid var(--rule-strong);margin-bottom:var(--space-2);font-weight:600}.q-index__item{align-items:baseline;gap:var(--space-3);padding:var(--space-2) 0;border-bottom:1px solid var(--rule);font-size:var(--text-base);color:var(--ink-body);transition:color var(--dur-fast) var(--ease-out);display:flex}.q-index__item:last-child{border-bottom:0}.q-index__item:hover{color:var(--ink)}.q-index__label{text-overflow:ellipsis;white-space:nowrap;flex:1;overflow:hidden}.q-index__n{font-family:var(--font-mono);font-size:var(--text-sm);font-variant-numeric:tabular-nums;color:var(--ink-faint)}.q-index__rank{font-family:var(--font-mono);font-size:var(--text-sm);font-variant-numeric:tabular-nums;color:var(--ink-faint);min-width:1.2em}.q-index__foot{padding-bottom:var(--space-6)}.q-archive__year{font-family:var(--font-mono);font-size:var(--text-xl);font-variant-numeric:tabular-nums;color:var(--ink);padding:var(--space-6) 0 var(--space-2);border-bottom:1px solid var(--rule-strong);margin-bottom:var(--space-1)}.q-pager{justify-content:center;align-items:center;gap:var(--space-5);padding:var(--space-7) 0;font-size:var(--text-md);display:flex}.q-pager__link{color:var(--ink-muted)}.q-pager__link:hover{color:var(--ink);text-underline-offset:3px;text-decoration:underline}.q-pager__link.is-disabled{color:var(--ink-faint);pointer-events:none}.q-pager__num{font-family:var(--font-mono);font-variant-numeric:tabular-nums;color:var(--ink)}.q-section__h{font-size:var(--text-xl);color:var(--ink);padding-bottom:var(--space-3);border-bottom:1px solid var(--rule-strong);margin-bottom:var(--space-5);font-weight:600}.q-section__foot{padding:var(--space-5) 0}@media (max-width:991px){.q-index{grid-template-columns:repeat(2,1fr)}}@media (max-width:767px){.q-pagehead{padding:var(--space-6) 0 var(--space-3)}.q-index{padding:var(--space-6) 0;grid-template-columns:1fr}.q-indexbar{gap:var(--space-5)}.q-pager{gap:var(--space-4);padding:var(--space-5) 0}}.q-nav{z-index:var(--z-nav);align-items:center;gap:var(--space-6);height:72px;padding:0 var(--gutter);background:var(--paper);border-bottom:1px solid var(--rule);display:flex;position:sticky;top:0}.q-nav__brand{align-items:center;gap:var(--space-2);font-size:var(--text-md);color:var(--ink);letter-spacing:var(--tracking-none);white-space:nowrap;font-weight:600;display:inline-flex}.q-nav__links{align-items:center;gap:var(--space-5);display:flex}.q-nav__link{font-size:var(--text-md);color:var(--ink-muted);transition:color var(--dur-fast) var(--ease-out);padding:4px 0;position:relative}.q-nav__link:hover,.q-nav__link.is-active{color:var(--ink)}.q-nav__link.is-active:after{content:"";background:var(--seal);height:2px;position:absolute;bottom:-1px;left:0;right:0}.q-nav__spacer{flex:1}.q-nav__search{width:200px}.q-nav__actions{align-items:center;gap:var(--space-3);display:flex}.q-nav__toggle{flex-direction:column;justify-content:space-between;width:20px;height:14px;padding:0;display:none}.q-nav__toggle span{background:var(--ink);height:1.5px;display:block}.q-nav__user{align-items:center;gap:var(--space-2);color:var(--ink-body);padding:0;display:inline-flex}.q-nav__user:hover{color:var(--ink)}.q-nav__username{font-size:var(--text-md);text-overflow:ellipsis;white-space:nowrap;max-width:8em;overflow:hidden}.q-nav__caret{color:var(--ink-muted);font-size:10px}.q-masthead{padding:var(--space-8) 0 var(--space-6);border-bottom:1px solid var(--rule)}.q-masthead__row{align-items:flex-end;gap:var(--space-5);display:flex}.q-masthead__title{font-size:var(--text-masthead);color:var(--ink);letter-spacing:var(--tracking-masthead);font-weight:700;line-height:1.2}.q-masthead__line{margin-top:var(--space-3);font-size:var(--text-md);color:var(--ink-muted)}.q-masthead__date{font-family:var(--font-mono);font-size:var(--text-sm);font-variant-numeric:tabular-nums;color:var(--ink-faint);margin-left:auto;padding-bottom:4px}.q-footer{background:var(--ink);color:var(--on-ink);padding:var(--space-8) 0 var(--space-6)}.q-footer a{color:var(--on-ink)}.q-footer a:hover{text-underline-offset:3px;text-decoration:underline}.q-footer__grid{gap:var(--space-6);grid-template-columns:1.4fr 1fr 1fr 1fr;display:grid}.q-footer__title{font-size:var(--text-md);letter-spacing:.12em;color:var(--on-ink);font-weight:600}.q-footer__desc{margin-top:var(--space-3);font-size:var(--text-sm);line-height:var(--leading-read);color:var(--on-ink-muted);max-width:22em}.q-footer__h{font-size:var(--text-sm);color:var(--on-ink-muted);margin-bottom:var(--space-3)}.q-footer__list{font-size:var(--text-sm);margin:0;padding:0;line-height:2.1;list-style:none}.q-footer__bottom{justify-content:space-between;align-items:center;gap:var(--space-4);margin-top:var(--space-7);padding-top:var(--space-4);border-top:1px solid var(--on-ink-line);font-size:var(--text-sm);color:var(--on-ink-muted);display:flex}.q-footer__icp{color:var(--on-ink-muted);white-space:nowrap}.q-footer__icp:hover{color:var(--on-ink)}.q-footer__police{color:var(--on-ink-muted);white-space:nowrap}.q-footer__police:hover{color:var(--on-ink)}.q-layout{background:var(--paper);flex-direction:column;min-height:100%;display:flex}.q-layout__main{padding-bottom:var(--space-8);flex:1}.el-drawer.q-mobile-drawer{--el-drawer-padding-primary:0;background:var(--paper)}.el-drawer.q-mobile-drawer .el-drawer__header{display:none}.el-drawer.q-mobile-drawer .el-drawer__body{padding:0}.q-mobile-menu{min-height:100%;padding:var(--space-5) var(--space-5) var(--space-6);flex-direction:column;display:flex}.q-mobile-menu__head{padding-bottom:var(--space-5);border-bottom:1px solid var(--rule);justify-content:space-between;align-items:center;display:flex}.q-mobile-menu__brand{align-items:center;gap:var(--space-2);font-size:var(--text-md);color:var(--ink);font-weight:600;display:inline-flex}.q-mobile-menu__close{font-size:var(--text-xl);color:var(--ink-muted);padding:var(--space-2);line-height:1}.q-mobile-menu__close:hover{color:var(--ink)}.q-mobile-menu__search{padding:var(--space-5) 0;border-bottom:1px solid var(--rule)}.q-mobile-menu__nav{padding:var(--space-2) 0;flex-direction:column;display:flex}.q-mobile-menu__item{padding:var(--space-4) 0;border-bottom:1px solid var(--rule);font-size:var(--text-lg);color:var(--ink-body)}.q-mobile-menu__item.is-active{color:var(--ink);font-weight:600}.q-mobile-menu__item:hover{color:var(--ink)}.q-mobile-menu__user{padding-top:var(--space-6);margin-top:auto}.q-mobile-menu__user-row{align-items:center;gap:var(--space-3);padding-bottom:var(--space-4);border-bottom:1px solid var(--rule);display:flex}.q-mobile-menu__user-name{font-size:var(--text-md);color:var(--ink);font-weight:600}.q-mobile-menu__user-role{font-size:var(--text-sm);color:var(--ink-muted)}.q-mobile-menu__user-actions{padding-top:var(--space-2);flex-direction:column;display:flex}.q-mobile-menu__user-link{padding:var(--space-3) 0;font-size:var(--text-md);color:var(--ink-body);text-align:left}.q-mobile-menu__user-link:hover{color:var(--ink)}.q-mobile-menu__user-link--danger:hover{color:var(--seal)}.q-mobile-menu__auth{gap:var(--space-3);padding-top:var(--space-6);flex-direction:column;margin-top:auto;display:flex}@media (max-width:991px){.q-nav{gap:var(--space-5)}.q-nav__search{width:160px}}@media (max-width:767px){.q-nav{gap:var(--space-4);height:56px}.q-nav__links,.q-nav__search,.q-nav__brand{display:none}.q-nav__brand.is-inner{display:inline-flex}.q-nav__toggle{display:flex}.q-nav__username,.q-nav__caret{display:none}.q-masthead{padding:var(--space-6) 0 var(--space-5)}.q-masthead__row{flex-wrap:wrap}.q-masthead__date{width:100%;margin-left:0}.q-footer{padding:var(--space-7) 0 var(--space-5)}.q-footer__grid{grid-template-columns:1fr}.q-footer__col--hide{display:none}.q-footer__bottom{align-items:flex-start;gap:var(--space-2);flex-direction:column}.q-layout__main{padding-bottom:var(--space-6)}}@supports (padding-bottom:env(safe-area-inset-bottom)){.q-footer,.q-mobile-menu{padding-bottom:calc(var(--space-6) + env(safe-area-inset-bottom))}}.q-auth{min-height:100%;padding:var(--space-9) var(--gutter);background:var(--ink);flex-direction:column;justify-content:center;align-items:center;display:flex}.q-auth__sheet{background:var(--paper-raised);border-radius:var(--radius-sheet);width:100%;max-width:420px;box-shadow:var(--shadow-overlay);padding:var(--space-7) var(--space-7) var(--space-6)}.q-auth__title{margin-top:var(--space-5);font-size:var(--text-xl);color:var(--ink);font-weight:600}.q-auth__sub{margin-top:var(--space-2);padding-bottom:var(--space-5);border-bottom:1px solid var(--rule);font-size:var(--text-base);color:var(--ink-muted)}.q-auth__actions{margin-top:var(--space-6)}.q-auth__foot{margin-top:var(--space-5);padding-top:var(--space-4);border-top:1px solid var(--rule);font-size:var(--text-sm);color:var(--ink-muted);text-align:center}.q-auth__foot a{color:var(--seal)}.q-auth__foot a:hover{text-underline-offset:3px;text-decoration:underline}.q-auth__back{margin-top:var(--space-5);font-size:var(--text-sm);color:var(--on-ink-muted)}.q-auth__back:hover{color:var(--on-ink);text-underline-offset:3px;text-decoration:underline}.q-field{margin-top:var(--space-5)}.q-field__label{margin-bottom:var(--space-2);font-size:var(--text-sm);color:var(--ink-muted);display:block}.q-field__error{margin-top:var(--space-2);font-size:var(--text-sm);color:var(--seal)}@media (max-width:767px){.q-auth,.q-auth__sheet{padding:var(--space-6) var(--space-5)}}.q-admin{background:var(--paper);grid-template-columns:240px 1fr;min-height:100vh;display:grid}.q-admin__side{background:var(--ink);color:var(--on-ink);padding:var(--space-6) 0;height:100vh;position:sticky;top:0;overflow-y:auto}.q-admin__brand{padding:0 var(--space-5) var(--space-6)}.q-admin__brand-name{font-size:var(--text-md);letter-spacing:.12em;color:var(--on-ink);font-weight:600}.q-admin__brand-sub{margin-top:var(--space-1);font-size:var(--text-sm);color:var(--on-ink-muted)}.q-admin__group{padding:var(--space-5) var(--space-5) var(--space-2);color:var(--on-ink-muted);font-size:11px}.q-admin__item{height:44px;padding:0 var(--space-5);font-size:var(--text-base);color:var(--on-ink-dim);transition:color var(--dur-fast) var(--ease-out), background var(--dur-fast) var(--ease-out);border-left:3px solid #0000;align-items:center;display:flex}.q-admin__item:hover{color:var(--on-ink);background:var(--on-ink-hover)}.q-admin__item.is-active{color:var(--on-ink);background:var(--on-ink-hover);border-left-color:var(--seal)}.q-admin__side-foot{margin-top:var(--space-6);padding:var(--space-5) var(--space-5) 0;border-top:1px solid var(--on-ink-line)}.q-admin__main{flex-direction:column;min-width:0;display:flex}.q-admin__top{z-index:var(--z-nav);align-items:center;gap:var(--space-4);height:64px;padding:0 var(--space-6);background:var(--paper);border-bottom:1px solid var(--rule);display:flex;position:sticky;top:0}.q-admin__top h1{font-size:20px;font-weight:600;line-height:1.3}.q-admin__user{align-items:center;gap:var(--space-3);font-size:var(--text-base);color:var(--ink);margin-left:auto;display:flex}.q-admin__body{padding:var(--space-6);flex:1;min-width:0}.q-admin__toggle{flex-direction:column;justify-content:space-between;width:20px;height:14px;padding:0;display:none}.q-admin__toggle span{background:var(--ink);height:1.5px;display:block}.q-toolbar{align-items:center;gap:var(--space-3);padding-bottom:var(--space-5);flex-wrap:wrap;display:flex}.q-toolbar__grow{flex:1}.q-toolbar__field{width:220px;max-width:100%}.q-panel{background:var(--paper-raised);border:1px solid var(--rule);border-radius:var(--radius-sheet);overflow:hidden}.q-panel__foot{padding:var(--space-4) var(--space-5);border-top:1px solid var(--rule);justify-content:flex-end;display:flex}.q-num{font-family:var(--font-mono);font-variant-numeric:tabular-nums;color:var(--ink-muted)}.q-cell-title{color:var(--ink);font-weight:500}.q-cell-title:hover{text-underline-offset:3px;text-decoration:underline}.q-cell-meta{font-family:var(--font-mono);font-size:var(--text-sm);font-variant-numeric:tabular-nums;color:var(--ink-muted)}.q-row-actions{align-items:center;gap:var(--space-4);flex-wrap:wrap;display:flex}.q-statband{border-bottom:1px solid var(--rule);grid-template-columns:repeat(4,1fr);display:grid}.q-statband__cell{padding:var(--space-5) var(--space-5) var(--space-5) 0}.q-statband__cell+.q-statband__cell{border-left:1px solid var(--rule);padding-left:var(--space-5)}.q-statband__n{font-family:var(--font-mono);font-size:var(--text-2xl);font-variant-numeric:tabular-nums;color:var(--ink);line-height:1.2}.q-statband__l{margin-top:var(--space-1);font-size:var(--text-sm);color:var(--ink-muted)}.q-statband__ctx{margin-top:var(--space-2);font-family:var(--font-mono);font-size:var(--text-xs);color:var(--ink-muted)}.q-statband__ctx--good{color:var(--pig-success)}.q-chart{background:var(--paper-raised);border:1px solid var(--rule);border-radius:var(--radius-sheet);padding:var(--space-5)}.q-chart__h{font-size:var(--text-base);color:var(--ink);padding-bottom:var(--space-3);margin-bottom:var(--space-4);border-bottom:1px solid var(--rule);font-weight:600}.q-chart__canvas{width:100%;height:300px}.q-chart__grid{gap:var(--space-5);grid-template-columns:repeat(2,1fr);display:grid}.q-quick{align-items:center;gap:var(--space-5);padding-top:var(--space-5);flex-wrap:wrap;display:flex}.q-quick__item{font-size:var(--text-md);color:var(--ink);text-underline-offset:3px;text-decoration:underline;text-decoration-thickness:1px}.q-quick__item:hover{text-decoration-thickness:2px}.q-form{max-width:900px}.q-form__row{gap:var(--space-5);flex-wrap:wrap;display:flex}.q-form__actions{align-items:center;gap:var(--space-3);padding-top:var(--space-5);border-top:1px solid var(--rule);margin-top:var(--space-6);display:flex}@media (max-width:991px){.q-admin{grid-template-columns:1fr}.q-admin__side{display:none}.q-admin__toggle{display:flex}}@media (max-width:767px){.q-admin__top{padding:0 var(--space-5)}.q-admin__body{padding:var(--space-5)}.q-toolbar__field{width:100%}.q-statband{grid-template-columns:repeat(2,1fr)}.q-statband__cell:nth-child(3){border-left:0;padding-left:0}.q-statband__cell:nth-child(n+3){border-top:1px solid var(--rule)}.q-chart__grid{grid-template-columns:1fr}}
