/* KnocKnock dashboard — reuses :root tokens from the theme's app.css. */
body.kn-app{margin:0;background:var(--soft,#F6F8F8);color:var(--ink,#0E1413)}
.kn-layout{display:flex;min-height:100vh}

/* sidebar */
.kn-side{width:248px;flex:none;background:#fff;border-right:1px solid var(--line,#E5E9E8);
  display:flex;flex-direction:column;position:sticky;top:0;height:100vh}
.kn-brand{display:flex;align-items:center;gap:10px;font-weight:800;font-size:18px;padding:20px 20px 8px}
.kn-brand img{width:26px;height:26px}
.kn-ws{padding:0 20px 16px;color:var(--muted,#6B7674);font-size:13px;font-weight:600;border-bottom:1px solid var(--line,#E5E9E8)}
.kn-nav{display:flex;flex-direction:column;gap:2px;padding:14px 12px;flex:1;overflow:auto}
.kn-navlink{display:flex;align-items:center;gap:11px;padding:10px 12px;border-radius:10px;
  color:var(--ink-2,#39433F);font-weight:600;font-size:14.5px}
.kn-navlink svg{width:19px;height:19px;opacity:.8}
.kn-navlink:hover{background:var(--soft,#F6F8F8)}
.kn-navlink.active{background:var(--teal-tint,#E9FBF8);color:var(--teal-d,#0A9C90)}
.kn-navlink.active svg{opacity:1}
.kn-user{display:flex;align-items:center;gap:10px;padding:14px 16px;border-top:1px solid var(--line,#E5E9E8)}
.kn-avatar{width:34px;height:34px;border-radius:50%;background:var(--teal,#0FBFB0);color:#fff;display:grid;place-items:center;font-weight:800}
.kn-user-meta{display:flex;flex-direction:column;line-height:1.2;flex:1;min-width:0}
.kn-user-meta strong{font-size:14px}
.kn-user-meta span{font-size:12px;color:var(--muted,#6B7674)}
.kn-logout{font-size:18px;color:var(--muted,#6B7674);text-decoration:none}
.kn-logout:hover{color:var(--ink,#0E1413)}

/* main */
.kn-main{flex:1;min-width:0;display:flex;flex-direction:column}
.kn-top{display:flex;align-items:center;justify-content:space-between;padding:22px 30px;border-bottom:1px solid var(--line,#E5E9E8);background:#fff}
.kn-top h1{font-size:22px;margin:0}
.kn-content{padding:26px 30px;display:flex;flex-direction:column;gap:18px}

/* stats */
.kn-stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:14px}
.kn-stat{background:#fff;border:1px solid var(--line,#E5E9E8);border-radius:14px;padding:18px 20px}
.kn-stat .n{font-size:30px;font-weight:800;letter-spacing:-.02em}
.kn-stat .l{color:var(--muted,#6B7674);font-size:13.5px;margin-top:2px}

/* cards + tables */
.kn-card{background:#fff;border:1px solid var(--line,#E5E9E8);border-radius:14px;padding:20px 22px}
.kn-card h3{font-size:16px;margin:0 0 14px}
.kn-cardhead{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}
.kn-cardhead h3{margin:0}
.kn-table{width:100%;border-collapse:collapse;font-size:14.5px}
.kn-table th{text-align:left;color:var(--muted,#6B7674);font-size:12px;text-transform:uppercase;letter-spacing:.04em;padding:8px 10px;border-bottom:1px solid var(--line,#E5E9E8)}
.kn-table td{padding:11px 10px;border-bottom:1px solid var(--line,#E5E9E8)}
.kn-table tr:last-child td{border-bottom:none}
.kn-empty{color:var(--muted,#6B7674);font-size:14.5px;padding:6px 0}
.kn-muted{color:var(--muted,#6B7674);font-size:14px}

/* tags, chips, swatches */
.kn-tag{font-size:12px;font-weight:700;padding:3px 9px;border-radius:999px;background:var(--soft,#F6F8F8);text-transform:capitalize}
.kn-tag.won,.kn-tag.signed{background:#E7F8EE;color:#16A34A}
.kn-tag.lost{background:#FDECEC;color:#DC2626}
.kn-tag.appointment{background:#E8F0FE;color:#2563EB}
.kn-tag.new,.kn-tag.draft{background:var(--teal-tint,#E9FBF8);color:var(--teal-d,#0A9C90)}
.kn-filters{display:flex;gap:8px;flex-wrap:wrap}
.kn-chip{padding:7px 14px;border-radius:999px;border:1px solid var(--line,#E5E9E8);background:#fff;font-size:13.5px;font-weight:600;color:var(--ink-2,#39433F)}
.kn-chip.on{background:var(--ink,#0E1413);color:#fff;border-color:var(--ink,#0E1413)}
.kn-swatch{display:inline-block;width:14px;height:14px;border-radius:4px;vertical-align:middle}

/* inline forms */
.kn-inline{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin:8px 0 16px}
.kn-inline2{display:flex;gap:6px;align-items:center}
.kn-inline input,.kn-inline select,.kn-inline2 input,.kn-knockform input,.kn-knockform select,.kn-knockform textarea,.kn-form input{
  padding:9px 11px;border:1px solid var(--line,#E5E9E8);border-radius:9px;font-size:14px;font-family:inherit;background:#fff}
.kn-statusform select{padding:6px 8px;border:1px solid var(--line,#E5E9E8);border-radius:8px;font-size:13px}
.btn-sm{padding:8px 14px;font-size:13.5px}
.kn-link{background:none;border:none;color:#DC2626;cursor:pointer;font-size:13.5px;font-weight:600;padding:0}

/* map */
.kn-maprow{display:grid;grid-template-columns:1fr 300px;gap:18px;align-items:start}
.kn-map{height:calc(100vh - 150px);min-height:420px;border-radius:14px;border:1px solid var(--line,#E5E9E8);overflow:hidden}
.kn-mapside{display:flex;flex-direction:column;gap:14px}
.kn-knockform{display:flex;flex-direction:column;gap:6px;margin-top:10px}
.kn-knockform label{font-size:12px;font-weight:600;color:var(--muted,#6B7674)}
.kn-mlabel{display:block;font-size:12px;font-weight:600;color:var(--muted,#6B7674);margin-bottom:5px}
.kn-tersel{width:100%;padding:9px 11px;border:1px solid var(--line,#E5E9E8);border-radius:9px;font-size:13.5px;background:#fff}
.kn-terrow{display:flex;align-items:center;gap:8px;padding:8px 0;border-top:1px solid var(--line,#E5E9E8)}
.kn-tername{flex:1;font-size:13.5px;font-weight:600;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.kn-terassign select{padding:5px 7px;border:1px solid var(--line,#E5E9E8);border-radius:7px;font-size:12.5px;max-width:120px}

/* leaderboard */
.kn-board{display:flex;flex-direction:column;gap:10px}
.kn-boardrow{display:grid;grid-template-columns:28px 1fr 2fr 44px;gap:12px;align-items:center}
.kn-rank{font-weight:800;color:var(--muted,#6B7674)}
.kn-bn{font-weight:600;font-size:14.5px}
.kn-bar{height:10px;background:var(--soft,#F6F8F8);border-radius:999px;overflow:hidden}
.kn-bar i{display:block;height:100%;background:var(--teal,#0FBFB0)}
.kn-bc{text-align:right;font-weight:700}

/* reports bar chart */
.kn-barchart{display:flex;align-items:flex-end;gap:7px;height:160px;padding-top:8px}
.kn-barcol{flex:1;display:flex;flex-direction:column;justify-content:flex-end;align-items:center;height:100%;gap:6px}
.kn-barcol i{display:block;width:70%;min-height:2px;background:var(--teal,#0FBFB0);border-radius:5px 5px 0 0}
.kn-barcol span{font-size:11px;color:var(--muted,#6B7674)}

/* notices */
.kn-notice{background:var(--teal-tint,#E9FBF8);border:1px solid var(--teal,#0FBFB0);color:var(--teal-d,#0A9C90);padding:11px 16px;border-radius:10px;font-weight:600;font-size:14px}
.kn-notice.err{background:#FDECEC;border-color:#E5484D;color:#C62828}

/* auth */
.kn-authcard{background:#fff;border:1px solid var(--line,#E5E9E8);border-radius:16px;padding:30px 28px;box-shadow:var(--shadow,0 8px 30px rgba(14,20,19,.06))}
.kn-auth-h{font-size:24px;margin:0 0 18px}
.kn-form{display:flex;flex-direction:column}
.kn-form label{font-size:13px;font-weight:600;color:var(--ink-2,#39433F);margin:10px 0 5px}
.kn-form input{font-size:15px}
.kn-auth-err{background:#FDECEC;border:1px solid #E5484D;color:#C62828;padding:10px 14px;border-radius:10px;font-size:14px;margin-bottom:14px}
.kn-auth-ok{background:#ECFDF5;border:1px solid #10B981;color:#047857;padding:10px 14px;border-radius:10px;font-size:14px;margin-bottom:14px}
.kn-auth-alt{margin-top:16px;font-size:14px;color:var(--muted,#6B7674)}
.kn-auth-alt a{color:var(--teal-d,#0A9C90);font-weight:600}
.kn-auth-sub{color:var(--muted,#6B7674);font-size:14.5px;margin:-8px 0 18px}

/* trial bar */
.kn-trialbar{display:flex;align-items:center;justify-content:space-between;gap:14px;flex-wrap:wrap;
  margin:18px 30px 0;padding:12px 18px;border-radius:12px;font-size:14.5px;
  background:var(--teal-tint,#E9FBF8);border:1px solid var(--teal,#0FBFB0);color:var(--teal-d,#0A9C90)}
.kn-trialbar.ended{background:#FDECEC;border-color:#E5484D;color:#C62828}

/* billing */
.kn-billlist{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:10px}
.kn-billlist li{position:relative;padding-left:26px;color:var(--ink-2,#39433F);font-size:14.5px}
.kn-billlist li::before{content:"✓";position:absolute;left:0;top:0;color:var(--teal-d,#0A9C90);font-weight:800}

/* team chat */
.kn-chatpost{display:flex;gap:10px;align-items:flex-start}
.kn-chatpost textarea{flex:1;padding:10px 12px;border:1px solid var(--line,#E5E9E8);border-radius:10px;font-family:inherit;font-size:14.5px;resize:vertical}
.kn-feed{display:flex;flex-direction:column;gap:12px}
.kn-msg{display:flex;gap:12px;align-items:flex-start;background:#fff;border:1px solid var(--line,#E5E9E8);border-radius:12px;padding:14px 16px}
.kn-msg-b{flex:1;min-width:0}
.kn-msg-h{display:flex;gap:10px;align-items:baseline}
.kn-msg-h strong{font-size:14.5px}
.kn-msg-h span{font-size:12px;color:var(--muted,#6B7674)}
.kn-msg-t{margin-top:3px;font-size:14.5px;color:var(--ink-2,#39433F);white-space:pre-wrap}
.kn-announce{background:linear-gradient(120deg,var(--teal,#0FBFB0),var(--teal-d,#0A9C90));color:#fff;border-radius:14px;padding:20px 22px;display:flex;flex-direction:column;gap:6px;box-shadow:var(--shadow,0 8px 30px rgba(14,20,19,.12))}
.kn-announce-badge{font-size:11px;font-weight:800;letter-spacing:.12em;opacity:.85}
.kn-announce-body{font-size:22px;font-weight:800;line-height:1.2}
.kn-announce-when{font-size:12px;opacity:.85}
.kn-check{display:inline-flex;align-items:center;gap:6px;font-size:13.5px;color:var(--ink-2,#39433F)}
.kn-content code{background:var(--soft,#F6F8F8);padding:1px 6px;border-radius:5px;font-size:13px}

/* documents: editor + sign */
.kn-back{display:inline-block;margin-bottom:14px;color:var(--teal-d,#0A9C90);font-weight:600;font-size:14px}
.kn-doctools{display:flex;gap:24px;flex-wrap:wrap;align-items:center;margin:6px 0 16px;padding-bottom:14px;border-bottom:1px solid var(--line,#E5E9E8)}
.kn-tool-group{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.kn-tool-group>span{font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--muted,#6B7674)}
.kn-tool,.kn-assignee{padding:7px 13px;border:1px solid var(--line,#E5E9E8);background:#fff;border-radius:8px;font-size:13.5px;font-weight:600;cursor:pointer;color:var(--ink-2,#39433F)}
.kn-tool.active{background:var(--teal-tint,#E9FBF8);border-color:var(--teal,#0FBFB0);color:var(--teal-d,#0A9C90)}
.kn-assignee.active{background:var(--ink,#0E1413);color:#fff;border-color:var(--ink,#0E1413)}
.kn-doc-pages{display:flex;flex-direction:column;align-items:center;gap:18px;background:var(--soft,#F6F8F8);padding:18px;border-radius:12px;max-height:74vh;overflow:auto}
.kn-page{position:relative;box-shadow:var(--shadow,0 8px 30px rgba(14,20,19,.12));background:#fff}
.kn-page canvas{display:block}
.kn-overlay{position:absolute;inset:0;cursor:crosshair}
.kn-field{position:absolute;box-sizing:border-box;border:1.5px solid var(--teal,#0FBFB0);background:rgba(15,191,176,.14);border-radius:4px;cursor:move;display:flex;align-items:center;justify-content:space-between;gap:4px;padding:0 5px;overflow:visible;font-size:11px;font-weight:700;color:var(--teal-d,#0A9C90);user-select:none}
.kn-field.who-rep{border-color:#2563EB;background:rgba(37,99,235,.14);color:#1d4ed8}
.kn-field-l{flex:1;min-width:0;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}
.kn-field-w{font-size:9px;font-weight:800;letter-spacing:.02em;padding:1px 6px;border-radius:999px;border:1px solid currentColor;cursor:pointer;flex:none;white-space:nowrap}
.kn-field-rs,.kn-field-x{position:absolute;top:-9px;width:18px;height:18px;border-radius:50%;background:#fff;border:1.5px solid currentColor;display:grid;place-items:center;line-height:1;z-index:3}
.kn-field-rs{left:-9px;font-size:11px;cursor:nwse-resize}
.kn-field-x{right:-9px;font-size:13px;cursor:pointer}
/* sign overlay inputs */
.kn-sfield{position:absolute;box-sizing:border-box}
.kn-sf-in{width:100%;height:100%;box-sizing:border-box;border:1px solid var(--teal,#0FBFB0);border-radius:4px;background:rgba(255,255,255,.92);font-size:13px;padding:0 5px}
.kn-sfield.who-rep .kn-sf-in{border-color:#2563EB}
.kn-sf-cb{width:100%;height:100%;accent-color:var(--teal,#0FBFB0)}
.kn-sf-sig{border:1.5px dashed var(--teal,#0FBFB0);border-radius:4px;background:rgba(15,191,176,.06) center/contain no-repeat;display:flex;align-items:center;justify-content:center;font-size:11px;font-weight:700;color:var(--teal-d,#0A9C90);cursor:pointer;text-align:center}
.kn-docpick{display:flex;gap:6px;align-items:center}
.kn-docpick select{padding:6px 8px;border:1px solid var(--line,#E5E9E8);border-radius:8px;font-size:13px}
/* signature modal */
.kn-sigmodal{position:fixed;inset:0;background:rgba(14,20,19,.55);display:flex;align-items:center;justify-content:center;z-index:9999}
.kn-sigbox{background:#fff;border-radius:16px;padding:22px;max-width:92vw}
.kn-sigbox h4{margin:0 0 12px;font-size:16px}
.kn-sigbox canvas{border:1px solid var(--line,#E5E9E8);border-radius:10px;touch-action:none;background:#fff;max-width:100%}
.kn-sigbtns{display:flex;justify-content:flex-end;gap:8px;margin-top:12px}

/* member-manage + announcement modals */
.kn-modal{position:fixed;inset:0;background:rgba(14,20,19,.55);display:none;align-items:center;justify-content:center;z-index:9999;padding:20px}
.kn-modal[style*="flex"]{display:flex}
.kn-modalbox{background:#fff;border-radius:16px;padding:22px 24px;max-width:440px;width:100%;position:relative;box-shadow:0 24px 64px rgba(0,0,0,.28)}
.kn-modalbox h3{margin:0 0 6px;font-size:17px}
.kn-modalx{position:absolute;top:10px;right:14px;border:none;background:none;font-size:24px;line-height:1;cursor:pointer;color:#9CA3AF}
.kn-mmform{padding:14px 0;border-top:1px solid var(--line,#E5E9E8)}
.kn-mmform:first-of-type{border-top:none}
.kn-mmform label{display:block;font-size:12px;font-weight:600;color:var(--muted,#6B7674);margin-bottom:5px}
.kn-mmform input{width:100%;padding:9px 11px;border:1px solid var(--line,#E5E9E8);border-radius:9px;font-size:14px;margin-bottom:8px;box-sizing:border-box;font-family:inherit}
.kn-seatimpact{font-size:13px;color:var(--muted,#6B7674);margin:0 0 10px;line-height:1.45}
.btn-danger{background:#DC2626;color:#fff;border-color:#DC2626}
.btn-danger:hover{background:#b91c1c}

/* platform admin edit rows */
.kn-pf-row{display:flex;gap:10px;flex-wrap:wrap;align-items:flex-end;padding:14px 0;border-top:1px solid var(--line,#E5E9E8)}
.kn-pf-row:first-of-type{border-top:none}
.kn-pf-form{display:flex;gap:10px;flex-wrap:wrap;align-items:flex-end;flex:1}
.kn-pf-row label{display:block;font-size:11px;font-weight:600;color:var(--muted,#6B7674);margin-bottom:4px}
.kn-pf-row input,.kn-pf-row select{padding:8px 10px;border:1px solid var(--line,#E5E9E8);border-radius:8px;font-size:13.5px;font-family:inherit;background:#fff;min-width:120px}

/* settings tabs */
.kn-tabs{display:flex;gap:4px;border-bottom:1px solid var(--line,#E5E9E8);margin-bottom:18px;flex-wrap:wrap}
.kn-tab{padding:9px 15px;font-weight:600;font-size:14px;color:var(--muted,#6B7674);border-bottom:2px solid transparent;margin-bottom:-1px}
.kn-tab.on{color:var(--teal-d,#0A9C90);border-bottom-color:var(--teal,#0FBFB0)}
.kn-formgrid{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.kn-formgrid label{display:block;font-size:12px;font-weight:600;color:var(--muted,#6B7674);margin-bottom:5px}
.kn-formgrid input{width:100%;padding:10px 12px;border:1px solid var(--line,#E5E9E8);border-radius:9px;font-size:14.5px;font-family:inherit;background:#fff}
.kn-formgrid input:disabled{background:var(--soft,#F6F8F8);color:var(--ink-2,#39433F)}
@media(max-width:640px){.kn-formgrid{grid-template-columns:1fr}}
/* pin editor + icon picker */
.kn-pinrow{display:flex;align-items:flex-start;gap:10px;padding:14px 0;border-top:1px solid var(--line,#E5E9E8)}
.kn-pinrow:first-of-type{border-top:none}
.kn-pinedit{display:flex;align-items:center;gap:10px;flex-wrap:wrap;flex:1}
.kn-pinpreview{width:42px;height:42px;border-radius:10px;background:var(--soft,#F6F8F8);display:grid;place-items:center;flex:none}
.kn-pinlabel{padding:9px 11px;border:1px solid var(--line,#E5E9E8);border-radius:9px;font-size:14px;min-width:150px}
.kn-pinedit input[type=color]{width:38px;height:38px;border:1px solid var(--line,#E5E9E8);border-radius:9px;padding:2px;background:#fff}
.kn-iconpick{display:flex;flex-wrap:wrap;gap:6px;flex:1;min-width:200px}
.kn-iconopt{position:relative;width:38px;height:38px;border:1px solid var(--line,#E5E9E8);border-radius:9px;display:grid;place-items:center;cursor:pointer;color:#9CA3AF}
.kn-iconopt input{position:absolute;opacity:0;inset:0;margin:0;cursor:pointer}
.kn-iconopt:has(input:checked){border-color:var(--teal,#0FBFB0);background:var(--teal-tint,#E9FBF8);color:var(--teal-d,#0A9C90)}
.kn-pinnew{background:var(--soft,#F6F8F8);border-radius:12px;padding:12px 14px;border-top:none;margin-top:10px}

/* reports chart + controls */
.kn-repctl{display:flex;gap:14px;flex-wrap:wrap;align-items:center;justify-content:space-between;margin-bottom:16px}
.kn-range{display:inline-flex;border:1px solid var(--line,#E5E9E8);border-radius:10px;overflow:hidden}
.kn-rbtn{padding:8px 13px;font-size:13px;font-weight:600;background:#fff;border:none;border-right:1px solid var(--line,#E5E9E8);color:var(--ink-2,#39433F);cursor:pointer}
.kn-rbtn:last-child{border-right:none}
.kn-rbtn.on{background:var(--ink,#0E1413);color:#fff}
.kn-scope{display:flex;gap:8px}
.kn-scope select{padding:8px 11px;border:1px solid var(--line,#E5E9E8);border-radius:9px;font-size:13.5px;font-weight:600;background:#fff}
.kn-chartwrap{width:100%}
.kn-chart{width:100%;height:auto;display:block}
.kn-legend{display:flex;flex-wrap:wrap;gap:14px;margin-top:12px}
.kn-leg{display:inline-flex;align-items:center;gap:6px;font-size:13px;color:var(--ink-2,#39433F)}
.kn-leg i{width:12px;height:12px;border-radius:3px;display:inline-block}
.kn-checks{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:10px}
.kn-checks .kn-check{display:flex;align-items:center;gap:8px;font-size:14px;color:var(--ink-2,#39433F)}
/* roles */
.kn-rolerow{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:11px 0;border-top:1px solid var(--line,#E5E9E8)}
.kn-rolerow:first-of-type{border-top:none}
.kn-roleedit{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.kn-roleedit input[type=text],.kn-roleedit input:not([type]){padding:8px 10px;border:1px solid var(--line,#E5E9E8);border-radius:8px;font-size:14px;min-width:130px}
.kn-mini{font-size:12.5px;color:var(--muted,#6B7674);display:inline-flex;align-items:center;gap:5px}
.kn-mini input{width:64px;padding:7px 8px;border:1px solid var(--line,#E5E9E8);border-radius:8px;font-size:13px}

@media(max-width:820px){
  .kn-side{width:64px}
  .kn-brand span,.kn-ws,.kn-navlink span,.kn-user-meta{display:none}
  .kn-maprow{grid-template-columns:1fr}
}
