:root{--bg:#f7f7f5;--card:#fff;--border:#e6e5e0;--text:#1c1c1a;--muted:#6b6b66;--info:#185fa5;--info-bg:#e6f1fb;--success:#0f6e56;--success-bg:#e1f5ee;--warn:#854f0b;--warn-bg:#faeeda;--radius:10px}*{box-sizing:border-box}body,html{margin:0;padding:0}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif;background:var(--bg);color:var(--text);font-size:15px;line-height:1.5}a{color:var(--info);text-decoration:none}.container{max-width:1040px;margin:0 auto;padding:20px}.topbar{display:flex;align-items:center;justify-content:space-between;padding:12px 20px;background:var(--card);border-bottom:1px solid var(--border)}.brand{font-weight:600}.card{background:var(--card);border:1px solid var(--border);border-radius:var(--radius)}.btn{border:1px solid var(--border);background:#fff;border-radius:8px;padding:8px 14px;font-size:14px;cursor:pointer;color:var(--text)}.btn-primary{background:var(--info);border-color:var(--info);color:#fff}.btn:disabled{opacity:.5;cursor:default}input,select,textarea{width:100%;padding:9px 11px;border:1px solid var(--border);border-radius:8px;font-size:14px;font-family:inherit;background:#fff;color:var(--text)}label{font-size:12px;color:var(--muted);display:block;margin-bottom:4px}table{width:100%;border-collapse:collapse}td,th{text-align:left;padding:10px 12px;border-bottom:1px solid var(--border);font-size:14px}th{color:var(--muted);font-weight:500}.badge{font-size:12px;padding:2px 9px;border-radius:8px;display:inline-block}.badge-info{background:var(--info-bg);color:var(--info)}.badge-success{background:var(--success-bg);color:var(--success)}.badge-warn{background:var(--warn-bg);color:var(--warn)}.muted{color:var(--muted)}.mono{font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.row{gap:12px;flex-wrap:wrap}.field,.row{display:flex}.field{border:1px solid var(--border);border-radius:8px;padding:8px 11px;justify-content:space-between;gap:8px}.field .lbl{font-size:13px}.field .lbl,.lock{color:var(--muted)}.lock{font-size:12px}.section{padding:16px 18px}.section+.section{border-top:1px solid var(--border)}.flash,.note{font-size:13px}.flash{padding:10px 12px;border-radius:8px;margin-bottom:12px}.flash-ok{background:var(--success-bg);color:var(--success)}.flash-warn{background:var(--warn-bg);color:var(--warn)}.grid2{display:grid;grid-template-columns:1fr 1fr;grid-gap:18px;gap:18px}@media (max-width:640px){.grid2{grid-template-columns:1fr}}.shell{display:flex;min-height:100vh;align-items:stretch}.sidebar{width:212px;flex-shrink:0;background:var(--card);border-right:1px solid var(--border);padding:14px 10px;display:flex;flex-direction:column;gap:2px}.sidebar .brand{font-weight:600;padding:4px 8px 12px;display:flex;align-items:center;gap:8px}.sidebar nav{display:flex;flex-direction:column;gap:2px}.sidebar nav a{display:block;padding:8px 10px;border-radius:8px;color:var(--text);font-size:14px}.sidebar nav a:hover{background:var(--bg)}.sidebar nav a.active{background:var(--info-bg);color:var(--info)}.sidebar .sb-label{font-size:11px;color:var(--muted);padding:12px 8px 4px;text-transform:none}.sidebar .spacer{flex:1 1}.sidebar .who{font-size:12px;color:var(--muted);padding:8px;border-top:1px solid var(--border)}.main{flex:1 1;min-width:0;padding:20px 24px}.main>h2:first-child{margin-top:0}@media (max-width:760px){.shell{flex-direction:column}.sidebar{width:auto;flex-direction:row;align-items:center;gap:8px;border-right:none;border-bottom:1px solid var(--border);padding:10px 12px;overflow-x:auto}.sidebar .brand{padding:0 4px 0 0}.sidebar nav{flex-direction:row;gap:2px}.sidebar .sb-label,.sidebar .spacer{display:none}.sidebar .who{border-top:none;padding:4px;margin-left:auto}.main{padding:14px}}.flt-row{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-bottom:14px}.dl-cards,.dl-sort-mobile{display:none}@media (max-width:640px){.flt-row{flex-direction:column;align-items:stretch!important}.flt-row>*{width:100%}.dl-table{display:none}.dl-cards{display:flex;flex-direction:column;gap:10px}.dl-card{padding:12px 14px}.dl-card .dl-top{display:flex;align-items:flex-start;justify-content:space-between;gap:10px}.dl-card .dl-name{font-weight:600;font-size:15px;line-height:1.3}.dl-card .dl-sub{color:var(--muted);font-size:13px;margin-top:2px}.dl-card .dl-foot{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:10px}}.kanban{display:flex;gap:12px;overflow-x:auto;padding-bottom:8px;align-items:flex-start}.kanban-col{flex:1 0 240px;min-width:240px;background:var(--bg);border:1px solid var(--border);border-radius:var(--radius)}.kanban-col>h4{margin:0;padding:10px 12px;font-size:13px;display:flex;justify-content:space-between;border-bottom:1px solid var(--border)}.kanban-col .kbody{display:flex;flex-direction:column;gap:8px;padding:10px}.kanban-col[data-over="1"]{border-color:var(--info);background:var(--info-bg)}.kanban-card{background:var(--card);border:1px solid var(--border);border-radius:8px;padding:10px 11px;cursor:-webkit-grab;cursor:grab}.kanban-card:active{cursor:-webkit-grabbing;cursor:grabbing}.kanban-card .kc-name{font-weight:600;font-size:14px}.kanban-card .kc-sub{color:var(--muted);font-size:12px;margin-top:2px}.stat-strip{display:flex;gap:12px;flex-wrap:wrap;margin-bottom:4px}.stat{flex:1 1 150px;padding:12px 14px}.stat .v{font-size:20px;font-weight:600}.stat .k{color:var(--muted);font-size:12px;margin-top:2px}.bar{height:8px;background:var(--bg);border-radius:6px;overflow:hidden;border:1px solid var(--border)}.bar>span{display:block;height:100%;background:var(--info)}.seg{display:inline-flex;border:1px solid var(--border);border-radius:8px;overflow:hidden}.seg a{padding:7px 14px;font-size:14px;color:var(--text)}.seg a.active{background:var(--info-bg);color:var(--info)}.cell-input{width:100%;padding:5px 7px;font-size:13px;border:1px solid var(--border);border-radius:6px;background:#fff;color:var(--text);font-family:inherit}.cell-input:focus{outline:none;border-color:var(--info)}.dl-edit{display:grid;grid-template-columns:1fr;grid-gap:0;gap:0;margin-top:6px}.dl-edit label{margin:8px 0 3px}.dl-table{overflow-x:auto}.dl-table td{padding:7px 10px;vertical-align:top}.dl-table table{min-width:820px}@media (max-width:640px){.cell-input{font-size:16px;padding:11px 12px;min-height:44px}.btn{padding:11px 16px;min-height:44px}.seg a{padding:11px 18px}input,select,textarea{font-size:16px}.kanban-col{flex:0 0 82vw;min-width:82vw}h2{font-size:20px}}