:root{--paper:#f2f3ef;--surface:#fff;--ink:#21251f;--ink-2:#5b6157;--ink-3:#9aa093;--line:#dfe2d9;--accent:#0e6b56;--accent-soft:#e2efe9;--amber:#9a6a0b;--amber-soft:#f6ecd6;--red:#a3372b;--red-soft:#f7e4e0;--blue:#2b5d8f;--blue-soft:#e2ecf5;--mono:"IBM Plex Mono", ui-monospace, monospace;--sans:"IBM Plex Sans", system-ui, sans-serif}*{box-sizing:border-box}body{font-family:var(--sans);background:var(--paper);color:var(--ink);margin:0;font-size:14px}button{font:inherit;cursor:pointer}input,select,textarea{font:inherit;color:var(--ink)}.shell{grid-template-columns:232px 1fr;min-height:100vh;display:grid}.side{background:var(--ink);color:#e8eae4;flex-direction:column;gap:4px;padding:20px 0;display:flex}.side .brand{font-family:var(--mono);letter-spacing:.08em;color:#b9c0b0;border-bottom:1px solid #3a3f36;margin-bottom:12px;padding:0 20px 16px;font-size:13px}.side .brand b{color:#fff;font-weight:500}.side a{color:#c9cec2;justify-content:space-between;align-items:baseline;padding:8px 20px;text-decoration:none;display:flex}.side a:hover{color:#fff;background:#2c3029}.side a.active{background:var(--accent);color:#fff}.side a .prefix{font-family:var(--mono);opacity:.65;font-size:11px}.side .section{letter-spacing:.1em;text-transform:uppercase;color:#7c8274;padding:14px 20px 4px;font-size:11px}.side .spacer{flex:1}.side select{color:#e8eae4;background:#2c3029;border:1px solid #3a3f36;border-radius:6px;width:calc(100% - 32px);margin:0 16px;padding:6px 8px}.side .who{color:#9aa093;padding:8px 20px 0;font-size:12px}.side .version{letter-spacing:.04em;color:#6c7264;padding:12px 20px 0;font-size:11px}.main{width:100%;max-width:1200px;padding:24px 32px}.main.wide{max-width:none}.crumbs{color:var(--ink-3);margin-bottom:4px;font-size:12px}.crumbs a{color:var(--ink-2);text-decoration:none}h1{align-items:center;gap:12px;margin:0 0 16px;font-size:20px;font-weight:600;display:flex}.toolbar{align-items:center;gap:8px;margin-bottom:12px;display:flex}.toolbar input[type=search]{border:1px solid var(--line);background:var(--surface);border-radius:7px;flex:1;max-width:340px;padding:7px 10px}.btn{border:1px solid var(--line);background:var(--surface);color:var(--ink);border-radius:7px;padding:7px 14px}.btn:hover{border-color:var(--ink-3)}.btn.primary{background:var(--accent);border-color:var(--accent);color:#fff}.btn.primary:hover{background:#0b5745}.btn:disabled{opacity:.5;cursor:default}.card{background:var(--surface);border:1px solid var(--line);border-radius:10px;overflow:hidden}table.list{border-collapse:collapse;width:100%}table.list th{text-align:left;letter-spacing:.07em;text-transform:uppercase;color:var(--ink-3);border-bottom:1px solid var(--line);cursor:pointer;-webkit-user-select:none;user-select:none;white-space:nowrap;padding:10px 14px;font-size:11px;font-weight:500}table.list td{border-bottom:1px solid #edefe8;padding:10px 14px}table.list tr:last-child td{border-bottom:none}table.list tbody tr{cursor:pointer}table.list tbody tr:hover{background:#f7f8f4}td.num{font-family:var(--mono);color:var(--accent);white-space:nowrap;font-size:13px}.count{color:var(--ink-3);margin-left:auto;font-size:12px}.empty{text-align:center;color:var(--ink-3);padding:40px}.pill{color:var(--ink-2);white-space:nowrap;background:#eef0ea;border-radius:999px;padding:2px 9px;font-size:12px;display:inline-block}.pill.new{background:var(--blue-soft);color:var(--blue)}.pill.in_progress{background:var(--accent-soft);color:var(--accent)}.pill.on_hold{background:var(--amber-soft);color:var(--amber)}.pill.resolved,.pill.closed{color:var(--ink-2);background:#e8e9e4}.prio{font-family:var(--mono);font-size:12px}.prio.p1{color:var(--red);font-weight:500}.prio.p2{color:var(--amber)}.record{grid-template-columns:168px 1fr 320px;align-items:start;gap:20px;display:grid}.spine{background:var(--ink);color:#e8eae4;border-radius:10px;flex-direction:column;gap:12px;padding:16px;display:flex;position:sticky;top:24px}.spine .rn{font-family:var(--mono);color:#fff;letter-spacing:.03em;font-size:15px}.spine .tlabel{text-transform:uppercase;letter-spacing:.09em;color:#9aa093;font-size:11px}.spine .kv{color:#b9c0b0;flex-direction:column;gap:2px;font-size:12px;display:flex}.spine .kv b{color:#e8eae4;font-weight:500}.spine .person-card{border-top:1px solid #ffffff17;flex-direction:column;gap:2px;padding-top:10px;font-size:12px;display:flex}.spine .person-card .pc-label{text-transform:uppercase;letter-spacing:.09em;color:#9aa093;font-size:11px}.spine .person-card .pc-name{color:#fff;font-size:13px;font-weight:500}.spine .person-card .pc-line{color:#b9c0b0}.spine .person-card .pc-line a{color:#cfe0ff;text-decoration:none}.spine .person-card .pc-line a:hover{text-decoration:underline}.spine .person-card .pc-line.hint{color:#8a9082;font-style:italic}.notches{gap:4px;display:flex}.notches i{background:#3a3f36;border-radius:2px;width:18px;height:6px}.notches i.on{background:var(--accent)}.notches.p1 i.on{background:#d0553a}.notches.p2 i.on{background:#cf9a2c}.form-card{background:var(--surface);border:1px solid var(--line);border-radius:10px;padding:20px 24px}.form-card h3{text-transform:uppercase;letter-spacing:.09em;color:var(--ink-3);border-bottom:1px solid var(--line);margin:20px 0 12px;padding-bottom:6px;font-size:12px;font-weight:500}.form-card h3:first-child{margin-top:0}.cols{grid-template-columns:1fr 1fr;gap:4px 28px;display:grid}.cols.one{grid-template-columns:1fr}.fld{flex-direction:column;gap:4px;margin-bottom:12px;display:flex}.fld label{color:var(--ink-2);font-size:12px}.fld label .req{color:var(--red)}.fld input,.fld select,.fld textarea{border:1px solid var(--line);background:var(--surface);border-radius:7px;width:100%;padding:7px 10px}.fld input:focus,.fld select:focus,.fld textarea:focus{outline:2px solid var(--accent-soft);border-color:var(--accent)}.fld input:disabled,.fld select:disabled{color:var(--ink-2);background:#f3f4f0}.fld textarea{resize:vertical;min-height:88px}.fld .dirty{border-color:var(--amber)}.actions{align-items:center;gap:8px;margin-top:16px;display:flex}.err{color:var(--red);font-size:13px}.savedmsg{color:var(--accent);font-size:13px}.panel{background:var(--surface);border:1px solid var(--line);border-radius:10px;padding:16px}.panel h2{margin:0 0 12px;font-size:13px;font-weight:600}.jtabs{gap:6px;margin-bottom:10px;display:flex}.jtabs button{border:1px solid var(--line);color:var(--ink-2);background:0 0;border-radius:999px;padding:4px 12px;font-size:12px}.jtabs button.on{background:var(--ink);color:#fff;border-color:var(--ink)}.panel textarea{border:1px solid var(--line);resize:vertical;border-radius:7px;width:100%;min-height:64px;padding:8px}.jlist{flex-direction:column;gap:10px;max-height:480px;margin-top:14px;display:flex;overflow-y:auto}.jitem{border-left:3px solid var(--line);padding:2px 0 2px 10px}.jitem.work_note{border-color:var(--amber);background:#fdfaf2}.jitem.system{border-color:var(--ink-3)}.jitem .meta{color:var(--ink-3);margin-bottom:2px;font-size:11px}.jitem .body{white-space:pre-wrap;font-size:13px}.audit-row{border-bottom:1px solid #edefe8;padding:6px 0;font-size:12px}.audit-row .f{font-family:var(--mono);color:var(--ink-2)}.audit-row .v{color:var(--ink)}.audit-row .old{color:var(--ink-3);margin-right:6px;text-decoration:line-through}.admin-grid{grid-template-columns:1fr 1fr;align-items:start;gap:20px;display:grid}.mini-table{border-collapse:collapse;width:100%;font-size:13px}.mini-table td,.mini-table th{text-align:left;border-bottom:1px solid #edefe8;padding:6px 8px}.mini-table th{text-transform:uppercase;color:var(--ink-3);font-size:11px;font-weight:500}.mono{font-family:var(--mono);font-size:12px}.hint{color:var(--ink-3);font-size:12px}.login-wrap{background:var(--ink);justify-content:center;align-items:center;min-height:100vh;padding:20px;display:flex}.login-card{background:var(--surface);border-radius:14px;width:340px;max-width:100%;padding:32px;box-shadow:0 12px 40px #0000004d}.login-brand{font-family:var(--mono);letter-spacing:.08em;text-align:center;color:var(--ink);margin-bottom:24px;font-size:20px}.login-ms{text-align:center;display:block}.login-or{text-align:center;color:var(--ink-3);align-items:center;margin:18px 0;font-size:12px;display:flex}.login-or:before,.login-or:after{content:"";border-top:1px solid var(--line);flex:1}.login-or span{padding:0 10px}.login-form{flex-direction:column;gap:10px;display:flex}.login-form input{border:1px solid var(--line);border-radius:8px;padding:10px 12px}.login-form .btn{width:100%}.login-link{color:var(--accent);text-align:center;font-size:12px;text-decoration:none}.chip{border:1px solid var(--line);border-radius:999px;margin:0 4px 2px 0;padding:1px 8px;font-size:11px;display:inline-block}.chip.role{background:var(--accent-soft);color:var(--accent);border-color:#0000}.chip.group{background:var(--blue-soft);color:var(--blue);border-color:#0000}.chk-row{flex-wrap:wrap;gap:6px 16px;display:flex}.dir-menu{z-index:20;background:var(--surface);border:1px solid var(--line);border-radius:8px;max-height:240px;margin-top:3px;position:absolute;top:100%;left:0;right:0;overflow-y:auto;box-shadow:0 6px 20px #0000001a}.dir-opt{cursor:pointer;padding:8px 12px;font-size:13px}.dir-opt:hover{background:var(--paper)}.nav-badge{background:var(--blue);color:#fff;text-align:center;border-radius:9px;min-width:18px;margin-left:8px;padding:0 6px;font-size:11px;font-weight:600;line-height:18px;display:inline-block}.approval-list{flex-direction:column;gap:12px;display:flex}.approval-item{padding:14px 16px}.approval-head{align-items:baseline;gap:10px;display:flex}.approval-head .num{font-family:var(--mono);color:var(--blue);font-size:14px;text-decoration:none}.approval-desc{font-weight:500}.approval-meta{margin:4px 0 8px}.approval-comment{width:100%;min-height:54px;margin-bottom:10px}.approval-actions{border:1px solid var(--line);background:var(--paper);border-radius:9px;margin-bottom:18px;padding:14px 16px}.approval-actions h3{margin:0 0 8px}.approval-actions textarea{width:100%;min-height:54px;margin-bottom:10px}.approval-status{border-radius:9px;margin-bottom:18px;padding:12px 16px;font-size:14px}.approval-status.approved{background:var(--green-soft,#e7f5ec);color:var(--green,#1c7a43)}.approval-status.rejected{color:#b3261e;background:#fbe9e9}.dir-opt-row{align-items:center;gap:8px;display:flex}.dir-opt-row:hover{background:0 0}.dir-opt-row>span:hover{color:var(--blue)}.chk-row .chk{align-items:center;gap:6px;font-size:13px;display:flex}.studio-tabs{margin:4px 0 16px}.btn.danger{border-color:var(--red);color:var(--red);background:0 0;padding:3px 9px;font-size:12px}.btn.danger:hover{background:var(--red-soft)}.col-chooser{flex-direction:column;gap:6px;max-height:320px;padding:4px 0;display:flex;overflow-y:auto}.col-chooser .chk{align-items:center;gap:8px;font-size:13px;display:flex}.side .me{color:#e6e9df;padding:0 20px;font-size:13px}.side a[href="/.auth/logout"]{color:#b9c0b0;font-size:12px}.panel-inline{flex-direction:column;gap:8px;margin-bottom:12px;padding:14px;display:flex}.cond-row{align-items:center;gap:8px;display:flex}.cond-row select,.cond-row input{padding:5px 8px}.col-chooser-inline{flex-flow:wrap;gap:12px}.col-chooser-inline .chk{align-items:center;gap:6px;font-size:13px;display:flex}.bulk-bar{flex-wrap:wrap;align-items:center;gap:10px;margin-bottom:12px;padding:10px 14px;display:flex}.list tr.sel{background:var(--accent-soft)}.related{margin-top:24px}.related-head{border-bottom:1px solid var(--line);padding:8px 12px;font-weight:500}.kpi-row{grid-template-columns:repeat(auto-fit,minmax(155px,1fr));gap:14px;margin-bottom:20px;display:grid}.kpi{background:var(--surface);border:1px solid var(--line);border-left:4px solid var(--ink-3);border-radius:10px;padding:16px 18px}.kpi-value{color:var(--ink);font-size:30px;font-weight:600;line-height:1.1}.kpi-label{text-transform:uppercase;letter-spacing:.04em;color:var(--ink-3);margin-top:4px;font-size:12px}.kpi-accent{border-left-color:var(--accent)}.kpi-amber{border-left-color:var(--amber)}.kpi-red{border-left-color:var(--red)}.kpi-blue{border-left-color:var(--blue)}.chart-grid{grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:16px;display:grid}.chart-card{padding:16px 18px}.chart-title{color:var(--ink);margin-bottom:12px;font-size:13px;font-weight:600}.bar-row{grid-template-columns:130px 1fr 34px;align-items:center;gap:10px;margin-bottom:8px;display:grid}.bar-label{color:var(--ink-2);white-space:nowrap;text-overflow:ellipsis;font-size:12px;overflow:hidden}.bar-track{background:var(--paper);border-radius:5px;height:18px;overflow:hidden}.bar-fill{background:var(--accent);border-radius:0 5px 5px 0;min-width:3px;height:100%}.bar-val{font-family:var(--mono);color:var(--ink-2);text-align:right;font-size:12px}@media (width<=900px){.kpi-row{grid-template-columns:repeat(2,1fr)}}.board{grid-auto-columns:minmax(260px,1fr);grid-auto-flow:column;gap:12px;height:calc(100vh - 168px);display:grid;overflow-x:auto}.board-col{background:var(--paper);border:1px solid var(--line);border-radius:10px;flex-direction:column;min-height:0;display:flex}.board-col-head{text-transform:uppercase;letter-spacing:.04em;color:var(--ink-2);border-bottom:1px solid var(--line);justify-content:space-between;padding:10px 12px;font-size:12px;font-weight:600;display:flex}.board-col-head .count{background:var(--surface);color:var(--ink-3);border-radius:999px;padding:0 8px;font-size:11px}.board-col-body{flex-direction:column;flex:1;gap:8px;min-height:0;padding:8px;display:flex;overflow-y:auto}.kcard{background:var(--surface);border:1px solid var(--line);cursor:grab;border-radius:8px;padding:10px;box-shadow:0 1px 2px #0000000a}.kcard:hover{border-color:var(--ink-3)}.kcard:active{cursor:grabbing}.kcard-title{color:var(--ink);margin-bottom:8px;font-size:13px;line-height:1.35}.kcard-meta{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.kcard-meta .knum{font-family:var(--mono);color:var(--ink-3);font-size:11px}.kcard-meta .kspacer{flex:1}.ktag{color:#fff;text-overflow:ellipsis;white-space:nowrap;border-radius:999px;max-width:110px;padding:1px 7px;font-size:10px;overflow:hidden}.kpoints{background:var(--accent-soft);color:var(--accent);text-align:center;border-radius:999px;min-width:18px;padding:1px 6px;font-size:11px;font-weight:600}.kavatar{background:var(--ink);color:#fff;border-radius:50%;justify-content:center;align-items:center;width:20px;height:20px;font-size:10px;font-weight:600;display:inline-flex}.kavatar.empty{color:var(--ink-3);border:1px dashed var(--line);background:0 0}.kassign{cursor:pointer;position:relative}.kassign-menu{z-index:20;background:var(--surface);border:1px solid var(--line);border-radius:8px;min-width:160px;max-height:220px;padding:4px;position:absolute;top:24px;right:0;overflow-y:auto;box-shadow:0 6px 20px #0000001f}.kassign-opt{white-space:nowrap;border-radius:5px;padding:6px 10px;font-size:13px}.kassign-opt:hover{background:var(--paper)}.kassign-opt.on{color:var(--accent);font-weight:600}.kassign-opt.muted{color:var(--ink-3)}.kadd-btn{border:1px dashed var(--line);color:var(--ink-3);cursor:pointer;background:0 0;border-radius:8px;padding:7px;font-size:12px}.kadd-btn:hover{border-color:var(--ink-3);color:var(--ink-2)}.kadd{border:1px solid var(--accent);width:100%;font:inherit;resize:vertical;border-radius:8px;min-height:54px;padding:8px;font-size:13px}.sla-row{margin-bottom:14px}.sla-row:last-child{margin-bottom:0}.sla-head{justify-content:space-between;align-items:center;margin-bottom:5px;font-size:13px;display:flex}.sla-track{background:var(--paper);border-radius:5px;height:10px;overflow:hidden}.sla-fill{border-radius:5px;height:100%}.sla-fill.ok{background:var(--accent)}.sla-fill.warn{background:var(--amber)}.sla-fill.breach{background:var(--red)}.sla-fill.met{background:var(--blue)}.sla-badge{border-radius:999px;padding:2px 8px;font-size:11px;font-weight:600}.sla-badge.ok{background:var(--accent-soft);color:var(--accent)}.sla-badge.warn{background:var(--amber-soft);color:var(--amber)}.sla-badge.breach{background:var(--red-soft);color:var(--red)}.sla-badge.met{background:var(--blue-soft);color:var(--blue)}.files .upload{cursor:pointer;margin-bottom:10px;display:inline-block}.file-row{border-bottom:1px solid #edefe8;align-items:center;gap:10px;padding:7px 0;display:flex}.file-row a{color:var(--accent);word-break:break-all;flex:1}.file-row .hint{white-space:nowrap}@media (width<=1000px){.record{grid-template-columns:1fr}.spine{flex-flow:wrap;align-items:center;position:static}.shell{grid-template-columns:1fr}.side{flex-direction:row;align-items:center;overflow-x:auto}}
