/* policy.css - extracted from mesh-PO_sheet.html */

.tb-flask { width: 22px; height: 22px; flex-shrink: 0; display: flex; align-items: center; justify-content: center; background: #f59e0b; color: white; border-radius: 5px; }
.tb-headline { font-weight: 600; color: #92400e; }
.tb-headline .tb-policy { color: #1f2937; }
.tb-summary { color: #78350f; display: inline-flex; align-items: center; flex-wrap: wrap; gap: 10px; }
.tb-summary .tb-sep { color: #d97706; opacity: 0.5; }
.tb-summary .tb-pos { color: #15803d; font-weight: 600; }
.tb-summary .tb-neg { color: #b91c1c; font-weight: 600; }
.tb-summary .tb-info { color: #6366f1; font-weight: 600; }
.tb-spacer { flex: 1; min-width: 8px; }
.tb-btn { display: inline-flex; align-items: center; gap: 5px; padding: 5px 11px; border-radius: 5px; border: 1px solid transparent; font-size: 11.5px; font-weight: 600; cursor: pointer; font-family: inherit; transition: background 0.12s, border-color 0.12s; }
.tb-btn.ghost { background: transparent; color: #78350f; border-color: #fcd34d; }
.tb-btn.ghost:hover { background: #fef3c7; }
.tb-btn.primary { background: #4f6ef7; color: white; border-color: #4f6ef7; }
.tb-btn.primary:hover { background: #3d5be3; }
.tb-btn.danger { background: transparent; color: #b91c1c; border-color: transparent; }
.tb-btn.danger:hover { background: #fef2f2; border-color: #fca5a5; }
.tb-empty { color: #92400e; font-style: italic; }
.cpb-modal { width: 560px; max-height: 90vh; }
.cpb-hd { padding: 22px 24px 16px; display: flex; align-items: flex-start; gap: 14px; border-bottom: 1px solid #f3f4f6; flex-shrink: 0; }
.cpb-hd-text { flex: 1; min-width: 0; }
.cpb-title { font-size: 18px; font-weight: 700; color: #0a0a0a; letter-spacing: -0.2px; line-height: 1.25; }
.cpb-sub { font-size: 12.5px; color: #6b7280; margin-top: 5px; line-height: 1.4; }
.cpb-body { padding: 0 0 4px; flex: 1; overflow-y: auto; display: flex; flex-direction: column; }
.cpb-section { padding: 18px 24px; border-bottom: 1px solid #f3f4f6; display: flex; flex-direction: column; gap: 12px; }
.cpb-section:last-child { border-bottom: none; }
.cpb-section-name { padding-top: 14px; padding-bottom: 14px; border-bottom: none; }
.cpb-section-hd { display: flex; align-items: center; gap: 7px; font-size: 13.5px; font-weight: 600; color: #111827; }
.cpb-section-hd svg { color: #6b7280; }
.cpb-nl-card { margin: 18px 24px 0; padding: 14px; border: 1px solid #dbeafe; background: linear-gradient(135deg, #f5f8ff, #fafbff); border-radius: 10px; display: flex; flex-direction: column; gap: 10px; }
.cpb-nl-head { display: flex; gap: 10px; align-items: flex-start; }
.cpb-nl-ic { width: 28px; height: 28px; border-radius: 7px; background: #4f6ef7; color: white; display: flex; align-items: center; justify-content: center; flex-shrink: 0; }
.cpb-nl-text { flex: 1; min-width: 0; }
.cpb-nl-title { font-size: 13px; font-weight: 600; color: #1e3a8a; line-height: 1.3; }
.cpb-nl-sub { font-size: 11.5px; color: #4338ca; margin-top: 2px; line-height: 1.45; }
.cpb-nl-input-wrap { position: relative; }
.cpb-nl-input { width: 100%; padding: 10px 12px 38px; border: 1px solid #d1d5db; border-radius: 8px; font-size: 13px; font-family: inherit; resize: none; outline: none; line-height: 1.5; background: white; color: #0a0a0a; transition: border-color 0.15s, box-shadow 0.15s; }
.cpb-nl-input:focus { border-color: #4f6ef7; box-shadow: 0 0 0 3px rgba(79,110,247,0.12); }
.cpb-nl-input::placeholder { color: #9ca3af; }
.cpb-gen-btn { position: absolute; right: 6px; bottom: 6px; display: inline-flex; align-items: center; gap: 5px; padding: 6px 12px; background: #4f6ef7; color: white; border: none; border-radius: 6px; font-size: 12px; font-weight: 600; font-family: inherit; cursor: pointer; transition: background 0.15s, opacity 0.15s; }
.cpb-gen-btn:hover { background: #3f5be0; }
.cpb-gen-btn:disabled { opacity: 0.55; cursor: wait; }
.cpb-gen-btn.success { background: #16a34a; }
.cpb-examples { display: flex; align-items: center; flex-wrap: wrap; gap: 6px 8px; margin-top: 10px; }
.cpb-examples-lbl { font-size: 11.5px; color: #4338ca; font-weight: 500; opacity: 0.85; margin-right: 2px; }
.cpb-example-chip { display: inline-flex; align-items: center; gap: 5px; padding: 4px 10px; background: white; border: 1px dashed #c7d2fe; border-radius: 999px; font-size: 11.5px; font-weight: 500; color: #4338ca; cursor: pointer; font-family: inherit; transition: background 0.12s, border-color 0.12s, color 0.12s; }
.cpb-example-chip:hover { background: #eef2ff; border-color: #818cf8; border-style: solid; color: #312e81; }
.cpb-example-chip svg { opacity: 0.7; }
.cpb-test-result { margin: 4px 0 0; padding: 11px 14px; border-radius: 8px; background: #f0fdf4; border: 1px solid #bbf7d0; display: none; }
.cpb-test-result.shown { display: block; }
.cpb-test-result.warn { background: #fffbeb; border-color: #fde68a; }
.cpb-test-result.err { background: #fef2f2; border-color: #fecaca; }
.cpb-test-head { display: flex; align-items: center; gap: 8px; font-size: 12.5px; font-weight: 600; color: #166534; }
.cpb-test-result.warn .cpb-test-head { color: #b45309; }
.cpb-test-result.err  .cpb-test-head { color: #b91c1c; }
.cpb-test-head svg { flex-shrink: 0; }
.cpb-test-body { margin-top: 6px; font-size: 11.5px; color: #374151; line-height: 1.55; }
.cpb-test-samples { display: flex; flex-wrap: wrap; gap: 5px; margin-top: 7px; }
.cpb-test-sample { font-size: 10.5px; font-weight: 600; padding: 2px 7px; background: white; border: 1px solid #d1fae5; border-radius: 4px; color: #047857; font-variant-numeric: tabular-nums; }
.cpb-test-result.warn .cpb-test-sample { border-color: #fed7aa; color: #b45309; }
.cpb-ft-left { margin-right: auto; }
.cpb-btn.test { background: white; border: 1px solid #c7d2fe; color: #4338ca; display: inline-flex; align-items: center; gap: 6px; }
.cpb-btn.test:hover { background: #eef2ff; border-color: #818cf8; }
.cpb-btn.test svg { opacity: 0.8; }
.cpb-field { display: flex; flex-direction: column; gap: 6px; }
.cpb-label { font-size: 12px; font-weight: 500; color: #374151; }
.cpb-input, .cpb-select, .cpb-textarea { width: 100%; padding: 9px 12px; border: 1px solid #d1d5db; border-radius: 7px; font-size: 13.5px; font-family: inherit; color: #0a0a0a; outline: none; transition: border-color 0.15s, box-shadow 0.15s; background: white; }
.cpb-input:focus, .cpb-select:focus, .cpb-textarea:focus { border-color: #4f6ef7; box-shadow: 0 0 0 3px rgba(79,110,247,0.12); }
.cpb-input::placeholder, .cpb-textarea::placeholder { color: #9ca3af; }
.cpb-textarea { resize: vertical; min-height: 70px; line-height: 1.5; }
.cpb-select { appearance: none; padding-right: 32px; background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='10' viewBox='0 0 24 24' fill='none' stroke='%239ca3af' stroke-width='2.5'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E"); background-repeat: no-repeat; background-position: right 10px center; cursor: pointer; }
.cpb-overview-label { font-size: 11.5px; font-weight: 500; color: #6b7280; }
.cpb-overview { display: flex; flex-wrap: wrap; gap: 6px; padding: 8px 10px; background: #f3f4f6; border-radius: 7px; font-size: 12.5px; color: #374151; min-height: 32px; align-items: center; }
.cpb-overview-empty { color: #9ca3af; font-style: italic; }
.cpb-overview-chip { background: white; padding: 2px 9px; border-radius: 5px; font-size: 12px; font-weight: 600; color: #0a0a0a; box-shadow: 0 1px 2px rgba(0,0,0,0.06); }
.cpb-overview-op { font-size: 11.5px; font-weight: 600; color: #6b7280; padding: 0 2px; text-transform: lowercase; }
.cpb-overview-paren { font-size: 13.5px; font-weight: 600; color: #475569; padding: 0 1px; }
.cpb-conds { display: flex; flex-direction: column; gap: 0; }
.cpb-cond { display: flex; flex-direction: column; padding: 4px 0; }
.cpb-cond-head { display: flex; align-items: center; gap: 8px; padding: 0 2px 4px; }
.cpb-cond-dot { width: 11px; height: 11px; border: 1.5px solid #cbd5e1; border-radius: 3px; flex-shrink: 0; }
.cpb-cond-label { flex: 1; font-size: 13px; font-weight: 500; color: #111827; }
.cpb-cond-trash { background: none; border: none; cursor: pointer; padding: 3px; color: #9ca3af; border-radius: 4px; display: inline-flex; align-items: center; transition: background 0.12s, color 0.12s; }
.cpb-cond-trash:hover { background: #fef2f2; color: #dc2626; }
.cpb-cond-body { border-left: 1.5px solid #cbd5e1; margin-left: 5px; padding: 6px 0 6px 16px; display: flex; align-items: center; gap: 8px; }
.cpb-cond-if { font-size: 12px; font-weight: 600; color: #4b5563; flex-shrink: 0; }
.cpb-cond-slot { flex: 1; min-width: 0; padding: 7px 10px; border: 1px solid #e5e7eb; border-radius: 6px; font-size: 12.5px; font-family: inherit; outline: none; background: white; color: #0a0a0a; transition: border-color 0.12s, box-shadow 0.12s; }
.cpb-cond-slot:focus { border-color: #4f6ef7; box-shadow: 0 0 0 2px rgba(79,110,247,0.12); }
.cpb-cond-slot::placeholder { color: #9ca3af; }
.cpb-group { display: flex; flex-direction: column; padding: 4px 0; }
.cpb-group-head { display: flex; align-items: center; gap: 8px; padding: 0 2px 4px; }
.cpb-group-body { border-left: 1.5px solid #cbd5e1; margin-left: 5px; padding: 4px 0 6px 16px; display: flex; flex-direction: column; gap: 0; }
.cpb-group-add-row { margin-top: 8px; }
.cpb-andor-row { padding: 6px 0 6px 17px; }
.cpb-group .cpb-andor-row,
.cpb-group-body > .cpb-andor-row { padding-left: 0; }
.cpb-andor { display: inline-flex; background: #f1f5f9; border-radius: 8px; padding: 2px; }
.cpb-andor-btn { padding: 3px 16px; border-radius: 6px; font-size: 12.5px; font-weight: 500; cursor: pointer; border: none; background: transparent; color: #475569; font-family: inherit; transition: all 0.12s; }
.cpb-andor-btn.active { background: white; color: #0a0a0a; box-shadow: 0 1px 2px rgba(0,0,0,0.08); }
.cpb-add-row { display: flex; gap: 8px; }
.cpb-add-btn { display: inline-flex; align-items: center; gap: 6px; padding: 7px 14px; border: 1px solid #e5e7eb; background: white; border-radius: 7px; font-size: 12.5px; font-weight: 500; color: #374151; cursor: pointer; font-family: inherit; transition: background 0.12s, border-color 0.12s; }
.cpb-add-btn:hover { background: #f9fafb; border-color: #d1d5db; }
.cpb-add-btn svg { color: #6b7280; }
.cpb-ft { padding: 14px 24px; border-top: 1px solid #f3f4f6; display: flex; align-items: center; justify-content: flex-end; gap: 8px; flex-shrink: 0; background: white; }
.cpb-btn { padding: 9px 18px; border-radius: 7px; font-size: 13px; font-weight: 600; cursor: pointer; font-family: inherit; transition: background 0.12s, color 0.12s, border-color 0.12s; }
.cpb-btn.ghost { background: white; border: 1px solid #e5e7eb; color: #374151; }
.cpb-btn.ghost:hover { background: #f9fafb; }
.cpb-btn.primary { background: #2046ff; border: 1px solid #2046ff; color: white; }
.cpb-btn.primary:hover { background: #1a3dd6; }
.cpb-btn.primary:disabled { background: #c7d0e8; border-color: #c7d0e8; cursor: not-allowed; }
.rsn-banner { background: linear-gradient(135deg, #eff6ff, #f5f3ff); border: 1px solid #dbeafe; border-radius: 8px; padding: 11px 12px; margin-bottom: 14px; display: flex; gap: 10px; align-items: flex-start; }
.rsn-banner-ic { width: 26px; height: 26px; border-radius: 7px; background: white; display: flex; align-items: center; justify-content: center; color: #4f6ef7; flex-shrink: 0; box-shadow: 0 1px 2px rgba(0,0,0,0.05); }
.rsn-banner-body { flex: 1; min-width: 0; }
.rsn-banner-title { font-size: 11.5px; font-weight: 600; color: #1e3a8a; line-height: 1.3; }
.rsn-banner-sub { font-size: 11px; color: #4338ca; margin-top: 3px; line-height: 1.4; }
.rsn-section-lbl { font-size: 9.5px; color: #9ca3af; font-weight: 600; text-transform: uppercase; letter-spacing: 0.05em; margin: 14px 0 8px; }
.rsn-section-lbl:first-of-type { margin-top: 4px; }
.rsn-step { display: block; padding: 6px 10px; border-radius: 6px; margin-bottom: 1px; transition: background 0.1s; }
.rsn-step-head { display: flex; align-items: center; gap: 8px; }
.rsn-step.skipped { color: #6b7280; }
.rsn-step.skipped:hover { background: #fafafa; }
.rsn-step.matched { padding: 4px 10px; margin: 2px 0 8px; }
.rsn-step.pending { color: #c4c9d4; padding: 4px 10px; }
.rsn-step-num { font-size: 11px; font-weight: 600; color: #9ca3af; min-width: 16px; font-variant-numeric: tabular-nums; flex-shrink: 0; line-height: 1; align-self: center; }
.rsn-step.matched .rsn-step-num { color: #6b7280; font-size: 12px; }
.rsn-step-ic { width: 18px; height: 18px; flex-shrink: 0; display: inline-flex; align-items: center; justify-content: center; order: 99; }
.rsn-step.skipped .rsn-step-ic { color: #cbd5e1; }
.rsn-step.matched .rsn-step-ic { color: #16a34a; width: 22px; height: 22px; }
.rsn-step.pending .rsn-step-ic { color: #e5e7eb; }
.rsn-step-name { font-size: 12px; font-weight: 500; color: #374151; line-height: 1.3; flex: 1; min-width: 0; padding: 4px 9px; border-radius: 5px; }
.rsn-step.skipped .rsn-step-name { color: #525b6a; background: rgba(107,114,128,0.06); box-shadow: 0 1px 2px rgba(107,114,128,0.10); }
.rsn-step.matched .rsn-step-name { color: #111827; font-weight: 700; font-size: 14px; line-height: 1.3; letter-spacing: -0.1px; background: rgba(22,163,74,0.09); box-shadow: 0 1px 3px rgba(22,163,74,0.20); }
.rsn-step.pending .rsn-step-name { color: #c4c9d4; font-size: 11.5px; font-weight: 400; padding: 0; background: transparent; box-shadow: none; }
.rsn-step-body { padding-left: 0; margin-top: 2px; }
.rsn-step.matched .rsn-step-body { padding-left: 0; padding-top: 4px; }
.rsn-step.pending .rsn-step-body { display: none; }
.rsn-step-why { font-size: 11px; color: #8b8f99; margin-top: 3px; line-height: 1.5; }
.rsn-step.matched .rsn-step-why { color: #4b5563; font-size: 11.5px; margin-top: 6px; line-height: 1.55; }
.rsn-evidence { margin-top: 10px; background: white; border: 1px solid #e5e7eb; border-radius: 6px; padding: 9px 11px; }
.rsn-evidence-lbl { font-size: 9.5px; color: #6b7280; font-weight: 700; text-transform: uppercase; letter-spacing: 0.06em; margin-bottom: 6px; }
.rsn-evidence-row { display: flex; justify-content: space-between; align-items: baseline; padding: 5px 0; font-size: 11.5px; gap: 12px; }
.rsn-evidence-row + .rsn-evidence-row { border-top: 1px dashed #f3f4f6; }
.rsn-evidence-key { color: #6b7280; flex-shrink: 0; }
.rsn-evidence-val { color: #111827; font-weight: 600; font-variant-numeric: tabular-nums; text-align: right; word-break: break-word; }
.tb-add-btn { display: inline-flex; align-items: center; gap: 5px; margin-left: auto; padding: 5px 10px; border: 1px solid #e5e7eb; border-radius: 5px; background: white; color: #374151; font-size: 11px; font-weight: 500; cursor: pointer; transition: background 0.1s; }
.tb-add-btn:hover { background: #f4f6fa; border-color: #d1d5db; }
.tb-add-btn svg { color: #4f6ef7; }
.tb-add-btn.tb-link { background: transparent; border: none; color: #4f6ef7; font-weight: 500; padding: 4px 6px; }
.tb-add-btn.tb-link:hover { background: #eef2ff; border-color: transparent; }
.policy-page { flex: 1; min-height: 0; display: none; flex-direction: column; overflow: hidden; background: #ffffff; position: relative; }
body.is-policy #polCreateTop { display: inline-flex !important; }
body.is-policy-detail #polCreateTop { display: none !important; }
.pol-create-top { padding: 5px 12px 5px 10px; }
.pol-version-btn { display: flex; align-items: center; gap: 6px; padding: 5px 10px; border: 1px solid #e5e7eb; border-radius: 6px; background: white; font-size: 12px; color: #374151; cursor: pointer; transition: background 0.12s; }
.pol-version-btn:hover { background: #f9fafb; }
.pol-create-policy-btn { display: inline-flex; align-items: center; gap: 6px; padding: 5px 12px; border: 1px solid #2046ff; border-radius: 6px; background: #2046ff; font-size: 12px; font-weight: 600; color: white; cursor: pointer; transition: background 0.12s; font-family: inherit; }
.pol-create-policy-btn:hover { background: #1a3dd6; border-color: #1a3dd6; }
.pol-body { flex: 1; display: flex; overflow: hidden; min-height: 0; }
.pol-main { flex: 1; min-height: 0; overflow-y: auto; padding: 0 40px 40px; min-width: 0; transition: max-width 0.3s cubic-bezier(0.32, 0.72, 0, 1); scroll-behavior: smooth; box-shadow: inset -1px 0 0 #e5e7eb; }
.pol-main-inner { max-width: 880px; margin: 0 auto; }
.policy-page.code-open .pol-main { padding: 0 32px 64px; }
.policy-page.code-open .pol-main-inner { max-width: none; }
.pol-sticky-header { position: sticky; top: 0; z-index: 5; background: white; padding-top: 18px; padding-bottom: 4px; }
.pol-hero { margin-bottom: 18px; }
.pol-hero-row { display: flex; align-items: center; gap: 10px; margin-bottom: 14px; }
.pol-hero-title { font-size: 22px; font-weight: 700; color: #111827; letter-spacing: -0.01em; }
.pol-active-pill { display: inline-flex; align-items: center; gap: 5px; padding: 2px 9px; background: #dcfce7; color: #15803d; font-size: 11px; font-weight: 600; border-radius: 999px; }
.pol-active-pill::before { content: ''; width: 5px; height: 5px; background: #16a34a; border-radius: 50%; }
.pol-hero-sub { font-size: 13px; color: #6b7280; line-height: 1.5; }
.pol-sop-row { display: flex; align-items: center; justify-content: space-between; margin-bottom: 0; padding-bottom: 0; }
.pol-sop-name { display: flex; align-items: center; gap: 8px; font-size: 13.5px; font-weight: 600; color: #111827; }
.pol-sop-name svg { color: #9ca3af; }
.pol-code-toggle { display: flex; align-items: center; gap: 8px; cursor: pointer; user-select: none; font-size: 12px; color: #374151; }
.pol-toggle { width: 32px; height: 18px; background: #e5e7eb; border-radius: 999px; position: relative; transition: background 0.18s; flex-shrink: 0; }
.pol-toggle::after { content: ''; position: absolute; top: 2px; left: 2px; width: 14px; height: 14px; background: white; border-radius: 50%; box-shadow: 0 1px 2px rgba(0,0,0,0.2); transition: left 0.18s cubic-bezier(0.32, 0.72, 0, 1); }
.policy-page.code-open .pol-toggle { background: #4f6ef7; }
.policy-page.code-open .pol-toggle::after { left: 16px; }
.pol-rules { display: flex; flex-direction: column; gap: 0; }
.pol-rule { border: 1px solid #e5e7eb; border-radius: 8px; background: white; transition: border-color 0.15s, box-shadow 0.15s; cursor: pointer; }
.pol-insert-slot { height: 10px; flex-shrink: 0; position: relative; cursor: pointer; display: flex; align-items: center; justify-content: center; transition: height 0.16s cubic-bezier(0.32,0.72,0,1); }
.pol-insert-slot:hover { height: 46px; }
.pol-insert-bar { width: 100%; height: 38px; border: 1.5px dashed #c7d2fe; border-radius: 8px; background: #f5f7ff; display: flex; align-items: center; justify-content: center; gap: 6px; font-size: 12px; font-weight: 600; color: #4f6ef7; opacity: 0; transform: translateY(-4px) scaleY(0.7); transition: opacity 0.14s ease, transform 0.16s cubic-bezier(0.32,0.72,0,1); box-shadow: 0 1px 4px rgba(79,110,247,0.12); pointer-events: none; }
.pol-insert-slot:hover .pol-insert-bar { opacity: 1; transform: translateY(0) scaleY(1); }
.pol-insert-bar svg { flex-shrink: 0; }
.pol-insert-slot::before { content: ''; position: absolute; left: 0; right: 0; height: 2px; border-radius: 2px; background: transparent; transition: background 0.14s ease; }
.pol-insert-slot:hover::before { background: transparent; }
.pol-insert-bar.pol-insert-dual { gap: 8px; background: #f5f7ff; pointer-events: none; }
.pol-insert-slot:hover .pol-insert-bar.pol-insert-dual { pointer-events: auto; }
.pol-insert-act { display: inline-flex; align-items: center; gap: 5px; padding: 5px 12px; border-radius: 6px; font-size: 12px; font-weight: 600; font-family: inherit; cursor: pointer; border: 1px solid transparent; transition: background 0.12s, border-color 0.12s; white-space: nowrap; }
.pol-insert-act svg { flex-shrink: 0; }
.pol-insert-act.create { background: white; color: #4f6ef7; border-color: #c7d2fe; }
.pol-insert-act.create:hover { background: #eef2ff; border-color: #a5b4fc; }
.pol-insert-act.paste { background: #4f6ef7; color: white; border-color: #4f6ef7; max-width: 360px; overflow: hidden; }
.pol-insert-act.paste:hover { background: #3d5be3; }
.pol-insert-act .pol-paste-label { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.pol-insert-slot.has-clip { height: 14px; }
.pol-insert-slot.has-clip:hover { height: 48px; }
.pol-clip-banner { display: flex; align-items: center; gap: 9px; padding: 8px 12px; margin-bottom: 12px; background: #eef2ff; border: 1px solid #c7d2fe; border-radius: 8px; font-size: 12px; color: #3730a3; }
.pol-clip-banner svg { flex-shrink: 0; color: #4f6ef7; }
.pol-clip-banner strong { color: #1e1b4b; font-weight: 700; }
.pol-clip-banner .pol-clip-src { color: #6366f1; }
.pol-clip-spacer { flex: 1; }
.pol-clip-clear { background: white; border: 1px solid #c7d2fe; color: #4f6ef7; font-size: 11px; font-weight: 600; padding: 3px 10px; border-radius: 5px; cursor: pointer; font-family: inherit; }
.pol-clip-clear:hover { background: #f9fafb; border-color: #a5b4fc; }
.pol-rule:hover { border-color: #d1d5db; }
.pol-rule.selected { border-color: #4f6ef7; box-shadow: 0 0 0 3px rgba(79, 110, 247, 0.12); }
.pol-rule-head { display: flex; align-items: center; padding: 12px 14px; gap: 10px; }
.pol-rule-num { font-size: 13px; font-weight: 600; color: #4f6ef7; min-width: 22px; font-variant-numeric: tabular-nums; position: relative; display: inline-flex; align-items: center; justify-content: center; height: 18px; }
.pol-rule-num .pol-num-text { transition: opacity 0.12s; }
.pol-rule-num .pol-num-handle { position: absolute; inset: 0; display: none; align-items: center; justify-content: center; color: #6b7280; pointer-events: none; }
.pol-rule-title { flex: 1; font-size: 13px; font-weight: 600; color: #111827; }
.pol-rule-actions { display: flex; align-items: center; gap: 4px; color: #9ca3af; }
.pol-rule-actions svg { cursor: pointer; padding: 4px; border-radius: 4px; transition: background 0.12s, color 0.12s; box-sizing: content-box; }
.pol-rule-actions svg:hover { background: #f3f4f6; color: #374151; }
.pol-rule-chev { transition: transform 0.18s cubic-bezier(0.32, 0.72, 0, 1); }
.pol-rule.expanded .pol-rule-chev { transform: rotate(180deg); }
.pol-rule-body { padding: 0 14px 12px 14px; display: flex; flex-wrap: wrap; align-items: center; gap: 6px; font-size: 12px; line-height: 1.7; }
.pol-tk-kw { color: #6b7280; }
.pol-tk-val { font-weight: 600; color: #111827; }
.pol-tk-arg { display: inline-flex; align-items: center; padding: 1px 8px; background: #f3f4f6; border: 1px solid #e5e7eb; border-radius: 5px; color: #374151; font-weight: 500; }
.pol-rule[data-status="in_review"] { box-shadow: inset 3px 0 0 #d97706; }
.pol-rule[data-status="approved"] { box-shadow: inset 3px 0 0 #16a34a; }
.pol-rule[data-status="rejected"] { box-shadow: inset 3px 0 0 #dc2626; background: #fffbfb; }
.pol-rule[data-status="draft"] { box-shadow: inset 3px 0 0 #9ca3af; }
.pol-rule[data-status="live"] { box-shadow: inset 3px 0 0 #c7d2fe; }
.pol-rule.selected[data-status="in_review"] { box-shadow: inset 3px 0 0 #d97706, 0 0 0 3px rgba(217, 119, 6, 0.18); border-color: #d97706; }
.pol-rule.selected[data-status="approved"] { box-shadow: inset 3px 0 0 #16a34a, 0 0 0 3px rgba(22, 163, 74, 0.18); border-color: #16a34a; }
.pol-rule.selected[data-status="rejected"] { box-shadow: inset 3px 0 0 #dc2626, 0 0 0 3px rgba(220, 38, 38, 0.18); border-color: #dc2626; }
.pol-rule.selected[data-status="draft"] { box-shadow: inset 3px 0 0 #6b7280, 0 0 0 3px rgba(107, 114, 128, 0.18); border-color: #6b7280; }
.pol-rule.selected[data-status="live"] { box-shadow: inset 3px 0 0 #4f6ef7, 0 0 0 3px rgba(79, 110, 247, 0.18); border-color: #4f6ef7; }
.pol-rule-meta { display: inline-flex; align-items: center; gap: 6px; font-size: 11px; color: #9ca3af; margin-left: 8px; flex-shrink: 0; }
.pol-rule-meta .rm-avatar { width: 18px; height: 18px; border-radius: 50%; background: #6b7280; color: white; font-size: 9px; font-weight: 600; display: inline-flex; align-items: center; justify-content: center; flex-shrink: 0; }
.pol-rule-meta .rm-name { color: #374151; font-weight: 500; }
.pol-rule-note { margin: 0 14px 12px 14px; padding: 9px 11px; border-radius: 6px; font-size: 11.5px; line-height: 1.5; color: #374151; }
.pol-rule-note.note-rejected { background: #fef2f2; border: 1px solid #fecaca; color: #7f1d1d; }
.pol-rule-note.note-rejected .pol-note-author { color: #b91c1c; font-weight: 600; }
.pol-rule-note.note-review { background: #fffbeb; border: 1px solid #fde68a; color: #78350f; }
.pol-rule-note.note-review   .pol-note-author { color: #92400e; font-weight: 600; }
.pol-rule-note.note-approved { background: #f0fdf4; border: 1px solid #bbf7d0; color: #166534; }
.pol-note-author { display: inline-flex; align-items: center; gap: 5px; font-weight: 600; margin-right: 6px; }
.pol-note-author .rm-avatar { width: 16px; height: 16px; font-size: 8px; }
.pol-act-wrap { position: relative; display: inline-flex; }
.pol-act-btn { width: 22px; height: 22px; border-radius: 5px; display: inline-flex; align-items: center; justify-content: center; color: #9ca3af; cursor: pointer; background: transparent; border: none; padding: 0; }
.pol-act-btn:hover { background: #f3f4f6; color: #374151; }
.pol-act-btn.on { background: #eff6ff; color: #4f6ef7; }
.pol-act-menu { position: absolute; top: calc(100% + 4px); right: 0; min-width: 184px; background: white; border: 1px solid #e5e7eb; border-radius: 8px; box-shadow: 0 8px 28px rgba(15, 23, 42, 0.12), 0 1px 2px rgba(15, 23, 42, 0.06); padding: 4px; z-index: 50; display: none; }
.pol-act-menu.on { display: block; }
.pol-act-item { display: flex; align-items: center; gap: 8px; padding: 7px 10px; border-radius: 5px; font-size: 12px; color: #374151; cursor: pointer; user-select: none; }
.pol-act-item:hover { background: #f3f4f6; }
.pol-act-item svg { color: #6b7280; flex-shrink: 0; }
.pol-act-item.danger { color: #dc2626; }
.pol-act-item.danger svg { color: #dc2626; }
.pol-act-item.danger:hover { background: #fef2f2; }
.pol-act-sep { height: 1px; background: #f3f4f6; margin: 4px 2px; }
.pol-status-tabs { display: flex; align-items: center; gap: 2px; padding: 4px; background: #f3f4f6; border-radius: 8px; width: max-content; margin: 0 0 14px 0; }
.pol-status-tab { padding: 5px 12px; border-radius: 6px; font-size: 12px; font-weight: 500; color: #6b7280; cursor: pointer; background: transparent; border: none; display: inline-flex; align-items: center; gap: 6px; font-family: inherit; transition: background 0.12s, color 0.12s; }
.pol-status-tab:hover { color: #111827; }
.pol-status-tab.on { background: white; color: #111827; box-shadow: 0 1px 2px rgba(0,0,0,0.06); }
.pol-status-tab .pst-count { display: inline-flex; align-items: center; padding: 0 6px; min-width: 18px; height: 16px; background: #e5e7eb; color: #4b5563; border-radius: 999px; font-size: 10px; font-weight: 600; line-height: 1; justify-content: center; }
.pol-status-tab.on .pst-count { background: #eff6ff; color: #4f6ef7; }
.pol-rule-extra { padding: 0 14px 14px 14px; border-top: 1px solid #f3f4f6; margin-top: 4px; padding-top: 14px; }
.pol-rule-desc { font-size: 12px; color: #6b7280; line-height: 1.55; margin-bottom: 12px; }
.pol-field-label { font-size: 11.5px; font-weight: 600; color: #374151; margin-bottom: 6px; }
.pol-field-input-wrap { display: flex; align-items: center; gap: 8px; max-width: 320px; padding: 8px 12px; border: 1px solid #e5e7eb; border-radius: 6px; background: #fafafa; transition: border-color 0.12s, background 0.12s; }
.pol-field-input-wrap:focus-within { border-color: #4f6ef7; background: white; box-shadow: 0 0 0 3px rgba(79, 110, 247, 0.1); }
.pol-field-input { flex: 1; border: none; background: transparent; outline: none; font-size: 13px; font-variant-numeric: tabular-nums; color: #111827; font-family: inherit; }
.pol-field-edit-ico { color: #9ca3af; }
.pol-code-panel { width: 0; flex-shrink: 0; background: #f8fafc; border-left: 1px solid #e5e7eb; overflow: hidden; transition: width 0.3s cubic-bezier(0.32, 0.72, 0, 1); }
.policy-page.code-open .pol-code-panel { width: 50%; }
.pol-diff-panel { width: 0; flex-shrink: 0; background: #fafafa; border-left: 1px solid #e5e7eb; overflow: hidden; transition: width 0.3s cubic-bezier(0.32, 0.72, 0, 1); display: flex; flex-direction: column; }
.policy-page.diff-open .pol-diff-panel { width: 60%; }
.pdp-head { padding: 16px 20px 12px; border-bottom: 1px solid #e5e7eb; background: white; flex-shrink: 0; }
.pdp-head-row { display: flex; align-items: center; gap: 10px; }
.pdp-title { font-size: 14px; font-weight: 700; color: #111827; letter-spacing: -0.01em; }
.pdp-pill { display: inline-flex; align-items: center; gap: 5px; padding: 1px 8px; background: #fffbeb; color: #92400e; border: 1px solid #fde68a; border-radius: 999px; font-size: 10.5px; font-weight: 600; }
.pdp-pill .pdp-pill-dot { width: 5px; height: 5px; border-radius: 50%; background: #d97706; flex-shrink: 0; }
.pdp-sub { font-size: 11.5px; color: #6b7280; margin-top: 5px; line-height: 1.45; }
.pdp-summary { display: flex; align-items: center; gap: 10px; margin-top: 10px; font-size: 11px; color: #4b5563; flex-wrap: wrap; }
.pdp-summary .pdp-stat { display: inline-flex; align-items: center; gap: 4px; }
.pdp-summary .pdp-stat strong { color: #111827; font-weight: 700; font-size: 12px; }
.pdp-summary .pdp-stat.pos strong { color: #15803d; }
.pdp-summary .pdp-stat.neg strong { color: #b91c1c; }
.pdp-summary .pdp-sep { color: #d1d5db; }
.pdp-actions { display: flex; align-items: center; gap: 8px; margin-top: 12px; }
.pdp-actions .pdp-btn { display: inline-flex; align-items: center; gap: 5px; padding: 5px 12px; border-radius: 5px; border: 1px solid #e5e7eb; background: white; font-size: 11.5px; font-weight: 600; color: #374151; cursor: pointer; font-family: inherit; transition: background 0.12s, border-color 0.12s; }
.pdp-actions .pdp-btn:hover { background: #f9fafb; border-color: #d1d5db; }
.pdp-actions .pdp-btn.primary { background: #4f6ef7; color: white; border-color: #4f6ef7; }
.pdp-actions .pdp-btn.primary:hover { background: #3d5be3; }
.pdp-actions .pdp-btn.primary:disabled { background: #c7d2fe; cursor: not-allowed; }
.pdp-actions .pdp-btn.danger { color: #b91c1c; border-color: transparent; }
.pdp-actions .pdp-btn.danger:hover { background: #fef2f2; border-color: #fca5a5; }
.pdp-scroll { flex: 1; min-height: 0; overflow: hidden; padding: 12px 16px 16px; display: flex; flex-direction: column; }
.pdp-empty { padding: 32px 18px; text-align: center; color: #6b7280; font-size: 12.5px; line-height: 1.5; }
.pdp-empty .pdp-empty-ico { font-size: 22px; opacity: 0.5; margin-bottom: 6px; }
.pdp-group-label { font-size: 10.5px; font-weight: 700; color: #6b7280; letter-spacing: 0.06em; text-transform: uppercase; margin: 18px 0 8px 2px; display: flex; align-items: center; gap: 8px; }
.pdp-group-label:first-child { margin-top: 4px; }
.pdp-group-count { display: inline-flex; align-items: center; padding: 1px 6px; background: #e5e7eb; color: #4b5563; border-radius: 999px; font-size: 10px; font-weight: 700; }
.pdp-card { background: white; border: 1px solid #e5e7eb; border-radius: 8px; margin-bottom: 10px; overflow: hidden; transition: border-color 0.12s, box-shadow 0.12s; }
.pdp-card:hover { border-color: #c7d2fe; box-shadow: 0 1px 4px rgba(15, 23, 42, 0.04); }
.pdp-card-head { display: flex; align-items: center; gap: 8px; padding: 9px 12px; background: #fafafa; border-bottom: 1px solid #e5e7eb; font-size: 12px; }
.pdp-po { font-weight: 700; color: #111827; font-variant-numeric: tabular-nums; }
.pdp-vendor { color: #6b7280; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.pdp-rule-chip { display: inline-flex; align-items: center; gap: 4px; padding: 1px 7px; background: #eff6ff; color: #1e40af; font-size: 10px; font-weight: 700; border-radius: 4px; flex-shrink: 0; }
.pdp-spacer { flex: 1; }
.pdp-delta { font-size: 11px; font-weight: 700; padding: 1px 7px; border-radius: 4px; }
.pdp-delta.down { color: #b91c1c; background: #fef2f2; }
.pdp-delta.up { color: #15803d; background: #f0fdf4; }
.pdp-half { padding: 10px 14px; display: grid; grid-template-columns: 38px 1fr; gap: 8px 12px; align-items: baseline; font-size: 12px; }
.pdp-half.live { background: #fef2f2; }
.pdp-half.test { background: #f0fdf4; border-top: 1px solid #d1d5db; }
.pdp-half-tag { font-size: 9.5px; font-weight: 800; letter-spacing: 0.08em; padding: 1px 6px; border-radius: 3px; align-self: start; justify-self: start; line-height: 1.5; }
.pdp-half.live .pdp-half-tag { background: #fecaca; color: #991b1b; }
.pdp-half.test .pdp-half-tag { background: #bbf7d0; color: #166534; }
.pdp-half-marker { width: 14px; flex-shrink: 0; font-family: 'SF Mono','Menlo','Consolas',monospace; font-size: 12px; line-height: 1.5; text-align: center; }
.pdp-half.live .pdp-half-marker { color: #b91c1c; }
.pdp-half.test .pdp-half-marker { color: #15803d; }
.pdp-field-label { color: #6b7280; font-size: 11px; line-height: 1.4; }
.pdp-field-value { color: #111827; font-weight: 500; line-height: 1.4; word-break: break-word; }
.pdp-field-value.amt { font-variant-numeric: tabular-nums; font-weight: 600; }
.pdp-field-value.rule { font-size: 11.5px; color: #4b5563; }
.pdp-viewtoggle { display: inline-flex; background: #f1f5f9; border-radius: 7px; padding: 2px; margin-left: auto; flex-shrink: 0; }
.pdp-viewtoggle button { padding: 3px 11px; border: none; background: none; font-size: 11px; font-weight: 600; color: #6b7280; border-radius: 5px; cursor: pointer; font-family: inherit; transition: background 0.12s, color 0.12s; }
.pdp-viewtoggle button.on { background: white; color: #111827; box-shadow: 0 1px 2px rgba(0,0,0,0.08); }
.pdp-sheet-wrap { flex: 1; min-height: 0; width: 100%; overflow: auto; border: 1px solid #e5e7eb; border-radius: 8px; }
.pdp-sheet { width: 100%; border-collapse: collapse; font-size: 11.5px; }
.pdp-sheet thead th { position: sticky; top: 0; z-index: 2; background: #fafafa; text-align: left; font-size: 10px; font-weight: 700; color: #6b7280; text-transform: uppercase; letter-spacing: 0.04em; padding: 8px 10px; border-bottom: 1px solid #e5e7eb; white-space: nowrap; }
.pdp-sheet th.num, .pdp-sheet td.num { text-align: right; font-variant-numeric: tabular-nums; }
.pdp-sheet td { padding: 7px 10px; border-bottom: 1px solid #f1f2f4; color: #374151; white-space: nowrap; }
.pdp-sheet tbody tr:last-child td { border-bottom: none; }
.pdp-sheet-po { font-weight: 700; color: #111827; font-variant-numeric: tabular-nums; }
.pdp-sheet-vendor { color: #4b5563; max-width: 150px; overflow: hidden; text-overflow: ellipsis; }
.pdp-sheet-row.changed { background: #fffdf5; }
.pdp-sheet-row.changed:hover { background: #fff8e6; }
.pdp-sheet-row:hover { background: #fafbfd; }
.pdp-cell-live { text-align: right; font-variant-numeric: tabular-nums; color: #b91c1c; background: #fef2f2; }
.pdp-cell-test { text-align: right; font-variant-numeric: tabular-nums; color: #15803d; background: #f0fdf4; font-weight: 600; }
.pdp-cell-delta { text-align: right; font-variant-numeric: tabular-nums; font-weight: 600; }
.pdp-cell-delta.up { color: #15803d; }
.pdp-cell-delta.down { color: #b91c1c; }
.pdp-cell-muted { text-align: right; color: #c4c9d4; font-variant-numeric: tabular-nums; }
.pdp-cell-hbase { text-align: right; color: #6b7280; font-variant-numeric: tabular-nums; }
.pdp-cell-hflag { text-align: right; color: #b45309; font-variant-numeric: tabular-nums; font-weight: 600; }
.pdp-sheet td.pdp-col-test.pdp-cell-hflag { background: #fffbeb; }
.pdp-sheet td.pdp-col-live.pdp-cell-hbase { background: #fff; }
.pdp-sheet-rule { font-size: 10.5px; color: #6b7280; font-variant-numeric: tabular-nums; }
.pdp-sheet-rule strong { color: #1e40af; font-weight: 700; }
.pdp-sheet .pdp-sticky { position: sticky; z-index: 1; }
.pdp-sheet thead th.pdp-sticky { z-index: 4; }
.pdp-col-po { left: 0; }
.pdp-col-live { left: var(--pdp-w1, 80px); }
.pdp-col-test { left: calc(var(--pdp-w1, 80px) + var(--pdp-w2, 104px)); }
.pdp-sheet td.pdp-col-po, .pdp-sheet td.pdp-col-live, .pdp-sheet td.pdp-col-test { background: #fff; }
.pdp-sheet-row.changed td.pdp-col-po { background: #fffdf5; }
.pdp-sheet td.pdp-col-live.pdp-cell-live { background: #fef2f2; }
.pdp-sheet td.pdp-col-test.pdp-cell-test { background: #f0fdf4; }
.pdp-sheet thead th.pdp-col-po, .pdp-sheet thead th.pdp-col-live, .pdp-sheet thead th.pdp-col-test { background: #fafafa; }
.pdp-col-test::after { content: ''; position: absolute; top: 0; right: 0; bottom: 0; width: 6px; transform: translateX(100%); background: linear-gradient(to right, rgba(15,23,42,0.07), transparent); pointer-events: none; }
.pdp-sheet-group td { background: #f3f4f6; padding: 8px 10px; border-bottom: 1px solid #e5e7eb; border-top: 1px solid #e5e7eb; font-size: 11px; color: #374151; }
.pdp-group-inner { position: sticky; left: 10px; z-index: 1; display: inline-flex; align-items: center; }
.pdp-sheet-group:first-child td { border-top: none; }
.pdp-sheet-gicon { display: inline-flex; align-items: center; padding: 1px 7px; background: #eff6ff; color: #1e40af; font-size: 10px; font-weight: 700; border-radius: 4px; margin-right: 7px; }
.pdp-sheet-gcount { display: inline-flex; align-items: center; padding: 1px 6px; background: #e5e7eb; color: #4b5563; border-radius: 999px; font-size: 10px; font-weight: 700; margin-left: 7px; }
.pdp-sheet-gstatus { color: #9ca3af; font-weight: 500; margin-left: 7px; font-size: 10.5px; }
.pdp-sheet tfoot td { position: sticky; bottom: 0; z-index: 2; background: #f9fafb; border-top: 2px solid #d1d5db; border-bottom: none; padding: 9px 10px; font-size: 11.5px; font-weight: 700; color: #111827; white-space: nowrap; }
.pdp-sheet tfoot td.pdp-sticky { z-index: 3; }
.pdp-sheet tfoot td.num { text-align: right; font-variant-numeric: tabular-nums; }
.pdp-sheet tfoot td.pdp-col-po { background: #f3f4f6; }
.pdp-sheet tfoot td.pdp-col-live, .pdp-sheet tfoot td.pdp-col-test { background: #f9fafb; }
.pdp-foot-label { display: inline-flex; align-items: baseline; gap: 7px; }
.pdp-foot-label strong { font-size: 10.5px; font-weight: 800; letter-spacing: 0.06em; text-transform: uppercase; color: #4b5563; }
.pdp-foot-count { font-size: 10.5px; font-weight: 500; color: #6b7280; }
.pdp-foot-na { color: #c4c9d4; font-weight: 500; text-align: center; }
.pdp-foot-delta.up { color: #15803d; }
.pdp-foot-delta.down { color: #b91c1c; }
.pdp-foot-test-up { color: #b91c1c; }
.pdp-foot-test-down { color: #15803d; }
.policy-page.diff-open .pol-main { padding: 0 24px 64px; }
.policy-page.diff-open .pol-main-inner { max-width: none; }
.pol-picker-wrap { position: relative; display: inline-flex; align-items: center; }
.pol-picker { display: inline-flex; align-items: center; gap: 9px; padding: 4px 9px 4px 11px; border: 1px solid transparent; border-radius: 7px; background: transparent; cursor: pointer; font-family: inherit; transition: background 0.12s, border-color 0.12s; }
.pol-picker:hover { background: #f9fafb; border-color: #e5e7eb; }
.pol-picker.on { background: #f3f4f6; border-color: #e5e7eb; }
.pol-picker-name { font-size: 22px; font-weight: 700; color: #111827; letter-spacing: -0.01em; line-height: 1.2; }
.pol-picker-ver { font-size: 11px; font-weight: 600; color: #4f6ef7; background: #eef2ff; padding: 2px 7px; border-radius: 999px; line-height: 1.2; align-self: center; }
.pol-picker-chev { color: #9ca3af; transition: transform 0.18s, color 0.12s; align-self: center; }
.pol-picker.on .pol-picker-chev { transform: rotate(180deg); color: #4f6ef7; }
.pol-picker-menu { position: absolute; top: calc(100% + 6px); left: 0; min-width: 540px; background: white; border: 1px solid #e5e7eb; border-radius: 10px; box-shadow: 0 12px 32px rgba(17,24,39,0.10), 0 2px 6px rgba(17,24,39,0.04); z-index: 80; padding: 6px; opacity: 0; pointer-events: none; transform: translateY(-4px); transition: opacity 0.16s ease, transform 0.16s ease; }
.pol-picker-menu.on { opacity: 1; pointer-events: auto; transform: translateY(0); }
.pol-picker-item { display: flex; align-items: flex-start; gap: 12px; padding: 10px 12px; border-radius: 6px; cursor: pointer; transition: background 0.1s; }
.pol-picker-item:hover { background: #f9fafb; }
.pol-picker-item.active { background: #eef2ff; }
.pol-picker-item.active .ppi-check { opacity: 1; }
.pol-picker-item.active .ppi-name { color: #4f6ef7; }
.pol-picker-foot { border-top: 1px solid #f3f4f6; margin-top: 4px; padding: 9px 12px; display: flex; align-items: center; gap: 6px; cursor: pointer; font-size: 12.5px; color: #4f6ef7; font-weight: 600; border-radius: 6px; }
.pol-picker-foot:hover { background: #eef2ff; }
.policy-page.list-mode .pol-body { display: none; }
.policy-page.list-mode .pol-list-view { display: block; }
.policy-page:not(.list-mode) .pol-list-view { display: none; }
.pol-list-view { flex: 1; overflow-y: auto; background: white; }
.pol-list-inner { max-width: 1280px; margin: 0 auto; padding: 32px 40px 64px; }
.pol-list-header { display: flex; align-items: center; margin-bottom: 18px; }
.pol-list-title { font-size: 22px; font-weight: 700; color: #111827; letter-spacing: -0.01em; }
.pol-list-create { margin-left: auto; display: inline-flex; align-items: center; gap: 5px; padding: 6px 14px 6px 11px; border: 1px solid #c7d2fe; background: #eef2ff; color: #4f6ef7; border-radius: 7px; font-family: inherit; font-size: 12.5px; font-weight: 600; cursor: pointer; transition: background 0.12s; }
.pol-list-create:hover { background: #dde4ff; }
.pol-list-view { flex: 1; display: flex; flex-direction: column; overflow: hidden; background: white; }
.pol-set-topbar { height: 50px; border-bottom: 1px solid #e5e7eb; display: flex; align-items: center; padding: 0 18px; flex-shrink: 0; gap: 12px; }
.pol-set-titles { display: flex; align-items: baseline; gap: 10px; min-width: 0; }
.pol-set-title { font-size: 14px; font-weight: 700; color: #111827; letter-spacing: -0.005em; flex-shrink: 0; }
.pol-set-sub { font-size: 11.5px; color: #9ca3af; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.pol-set-toolbar { height: 40px; border-bottom: 1px solid #e5e7eb; display: flex; align-items: center; padding: 0 18px; gap: 14px; flex-shrink: 0; background: #fafafa; }
.pol-set-tabs { display: flex; gap: 2px; }
.pol-set-tab { padding: 4px 10px; border-radius: 5px; font-size: 11.5px; color: #6b7280; cursor: pointer; font-weight: 500; transition: background 0.12s, color 0.12s; }
.pol-set-tab:hover { background: #f3f4f6; color: #374151; }
.pol-set-tab.on { background: #eef2ff; color: #4f6ef7; }
.pol-set-fc { font-weight: 400; color: #9ca3af; margin-left: 5px; font-size: 10.5px; }
.pol-set-tab.on .pol-set-fc { color: #93a3f8; }
.pol-set-count { font-size: 11px; color: #9ca3af; margin-left: auto; flex-shrink: 0; }
.pol-set-create-btn { display: inline-flex; align-items: center; gap: 6px; padding: 6px 13px; border: 1px solid #2046ff; border-radius: 7px; background: #2046ff; font-size: 12.5px; font-weight: 600; color: white; cursor: pointer; font-family: inherit; flex-shrink: 0; transition: background 0.12s, border-color 0.12s; }
.pol-set-create-btn:hover { background: #1a3dd6; border-color: #1a3dd6; }
.pol-list-tabs { display: flex; gap: 0; padding: 0 24px; border-bottom: 1px solid #e5e7eb; background: white; flex-shrink: 0; }
.pol-list-tab { padding: 12px 14px 11px; border: none; background: transparent; font-family: inherit; font-size: 13px; font-weight: 600; color: #6b7280; cursor: pointer; border-bottom: 2px solid transparent; margin-bottom: -1px; transition: color 0.12s, border-color 0.12s; }
.pol-list-tab:hover { color: #374151; }
.pol-list-tab.on { color: #4f6ef7; border-bottom-color: #4f6ef7; }
.pol-list-pane { display: none; flex: 1; flex-direction: column; min-height: 0; overflow: hidden; }
.pol-list-pane.on { display: flex; }
.pol-list-headbar { display: flex; align-items: center; gap: 10px; padding: 16px 24px; flex-shrink: 0; }
.pol-info-banner { flex: 1; display: flex; align-items: center; gap: 10px; padding: 10px 14px; background: #f5f8ff; border: 1px solid #e0e7ff; border-radius: 9px; font-size: 12.5px; color: #4f6ef7; line-height: 1.45; }
.pol-info-ico { color: #4f6ef7; flex-shrink: 0; }
.pol-page-create { display: inline-flex; align-items: center; gap: 6px; padding: 8px 14px; border: 1px solid #c7d2fe; background: #eef2ff; color: #4f6ef7; border-radius: 8px; font-family: inherit; font-size: 12.5px; font-weight: 600; cursor: pointer; transition: background 0.12s, border-color 0.12s; flex-shrink: 0; white-space: nowrap; }
.pol-page-create:hover { background: #e0e7ff; border-color: #a5b4fc; }
.pol-page-create svg { color: currentColor; }
.pol-list-headbar-hc .pol-hc-search-wrap { position: relative; width: 280px; }
.pol-hc-search-ico { position: absolute; left: 12px; top: 50%; transform: translateY(-50%); color: #9ca3af; pointer-events: none; }
.pol-hc-search { width: 100%; padding: 9px 12px 9px 34px; border: 1px solid #e5e7eb; border-radius: 9px; font-family: inherit; font-size: 12.5px; color: #111827; background: white; outline: none; transition: border-color 0.15s, box-shadow 0.15s; box-sizing: border-box; }
.pol-hc-search:focus { border-color: #4f6ef7; box-shadow: 0 0 0 3px rgba(79,110,247,0.12); }
.pol-hc-search::placeholder { color: #9ca3af; }
.pol-hc-filter-wrap { position: relative; }
.pol-hc-filter { appearance: none; padding: 9px 30px 9px 14px; border: 1px solid #e5e7eb; border-radius: 9px; font-family: inherit; font-size: 12.5px; color: #374151; background: white; cursor: pointer; outline: none; background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='10' viewBox='0 0 24 24' fill='none' stroke='%236b7280' stroke-width='2.5'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E"); background-repeat: no-repeat; background-position: right 10px center; min-width: 160px; transition: border-color 0.15s, box-shadow 0.15s; }
.pol-hc-filter:focus { border-color: #4f6ef7; box-shadow: 0 0 0 3px rgba(79,110,247,0.12); }
.pol-list-headbar-hc { gap: 10px; }
.pol-list-headbar-hc .pol-page-create { margin-left: auto; }
.pol-hc-list-table tbody td { padding: 16px 18px; vertical-align: top; }
.pol-hc-list-table .pln-hc-name-cell { max-width: 480px; }
.pol-hc-name-title { font-weight: 700; color: #111827; font-size: 13.5px; line-height: 1.35; }
.pol-hc-name-desc { font-size: 12px; color: #6b7280; margin-top: 4px; line-height: 1.45; }
.pol-hc-pol-chips { display: flex; flex-wrap: wrap; gap: 5px; }
.pol-hc-pol-chip { display: inline-flex; align-items: center; padding: 3px 9px; background: #eef2ff; color: #4f6ef7; border-radius: 14px; font-size: 11.5px; font-weight: 500; line-height: 1.4; cursor: pointer; transition: background 0.12s; }
.pol-hc-pol-chip:hover { background: #e0e7ff; }
.pol-hc-scope { font-size: 12.5px; color: #374151; }
.pol-hc-scope-muted { color: #6b7280; }
.pol-hc-del-btn { display: inline-flex; align-items: center; justify-content: center; width: 28px; height: 28px; border-radius: 6px; border: 1px solid transparent; background: transparent; color: #dc2626; cursor: pointer; opacity: 0; transition: opacity 0.12s, background 0.12s, border-color 0.12s; }
.pol-hc-list-table tbody tr:hover .pol-hc-del-btn { opacity: 1; }
.pol-hc-del-btn:hover { background: #fef2f2; border-color: #fecaca; }
.pol-hc-empty { padding: 40px 18px; text-align: center; color: #9ca3af; font-size: 12.5px; }
.cps-modal { width: 480px; max-width: calc(100vw - 32px); display: flex; flex-direction: column; max-height: 88vh; }
.cps-hd { display: flex; align-items: flex-start; gap: 12px; padding: 18px 20px 14px; border-bottom: 1px solid #f3f4f6; }
.cps-hd-text { flex: 1; min-width: 0; }
.cps-title { font-size: 16px; font-weight: 700; color: #111827; letter-spacing: -0.01em; }
.cps-sub { font-size: 12px; color: #6b7280; margin-top: 3px; line-height: 1.45; }
.cps-body { padding: 16px 20px 8px; overflow-y: auto; display: flex; flex-direction: column; gap: 16px; }
.cps-field { display: flex; flex-direction: column; gap: 7px; }
.cps-label { font-size: 12px; font-weight: 600; color: #374151; }
.cps-hint { font-size: 11px; color: #9ca3af; line-height: 1.4; }
.cps-input, .cps-textarea, .cps-select { width: 100%; padding: 9px 12px; border: 1px solid #d1d5db; border-radius: 7px; font-size: 13.5px; font-family: inherit; color: #0a0a0a; outline: none; transition: border-color 0.15s, box-shadow 0.15s; background: white; box-sizing: border-box; }
.cps-input:focus, .cps-textarea:focus, .cps-select:focus { border-color: #4f6ef7; box-shadow: 0 0 0 3px rgba(79,110,247,0.12); }
.cps-input::placeholder, .cps-textarea::placeholder { color: #9ca3af; }
.cps-textarea { resize: vertical; min-height: 72px; line-height: 1.5; }
.cps-select { appearance: none; padding-right: 32px; background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='10' viewBox='0 0 24 24' fill='none' stroke='%239ca3af' stroke-width='2.5'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E"); background-repeat: no-repeat; background-position: right 10px center; cursor: pointer; }
.cps-kind { display: flex; gap: 10px; }
.cps-kind-opt { flex: 1; display: flex; align-items: flex-start; gap: 9px; padding: 11px 12px; border: 1.5px solid #e5e7eb; border-radius: 9px; background: white; cursor: pointer; font-family: inherit; text-align: left; transition: border-color 0.12s, background 0.12s, box-shadow 0.12s; }
.cps-kind-opt svg { color: #9ca3af; flex-shrink: 0; margin-top: 1px; transition: color 0.12s; }
.cps-kind-opt:hover { border-color: #c7d2fe; }
.cps-kind-opt.on { border-color: #4f6ef7; background: #f7f9ff; box-shadow: 0 0 0 3px rgba(79,110,247,0.10); }
.cps-kind-opt.on svg { color: #4f6ef7; }
.cps-kind-txt { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.cps-kind-name { font-size: 12.5px; font-weight: 600; color: #111827; }
.cps-kind-desc { font-size: 10.5px; color: #6b7280; line-height: 1.35; }
.cps-filters-hd { display: flex; align-items: center; justify-content: space-between; }
.cps-add-filter { display: inline-flex; align-items: center; gap: 5px; padding: 5px 11px; border: 1px solid #c7d2fe; border-radius: 6px; background: white; font-size: 11.5px; font-weight: 600; color: #4f6ef7; cursor: pointer; font-family: inherit; transition: background 0.12s, border-color 0.12s; }
.cps-add-filter:hover { background: #eef2ff; border-color: #818cf8; }
.cps-filters { display: flex; flex-direction: column; gap: 10px; }
.cps-filter-row { display: grid; grid-template-columns: 1fr 1fr auto; gap: 8px; align-items: end; }
.cps-filter-col { display: flex; flex-direction: column; gap: 5px; min-width: 0; }
.cps-filter-col .cps-sublabel { font-size: 11px; font-weight: 500; color: #6b7280; }
.cps-filter-del { width: 36px; height: 36px; display: inline-flex; align-items: center; justify-content: center; border: 1px solid #e5e7eb; border-radius: 7px; background: white; color: #9ca3af; cursor: pointer; flex-shrink: 0; transition: background 0.12s, color 0.12s, border-color 0.12s; }
.cps-filter-del:hover { background: #fef2f2; color: #dc2626; border-color: #fecaca; }
.cps-ft { padding: 14px 20px; border-top: 1px solid #f3f4f6; display: flex; align-items: center; justify-content: flex-end; gap: 8px; flex-shrink: 0; background: white; }
.cps-btn { padding: 9px 18px; border-radius: 7px; font-size: 13px; font-weight: 600; cursor: pointer; font-family: inherit; transition: background 0.12s, color 0.12s, border-color 0.12s; }
.cps-btn.ghost { background: white; border: 1px solid #e5e7eb; color: #374151; }
.cps-btn.ghost:hover { background: #f9fafb; }
.cps-btn.primary { background: #2046ff; border: 1px solid #2046ff; color: white; }
.cps-btn.primary:hover { background: #1a3dd6; }
.pol-set-table-wrap { flex: 1; overflow: auto; background: white; }
.pol-set-table-wrap .pol-list-table { width: 100%; border-collapse: collapse; }
.pol-set-table-wrap .pol-list-table thead th { text-align: left; padding: 8px 18px; font-size: 11px; font-weight: 600; color: #6b7280; letter-spacing: 0.02em; background: #fafafa; border-bottom: 1px solid #e5e7eb; position: sticky; top: 0; z-index: 1; }
.pol-set-table-wrap .pol-list-table tbody td { padding: 12px 18px; font-size: 12.5px; color: #374151; border-bottom: 1px solid #f3f4f6; vertical-align: middle; }
.pol-set-table-wrap .pol-list-table tbody tr { cursor: pointer; transition: background 0.1s; }
.pol-set-table-wrap .pol-list-table tbody tr:hover { background: #fafafa; }
.pol-set-table-wrap .pol-list-table td.pln-name { font-weight: 600; color: #111827; font-size: 13px; }
.pol-list-table tbody tr.pln-group-row:hover,
.pol-list-table tbody tr.pln-sub-row:hover { background: transparent !important; }
.pol-list-table .pln-tree-chev,
.pol-list-table .pln-tree-indent,
.pol-list-table .pln-drag-handle { display: none !important; }
.pol-list-table .pln-name-wrap { gap: 0; }
.pol-list-banner { display: flex; align-items: center; gap: 10px; padding: 10px 14px; background: #eef2ff; border: 1px solid #dde4ff; border-radius: 8px; font-size: 12.5px; color: #4338ca; line-height: 1.5; margin-bottom: 22px; }
.pol-list-banner svg { color: #4f6ef7; flex-shrink: 0; }
.pol-list-table { width: 100%; border-collapse: collapse; }
.pol-list-table thead th { text-align: left; padding: 12px 16px; font-size: 11.5px; font-weight: 700; color: #4b5563; letter-spacing: 0.01em; border-bottom: 1px solid #e5e7eb; }
.pol-list-table tbody td { padding: 18px 16px; font-size: 13px; color: #374151; border-bottom: 1px solid #f3f4f6; vertical-align: middle; }
.pol-list-table tbody tr { cursor: pointer; transition: background 0.1s; }
.pol-list-table tbody tr:hover { background: #fafafa; }
.pol-list-table td.pln-name { font-weight: 700; color: #111827; font-size: 13.5px; }
.pol-list-table td.pln-ver { width: 130px; }
.pol-list-table td.pln-by { width: 180px; }
.pol-list-table td.pln-when { width: 220px; color: #6b7280; font-variant-numeric: tabular-nums; }
.pol-list-table tbody tr.pln-row-nested .pln-name-txt { font-weight: 600; }
.pol-list-table tbody tr.pln-row-nested td.pln-name { color: #374151; }
.pol-list-table tbody tr.pln-row[data-depth="1"] { background: #fcfcfd; }
.pol-list-table tbody tr.pln-row[data-depth="1"]:hover { background: #f5f6f9; }
.pol-list-table tbody tr.pln-row[data-depth="2"] { background: #f9fafb; }
.pol-list-table tbody tr.pln-row[data-depth="2"]:hover { background: #f1f3f6; }
.pol-provenance-lbl { margin: 18px 2px 8px; font-size: 11px; font-weight: 700; color: #6b7280; text-transform: uppercase; letter-spacing: 0.06em; display: flex; align-items: center; gap: 8px; }
.pol-provenance-lbl::before { content: ''; width: 6px; height: 6px; border-radius: 50%; background: #cbd5e1; }
.pol-provenance-lbl.own { color: #4f6ef7; }
.pol-provenance-lbl.own::before { background: #4f6ef7; }
.pol-provenance-count { font-size: 10.5px; color: #9ca3af; font-weight: 600; padding: 1px 6px; background: #f3f4f6; border-radius: 999px; letter-spacing: 0; }
.pol-provenance-empty { font-size: 12px; color: #9ca3af; font-style: italic; padding: 10px 12px; border: 1px dashed #e5e7eb; border-radius: 8px; margin: 2px 0 4px; }
.pol-inherit-badge { display: inline-block; margin-left: 8px; padding: 1px 7px; font-size: 10px; font-weight: 600; color: #6b7280; background: #f3f4f6; border-radius: 999px; letter-spacing: 0.02em; text-transform: none; vertical-align: 1px; }
.pol-rule.is-inherited { background: #fafbfd; }
.pol-rule.is-inherited .pol-rule-title { color: #4b5563; }
.pol-rule.is-inherited .pol-rule-num { color: #9ca3af; }
.pol-add-rule { display: inline-flex; align-items: center; gap: 6px; margin-top: 12px; padding: 8px 14px; border: 1px dashed #c7d2fe; background: #f7f9ff; color: #4f6ef7; font-size: 12.5px; font-weight: 600; border-radius: 8px; cursor: pointer; font-family: inherit; transition: background 0.12s, border-color 0.12s; }
.pol-add-rule:hover { background: #eef2ff; border-color: #a5b4fc; }
.pol-breadcrumb { display: flex; align-items: center; flex-wrap: wrap; gap: 6px; font-size: 12px; color: #6b7280; margin-bottom: 8px; }
.pol-breadcrumb:empty { display: none; }
.pol-breadcrumb-link { color: #4f6ef7; cursor: pointer; padding: 1px 4px; border-radius: 3px; transition: background 0.12s; }
.pol-breadcrumb-link:hover { background: #eef2ff; }
.pol-breadcrumb-sep { color: #d1d5db; }
.pol-breadcrumb-current { color: #111827; font-weight: 600; }
.pol-crumb-bar { display: flex; align-items: center; gap: 4px; font-size: 12px; color: #6b7280; line-height: 1.2; margin-bottom: 8px; flex-wrap: wrap; }
.pol-crumb-link { display: inline-flex; align-items: center; gap: 3px; color: #6b7280; cursor: pointer; padding: 2px 5px; border-radius: 4px; transition: background 0.12s, color 0.12s; }
.pol-crumb-link:hover { background: #f3f4f6; color: #111827; }
.pol-crumb-link.is-back { color: #4f6ef7; padding-left: 3px; }
.pol-crumb-link.is-back svg { transition: transform 0.15s; }
.pol-crumb-link.is-back:hover { background: #eef2ff; color: #4f6ef7; }
.pol-crumb-link.is-back:hover svg { transform: translateX(-2px); }
.pol-crumb-sep { color: #d1d5db; margin: 0 2px; }
.pol-detail-title-wrap { display: inline-flex; align-items: center; gap: 9px; }
.pol-title-back { display: inline-flex; align-items: center; justify-content: center; width: 28px; height: 28px; margin-left: -4px; margin-right: -2px; padding: 0; border: none; background: none; color: #6b7280; cursor: pointer; border-radius: 6px; flex-shrink: 0; transition: background 0.12s, color 0.12s, transform 0.12s; }
.pol-title-back:hover { background: #eef2ff; color: #4f6ef7; }
.pol-title-back:active { transform: scale(0.92); }
.pol-detail-title-wrap .pol-picker-name { font-size: 22px; font-weight: 700; color: #111827; letter-spacing: -0.015em; line-height: 1.2; }
.pol-detail-title-wrap .pol-picker-ver { font-size: 11px; font-weight: 600; color: #4f6ef7; background: #eef2ff; padding: 2px 7px; border-radius: 999px; line-height: 1.2; }
.pol-detail-title-wrap .pol-active-pill { margin-left: 2px; }
.pol-ver-dd { display: inline-flex; align-items: center; gap: 6px; padding: 3px 9px; border: 1px solid #dbe0fe; border-radius: 999px; background: #eef2ff; color: #4f6ef7; font-size: 11px; font-weight: 600; line-height: 1.3; cursor: pointer; font-family: inherit; transition: background 0.12s, border-color 0.12s; }
.pol-ver-dd:hover { background: #e0e7ff; border-color: #c7d2fe; }
.pol-ver-dd-ico { flex-shrink: 0; }
.pol-ver-dd-chev { flex-shrink: 0; opacity: 0.65; }
.pol-ver-dd:hover .pol-ver-dd-chev { opacity: 1; }
.pol-kind-chip { display: inline-flex; align-items: center; gap: 4px; padding: 1px 7px; font-size: 10px; font-weight: 600; border-radius: 999px; text-transform: uppercase; letter-spacing: 0.04em; margin-left: 8px; vertical-align: 2px; }
.pol-kind-chip.accrual { background: #eef2ff; color: #4338ca; }
.pol-kind-chip.health_check { background: #fff7ed; color: #c2410c; }
.pol-list-table tbody tr:hover .pln-add { opacity: 1; pointer-events: auto; }
.pol-list-table tbody tr:has(.pln-add-dd.open) .pln-add { opacity: 1; pointer-events: auto; }
.pol-detail-title-wrap { display: inline-flex; align-items: center; gap: 9px; }
.pol-detail-title-wrap .pol-picker-name { font-size: 22px; font-weight: 700; color: #111827; letter-spacing: -0.01em; line-height: 1.2; }
.pol-detail-title-wrap .pol-picker-ver { font-size: 11px; font-weight: 600; color: #4f6ef7; background: #eef2ff; padding: 2px 7px; border-radius: 999px; line-height: 1.2; }
.pol-section-divider { display: none; }
.pol-section { margin-top: 24px; border-top: 1px solid #e5e7eb; padding-top: 4px; }
.pol-section:first-of-type { margin-top: 6px; border-top: none; padding-top: 0; }
.pol-section-head { display: flex; align-items: center; gap: 10px; padding: 14px 4px 12px; user-select: none; }
.pol-section-chev { display: none; }
.pol-section-title { font-size: 14.5px; font-weight: 700; color: #111827; letter-spacing: -0.005em; flex: 0 0 auto; }
.pol-section-count { font-size: 11.5px; color: #9ca3af; font-weight: 500; font-variant-numeric: tabular-nums; }
.pol-section-body { padding-bottom: 6px; }
.pol-section.collapsed .pol-section-body { display: none; }
.pol-section-sub { font-size: 12.5px; color: #6b7280; line-height: 1.55; margin: 0 4px 14px; }
.pol-section-heading { display: none; }
.pol-section-heading { font-size: 13.5px; font-weight: 700; color: #111827; letter-spacing: -0.005em; }
.pol-section-sub { font-size: 12.5px; color: #6b7280; line-height: 1.55; margin: 4px 2px 14px; }
.pol-hc-grouplbl { font-size: 11px; font-weight: 700; color: #6b7280; text-transform: uppercase; letter-spacing: 0.06em; margin: 14px 2px 8px; display: flex; align-items: center; gap: 8px; }
.pol-hc-scope-row { display: flex; align-items: baseline; gap: 8px; margin: 10px 2px 6px; padding-left: 2px; }
.pol-hc-scope-chip { display: inline-flex; align-items: center; padding: 2px 9px; background: #eef2ff; color: #4338ca; font-size: 11px; font-weight: 600; border-radius: 999px; }
.pol-hc-scope-count { font-size: 11px; color: #9ca3af; font-weight: 500; }
.pol-hc-grouplbl::before { content: ''; width: 6px; height: 6px; border-radius: 50%; background: #d97706; }
.pol-hc-grouplbl.specific::before { background: #4f6ef7; }
.pol-rule.is-health .pol-rule-num { color: #d97706; }
.pol-rule.is-health.selected { border-color: #d97706; box-shadow: 0 0 0 3px rgba(217, 119, 6, 0.12); }
.pol-rule.is-health .ppi-global-chip { display: inline-flex; align-items: center; padding: 1px 7px; background: #fef3c7; color: #92400e; font-size: 10px; font-weight: 600; border-radius: 999px; margin-left: 8px; line-height: 1.4; }
.pol-rule.is-health .ppi-global-chip.specific { background: #eef2ff; color: #4f6ef7; }
.pol-rule.is-health .pol-rule-tip { padding: 0 14px 12px; font-size: 12px; color: #6b7280; line-height: 1.55; }
.pol-picker-wrap { position: relative; display: inline-flex; align-items: center; }
.pol-picker { display: inline-flex; align-items: center; gap: 9px; padding: 4px 9px 4px 11px; border: 1px solid transparent; border-radius: 7px; background: transparent; cursor: pointer; font-family: inherit; transition: background 0.12s, border-color 0.12s; }
.pol-picker:hover { background: #f9fafb; border-color: #e5e7eb; }
.pol-picker.on { background: #f3f4f6; border-color: #e5e7eb; }
.pol-picker-name { font-size: 22px; font-weight: 700; color: #111827; letter-spacing: -0.01em; line-height: 1.2; }
.pol-picker-ver { font-size: 11px; font-weight: 600; color: #4f6ef7; background: #eef2ff; padding: 2px 7px; border-radius: 999px; line-height: 1.2; align-self: center; }
.pol-picker-chev { color: #9ca3af; transition: transform 0.18s, color 0.12s; align-self: center; }
.pol-picker.on .pol-picker-chev { transform: rotate(180deg); color: #4f6ef7; }
.pol-picker-menu { position: absolute; top: calc(100% + 6px); left: 0; min-width: 540px; background: white; border: 1px solid #e5e7eb; border-radius: 10px; box-shadow: 0 12px 32px rgba(17,24,39,0.10), 0 2px 6px rgba(17,24,39,0.04); z-index: 80; padding: 6px; opacity: 0; pointer-events: none; transform: translateY(-4px); transition: opacity 0.16s ease, transform 0.16s ease; }
.pol-picker-menu.on { opacity: 1; pointer-events: auto; transform: translateY(0); }
.pol-picker-item { display: flex; align-items: flex-start; gap: 12px; padding: 10px 12px; border-radius: 6px; cursor: pointer; transition: background 0.1s; }
.pol-picker-item:hover { background: #f9fafb; }
.pol-picker-item.active { background: #eef2ff; }
.pol-picker-item.active .ppi-check { opacity: 1; }
.pol-picker-item.active .ppi-name { color: #4f6ef7; }
.pol-picker-foot { border-top: 1px solid #f3f4f6; margin-top: 4px; padding: 9px 12px; display: flex; align-items: center; gap: 6px; cursor: pointer; font-size: 12.5px; color: #4f6ef7; font-weight: 600; border-radius: 6px; }
.pol-picker-foot:hover { background: #eef2ff; }
.pol-section-divider { height: 1px; background: #e5e7eb; margin: 32px 0 18px; }
.pol-section-heading { font-size: 13.5px; font-weight: 700; color: #111827; letter-spacing: -0.005em; }
.pol-section-sub { font-size: 12.5px; color: #6b7280; line-height: 1.55; margin: 4px 2px 14px; }
.pol-hc-grouplbl { font-size: 11px; font-weight: 700; color: #6b7280; text-transform: uppercase; letter-spacing: 0.06em; margin: 14px 2px 8px; display: flex; align-items: center; gap: 8px; }
.pol-hc-grouplbl::before { content: ''; width: 6px; height: 6px; border-radius: 50%; background: #d97706; }
.pol-hc-grouplbl.specific::before { background: #4f6ef7; }
.pol-rule.is-health .pol-rule-num { color: #d97706; }
.pol-rule.is-health.selected { border-color: #d97706; box-shadow: 0 0 0 3px rgba(217, 119, 6, 0.12); }
.pol-rule.is-health .ppi-global-chip { display: inline-flex; align-items: center; padding: 1px 7px; background: #fef3c7; color: #92400e; font-size: 10px; font-weight: 600; border-radius: 999px; margin-left: 8px; line-height: 1.4; }
.pol-rule.is-health .ppi-global-chip.specific { background: #eef2ff; color: #4f6ef7; }
.pol-rule.is-health .pol-rule-tip { padding: 0 14px 12px; font-size: 12px; color: #6b7280; line-height: 1.55; }
.pol-sop-panel { width: 0; flex-shrink: 0; background: #fafaf7; border-left: 1px solid #e5e7eb; overflow: hidden; transition: width 0.3s cubic-bezier(0.32, 0.72, 0, 1); display: flex; flex-direction: column; }
.policy-page.sop-open .pol-sop-panel { width: 50%; }
.pol-sop-scroll { flex: 1; min-height: 0; width: 100%; overflow-y: auto; padding: 32px 36px 80px; scroll-behavior: smooth; box-shadow: inset -1px 0 0 #e5e7eb; font-family: 'Charter', 'Iowan Old Style', Georgia, 'Times New Roman', serif; color: #1f2937; }
.pol-sop-toolbar { flex-shrink: 0; display: flex; align-items: center; gap: 10px; padding: 9px 14px; border-bottom: 1px solid #e5e7eb; background: white; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif; }
.pol-sop-toolbar-name { flex: 1; min-width: 0; display: flex; align-items: center; gap: 7px; font-size: 12.5px; font-weight: 600; color: #111827; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; }
.pol-sop-toolbar-name svg { color: #9ca3af; flex-shrink: 0; }
.pol-sop-toolbar-meta { font-size: 11px; color: #9ca3af; font-weight: 500; flex-shrink: 0; }
.pol-sop-toolbar-btn { display: inline-flex; align-items: center; gap: 5px; padding: 4px 10px 4px 8px; border: 1px solid #e5e7eb; background: white; border-radius: 6px; font-size: 11.5px; color: #374151; cursor: pointer; font-family: inherit; transition: background 0.12s, border-color 0.12s, color 0.12s; }
.pol-sop-toolbar-btn:hover { background: #f3f4f6; border-color: #d1d5db; }
.pol-sop-toolbar-btn.primary { background: #eef2ff; color: #4f6ef7; border-color: #c7d2fe; font-weight: 600; }
.pol-sop-toolbar-btn.primary:hover { background: #dde4ff; border-color: #4f6ef7; }
.pol-sop-toolbar-btn svg { color: inherit; }
.pol-sop-toolbar-menu { padding: 4px 7px; }
.pol-sop-tabs { flex-shrink: 0; display: flex; align-items: stretch; gap: 0; background: #f3f4f6; border-top: 1px solid #e5e7eb; overflow-x: auto; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif; }
.pol-sop-tab { display: inline-flex; align-items: center; gap: 6px; padding: 8px 12px 8px 14px; border-right: 1px solid #e5e7eb; font-size: 11.5px; color: #6b7280; cursor: pointer; transition: background 0.12s, color 0.12s; white-space: nowrap; max-width: 220px; }
.pol-sop-tab:hover { background: #e5e7eb; color: #374151; }
.pol-sop-tab.active { background: #fafaf7; color: #111827; font-weight: 600; box-shadow: inset 0 2px 0 #4f6ef7; }
.pol-sop-tab-name { overflow: hidden; text-overflow: ellipsis; max-width: 170px; }
.pol-sop-tab-x { color: #c4c9d4; cursor: pointer; padding: 0 2px; opacity: 0; transition: opacity 0.12s, color 0.12s; line-height: 1; }
.pol-sop-tab:hover .pol-sop-tab-x { opacity: 0.6; }
.pol-sop-tab .pol-sop-tab-x:hover { opacity: 1; color: #dc2626; }
.pol-sop-tab.active .pol-sop-tab-x { opacity: 0.6; }
.pol-sop-tab-add { display: inline-flex; align-items: center; justify-content: center; width: 36px; padding: 0; border: none; background: transparent; color: #4f6ef7; cursor: pointer; font-family: inherit; border-right: 1px solid #e5e7eb; }
.pol-sop-tab-add:hover { background: #e5e7eb; color: #3d5bd9; }
.pol-sop-scroll .sop-doc { max-width: 660px; margin: 0 auto; }
.pol-sop-scroll .sop-meta { font-size: 11px; color: #9ca3af; letter-spacing: 0.06em; text-transform: uppercase; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif; margin-bottom: 6px; }
.pol-sop-scroll .sop-h1 { font-size: 24px; font-weight: 700; color: #111827; line-height: 1.2; letter-spacing: -0.01em; margin-bottom: 6px; }
.pol-sop-scroll .sop-sub { font-size: 14px; color: #4b5563; line-height: 1.5; margin-bottom: 4px; font-style: italic; }
.pol-sop-scroll .sop-rev { font-size: 11.5px; color: #9ca3af; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif; }
.pol-sop-scroll .sop-divider { border: none; border-top: 1px solid #e5e7eb; margin: 22px 0; }
.pol-sop-scroll .sop-section { padding: 14px 14px 16px; border-radius: 6px; margin-bottom: 4px; cursor: pointer; transition: background 0.15s; }
.pol-sop-scroll .sop-section:hover { background: rgba(79,110,247,0.04); }
.pol-sop-scroll .sop-section.sop-flash { background: rgba(250, 204, 21, 0.22); transition: background 0.8s ease; }
.pol-sop-scroll .sop-h3 { font-size: 16px; font-weight: 700; color: #111827; line-height: 1.3; margin-bottom: 8px; letter-spacing: -0.005em; }
.pol-sop-scroll .sop-h3-num { color: #4f6ef7; margin-right: 6px; font-variant-numeric: tabular-nums; font-weight: 600; }
.pol-sop-scroll .sop-p { font-size: 14px; line-height: 1.65; color: #374151; margin-bottom: 8px; }
.pol-sop-scroll .sop-p:last-child { margin-bottom: 0; }
.pol-sop-scroll .sop-cond { font-size: 13px; color: #6b7280; line-height: 1.6; margin-top: 6px; padding-left: 14px; border-left: 2px solid #e5e7eb; }
.pol-sop-scroll .sop-link { display: inline-flex; align-items: center; gap: 3px; margin-top: 8px; font-size: 11.5px; font-weight: 600; color: #4f6ef7; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif; text-transform: none; letter-spacing: normal; }
.pol-sop-name { cursor: pointer; padding: 4px 8px; margin: -4px -8px; border-radius: 5px; transition: background 0.12s, color 0.12s; }
.pol-sop-name.pol-sop-name-hero { margin: 0 0 0 auto; font-size: 12.5px; }
.pol-hero-row { align-items: center; }
.pol-section-head .pol-code-toggle { font-size: 12px; }
.pol-sop-name:hover { background: #f3f4f6; }
.pol-sop-name:hover svg, .policy-page.sop-open .pol-sop-name svg { color: #4f6ef7; }
.policy-page.sop-open .pol-sop-name { background: #eef2ff; color: #4f6ef7; }
.pol-sop-name .sop-arrow { display: inline-flex; opacity: 0; transition: opacity 0.15s, transform 0.15s; color: inherit; margin-left: 2px; }
.pol-sop-name:hover .sop-arrow, .policy-page.sop-open .pol-sop-name .sop-arrow { opacity: 1; transform: translate(1px, -1px); }
.pol-code-scroll { width: 100%; height: 100%; overflow-y: auto; padding: 20px 0; scroll-behavior: smooth; box-shadow: inset -1px 0 0 #e5e7eb; }
.pol-code-block { display: block; padding: 16px 24px 22px; font-family: 'SF Mono', Menlo, Consolas, monospace; font-size: 11.5px; line-height: 1.6; color: #334155; white-space: pre-wrap; overflow-wrap: anywhere; counter-reset: line; border-bottom: 1px solid #ecf0f5; transition: background 0.15s; }
.pol-code-block.selected { background: #eef2ff; box-shadow: inset 3px 0 0 #4f6ef7; }
.pol-code-block.selected .pol-code-line::before { color: #94a3b8; }
.pol-code-block.selected .pol-key-py { color: #1e40af; }
.pol-code-block.selected .pol-str-py { color: #166534; }
.pol-code-block.selected .pol-num-py { color: #c2410c; }
.pol-code-block.selected .pol-bool-py { color: #5b21b6; }
.pol-code-block .pol-code-line { display: block; padding-left: 42px; text-indent: -42px; }
.pol-code-block .pol-code-line::before { content: counter(line); counter-increment: line; display: inline-block; width: 28px; margin-right: 14px; color: #cbd5e1; text-align: right; user-select: none; font-variant-numeric: tabular-nums; }
.pol-code-rule-hdr { color: #94a3b8; font-style: italic; padding: 4px 24px 6px; font-size: 11px; cursor: pointer; transition: color 0.12s, background 0.12s; }
.pol-code-rule-hdr:hover { color: #475569; background: rgba(79,110,247,0.05); }
.pol-code-rule-hdr.selected { color: #4f6ef7; font-weight: 600; background: #eef2ff; box-shadow: inset 3px 0 0 #4f6ef7; }
.pol-code-section-hdr { color: #b45309; font-weight: 600; padding: 18px 24px 8px; font-size: 11px; letter-spacing: 0.04em; background: #fffbeb; border-top: 1px solid #fde68a; border-bottom: 1px solid #fde68a; margin-top: 4px; font-family: 'SF Mono', Menlo, Consolas, monospace; }
.pol-code-rule-hdr.selected[data-hc] { color: #b45309; background: #fef3c7; box-shadow: inset 3px 0 0 #d97706; }
.pol-code-block.selected[data-hc] { background: #fef3c7; box-shadow: inset 3px 0 0 #d97706; }
.pol-code-block { cursor: pointer; }
.pol-kw-py { color: #7c3aed; font-weight: 600; }
.pol-str-py { color: #16a34a; }
.pol-num-py { color: #ea580c; }
.pol-cmt-py { color: #94a3b8; font-style: italic; }
.pol-bool-py { color: #4f6ef7; font-weight: 600; }
.pol-key-py { color: #2563eb; }
.pol-section-label { font-size: 10.5px; font-weight: 600; color: #9ca3af; text-transform: uppercase; letter-spacing: 0.5px; margin: 14px 0 6px; }
.pol-cond-group { margin: 4px 0 4px 0; padding-left: 10px; border-left: 2px solid #e5e7eb; }
.pol-cond-mode { font-size: 10px; font-weight: 600; color: #6b7280; text-transform: uppercase; letter-spacing: 0.5px; margin: 6px 0 2px; }
.pol-cond-leaf { display: flex; flex-wrap: wrap; gap: 6px; align-items: center; padding: 4px 0; font-size: 12px; line-height: 1.6; }
.pol-cond-default { font-size: 12px; font-style: italic; color: #6b7280; padding: 4px 0; }
.pol-action-row { display: flex; flex-wrap: wrap; gap: 6px; align-items: center; padding: 4px 0; font-size: 12px; line-height: 1.6; }
.pol-stop-pill { display: inline-flex; align-items: center; gap: 4px; padding: 1px 8px; background: #f3f4f6; color: #6b7280; font-size: 10px; font-weight: 500; border-radius: 999px; margin-left: 4px; }
.pol-vh-drawer {
  position: absolute; top: 0; right: 0; bottom: 0; width: 340px;
  background: white; border-left: 1px solid #e5e7eb;
  box-shadow: -8px 0 24px rgba(0,0,0,0.06);
  transform: translateX(100%); transition: transform 0.28s cubic-bezier(0.32, 0.72, 0, 1);
  z-index: 50; display: flex; flex-direction: column; box-sizing: border-box;
}
.policy-page.vh-open .pol-vh-drawer { transform: translateX(0); }
.pol-vh-head { padding: 14px 18px 12px; border-bottom: 1px solid #f3f4f6; display: flex; align-items: center; justify-content: space-between; flex-shrink: 0; }
.pol-vh-title { font-size: 13px; font-weight: 600; color: #111827; }
.pol-vh-close { background: transparent; border: none; cursor: pointer; padding: 4px; border-radius: 5px; color: #6b7280; display: inline-flex; align-items: center; justify-content: center; }
.pol-vh-close:hover { background: #f3f4f6; color: #111827; }
.pol-vh-list { flex: 1; overflow-y: auto; padding: 4px 0; }
.pol-vh-item { padding: 10px 18px 10px 15px; cursor: pointer; transition: background 0.12s; border-left: 3px solid transparent; }
.pol-vh-item:hover { background: #f9fafb; }
.pol-vh-item.viewing { background: #eef2ff; border-left-color: #4f6ef7; }
.pol-vh-ts { font-size: 12.5px; font-weight: 600; color: #111827; margin-bottom: 5px; display: inline-flex; align-items: center; gap: 8px; }
.pol-vh-item.viewing .pol-vh-ts { color: #4f6ef7; }
.pol-vh-item.current .pol-vh-ts { color: #4f6ef7; }
.pol-vh-active { display: inline-flex; align-items: center; gap: 5px; padding: 1px 8px; background: #dcfce7; color: #15803d; font-size: 10.5px; font-weight: 600; border-radius: 999px; line-height: 1.5; }
.pol-vh-active::before { content: ''; width: 5px; height: 5px; background: #16a34a; border-radius: 50%; flex-shrink: 0; }
.pol-vh-meta { display: flex; align-items: center; gap: 8px; font-size: 12px; color: #374151; }
.pol-vh-avatar { width: 20px; height: 20px; border-radius: 50%; display: flex; align-items: center; justify-content: center; color: white; font-size: 9px; font-weight: 600; flex-shrink: 0; }
.pol-vh-summary { font-size: 11.5px; color: #6b7280; margin-top: 5px; line-height: 1.4; }
.pol-vh-banner {
  display: none;
  align-items: center; gap: 12px;
  padding: 0 18px; height: 36px; flex-shrink: 0;
  background: #fff7ed; border-bottom: 1px solid #fed7aa;
  color: #9a3412; font-size: 12px; font-weight: 500;
  position: absolute; top: 0; left: 0; right: 340px; z-index: 40;
}
.policy-page.viewing-old .pol-vh-banner { display: flex; }
.pol-vh-banner-spacer { flex: 1; }
.pol-vh-banner-btn { padding: 4px 10px; border: 1px solid #fed7aa; background: white; border-radius: 5px; font-size: 11.5px; font-weight: 500; cursor: pointer; color: #9a3412; transition: background 0.12s; }
.pol-vh-banner-btn:hover { background: #ffedd5; }
.pol-vh-banner-btn.primary { background: #ea580c; color: white; border-color: #ea580c; }
.pol-vh-banner-btn.primary:hover { background: #c2410c; }
.policy-page.viewing-old .pol-body { margin-top: 36px; }
.policy-page.viewing-old .pol-rule-actions { pointer-events: none; opacity: 0.35; }
.policy-page.viewing-old .pol-field-input,
.policy-page.viewing-old .pol-field-input-wrap { background: #f9fafb; }
.policy-page.viewing-old .pol-field-input { pointer-events: none; color: #6b7280; }
.policy-page.viewing-old .pol-field-edit-ico { display: none; }
.policy-page.viewing-old .pol-field-input-wrap::after {
  content: 'read-only'; color: #9ca3af; font-size: 10px; font-weight: 500;
  text-transform: uppercase; letter-spacing: 0.4px; padding-left: 4px;
}
