@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-cyrillic-ext-wght-normal-c2963dc7.woff2) format("woff2-variations");unicode-range:U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-cyrillic-wght-normal-62cc01da.woff2) format("woff2-variations");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-greek-ext-wght-normal-6a417cfe.woff2) format("woff2-variations");unicode-range:U+1F00-1FFF}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-greek-wght-normal-e6025d5b.woff2) format("woff2-variations");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-vietnamese-wght-normal-5c66f9e0.woff2) format("woff2-variations");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-latin-ext-wght-normal-48f540fb.woff2) format("woff2-variations");unicode-range:U+0100-02AF,U+0304,U+0308,U+0329,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-latin-wght-normal-f052ee44.woff2) format("woff2-variations");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--brand: #0b2a4a;--brand-2: #133d66;--brand-ink: #b9d3ef;--brand-star: #f5c451;--bg: #f3f5f8;--surface: #ffffff;--surface-2: #eef1f5;--surface-3: #e4e8ee;--border: #dde2e9;--border-strong: #c5ccd6;--text: #18212c;--text-2: #4f5b69;--text-3: #7c8794;--accent: #1f63b3;--accent-hover: #17508f;--accent-soft: #e5effa;--accent-ink: #164d8c;--success: #1d8a5f;--success-soft: #e2f4ec;--success-ink: #116044;--warning-soft: #fdf0d6;--warning-ink: #7a4b05;--danger: #c93a36;--danger-hover: #a92f2b;--danger-soft: #fbe7e6;--danger-ink: #8c2421;--teal-soft: #dff3ef;--teal-ink: #0f5e51;--radius: 8px;--radius-lg: 12px;--shadow-sm: 0 1px 2px rgba(16, 30, 54, .06), 0 0 0 1px rgba(16, 30, 54, .04);--shadow-lg: 0 12px 32px rgba(16, 30, 54, .18), 0 2px 6px rgba(16, 30, 54, .08);--h-control: 36px;--header-h: 52px;--font: "Inter Variable", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Arial, sans-serif}*,*:before,*:after{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;font-family:var(--font);font-size:14px;line-height:1.45;background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased}h1,h2,h3,h4{margin:0;font-weight:600;line-height:1.25}h2{font-size:20px}h3{font-size:16px}h4{font-size:14px}.muted{color:var(--text-2)}.faint{color:var(--text-3)}.small{font-size:12px}.num{font-variant-numeric:tabular-nums}input,select,textarea{font:inherit;color:var(--text);background:var(--surface);border:1px solid var(--border-strong);border-radius:var(--radius)}input,select{height:var(--h-control);padding:0 10px}textarea{padding:8px 10px;min-height:72px;resize:vertical;width:100%}input:focus,select:focus,textarea:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}input::placeholder,textarea::placeholder{color:var(--text-3)}input[type=checkbox]{height:16px;width:16px;accent-color:var(--accent)}.field{display:flex;flex-direction:column;gap:4px;min-width:0}.field>span{font-size:12px;font-weight:500;color:var(--text-2)}.field input,.field select{width:100%}.row{display:flex;gap:8px;align-items:center}.grid-2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.stack{display:flex;flex-direction:column;gap:12px}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;height:var(--h-control);padding:0 14px;border-radius:var(--radius);border:1px solid var(--border-strong);background:var(--surface);color:var(--text);font:inherit;font-weight:500;cursor:pointer;white-space:nowrap;transition:background .12s,border-color .12s}.btn:hover{background:var(--surface-2)}.btn:disabled{opacity:.5;cursor:default}.btn-primary{background:var(--accent);border-color:var(--accent);color:#fff}.btn-primary:hover{background:var(--accent-hover)}.btn-danger{background:var(--surface);border-color:#f0c4c2;color:var(--danger)}.btn-danger:hover{background:var(--danger-soft)}.btn-ghost{background:transparent;border-color:transparent;color:var(--text-2)}.btn-ghost:hover{background:var(--surface-2);color:var(--text)}.btn-sm{height:30px;padding:0 10px;font-size:13px}.icon-btn{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;border-radius:var(--radius);border:0;background:transparent;color:var(--text-2);cursor:pointer}.icon-btn:hover{background:var(--surface-2);color:var(--text)}.icon-btn.danger:hover{background:var(--danger-soft);color:var(--danger)}.chip{display:inline-flex;align-items:center;gap:4px;height:22px;padding:0 8px;border-radius:999px;font-size:12px;font-weight:500;white-space:nowrap;background:var(--surface-2);color:var(--text-2)}.chip svg{width:13px;height:13px}.chip-accent{background:var(--accent-soft);color:var(--accent-ink)}.chip-success{background:var(--success-soft);color:var(--success-ink)}.chip-warning{background:var(--warning-soft);color:var(--warning-ink)}.chip-danger{background:var(--danger-soft);color:var(--danger-ink)}.chip-teal{background:var(--teal-soft);color:var(--teal-ink)}.avatar{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;width:24px;height:24px;border-radius:50%;background:var(--accent-soft);color:var(--accent-ink);font-size:10px;font-weight:600}.progress{position:relative;height:6px;min-width:60px;background:var(--surface-3);border-radius:3px;overflow:hidden}.progress>div{height:100%;background:var(--success);border-radius:3px;transition:width .3s}.app{height:100dvh;display:flex;flex-direction:column}.topbar{flex-shrink:0;height:var(--header-h);background:var(--brand);color:#fff;display:flex;align-items:center;gap:16px;padding:0 16px;position:relative;z-index:20}.brand{display:flex;align-items:center;gap:8px;font-weight:600;font-size:15px;color:#fff}.brand img{height:22px;width:auto}.nav{display:flex;gap:2px;flex:1;min-width:0;overflow-x:auto;scrollbar-width:none}.nav-item{display:inline-flex;align-items:center;gap:6px;height:34px;padding:0 12px;border:0;border-radius:var(--radius);background:transparent;color:var(--brand-ink);font:inherit;font-weight:500;cursor:pointer;white-space:nowrap}.nav-item:hover{background:rgba(255,255,255,.08);color:#fff}.nav-item.active{background:var(--brand-2);color:#fff}.nav-item svg{width:16px;height:16px}.user-box{display:flex;align-items:center;gap:10px;color:var(--brand-ink);font-size:13px}.user-box .avatar{background:var(--brand-2);color:#fff;width:30px;height:30px;font-size:11px}.user-box .icon-btn{color:var(--brand-ink)}.user-box .icon-btn:hover{background:rgba(255,255,255,.1);color:#fff}.main{flex:1;min-height:0;overflow:auto}.page{padding:20px 24px 32px;max-width:1280px;margin:0 auto}.page-header{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:16px;flex-wrap:wrap}.page-header .actions{display:flex;gap:8px;align-items:center}.toolbar{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-bottom:12px}.search{position:relative;flex:1 1 240px;max-width:360px}.search svg{position:absolute;left:10px;top:50%;transform:translateY(-50%);width:16px;height:16px;color:var(--text-3);pointer-events:none}.search input{width:100%;padding-left:32px}.bottom-nav,.only-mobile{display:none}.table-wrap{background:var(--surface);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);overflow:auto}.table{width:100%;border-collapse:collapse}.table th{text-align:left;font-size:12px;font-weight:600;color:var(--text-2);padding:10px 14px;background:#f8f9fb;border-bottom:1px solid var(--border);white-space:nowrap}.table td{padding:10px 14px;border-bottom:1px solid var(--border);vertical-align:middle}.table tr:last-child td{border-bottom:0}.table tbody tr.clickable{cursor:pointer}.table tbody tr.clickable:hover{background:#f8fafc}.table .right{text-align:right}.table .actions-cell{width:1%;white-space:nowrap;text-align:right}.empty{padding:40px 16px;text-align:center;color:var(--text-3)}.board-page{height:100%;display:flex;flex-direction:column}.board-toolbar{flex-shrink:0;display:flex;gap:8px;align-items:center;flex-wrap:wrap;padding:12px 16px;background:var(--surface);border-bottom:1px solid var(--border)}.board{flex:1;min-height:0;display:flex;gap:12px;padding:12px 16px;overflow-x:auto;align-items:stretch}.column{flex:0 0 288px;display:flex;flex-direction:column;min-height:0;background:var(--surface-2);border-radius:var(--radius-lg)}.column-head{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:10px 12px 6px}.column-head h3{font-size:13px;font-weight:600}.column-head .count{font-size:12px;color:var(--text-3);font-variant-numeric:tabular-nums}.column-head .lock{color:var(--text-3);width:14px;height:14px}.column-body{flex:1;min-height:80px;overflow-y:auto;padding:4px 8px 10px;display:flex;flex-direction:column;gap:8px;border-radius:0 0 var(--radius-lg) var(--radius-lg);transition:background .12s}.column-body.over{background:var(--accent-soft)}.column-empty{border:1px dashed var(--border-strong);border-radius:var(--radius);padding:18px 8px;text-align:center;font-size:12px;color:var(--text-3)}.kcard{background:var(--surface);border-radius:var(--radius);box-shadow:var(--shadow-sm);padding:10px 12px;cursor:pointer;user-select:none}.kcard:hover{box-shadow:0 2px 6px #101e361a,0 0 0 1px #101e360f}.kcard.mine{box-shadow:inset 3px 0 0 var(--accent),var(--shadow-sm)}.dragging .kcard{box-shadow:var(--shadow-lg);transform:rotate(1.5deg)}.topbar .page-name{display:none}.kcard-top{display:flex;justify-content:space-between;align-items:center;gap:6px;font-size:12px;color:var(--text-2)}.kcard-top .chips{display:flex;gap:4px;flex-wrap:wrap;justify-content:flex-end}.kcard-top>span:first-child{min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.kcard-top .chips{flex-shrink:0}.kcard-title{font-weight:600;margin:6px 0 1px;line-height:1.3;overflow-wrap:anywhere}.kcard-meta{font-size:12px;color:var(--text-2)}.kcard-comment{margin-top:6px;font-size:12px;color:var(--text-2);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.kcard-foot{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-top:8px}.kcard-foot .who{display:flex;align-items:center;gap:6px;min-width:0;font-size:12px;color:var(--text-2)}.kcard-foot .who span:last-child{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.kcard-foot .qty{font-weight:600;font-variant-numeric:tabular-nums;white-space:nowrap}.kcard-foot select{height:28px;font-size:12px;padding:0 6px;max-width:170px}.modal-overlay{position:fixed;inset:0;background:rgba(12,22,36,.5);display:flex;align-items:center;justify-content:center;padding:16px;z-index:1000;animation:fade .12s ease-out}.modal{background:var(--surface);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);width:min(var(--modal-w, 520px),100%);max-height:calc(100dvh - 32px);display:flex;flex-direction:column;animation:pop .14s ease-out}.modal-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;padding:16px 20px 12px;border-bottom:1px solid var(--border)}.modal-head .sub{font-size:13px;color:var(--text-2);margin-top:2px}.modal-body{padding:16px 20px;overflow-y:auto}.modal-foot{display:flex;justify-content:flex-end;gap:8px;padding:12px 20px;border-top:1px solid var(--border);flex-wrap:wrap}.modal-foot .spacer{flex:1}.section-title{font-size:12px;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--text-3);margin:18px 0 8px}.section-title:first-child{margin-top:0}@keyframes fade{0%{opacity:0}}@keyframes pop{0%{opacity:0;transform:translateY(6px) scale(.98)}}.combo{position:relative;min-width:0}.combo input{width:100%}.combo-list{position:fixed;z-index:1500;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-lg);overflow-y:auto;padding:4px}.combo-opt{padding:7px 10px;border-radius:6px;cursor:pointer;overflow-wrap:anywhere}.combo-opt .faint{font-size:12px}.combo-opt.active,.combo-opt:hover{background:var(--accent-soft)}.combo-opt.create{color:var(--accent-ink);font-weight:500}.combo-empty{padding:8px 10px;color:var(--text-3);font-size:13px}.list{border:1px solid var(--border);border-radius:var(--radius);overflow:hidden}.list-row{display:flex;align-items:center;gap:10px;padding:9px 12px;border-bottom:1px solid var(--border)}.list-row:last-child{border-bottom:0}.list-row .grow{flex:1;min-width:0}.tags{display:flex;flex-wrap:wrap;gap:6px}.tag{display:inline-flex;align-items:center;gap:4px;height:28px;padding:0 6px 0 10px;border-radius:999px;background:var(--surface-2);font-size:13px}.tag button{border:0;background:transparent;color:var(--text-3);cursor:pointer;display:inline-flex;padding:2px;border-radius:50%}.tag button:hover{color:var(--danger);background:var(--danger-soft)}.kv{display:grid;grid-template-columns:120px minmax(0,1fr);gap:6px 12px;font-size:13px}.kv dt{color:var(--text-2)}.kv dd{margin:0}.stage-row{display:flex;align-items:center;gap:8px;padding:10px 12px;background:var(--surface);border-radius:var(--radius);box-shadow:var(--shadow-sm);margin-bottom:8px}.stage-row .handle{color:var(--text-3);cursor:grab;display:inline-flex}.stage-row .name{flex:1;font-weight:500}.stage-final{display:flex;align-items:center;gap:8px;padding:10px 12px;border-radius:var(--radius);background:var(--success-soft);color:var(--success-ink);font-weight:500;margin-top:12px}.perm-table{border-collapse:separate;border-spacing:0;width:100%;font-size:13px}.perm-table th,.perm-table td{padding:8px 10px;border-bottom:1px solid var(--border);text-align:center;background:var(--surface);white-space:nowrap}.perm-table th{position:sticky;top:0;z-index:1;font-size:12px;color:var(--text-2);font-weight:600;background:#f8f9fb}.perm-table th:first-child,.perm-table td:first-child{position:sticky;left:0;z-index:2;text-align:left;font-weight:500}.perm-table select{height:28px;padding:0 4px;font-size:12px}.perm-scroll{overflow:auto;border:1px solid var(--border);border-radius:var(--radius);max-height:40vh}.toasts{position:fixed;top:calc(var(--header-h) + 12px);right:16px;z-index:2000;display:flex;flex-direction:column;gap:8px;max-width:min(380px,calc(100vw - 32px))}.toast{display:flex;gap:8px;align-items:flex-start;padding:10px 14px;border-radius:var(--radius);background:var(--text);color:#fff;box-shadow:var(--shadow-lg);font-size:13px;animation:pop .14s ease-out}.toast.error{background:var(--danger-ink)}.toast.success{background:var(--success-ink)}.toast svg{flex-shrink:0;width:16px;height:16px;margin-top:1px}.login{min-height:100dvh;display:flex;align-items:center;justify-content:center;padding:16px;background:var(--brand)}.login-card{width:100%;max-width:360px;background:var(--surface);border-radius:16px;box-shadow:var(--shadow-lg);padding:28px 24px}.login-card .logo{display:flex;flex-direction:column;align-items:center;gap:8px;margin-bottom:20px}.login-card .logo img{height:44px;width:auto}.login-card .btn{width:100%;height:40px;margin-top:4px}@media (max-width: 767px){:root{--header-h: 48px}.topbar{padding:0 12px;gap:8px}.topbar .nav,.user-box .name{display:none}.topbar .page-name{display:block;flex:1;font-weight:600;color:#fff;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.bottom-nav{display:flex;flex-shrink:0;background:var(--surface);border-top:1px solid var(--border);padding-bottom:env(safe-area-inset-bottom);overflow-x:auto}.bottom-nav button{flex:1 0 54px;min-width:0;display:flex;flex-direction:column;align-items:center;gap:2px;padding:7px 2px 6px;border:0;background:transparent;color:var(--text-3);font:inherit;font-size:11px;font-weight:500}.bottom-nav button svg{width:20px;height:20px}.bottom-nav button{font-size:10px;letter-spacing:-.01em}.brand span{display:none}.oi-progress{width:auto!important}.add-row{flex-wrap:wrap}.only-mobile{display:block}.rep th:nth-child(3),.rep td:nth-child(3){display:none}.rep td,.rep th{padding:8px 10px}.add-row>:first-child{flex:1 1 100%!important}.add-row .btn{flex:1}.oi-progress .progress{display:none}.bottom-nav button.active{color:var(--accent)}.page{padding:14px 12px 24px}.search{max-width:none}.board{padding:10px 12px;scroll-snap-type:x mandatory;gap:10px}.column{flex-basis:86vw;scroll-snap-align:center}.board-toolbar{padding:10px 12px}.grid-2{grid-template-columns:minmax(0,1fr)}.kv{grid-template-columns:100px minmax(0,1fr)}.modal-overlay{align-items:flex-end;padding:0}.modal{width:100%;max-height:92dvh;border-radius:16px 16px 0 0;animation:sheet .18s ease-out}.modal-head,.modal-body,.modal-foot{padding-left:16px;padding-right:16px}.modal-foot{padding-bottom:calc(12px + env(safe-area-inset-bottom))}.modal-foot .btn{flex:1}.modal-foot .spacer,.table.responsive thead{display:none}.table.responsive,.table.responsive tbody,.table.responsive tr,.table.responsive td{display:block;width:100%}.table.responsive tr{padding:10px 14px;border-bottom:1px solid var(--border)}.table.responsive tr:last-child{border-bottom:0}.table.responsive td{border:0;padding:3px 0;display:flex;justify-content:space-between;align-items:center;gap:12px;text-align:right}.table.responsive td[data-label]:before{content:attr(data-label);color:var(--text-2);font-size:12px;text-align:left;flex-shrink:0}.table.responsive td.primary{font-weight:600;font-size:15px;text-align:left;justify-content:flex-start}.table.responsive td.primary:before{display:none}.table.responsive td .progress{flex:1;max-width:160px}.table.responsive .actions-cell{width:100%;justify-content:flex-end;padding-top:6px}}@keyframes sheet{0%{transform:translateY(24px);opacity:.6}}
