*,:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }/*
! tailwindcss v3.4.19 | MIT License | https://tailwindcss.com
*/*,:after,:before{box-sizing:border-box;border:0 solid #e5e7eb}:after,:before{--tw-content:""}:host,html{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0}fieldset,legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}.fixed{position:fixed}.flex{display:flex}.grid{display:grid}.border{border-width:1px}.uppercase{text-transform:uppercase}.shadow{--tw-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px -1px rgba(0,0,0,.1);--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.outline{outline-style:solid}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}:root{--bg:#efece5;--panel:#fffefb;--panel-2:#f5f1e9;--ink:#211b12;--ink-2:#6b6153;--ink-3:#9c9080;--line:#e5ddd0;--line-2:#efe9de;--accent:#c6894c;--accent-ink:#98652f;--accent-soft:#f2e5d1;--money:#3160a8;--money-soft:#e6e6ef;--ok:#2f7d4f;--ok-soft:#e1eee3;--warn:#a9741d;--warn-soft:#f4ead0;--bad:#c23b3b;--bad-soft:#f6dede;--viol:#7c4dff;--viol-soft:#e9e3ff;--shadow:0 1px 2px rgba(40,30,15,.06),0 8px 24px rgba(40,30,15,.07);--mono:"IBM Plex Mono",ui-monospace,Menlo,monospace;--sans:"IBM Plex Sans",system-ui,sans-serif}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--bg:#15110b;--panel:#1f1b14;--panel-2:#27221a;--ink:#ece5d7;--ink-2:#b2a690;--ink-3:#7c7260;--line:#332c21;--line-2:#282118;--accent:#d69e63;--accent-ink:#ecc38f;--accent-soft:#382a16;--money:#6ea0e6;--money-soft:#1a2230;--ok:#4fb87a;--ok-soft:#173026;--warn:#e0af57;--warn-soft:#33280f;--bad:#e8726f;--bad-soft:#37171a;--viol:#a78bff;--viol-soft:#241a3d;--shadow:0 1px 2px rgba(0,0,0,.4),0 10px 30px rgba(0,0,0,.4)}}:root[data-theme=dark]{--bg:#15110b;--panel:#1f1b14;--panel-2:#27221a;--ink:#ece5d7;--ink-2:#b2a690;--ink-3:#7c7260;--line:#332c21;--line-2:#282118;--accent:#d69e63;--accent-ink:#ecc38f;--accent-soft:#382a16;--money:#6ea0e6;--money-soft:#1a2230;--ok:#4fb87a;--ok-soft:#173026;--warn:#e0af57;--warn-soft:#33280f;--bad:#e8726f;--bad-soft:#37171a;--viol:#a78bff;--viol-soft:#241a3d;--shadow:0 1px 2px rgba(0,0,0,.4),0 10px 30px rgba(0,0,0,.4)}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink);font-family:var(--sans);font-size:14px;line-height:1.5;-webkit-font-smoothing:antialiased}.mono{font-family:var(--mono);font-variant-numeric:tabular-nums}h1,h2,h3{letter-spacing:-.02em;margin:0}header.top{gap:14px;padding:12px 22px;background:var(--panel);border-bottom:1px solid var(--line);position:sticky;top:0;z-index:20}.brand,header.top{display:flex;align-items:center}.brand{gap:11px}.brand .mark{width:30px;height:30px;border-radius:8px;background:var(--accent);display:grid;place-items:center;color:#fff;font-size:15px}.brand .mark,.brand b{font-weight:700}.brand span{color:var(--ink-3);font-size:12.5px}.top .right{margin-left:auto;display:flex;gap:10px;align-items:center}.toggle{border:1px solid var(--line);color:var(--ink-2);border-radius:8px;padding:6px 10px}.btn,.toggle{background:var(--panel-2);cursor:pointer;font-size:12.5px;font-family:var(--sans)}.btn{display:inline-flex;align-items:center;gap:7px;padding:8px 14px;border-radius:9px;border:1px solid var(--line);color:var(--ink);font-weight:600}.btn:disabled{opacity:.55;cursor:not-allowed}.btn.pri{background:var(--accent);color:#fff;border-color:var(--accent)}.btn.ok{background:var(--ok);color:#fff;border-color:var(--ok)}.btn.warn{background:var(--warn);color:#fff;border-color:var(--warn)}.layout{display:grid;grid-template-columns:250px minmax(0,1fr) 340px;min-height:calc(100vh - 55px)}aside{border-right:1px solid var(--line);padding:16px 14px}.side,aside{background:var(--panel)}.side{border-left:1px solid var(--line);padding:18px 16px;overflow:auto}main{padding:20px 24px;min-width:0}.lbl{font-size:11px;text-transform:uppercase;letter-spacing:.08em;color:var(--ink-3);font-weight:600;margin:0 0 8px}.newbtn{width:100%;justify-content:center;margin-bottom:14px}.alist{display:flex;flex-direction:column;gap:6px}.aitem{padding:10px 11px;border:1px solid var(--line);border-radius:10px;cursor:pointer;background:var(--panel);text-align:left;width:100%;font-family:var(--sans)}.aitem:hover{border-color:color-mix(in srgb,var(--accent) 45%,var(--line))}.aitem.sel{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent)}.aitem .an{font-weight:600;font-size:13.5px;display:flex;align-items:center;gap:7px;color:var(--ink)}.aitem .ic{width:20px;height:20px;border-radius:6px;display:grid;place-items:center;color:#fff;font-size:10px;font-weight:700}.aitem .am{color:var(--ink-3);font-size:11.5px;margin-top:3px;display:flex;justify-content:space-between}.st{font-size:10.5px;padding:2px 7px;border-radius:99px;font-weight:600}.st.draft{background:var(--panel-2);color:var(--ink-2);border:1px solid var(--line)}.st.test{background:var(--warn-soft);color:var(--warn)}.st.appr{background:var(--viol-soft);color:var(--viol)}.st.rel{background:var(--ok-soft);color:var(--ok)}.st.ret{background:var(--bad-soft);color:var(--bad)}.pipe{gap:0;margin:2px 0 18px;background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:5px;box-shadow:var(--shadow)}.pipe,.pstep{display:flex;align-items:center}.pstep{flex:1;flex-direction:column;gap:3px;padding:8px 4px;border-radius:8px;position:relative;font-size:11.5px;color:var(--ink-3);font-weight:600}.pstep .n{width:22px;height:22px;border-radius:50%;background:var(--panel-2);border:1px solid var(--line);display:grid;place-items:center;font-size:11px;color:var(--ink-3)}.pstep.done .n{background:var(--ok);color:#fff;border-color:var(--ok)}.pstep.done{color:var(--ink-2)}.pstep.cur .n{background:var(--accent);color:#fff;border-color:var(--accent)}.pstep.cur{color:var(--accent-ink);background:var(--accent-soft)}.pstep:after{content:"";position:absolute;top:16px;left:-50%;width:100%;height:2px;background:var(--line-2);z-index:0}.pstep:first-child:after{display:none}.pstep.cur:after,.pstep.done:after{background:var(--ok)}.pstep .n{z-index:1}.ehead{display:flex;align-items:center;gap:11px;margin-bottom:4px}.ehead .ic{width:34px;height:34px;border-radius:9px;display:grid;place-items:center;color:#fff;font-weight:700}.ehead h1{font-size:19px}.ehead .v{color:var(--ink-3);font-size:12px}.esub{color:var(--ink-2);font-size:12.5px;margin:0 0 16px}.tabs{display:flex;gap:2px;border-bottom:1px solid var(--line);margin-bottom:18px}.tabs button{background:none;color:var(--ink-2);font-family:var(--sans);font-weight:600;font-size:13px;padding:9px 14px;cursor:pointer;border:none;border-bottom:2px solid transparent;margin-bottom:-1px}.tabs button.on{color:var(--accent-ink);border-bottom-color:var(--accent)}.tp{display:none}.tp.on{display:block}.fg{margin-bottom:16px}.fg .fl{font-size:12px;font-weight:600;color:var(--ink-2);margin-bottom:6px;display:block}.fg .fh{font-size:11.5px;color:var(--ink-3);margin:2px 0 7px}.inp,.ta{width:100%;background:var(--panel);border:1px solid var(--line);border-radius:9px;padding:9px 11px;color:var(--ink);font-family:var(--sans);font-size:13px}.inp:focus,.ta:focus{outline:none;border-color:var(--accent)}.ta{min-height:74px;resize:vertical}.frow{display:grid;grid-template-columns:1fr 1fr;gap:12px}.picker{display:flex;flex-wrap:wrap;gap:7px}.sk{font-size:12px;padding:6px 11px;border-radius:8px;border:1px solid var(--line);background:var(--panel);color:var(--ink-2);cursor:pointer;font-family:var(--mono);display:inline-flex;gap:6px;align-items:center}.sk.on{background:var(--accent-soft);border-color:var(--accent);color:var(--accent-ink);font-weight:600}.sk.add{border-style:dashed;color:var(--ink-3);font-family:var(--sans)}.sk.lock{cursor:default}.gates{display:flex;flex-direction:column;gap:8px}.gate{display:flex;align-items:center;gap:11px;padding:10px 12px;border:1px solid var(--line);border-radius:9px;background:var(--panel)}.gate .gi{font-family:var(--mono);font-size:12.5px;font-weight:600}.gate .gd{font-size:11.5px;color:var(--ink-3)}.sw{margin-left:auto;width:38px;height:22px;border-radius:99px;background:var(--line);position:relative;cursor:pointer;flex:none;border:none;padding:0}.sw.on{background:var(--accent)}.sw:after{content:"";position:absolute;top:2px;left:2px;width:18px;height:18px;border-radius:50%;background:#fff;transition:left .15s}.sw.on:after{left:18px}.seg{display:inline-flex;gap:2px;background:var(--panel-2);border:1px solid var(--line);border-radius:9px;padding:2px}.seg button{border:none;background:none;color:var(--ink-2);font-family:var(--sans);font-weight:600;font-size:12px;padding:6px 12px;border-radius:7px;cursor:pointer}.seg button.on{background:var(--accent);color:#fff}.limit-box{border:1px solid var(--line);border-radius:10px;padding:11px 13px;background:var(--panel)}.limit-box .lh{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;margin-bottom:7px}.limit-box .lb{font-size:12.5px;color:var(--ink-2)}pre.code{background:#0d1420;color:#c8d3e0;border:1px solid var(--line);border-radius:11px;padding:16px;font-family:var(--mono);font-size:12.5px;line-height:1.7;overflow:auto;margin:0}.code .k{color:#7fd1c4}.code .s{color:#e0b177}.code .c{color:#5f7089}.code .n{color:#9db8e8}.scn{border:1px solid var(--line);border-radius:10px;margin-bottom:10px;overflow:hidden}.scn .sh{display:flex;align-items:center;gap:9px;background:var(--panel-2);font-weight:600}.scn .sb,.scn .sh{padding:10px 13px;font-size:12.5px}.scn .sb{color:var(--ink-2)}.pass{color:var(--ok)}.fail,.pass{font-weight:600}.fail{color:var(--bad)}.pill{font-size:11px;padding:3px 9px;border-radius:99px;font-weight:600;display:inline-flex;gap:5px;align-items:center}.pill.ok{background:var(--ok-soft);color:var(--ok)}.pill.warn{background:var(--warn-soft);color:var(--warn)}.pill.bad{background:var(--bad-soft);color:var(--bad)}.pill.money{background:var(--money-soft);color:var(--money)}.card{border:1px solid var(--line);border-radius:11px;margin-bottom:12px;overflow:hidden;background:var(--panel)}.card .ch{padding:10px 13px;background:var(--panel-2);border-bottom:1px solid var(--line);font-weight:600;font-size:12.5px;display:flex;align-items:center;gap:7px}.card .cb{padding:12px 13px}.appr-box{text-align:center;padding:4px 0}.appr-box .who{font-size:12.5px;color:var(--ink-2);margin-bottom:10px}.appr-box .who b{color:var(--ink)}.four{align-items:center;gap:8px;justify-content:center;font-size:11.5px;color:var(--warn);background:var(--warn-soft);border-radius:8px;padding:7px 10px;margin-bottom:11px}.four,.kv{display:flex}.kv{justify-content:space-between;font-size:12.5px;padding:5px 0;border-top:1px solid var(--line-2)}.kv:first-child{border:none}.kv span{color:var(--ink-3)}.kv b{font-weight:600}.inherit{display:flex;flex-wrap:wrap;gap:6px;margin-top:4px}.inherit .i{font-size:11px;padding:3px 8px;border-radius:7px;background:var(--accent-soft);color:var(--accent-ink);font-weight:600}.mini{display:grid;grid-template-columns:1fr 1fr;gap:8px}.mini .m{background:var(--panel-2);border:1px solid var(--line-2);border-radius:9px;padding:9px 10px}.mini .m .k{font-size:10.5px;text-transform:uppercase;letter-spacing:.05em;color:var(--ink-3);font-weight:600}.mini .m .v{font-size:17px;font-weight:700;margin-top:2px}.prom{font-family:var(--mono);font-size:11px;color:var(--ink-3);background:var(--panel-2);border:1px solid var(--line-2);border-radius:8px;padding:8px 10px;margin-top:8px;line-height:1.7}.prom b{color:var(--accent-ink)}.toast{position:fixed;bottom:20px;right:20px;z-index:50;background:var(--panel);border:1px solid var(--line);border-left:3px solid var(--accent);border-radius:9px;padding:11px 15px;box-shadow:var(--shadow);font-size:12.5px;max-width:360px}.toast.err{border-left-color:var(--bad)}.empty{text-align:center;color:var(--ink-3);font-size:12.5px;padding:40px 10px}@media (max-width:1150px){.layout{grid-template-columns:1fr}.side,aside{border:none;border-top:1px solid var(--line)}.frow{grid-template-columns:1fr}}