:root{--bg:#f3f0e9;--panel:#fffdf8;--panel-2:#ebe6db;--border:#e3dccd;--border-strong:#d2cab7;--text:#2a251c;--muted:#6b6456;--faint:#9c9485;--accent:#8a6a17;--accent-hover:#6f5411;--accent-weak:#f1e8d0;--accent-ring:rgba(138,106,23,.22);--ink:#2c271d;--ink-hover:#16130b;--green:#4c6a1e;--green-bg:#edf1e0;--green-bd:#cbd6a8;--yellow:#8a5a10;--yellow-bg:#f6ecd5;--yellow-bd:#e6cf96;--red:#9c3b22;--red-bg:#f5e7e0;--red-bd:#e5c2b1;--blue:#3a5f6b;--blue-bg:#e5edef;--blue-bd:#bbd2d8;--purple:#7c5a4e;--purple-bg:#f0e6df;--purple-bd:#dcc5b9;--gray:#4a453b;--gray-bg:#ebe6db;--gray-bd:#d7d0c1;--radius:10px;--radius-sm:7px;--shadow-sm:0 1px 1px rgba(42,37,28,.04);--shadow-md:0 2px 6px rgba(42,37,28,.08)}*{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{margin:0;background:var(--bg);color:var(--text);font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;font-size:14px;line-height:1.5;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}::selection{background:var(--accent-weak)}.layout{display:flex;min-height:100vh}.nav-backdrop,.topbar{display:none}.sidebar{width:232px;background:var(--panel);border-right:1px solid var(--border);padding:18px 12px;flex-shrink:0;display:flex;flex-direction:column;gap:2px;position:-webkit-sticky;position:sticky;top:0;height:100vh}.sidebar .brand{display:flex;align-items:center;gap:9px;font-size:16px;font-weight:700;letter-spacing:.04em;padding:4px 10px 16px;color:var(--text)}.brand .logo,.brand-lg .logo{color:var(--ink);display:inline-flex;flex-shrink:0}.brand .logo .spark,.brand-lg .logo .spark{color:var(--accent)}.sidebar .section{font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:var(--faint);padding:14px 10px 6px;font-weight:600}.sidebar a{display:flex;align-items:center;gap:10px;padding:8px 10px;color:var(--muted);border-radius:var(--radius-sm);font-weight:500;transition:background .12s,color .12s}.sidebar a:hover{background:var(--panel-2);color:var(--text);text-decoration:none}.sidebar a.active{background:var(--accent-weak);font-weight:600}.sidebar a.active,.sidebar a.active .nav-ico{color:var(--accent)}.sidebar .nav-ico{width:18px;height:18px;flex-shrink:0;color:var(--faint)}.sidebar a:hover .nav-ico{color:var(--muted)}.sidebar .spacer{flex:1 1}.sidebar-user{display:flex;align-items:center;gap:10px;padding:12px 10px 6px;border-top:1px solid var(--border);margin-top:8px;min-width:0}.sidebar-user .user-avatar{width:30px;height:30px;border-radius:50%;background:var(--accent-weak);color:var(--accent);display:flex;align-items:center;justify-content:center;font-weight:650;font-size:13px;flex-shrink:0}.sidebar-user .user-meta{min-width:0}.sidebar-user .user-name{font-size:13px;font-weight:600;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sidebar-user .user-sub{font-size:11.5px;color:var(--muted)}.sidebar .logout{color:var(--muted);cursor:pointer;margin-top:2px}.sidebar .logout:hover{color:var(--red);background:transparent}.sidebar a.app-version{display:block;padding:4px 10px 2px;font-size:11px;font-weight:500;color:var(--faint);border-radius:0}.sidebar a.app-version:hover{color:var(--accent);background:transparent}.changelog{max-width:720px}.changelog h2{font-size:16px;margin:26px 0 4px;padding-top:14px;border-top:1px solid var(--border)}.changelog h2:first-of-type{border-top:0;padding-top:0}.changelog h3{font-size:13px;color:var(--muted);margin:12px 0 4px}.changelog ul{margin:4px 0 10px;padding-left:20px}.changelog li{margin:3px 0}.changelog p{color:var(--muted);font-size:13px;margin:4px 0}.main{flex:1 1;padding:28px 32px;max-width:1320px;width:100%}h1{font-size:22px;font-weight:700;margin:0 0 6px;letter-spacing:-.01em}h2{font-size:15px;font-weight:650;margin:24px 0 10px}h3{font-size:14px;font-weight:600}.page-sub{color:var(--muted);margin:0 0 20px;font-size:13px}table{width:100%;border-collapse:separate;border-spacing:0;background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden;box-shadow:var(--shadow-sm)}td,th{padding:11px 14px;border-bottom:1px solid var(--border);text-align:left;vertical-align:top}tr:last-child td{border-bottom:none}th{color:var(--muted);font-weight:600;font-size:11.5px;text-transform:uppercase;letter-spacing:.03em;background:var(--panel-2);white-space:nowrap}tbody tr{transition:background .1s}tbody tr:hover{background:var(--panel-2)}tr.clickable{cursor:pointer}.card table,td>table{box-shadow:none}.btn{background:var(--ink);color:#f6f1e6;border:1px solid transparent;border-radius:var(--radius-sm);padding:8px 15px;font-size:14px;font-weight:550;cursor:pointer;transition:background .12s,border-color .12s}.btn:hover:not(:disabled){background:var(--ink-hover)}.btn:disabled{opacity:.45;cursor:default}.btn.secondary{background:var(--panel);border-color:var(--border-strong);color:var(--text)}.btn.secondary:hover:not(:disabled){background:var(--panel-2);border-color:var(--faint)}.btn.small{padding:5px 11px;font-size:12.5px}input,select,textarea{background:var(--panel);border:1px solid var(--border-strong);border-radius:var(--radius-sm);color:var(--text);padding:8px 11px;font-size:14px;font-family:inherit;transition:border-color .12s,box-shadow .12s}input::placeholder,textarea::placeholder{color:var(--faint)}input:focus,select:focus,textarea:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-ring)}label.muted input,label.muted select{margin-left:4px}.card{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);padding:18px 20px;margin-bottom:16px;box-shadow:var(--shadow-sm)}.card p{margin:6px 0}.row{display:flex;gap:16px;flex-wrap:wrap}.row>*{flex:1 1;min-width:240px}.toolbar{display:flex;gap:8px;margin-bottom:16px;flex-wrap:wrap}.badge,.toolbar{align-items:center}.badge{display:inline-flex;padding:2px 9px;border-radius:999px;font-size:12px;font-weight:550;line-height:1.6;background:var(--gray-bg);color:var(--gray);border:1px solid var(--gray-bd);white-space:nowrap}.badge.new{background:var(--blue-bg);color:var(--blue);border-color:var(--blue-bd)}.badge.in_work{background:var(--yellow-bg);color:var(--yellow);border-color:var(--yellow-bd)}.badge.tkp_ready{background:var(--purple-bg);color:var(--purple);border-color:var(--purple-bd)}.badge.submitted{background:var(--blue-bg);color:var(--blue);border-color:var(--blue-bd)}.badge.won{background:var(--green-bg);color:var(--green);border-color:var(--green-bd)}.badge.ignored,.badge.lost{background:var(--red-bg);color:var(--red);border-color:var(--red-bd)}.lvl{display:inline-flex;align-items:center;gap:6px;padding:3px 10px;border-radius:999px;font-size:12px;font-weight:650;border:1px solid;white-space:nowrap}.lvl:before{content:"";width:7px;height:7px;border-radius:50%;background:currentColor}.lvl.exact{background:var(--green-bg);color:var(--green);border-color:var(--green-bd)}.lvl.param{background:var(--blue-bg);color:var(--blue);border-color:var(--blue-bd)}.lvl.type{background:var(--yellow-bg);color:var(--yellow);border-color:var(--yellow-bd)}.lvl.clarify{background:var(--purple-bg);color:var(--purple);border-color:var(--purple-bd)}.lvl.none{background:var(--gray-bg);color:var(--gray);border-color:var(--gray-bd)}.lvl.sm{padding:1px 8px;font-size:11px}.grp{display:inline-flex;align-items:center;gap:6px;padding:2px 9px;border-radius:999px;font-size:12px;font-weight:600;border:1px solid}.grp:before{content:"";width:7px;height:7px;border-radius:50%;background:currentColor;opacity:.9}.grp.g1{background:var(--green-bg);color:var(--green);border-color:var(--green-bd)}.grp.g2{background:var(--blue-bg);color:var(--blue);border-color:var(--blue-bd)}.grp.g3{background:var(--yellow-bg);color:var(--yellow);border-color:var(--yellow-bd)}.grp.g4{background:var(--purple-bg);color:var(--purple);border-color:var(--purple-bd)}.grp.g5{background:var(--gray-bg);color:var(--gray);border-color:var(--gray-bd)}.grp.g0{background:var(--purple-bg);color:var(--purple);border-color:var(--purple-bd)}.score{font-weight:700;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.score.high{color:var(--green)}.score.mid{color:var(--yellow)}.score.low{color:var(--faint)}.match{display:inline-flex;flex-direction:column;gap:4px;min-width:74px}.match .val{font-weight:700;font-size:13px;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.match.high .val{color:var(--green)}.match.mid .val{color:var(--yellow)}.match.low .val{color:var(--faint)}.match .track{height:5px;border-radius:999px;background:var(--panel-2);overflow:hidden;border:1px solid var(--border)}.match .fill{height:100%;border-radius:999px}.match.high .fill{background:var(--green)}.match.mid .fill{background:var(--yellow)}.match.low .fill{background:var(--faint)}.meter{display:inline-flex;align-items:center;gap:8px}.meter .track{width:54px;height:5px;border-radius:999px;background:var(--panel-2);border:1px solid var(--border);overflow:hidden}.meter .fill{height:100%}.meter .fill.high{background:var(--green)}.meter .fill.mid{background:var(--yellow)}.meter .fill.low{background:var(--faint)}.meter .pct{font-size:12px;color:var(--muted)}.meter .pct,.num{font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.strong{font-weight:650}.muted{color:var(--muted)}.faint{color:var(--faint)}.error{color:var(--red);margin:8px 0}.success{color:var(--green);margin:8px 0}code{background:var(--panel-2);border:1px solid var(--border);border-radius:5px;padding:1px 6px;font-size:12.5px;font-family:SF Mono,Cascadia Code,Consolas,monospace}.stats{display:flex;gap:14px;flex-wrap:wrap;margin-bottom:24px}.stat{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);padding:16px 18px;min-width:160px;flex:1 1;box-shadow:var(--shadow-sm)}.stat .value{font-size:26px;font-weight:750;letter-spacing:-.02em;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.stat .label{color:var(--muted);font-size:12.5px;margin-top:4px}.stat.accent{border-color:var(--accent-weak)}.stat.accent .value{color:var(--accent)}.login-wrap{min-height:100vh;display:flex;align-items:center;justify-content:center;background:var(--bg)}.login-box{width:380px;background:var(--panel);border:1px solid var(--border);border-radius:16px;box-shadow:var(--shadow-md);padding:32px;display:flex;flex-direction:column;gap:14px}.login-box .brand-lg{display:flex;align-items:center;gap:12px;margin-bottom:4px}.login-box h1{font-size:18px;margin:0}.login-box .btn{margin-top:4px;padding:10px}.kanban{display:flex;gap:14px;overflow-x:auto;align-items:flex-start;padding-bottom:6px}.kanban .col{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);min-width:220px;flex:1 1;box-shadow:var(--shadow-sm);overflow:hidden}.kanban .col h3{font-size:12.5px;margin:0;color:var(--muted);background:var(--panel-2);font-weight:650}.kanban .col h3,.kanban .item{padding:11px 14px;border-bottom:1px solid var(--border)}.kanban .item{display:block;color:var(--text);font-size:13px;transition:background .1s}.kanban .item:last-child{border-bottom:none}.kanban .item:hover{background:var(--panel-2);text-decoration:none}.kanban .item>div:first-child{font-weight:550}tr.detailrow td{background:var(--panel-2);border-bottom:1px solid var(--border);padding:14px;border-left:3px solid var(--accent)}tr.subrow td{font-size:13px}tr.subrow td,tr.subrow:hover td{background:var(--panel-2)}tr.subrow td:first-child{border-left:3px solid var(--accent-weak);padding-left:28px;position:relative}tr.subrow td:first-child:before{content:"\21b3";position:absolute;left:11px;color:var(--faint)}tr.subrow.last td{border-bottom:2px solid var(--border)}.detail{display:flex;flex-direction:column;gap:14px;padding:2px}.detail-cols{display:grid;grid-template-columns:1fr 1fr;grid-gap:14px;gap:14px}@media (max-width:960px){.detail-cols{grid-template-columns:1fr}}.detail-block{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius-sm);padding:13px 15px}.detail-h{font-size:11px;text-transform:uppercase;letter-spacing:.04em;color:var(--faint);font-weight:600;margin-bottom:10px}.chips{display:flex;flex-wrap:wrap;gap:3px 18px}.chip{display:inline-flex;gap:5px;align-items:baseline;font-size:12px}.chip .k{color:var(--faint)}.chip b{font-weight:600;color:var(--text)}.specs{margin:10px 0 0;font-size:12.5px;color:var(--muted);line-height:1.45}.prices{display:flex;flex-wrap:wrap;gap:8px 18px;margin-top:11px;font-size:13px}.prices .lab{color:var(--muted);margin-right:5px}.prices .hi b{color:var(--accent)}.reg-wrap{width:max-content;max-width:none}.reg-table{font-size:12px}.reg-table td,.reg-table th{padding:6px 9px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.reg-table .num{text-align:right;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.reg-table .accent{color:var(--accent);font-weight:600}.reg-table .warn{color:var(--yellow)}.reg-table .grp-row th{text-align:left;font-size:10.5px;letter-spacing:.04em;border-bottom:1px solid var(--border-strong)}.reg-table .grp-row th.proc{color:var(--accent)}.reg-table .grp-row th.src{color:var(--muted)}.reg-table .grp-row th.proc,.reg-table td.b1,.reg-table th.b1{border-left:2px solid var(--border-strong)}.reg-table thead tr:last-child th{position:relative;padding-right:15px}.reg-table .th-label{cursor:pointer;display:inline-block;max-width:100%;overflow:hidden;text-overflow:ellipsis;vertical-align:bottom}.reg-table .th-label:hover{color:var(--accent)}.reg-table .th-sort{color:var(--accent);font-size:10px}.reg-table .col-grip{position:absolute;top:0;right:0;width:8px;height:100%;cursor:col-resize;touch-action:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.reg-table .col-grip:hover{background:var(--accent);opacity:.35}.reg-table .row-caret{color:var(--faint);font-size:10px}.reg-table .dmd-row td{background:var(--panel-2);font-size:11.5px;vertical-align:top;border-bottom:1px solid var(--border)}.reg-table .dmd-row.last td{border-bottom:2px solid var(--border-strong)}.reg-table .dmd-row td.dmd-first{border-left:3px solid var(--accent)}.reg-table .dmd-name{line-height:1.35}.reg-table .dmd-title{display:flex;align-items:baseline;gap:4px;overflow:hidden}.reg-table .dmd-title a,.reg-table .dmd-title>span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.reg-table .dmd-arrow{color:var(--faint);flex-shrink:0}.reg-table .dmd-sub{font-size:10.5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tabs{display:flex;gap:6px;margin-bottom:18px;background:var(--panel-2);padding:4px;border-radius:var(--radius-sm);width:-moz-fit-content;width:fit-content;border:1px solid var(--border)}.tabs button{background:transparent;border:none;padding:7px 14px;border-radius:6px;font-size:13px;font-weight:550;color:var(--muted);cursor:pointer}.tabs button:hover{color:var(--text)}.tabs button.active{background:var(--panel);color:var(--text);box-shadow:var(--shadow-sm)}canvas,img,svg,video{max-width:100%}@media (max-width:900px){.topbar{display:flex;align-items:center;gap:12px;position:fixed;top:0;left:0;right:0;height:54px;padding:0 14px;background:var(--panel);border-bottom:1px solid var(--border);z-index:60}.topbar .brand{padding:0;font-size:15px}.topbar .brand .logo{width:24px;height:24px;font-size:13px}.burger{display:inline-flex;align-items:center;justify-content:center;width:38px;height:38px;padding:0;background:transparent;border:1px solid var(--border-strong);border-radius:var(--radius-sm);color:var(--text);cursor:pointer;box-shadow:none}.burger:hover{background:var(--panel-2)}.burger svg{width:20px;height:20px}.sidebar{position:fixed;top:0;left:0;height:100vh;z-index:70;width:264px;transform:translateX(-100%);transition:transform .22s ease;box-shadow:var(--shadow-md);overflow-y:auto}.sidebar.open{transform:translateX(0)}.nav-backdrop{position:fixed;inset:0;background:rgba(16,24,40,.44);z-index:65;opacity:0;pointer-events:none;transition:opacity .22s ease}.nav-backdrop.show{display:block;opacity:1;pointer-events:auto}.main{padding:70px 18px 24px;max-width:100%}table{display:block;overflow-x:auto;-webkit-overflow-scrolling:touch}td,th{white-space:nowrap}.detailrow td,.subrow td,td .chips,td .detail,td .prices,td .specs{white-space:normal}}@media (max-width:560px){body{font-size:13.5px}.main{padding:66px 12px 20px}h1{font-size:19px}.stat{min-width:0;flex-basis:calc(50% - 7px);padding:13px 14px}.stat .value{font-size:22px}.row>*{min-width:0;flex-basis:100%}.toolbar{gap:6px}.toolbar>*{flex:1 1 auto}.kanban .col{min-width:180px}.login-box{width:100%;max-width:calc(100vw - 28px);padding:24px}.detail-cols{grid-template-columns:1fr}}