/*!
 * Wos UI v1.1.0 · 零依赖设计系统 · MIT License
 * 本文件 = tokens.css + base.css + components.css 合并版
 * 仓库: https://gitee.com/dushu/wos-ui  演示: https://wos.qzh.red
 */:root{--hue: 275;--hue-shift: 18;--brand: oklch(.585 .19 var(--hue));--brand-hover: oklch(.525 .2 var(--hue));--brand-2: oklch(.665 .155 calc(var(--hue) + var(--hue-shift)));--brand-soft: oklch(.965 .025 var(--hue));--brand-line: oklch(.885 .05 var(--hue));--gold: oklch(.8 .12 85);--gold-deep: oklch(.62 .11 75);--ok: oklch(.58 .15 155);--ok-soft: oklch(.965 .04 155);--warn: oklch(.66 .14 70);--warn-soft: oklch(.965 .045 75);--danger: oklch(.55 .21 27);--danger-soft: oklch(.965 .035 27);--danger-line: oklch(.9 .05 27);--info: oklch(.58 .16 260);--info-soft: oklch(.965 .03 260);--side-bg: oklch(.185 .016 var(--hue));--side-bg-2: oklch(.225 .018 var(--hue));--side-text: oklch(.78 .012 var(--hue));--side-text-dim: oklch(.58 .014 var(--hue));--side-active-bg: oklch(.3 .045 var(--hue));--side-active-text: #ffffff;--side-hover: oklch(.255 .02 var(--hue));--side-border: oklch(.3 .018 var(--hue));--bg: oklch(.984 .003 var(--hue));--surface: oklch(1 .0015 var(--hue));--surface-2: oklch(.975 .004 var(--hue));--surface-sunken: oklch(.968 .005 var(--hue));--text: oklch(.24 .012 var(--hue));--text-2: oklch(.44 .014 var(--hue));--text-3: oklch(.6 .012 var(--hue));--text-inv: oklch(.97 .005 var(--hue));--line: oklch(.918 .006 var(--hue));--line-2: oklch(.945 .005 var(--hue));--line-strong: oklch(.86 .008 var(--hue));--line-hover: oklch(.83 .01 var(--hue));--shadow-xs: 0 1px 2px oklch(.24 .02 var(--hue) / .04);--shadow-sm: 0 1px 3px oklch(.24 .02 var(--hue) / .06), 0 1px 2px oklch(.24 .02 var(--hue) / .03);--shadow-md: 0 4px 16px -4px oklch(.24 .02 var(--hue) / .1), 0 2px 6px -2px oklch(.24 .02 var(--hue) / .05);--shadow-lg: 0 18px 44px -12px oklch(.24 .03 var(--hue) / .18), 0 6px 14px -6px oklch(.24 .02 var(--hue) / .08);--shadow-glow: 0 0 0 3px oklch(.62 .15 var(--hue) / .14);--r-xs: 5px;--r-sm: 7px;--r-md: 10px;--r-lg: 14px;--r-xl: 18px;--r-full: 999px;--s-1: 4px;--s-2: 8px;--s-3: 12px;--s-4: 16px;--s-5: 20px;--s-6: 24px;--s-8: 32px;--s-10: 40px;--s-12: 48px;--s-16: 64px;--font: "PingFang SC", "HarmonyOS Sans SC", "Source Han Sans SC", "Noto Sans CJK SC", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--font-num: "SF Mono", "DIN Alternate", "Roboto Mono", ui-monospace, monospace;--font-mono: "SF Mono", "JetBrains Mono", ui-monospace, "Cascadia Code", monospace;--ease: cubic-bezier(.165, .84, .44, 1);--ease-expo: cubic-bezier(.19, 1, .22, 1);--ease-in-out: cubic-bezier(.65, 0, .35, 1);--dur-fast: .12s;--dur: .2s;--dur-slow: .34s;--side-w: 250px;--side-w-collapsed: 68px;--topbar-h: 62px;--content-max: 1440px;color-scheme:light}*,*:before,*:after{box-sizing:border-box}html,body{min-height:100%}body{margin:0;font-family:var(--font);font-size:14px;line-height:1.6;color:var(--text);background:var(--bg);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility}h1,h2,h3,h4,h5{margin:0;font-weight:600;letter-spacing:-.011em}p{margin:0}a{color:inherit;text-decoration:none}button{font-family:inherit;font-size:inherit}ul,ol{margin:0;padding:0;list-style:none}::selection{background:oklch(.62 .15 var(--hue) / .18)}::-webkit-scrollbar{width:9px;height:9px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:oklch(.84 .008 var(--hue));border-radius:var(--r-full);border:2px solid var(--bg)}::-webkit-scrollbar-thumb:hover{background:oklch(.74 .01 var(--hue))}.num{font-variant-numeric:tabular-nums;font-feature-settings:"tnum"}.panel{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg)}.panel-head{display:flex;align-items:center;justify-content:space-between;gap:var(--s-4);padding:var(--s-5) var(--s-6);border-bottom:1px solid var(--line-2)}.panel-title{font-size:14.5px;font-weight:600;letter-spacing:-.008em}.panel-sub{font-size:12.5px;color:var(--text-3);margin-top:2px;font-weight:400}.panel-body{padding:var(--s-6)}.panel-body--flush{padding:0}.btn{display:inline-flex;align-items:center;justify-content:center;gap:7px;height:36px;padding:0 15px;border:1px solid var(--line-strong);border-radius:var(--r-sm);background:var(--surface);color:var(--text);font-size:13.5px;font-weight:500;cursor:pointer;white-space:nowrap;transition:background var(--dur-fast) var(--ease),border-color var(--dur-fast) var(--ease),color var(--dur-fast) var(--ease),box-shadow var(--dur-fast) var(--ease),transform var(--dur-fast) var(--ease)}.btn:hover{background:var(--surface-2);border-color:var(--line-hover)}.btn:active{transform:translateY(.5px)}.btn:focus-visible{outline:none;box-shadow:var(--shadow-glow)}.btn:disabled{opacity:.5;cursor:not-allowed;transform:none}.btn-primary{background:var(--brand);border-color:var(--brand);color:#fff;box-shadow:0 1px 2px oklch(.5 .16 var(--hue) / .28)}.btn-primary:hover{background:var(--brand-hover);border-color:var(--brand-hover);box-shadow:0 2px 8px oklch(.5 .16 var(--hue) / .32)}.btn-ghost{background:transparent;border-color:transparent;color:var(--text-2)}.btn-ghost:hover{background:oklch(.24 .02 var(--hue) / .055);border-color:transparent}.btn-danger{color:var(--danger);border-color:var(--danger-line)}.btn-danger:hover{background:var(--danger-soft);border-color:#e9b6af}.btn-sm{height:30px;padding:0 11px;font-size:12.5px;gap:5px}.btn-lg{height:42px;padding:0 22px;font-size:14.5px}.btn-block{width:100%}.btn-icon{width:34px;height:34px;padding:0;border-radius:var(--r-sm)}.field{display:flex;flex-direction:column;gap:7px}.label{font-size:12.5px;font-weight:500;color:var(--text-2);letter-spacing:.004em}.label .req{color:var(--danger);margin-left:2px}.input,.select,.textarea{width:100%;height:38px;padding:0 12px;border:1px solid var(--line-strong);border-radius:var(--r-sm);background:var(--surface);color:var(--text);font-family:inherit;font-size:14px;transition:border-color var(--dur-fast) var(--ease),box-shadow var(--dur-fast) var(--ease),background var(--dur-fast) var(--ease)}.textarea{height:auto;padding:10px 12px;line-height:1.65;resize:vertical;min-height:92px}.select{-webkit-appearance:none;-moz-appearance:none;appearance:none;padding-right:32px;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%2371807f' stroke-width='2.5' stroke-linecap='round'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 11px center;cursor:pointer}.input:hover,.select:hover,.textarea:hover{border-color:var(--line-hover)}.input:focus,.select:focus,.textarea:focus{outline:none;border-color:var(--brand);box-shadow:var(--shadow-glow)}.input::placeholder,.textarea::placeholder{color:oklch(.7 .008 var(--hue))}.input:disabled,.select:disabled,.textarea:disabled{background:var(--surface-sunken);color:var(--text-3);cursor:not-allowed}.input--err{border-color:var(--danger)}.hint{font-size:12px;color:var(--text-3);line-height:1.5}.search{position:relative}.search .input{padding-left:34px}.search:before{content:"";position:absolute;left:11px;top:50%;width:14px;height:14px;transform:translateY(-50%);background:var(--text-3);-webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.2' stroke-linecap='round'%3E%3Ccircle cx='11' cy='11' r='7'/%3E%3Cpath d='M16.5 16.5L21 21'/%3E%3C/svg%3E") center/contain no-repeat;mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.2' stroke-linecap='round'%3E%3Ccircle cx='11' cy='11' r='7'/%3E%3Cpath d='M16.5 16.5L21 21'/%3E%3C/svg%3E") center/contain no-repeat;pointer-events:none}.badge{display:inline-flex;align-items:center;gap:5px;height:21px;padding:0 8px;border-radius:var(--r-xs);font-size:11.5px;font-weight:500;letter-spacing:.01em;white-space:nowrap;background:var(--surface-sunken);color:var(--text-2);border:1px solid var(--line-2)}.badge--ok{background:var(--ok-soft);color:#005d33;color:oklch(.42 .13 155);border-color:#b9e4c6}.badge--warn{background:var(--warn-soft);color:#7e5400;color:oklch(.48 .13 75);border-color:#f3d2a4}.badge--danger{background:var(--danger-soft);color:#ac1a1c;border-color:var(--danger-line)}.badge--brand{background:var(--brand-soft);color:oklch(.47 .17 var(--hue));border-color:var(--brand-line)}.badge--gold{background:#fff0d2;background:oklch(.96 .045 85);color:var(--gold-deep);border-color:#edd5a3}.badge--dot:before{content:"";width:5px;height:5px;border-radius:50%;background:currentColor;flex-shrink:0}.table{width:100%;border-collapse:separate;border-spacing:0;font-size:13.5px}.table th{text-align:left;font-weight:500;font-size:12px;color:var(--text-3);letter-spacing:.03em;padding:10px 16px;background:var(--surface-sunken);border-bottom:1px solid var(--line);white-space:nowrap}.table th:first-child{padding-left:var(--s-6);border-top-left-radius:var(--r-lg)}.table th:last-child{padding-right:var(--s-6);border-top-right-radius:var(--r-lg)}.table td{padding:13px 16px;border-bottom:1px solid var(--line-2);vertical-align:middle}.table td:first-child{padding-left:var(--s-6)}.table td:last-child{padding-right:var(--s-6)}.table tbody tr{transition:background var(--dur-fast) var(--ease)}.table tbody tr:hover{background:var(--surface-2)}.table tbody tr:last-child td{border-bottom:none}.table .ta-r{text-align:right}.table .ta-c{text-align:center}.empty{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--s-3);padding:var(--s-16) var(--s-6);text-align:center}.empty-icon{width:52px;height:52px;display:grid;place-items:center;border-radius:var(--r-lg);background:var(--surface-sunken);border:1px solid var(--line-2);color:var(--text-3);margin-bottom:var(--s-1)}.empty-title{font-size:14.5px;font-weight:600}.empty-desc{font-size:13px;color:var(--text-3);max-width:380px;line-height:1.65}.spinner{width:15px;height:15px;border:2px solid oklch(1 0 0 / .25);border-top-color:currentColor;border-radius:50%;animation:spin .62s linear infinite;flex-shrink:0}.spinner--dark{border-color:oklch(.24 .02 var(--hue) / .16);border-top-color:var(--brand)}@keyframes spin{to{transform:rotate(360deg)}}.skeleton{background:linear-gradient(90deg,var(--surface-sunken) 25%,var(--line-2) 50%,var(--surface-sunken) 75%);background-size:200% 100%;animation:shimmer 1.3s ease-in-out infinite;border-radius:var(--r-xs)}@keyframes shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}.row{display:flex;align-items:center;gap:var(--s-3)}.row--between{justify-content:space-between}.row--wrap{flex-wrap:wrap}.col{display:flex;flex-direction:column}.grow{flex:1;min-width:0}.muted{color:var(--text-3)}.dim{color:var(--text-2)}.nowrap{white-space:nowrap}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.clamp-2{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.mt-1{margin-top:var(--s-1)}.mt-2{margin-top:var(--s-2)}.mt-3{margin-top:var(--s-3)}.mt-4{margin-top:var(--s-4)}.mt-6{margin-top:var(--s-6)}.mt-8{margin-top:var(--s-8)}.mb-4{margin-bottom:var(--s-4)}.hr{height:1px;background:var(--line-2);border:0;margin:0}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}.mask{position:fixed;top:0;right:0;bottom:0;left:0;background:oklch(.2 .02 var(--hue) / .45);display:grid;place-items:center;z-index:60;animation:wos-fade-in .18s var(--ease)}.modal{width:400px;max-width:calc(100vw - 32px);max-height:calc(100vh - 64px);overflow-y:auto;background:var(--surface);border-radius:var(--r-md);padding:var(--s-5) 22px;box-shadow:0 18px 50px oklch(.2 .03 var(--hue) / .25);animation:wos-pop .2s var(--ease-expo)}.modal-title{display:block;font-size:15px;font-weight:600;margin-bottom:4px}.modal-sub{font-size:12px;color:var(--text-3);margin:0 0 14px}.modal-err{font-size:12.5px;color:var(--danger);margin:2px 0 10px}.modal-foot{display:flex;justify-content:flex-end;gap:8px;margin-top:var(--s-5)}@keyframes wos-fade-in{0%{opacity:0}to{opacity:1}}@keyframes wos-pop{0%{opacity:0;transform:translateY(10px) scale(.98)}to{opacity:1;transform:none}}.toast-host{position:fixed;top:18px;left:50%;transform:translate(-50%);z-index:9999;display:flex;flex-direction:column;gap:8px;align-items:center;pointer-events:none}.toast{display:flex;align-items:center;gap:9px;padding:9px 16px;border-radius:9px;background:oklch(.24 .012 var(--hue));color:#fff;font-size:13.2px;box-shadow:0 10px 30px -8px oklch(.2 .03 var(--hue) / .42),0 3px 10px -3px oklch(.2 .02 var(--hue) / .24);max-width:min(90vw,440px);animation:wos-toast-in .2s var(--ease-expo)}.toast-dot{width:6px;height:6px;border-radius:50%;background:var(--brand-2);flex-shrink:0}.toast--ok .toast-dot{background:#34d399}.toast--error .toast-dot{background:#f87171}.toast--info .toast-dot{background:var(--gold)}.toast--leave{opacity:0;transform:translateY(-10px) scale(.97);transition:all .2s var(--ease)}@keyframes wos-toast-in{0%{opacity:0;transform:translateY(-10px) scale(.97)}to{opacity:1;transform:none}}.tabs{display:inline-flex;gap:2px;padding:3px;background:var(--surface-sunken);border:1px solid var(--line-2);border-radius:var(--r-md)}.tab{height:30px;padding:0 16px;border:none;border-radius:var(--r-sm);background:transparent;color:var(--text-2);font-size:13px;font-weight:500;cursor:pointer;transition:background var(--dur-fast) var(--ease),color var(--dur-fast) var(--ease),box-shadow var(--dur-fast) var(--ease)}.tab:hover{color:var(--text)}.tab:focus-visible{outline:none;box-shadow:var(--shadow-glow)}.tab--active{background:var(--surface);color:var(--text);box-shadow:var(--shadow-xs)}.tabs--line{display:flex;gap:var(--s-5);padding:0;background:none;border:none;border-bottom:1px solid var(--line);border-radius:0}.tabs--line .tab{height:38px;padding:0 2px;border-radius:0;background:none;box-shadow:none;position:relative}.tabs--line .tab--active{background:none;box-shadow:none;color:var(--brand)}.tabs--line .tab--active:after{content:"";position:absolute;left:0;right:0;bottom:-1px;height:2px;background:var(--brand);border-radius:2px}.switch{position:relative;display:inline-block;width:40px;height:22px;flex-shrink:0}.switch input{position:absolute;opacity:0;top:0;right:0;bottom:0;left:0;margin:0;cursor:pointer}.switch-track{position:absolute;top:0;right:0;bottom:0;left:0;border-radius:var(--r-full);background:oklch(.8 .008 var(--hue));transition:background var(--dur) var(--ease)}.switch-track:after{content:"";position:absolute;top:2px;left:2px;width:18px;height:18px;border-radius:50%;background:#fff;box-shadow:0 1px 3px oklch(.2 .02 var(--hue) / .3);transition:transform var(--dur) var(--ease-expo)}.switch input:checked+.switch-track{background:var(--brand)}.switch input:checked+.switch-track:after{transform:translate(18px)}.switch input:focus-visible+.switch-track{box-shadow:var(--shadow-glow)}.switch input:disabled+.switch-track{opacity:.45;cursor:not-allowed}.switch-sm{width:32px;height:18px}.switch-sm .switch-track:after{width:14px;height:14px}.switch-sm input:checked+.switch-track:after{transform:translate(14px)}.ck{display:inline-flex;align-items:center;gap:8px;cursor:pointer;font-size:13.5px;color:var(--text-2);-webkit-user-select:none;user-select:none}.ck input{position:absolute;opacity:0;pointer-events:none}.ck-box{width:17px;height:17px;border:1.5px solid var(--line-strong);border-radius:5px;background:var(--surface);display:grid;place-items:center;transition:background var(--dur-fast) var(--ease),border-color var(--dur-fast) var(--ease);flex-shrink:0}.ck-box svg{width:11px;height:11px;stroke:#fff;stroke-width:3;fill:none;stroke-linecap:round;stroke-linejoin:round;opacity:0;transform:scale(.6);transition:opacity var(--dur-fast) var(--ease),transform var(--dur-fast) var(--ease-expo)}.ck input:checked+.ck-box{background:var(--brand);border-color:var(--brand)}.ck input:checked+.ck-box svg{opacity:1;transform:scale(1)}.ck input:focus-visible+.ck-box{box-shadow:var(--shadow-glow)}.ck input:disabled+.ck-box{opacity:.45}.ck:hover .ck-box{border-color:var(--line-hover)}.ck input:checked:hover+.ck-box{border-color:var(--brand)}.pager{display:flex;align-items:center;gap:6px;flex-wrap:wrap}.pager-btn{min-width:30px;height:30px;padding:0 9px;display:inline-flex;align-items:center;justify-content:center;border:1px solid var(--line-2);border-radius:var(--r-sm);background:var(--surface);color:var(--text-2);font-size:12.5px;font-variant-numeric:tabular-nums;cursor:pointer;transition:background var(--dur-fast) var(--ease),color var(--dur-fast) var(--ease),border-color var(--dur-fast) var(--ease)}.pager-btn:hover:not(:disabled):not(.pager-btn--on):not(.pager-btn--active){border-color:var(--brand);color:var(--brand)}.pager-btn--on,.pager-btn--active{background:var(--brand-soft);border-color:var(--brand);color:var(--brand);font-weight:600}.pager-btn:disabled{opacity:.4;cursor:not-allowed}.pager-ellipsis,.pager-gap{min-width:18px;text-align:center;color:var(--text-3);font-size:12px;-webkit-user-select:none;user-select:none}.pager-info{margin-left:auto;font-size:12px;color:var(--text-3)}.prog{height:7px;border-radius:var(--r-full);background:var(--surface-sunken);border:1px solid var(--line-2);overflow:hidden}.prog-fill{height:100%;border-radius:var(--r-full);background:linear-gradient(90deg,var(--brand-2),var(--brand));transition:width var(--dur-slow) var(--ease-expo)}.prog-fill--ok{background:#269e5f}.prog-fill--warn{background:#d79628}.prog-fill--danger{background:#db423c}.metrics{display:grid;background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);overflow:hidden}.metric{padding:var(--s-5) var(--s-6);border-left:1px solid var(--line-2);min-width:0}.metric:first-child{border-left:0}.m-label{font-size:12px;color:var(--text-3);letter-spacing:.02em;white-space:nowrap}.m-value{font-size:clamp(24px,2.3vw,32px);font-weight:600;letter-spacing:-.028em;line-height:1.18;margin-top:var(--s-2);font-variant-numeric:tabular-nums}.m-value .m-unit{font-size:14px;font-weight:400;color:var(--text-3);margin-left:2px;letter-spacing:0}.metric--brand .m-value{color:var(--brand)}.metric--gold .m-value{color:var(--gold-deep)}.m-foot{margin-top:5px;min-height:17px;font-size:12px;color:var(--text-3)}.m-foot .up{color:#00884d;color:oklch(.55 .14 155);font-weight:500}.m-foot .down{color:#c53732;font-weight:500}.avatar{width:32px;height:32px;border-radius:var(--r-full);display:grid;place-items:center;background:linear-gradient(140deg,var(--brand),var(--brand-2));color:#fff;font-size:13px;font-weight:600;box-shadow:0 1px 4px oklch(.55 .18 var(--hue) / .3);flex-shrink:0}.avatar-sm{width:26px;height:26px;font-size:11px}.avatar-lg{width:44px;height:44px;font-size:17px}.avatar-group{display:flex}.avatar-group .avatar{border:2px solid var(--surface);margin-left:-8px}.avatar-group .avatar:first-child{margin-left:0}.tag{display:inline-flex;align-items:center;gap:6px;height:26px;padding:0 10px;border-radius:var(--r-sm);border:1px solid var(--line);background:var(--surface);color:var(--text-2);font-size:12.5px;cursor:default;transition:border-color var(--dur-fast) var(--ease),background var(--dur-fast) var(--ease),color var(--dur-fast) var(--ease);-webkit-user-select:none;user-select:none}.tag--click{cursor:pointer}.tag--click:hover{border-color:var(--brand-line);background:var(--brand-soft);color:oklch(.47 .17 var(--hue))}.tag--on{border-color:var(--brand);background:var(--brand-soft);color:oklch(.47 .17 var(--hue));font-weight:500}.tag-x{display:inline-grid;place-items:center;width:14px;height:14px;margin-right:-3px;border-radius:50%;cursor:pointer;color:var(--text-3);font-size:12px;line-height:1}.tag-x:hover{background:oklch(.24 .02 var(--hue) / .1);color:var(--text)}[data-tip]{position:relative}[data-tip]:after{content:attr(data-tip);position:absolute;bottom:calc(100% + 7px);left:50%;transform:translate(-50%) translateY(2px);padding:5px 10px;border-radius:var(--r-sm);background:oklch(.24 .012 var(--hue));color:#fff;font-size:12px;white-space:nowrap;opacity:0;pointer-events:none;transition:opacity var(--dur-fast) var(--ease),transform var(--dur-fast) var(--ease);z-index:80}[data-tip]:hover:after{opacity:1;transform:translate(-50%) translateY(0)}[data-tip--bottom]:after{bottom:auto;top:calc(100% + 7px)}.notice{display:flex;align-items:flex-start;gap:10px;padding:12px 16px;border-radius:var(--r-md);font-size:13px;line-height:1.6;border:1px solid var(--brand-line);background:var(--brand-soft);color:var(--text)}.notice--ok{border-color:#b9e4c6;background:var(--ok-soft)}.notice--warn{border-color:#f3d2a4;background:var(--warn-soft)}.notice--danger{border-color:var(--danger-line);background:var(--danger-soft)}.kbd{display:inline-block;padding:1px 6px;border:1px solid var(--line-strong);border-bottom-width:2px;border-radius:5px;background:var(--surface-sunken);font-family:var(--font-mono);font-size:11.5px;color:var(--text-2)}.scrim{position:fixed;top:0;right:0;bottom:0;left:0;background:oklch(.2 .02 var(--hue) / .42);z-index:25;animation:wos-fade-in .18s var(--ease)}.drawer{position:fixed;top:0;bottom:0;width:320px;max-width:86vw;background:var(--surface);box-shadow:var(--shadow-lg);z-index:26;transition:transform var(--dur-slow) var(--ease-expo)}.drawer--left{left:0;transform:translate(-100%)}.drawer--right{right:0;transform:translate(100%)}.drawer--open.drawer--left,.drawer--open.drawer--right{transform:none}:root{--hue: 25;--app-side-w: 232px;--app-topbar-h: 62px}html,body,#app{height:100%;margin:0}body{background:var(--bg)}.mask:not(.mask--on):not(.open){display:none}.mask[hidden]{display:none}.modal-head{display:flex;align-items:center;gap:var(--s-3);margin-bottom:var(--s-4)}.modal-head>b{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:15px;font-weight:600;color:var(--text)}.modal-head>.hint{flex:none;white-space:nowrap}.modal-head>.btn-icon{flex:none;margin-left:auto;color:var(--text-3)}.modal-head>.btn-icon:hover{color:var(--text)}.app{display:grid;grid-template-columns:var(--app-side-w) minmax(0,1fr);height:100%}.app-side{display:flex;flex-direction:column;min-height:0;background:linear-gradient(180deg,var(--side-bg),oklch(.16 .014 var(--hue)));border-right:1px solid oklch(.3 .018 var(--hue))}.app-brand{display:flex;align-items:center;gap:10px;padding:var(--s-5) var(--s-4) var(--s-4)}.app-brand .lg{width:34px;height:34px;border-radius:10px;display:grid;place-items:center;color:#fff;font-weight:700;font-size:16px;background:linear-gradient(135deg,var(--brand-2),var(--brand));box-shadow:0 4px 14px oklch(.5 .18 var(--hue) / .4);flex-shrink:0}.app-brand .nm{color:var(--side-text);font-size:14px;font-weight:600;letter-spacing:.02em;line-height:1.3}.app-brand .sub{color:var(--side-text-dim);font-size:11.5px}.app-scroll{flex:1;min-height:0;overflow-y:auto;padding:0 var(--s-3) var(--s-5)}.app-scroll::-webkit-scrollbar{width:8px}.app-scroll::-webkit-scrollbar-thumb{background:oklch(.34 .02 var(--hue));border-radius:var(--r-full)}.app-group{padding:var(--s-4) var(--s-2) var(--s-2);font-size:11px;letter-spacing:.06em;color:var(--side-text-dim);text-transform:uppercase}.app-nav{display:flex;align-items:center;gap:10px;padding:9px 10px;margin-bottom:2px;border-radius:var(--r-sm);color:var(--side-text-dim);font-size:13px;text-decoration:none;cursor:pointer;transition:background var(--dur-fast) var(--ease),color var(--dur-fast) var(--ease)}.app-nav:hover{background:var(--side-hover);color:var(--side-text)}.app-nav--on,.app-nav--on:hover{background:var(--side-active-bg);color:var(--side-active-text);font-weight:500}.app-nav svg{opacity:.85}.app-side-foot{padding:var(--s-4);border-top:1px solid var(--side-border);color:var(--side-text-dim);font-size:11.5px;line-height:1.7}.app-side-foot b{color:var(--side-text);font-weight:500}.app-body{display:flex;flex-direction:column;min-width:0;min-height:0}.app-topbar{height:var(--app-topbar-h);flex-shrink:0;display:flex;align-items:center;gap:var(--s-3);padding:0 var(--s-6);background:oklch(1 .0015 var(--hue) / .88);-webkit-backdrop-filter:saturate(180%) blur(14px);backdrop-filter:saturate(180%) blur(14px);border-bottom:1px solid var(--line);position:relative;z-index:40}.app-topbar .t{font-size:15px;font-weight:600;letter-spacing:-.01em}.app-topbar .sub{font-size:11.5px;color:var(--text-3)}.app-user{display:flex;align-items:center;gap:8px;padding:5px 10px 5px 6px;border:1px solid var(--line);border-radius:var(--r-full);background:var(--surface);cursor:pointer;font-size:12.5px;transition:border-color var(--dur-fast) var(--ease),box-shadow var(--dur-fast) var(--ease)}.app-user:hover{border-color:var(--brand-line);box-shadow:var(--shadow-xs)}.app-main{flex:1;min-height:0;overflow-y:auto;padding:var(--s-6)}.app-menu-wrap{position:relative}.app-menu-wrap>summary{list-style:none}.app-menu-wrap>summary::-webkit-details-marker{display:none}.app-menu{position:absolute;right:0;top:calc(100% + 8px);min-width:208px;padding:6px;background:var(--surface);border:1px solid var(--line);border-radius:var(--r-md);box-shadow:var(--shadow-md);z-index:60}.app-menu .mi{display:flex;align-items:center;gap:8px;width:100%;padding:8px 10px;border:0;background:none;border-radius:var(--r-xs);font:inherit;font-size:13px;color:var(--text-2);text-align:left;cursor:pointer}.app-menu .mi:hover{background:var(--surface-2);color:var(--text)}.app-menu .mi--danger:hover{background:var(--danger-soft);color:#ac1a1c}.app-menu .sep{height:1px;background:var(--line-2);margin:5px 0}.app-menu .mtitle{padding:8px 10px 4px;font-size:11px;color:var(--text-3)}.hue-row{display:flex;gap:6px;padding:6px 10px 8px}.hue-dot{width:20px;height:20px;border-radius:50%;border:2px solid var(--surface);box-shadow:0 0 0 1px var(--line-strong);cursor:pointer;padding:0;transition:transform var(--dur-fast) var(--ease)}.hue-dot:hover{transform:scale(1.12)}.app-backdrop{display:none}@media(max-width:960px){.app{grid-template-columns:minmax(0,1fr)}.app-side{position:fixed;inset:0 auto 0 0;width:var(--app-side-w);transform:translate(-100%);transition:transform var(--dur) var(--ease);z-index:80}.app-side--open{transform:none}.app-backdrop--on{display:block;position:fixed;top:0;right:0;bottom:0;left:0;z-index:70;background:oklch(.2 .02 var(--hue) / .4)}.app-main{padding:var(--s-4)}.app-topbar{padding:0 var(--s-4)}}.page-head{display:flex;align-items:flex-end;justify-content:space-between;gap:var(--s-4);flex-wrap:wrap;margin-bottom:var(--s-5)}.page-head h1{margin:0;font-size:19px;font-weight:650;letter-spacing:-.02em}.page-head p{margin:5px 0 0;font-size:12.5px;color:var(--text-3)}.head-actions{display:flex;align-items:center;gap:var(--s-2);flex-wrap:wrap}.stack{display:flex;flex-direction:column;gap:var(--s-5)}.stack-3{display:flex;flex-direction:column;gap:var(--s-3)}.grid-2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--s-5)}.grid-3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--s-4)}.grid-side{display:grid;grid-template-columns:minmax(0,1fr) 320px;gap:var(--s-5);align-items:start}@media(max-width:1180px){.grid-side,.grid-3{grid-template-columns:minmax(0,1fr)}}@media(max-width:820px){.grid-2{grid-template-columns:minmax(0,1fr)}}.table-scroll{overflow-x:auto}.table-scroll .table{min-width:620px}.cell-strong{font-weight:550}.cell-clamp{max-width:min(420px,30vw)}.cell-title{display:flex;align-items:center;gap:6px;min-width:0}.cell-title-t{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cell-sub{font-size:11.5px;color:var(--text-3);margin-top:2px;word-break:break-word}.row-actions{display:flex;gap:6px;justify-content:flex-end;flex-wrap:wrap}.page-title{margin:0;font-size:17px;font-weight:600}.issue-list{display:flex;flex-direction:column;gap:12px}.issue-card{display:flex;align-items:center;gap:14px;width:100%;padding:16px 20px;border:1px solid var(--border);border-radius:12px;background:var(--surface);cursor:pointer;text-align:left;transition:border-color .15s,box-shadow .15s}.issue-card:hover{border-color:var(--brand);box-shadow:0 2px 10px #0000000d}.ic-main{flex:1;min-width:0;display:flex;align-items:baseline;gap:12px;flex-wrap:wrap}.ic-no{font-size:15px}.ic-title{color:var(--text-3);font-size:13px}.ic-go{color:var(--brand);font-size:13px;white-space:nowrap}.pager{display:flex;align-items:center;justify-content:center;gap:12px}.form-row{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--s-4)}@media(max-width:760px){.form-row{grid-template-columns:minmax(0,1fr)}}.toolbar{display:flex;align-items:center;gap:var(--s-3);flex-wrap:wrap}.toolbar .grow{flex:1;min-width:180px}.steps{display:flex;flex-direction:column;gap:2px;counter-reset:step}.step{display:grid;grid-template-columns:26px minmax(0,1fr);gap:10px;padding-bottom:var(--s-4);position:relative}.step:not(:last-child):before{content:"";position:absolute;left:12.5px;top:28px;bottom:4px;width:1px;background:var(--line)}.step .no{counter-increment:step;width:26px;height:26px;border-radius:50%;display:grid;place-items:center;font-size:12px;font-weight:600;font-family:var(--font-num);background:var(--surface-sunken);border:1px solid var(--line);color:var(--text-3);z-index:1}.step--on .no{background:var(--brand);border-color:var(--brand);color:#fff;box-shadow:var(--shadow-glow)}.step--done .no{background:var(--brand-soft);border-color:var(--brand-line);color:oklch(.47 .17 var(--hue))}.step .st{font-size:13px;font-weight:550;color:var(--text);padding-top:3px}.step--on .st{color:oklch(.5 .16 var(--hue))}.step .sd{font-size:11.5px;color:var(--text-3);margin-top:3px;line-height:1.6}.cover-prev{border-radius:var(--r-md);overflow:hidden;border:1px solid var(--line);background:var(--surface-sunken);display:grid;place-items:center;color:var(--text-3);font-size:12px;min-height:180px;position:relative}.cover-prev img{width:100%;height:100%;object-fit:cover;display:block}.cover-prev .cap{position:absolute;inset:auto 0 0 0;padding:10px 12px;background:linear-gradient(transparent,oklch(.2 .02 var(--hue) / .72));color:#fff;font-size:13px;font-weight:600}.blocks{display:flex;flex-direction:column;gap:var(--s-4)}.block{border:1px solid var(--line);border-radius:var(--r-lg);background:var(--surface);overflow:hidden}.block-head{display:flex;align-items:center;gap:var(--s-2);padding:9px 12px;border-bottom:1px solid var(--line-2);background:var(--surface-sunken);font-size:12px;font-weight:600;color:var(--text-2)}.block-body{padding:12px}.flow{display:grid;gap:10px}.flow--1{grid-template-columns:minmax(0,1fr)}.flow--2{grid-template-columns:repeat(2,minmax(0,1fr))}.flow--3{grid-template-columns:repeat(3,minmax(0,1fr))}.flow-item{position:relative;border:1px solid var(--line);border-radius:var(--r-sm);overflow:hidden;background:var(--surface-sunken);min-height:90px}.flow-item img{width:100%;display:block}.flow-item .meta{padding:7px 9px;font-size:11.5px;color:var(--text-2);border-top:1px solid var(--line-2);background:var(--surface)}.flow-item .meta b{display:block;font-weight:550;font-size:12px;color:var(--text)}.flow-item .pick{position:absolute;top:0;right:0;bottom:0;left:0;border:0;background:oklch(.2 .02 var(--hue) / .28);color:#fff;font-size:12px;cursor:pointer;opacity:0;transition:opacity var(--dur-fast) var(--ease)}.flow-item:hover .pick{opacity:1}.flow-add{border:1px dashed var(--line-strong);border-radius:var(--r-sm);background:none;color:var(--text-3);min-height:90px;font-size:12px;cursor:pointer;display:grid;place-items:center;transition:all var(--dur-fast) var(--ease)}.flow-add:hover{border-color:var(--brand);color:var(--brand);background:var(--brand-soft)}.cover-row{display:grid;grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:10px}.pool{display:grid;grid-template-columns:repeat(auto-fill,minmax(132px,1fr));gap:10px;max-height:60vh;overflow-y:auto;padding-right:4px}.pv{border:1px solid var(--line);border-radius:var(--r-lg);background:var(--surface);overflow:hidden}.pv-cover{height:190px;background:linear-gradient(160deg,var(--brand-soft),var(--surface-sunken));display:grid;place-items:center;text-align:center;padding:var(--s-4);border-bottom:1px solid var(--line-2)}.pv-toc{padding:var(--s-4);border-bottom:1px solid var(--line-2)}.pv-toc ol{margin:0;padding-left:20px;font-size:12.5px;color:var(--text-2);line-height:2}.pv-content{padding:var(--s-4)}.dl{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px 18px}.dl>div{display:flex;flex-direction:column;gap:3px;min-width:0}.dl .wide{grid-column:1 / -1}.dl span{font-size:11.5px;color:var(--text-3)}.dl b{font-size:13px;font-weight:500;color:var(--text);line-height:1.65;white-space:pre-wrap;word-break:break-word}.dl dt{font-size:13px;font-weight:500;color:var(--text);line-height:1.65}.dl dd{margin:0;font-size:11.5px;color:var(--text-3);word-break:break-word}@media(max-width:620px){.dl{grid-template-columns:minmax(0,1fr)}}.dl--swap>div{gap:2px}.dl--swap dt{font-size:12px;font-weight:400;color:var(--text-3);line-height:1.5}.dl--swap dd{font-size:14px;font-weight:600;color:var(--text);line-height:1.55}.dl--swap dd>span:not(.muted):not(.hint){font-size:inherit;font-weight:inherit;color:inherit}.dl--swap dd>.muted,.dl--swap dd>.hint{font-weight:400}.dl--row{grid-template-columns:repeat(6,minmax(0,max-content));justify-content:space-between;gap:14px 16px;padding:var(--s-5) var(--s-6)}@media(min-width:1181px){.dl--row>div{text-align:center}}@media(max-width:1180px){.dl--row{grid-template-columns:repeat(3,minmax(0,1fr));justify-content:normal}}@media(max-width:780px){.dl--row{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:520px){.dl--row{grid-template-columns:minmax(0,1fr)}}.member-list{display:flex;flex-direction:column;gap:4px;max-height:320px;overflow-y:auto}.member-item{display:flex;align-items:center;gap:9px;padding:8px 10px;border-radius:var(--r-sm);border:1px solid transparent;background:none;text-align:left;font:inherit;color:var(--text-2);cursor:pointer;width:100%}.member-item:hover{background:var(--surface-2)}.member-item--on{background:var(--brand-soft);border-color:var(--brand-line);color:oklch(.44 .16 var(--hue));font-weight:550}.member-item .cnt{margin-left:auto;font-size:11.5px;color:var(--text-3);font-family:var(--font-num)}.metrics--4{grid-template-columns:repeat(4,minmax(0,1fr))}.metrics--3{grid-template-columns:repeat(3,minmax(0,1fr))}.metrics--2{grid-template-columns:repeat(2,minmax(0,1fr))}@media(max-width:900px){.metrics--4,.metrics--3{grid-template-columns:repeat(2,minmax(0,1fr))}.metrics--4>.metric:nth-child(odd),.metrics--3>.metric:nth-child(odd){border-left:0}}@media(max-width:560px){.metrics--4,.metrics--3,.metrics--2{grid-template-columns:minmax(0,1fr)}.metrics .metric{border-left:0;border-top:1px solid var(--line-2)}.metrics .metric:first-child{border-top:0}}
