.ppc-grade-wrapper { width: 100%; max-width: 100% !important; overflow: hidden !important; box-sizing: border-box; font-family: system-ui, -apple-system, sans-serif; background-color: transparent; }
  .ppc-grade-wrapper * { box-sizing: border-box; }
  .ppc-titulo { text-align: center; color: #2c3e50; font-size: 2.2rem; font-weight: 800; text-transform: uppercase; margin: 0 0 20px 0; line-height: 1.2; }
  .ppc-descricao { background-color: #f8f9fa; border-left: 4px solid #2c3e50; padding: 20px; margin-bottom: 25px; font-size: 1rem; line-height: 1.7; color: #333; text-align: justify; border-radius: 0 8px 8px 0; }
  .ppc-btn-container { display: flex; justify-content: center; margin-bottom: 40px; }
  .ppc-btn-acesso { background-color: #2c3e50; color: #ffffff !important; text-decoration: none; border-radius: 8px; display: inline-flex; flex-direction: column; align-items: center; padding: 12px 30px; box-shadow: 0 4px 6px rgba(0,0,0,0.1); transition: transform .2s, background-color .2s; }
  .ppc-btn-acesso:hover { background-color: #1a252f; transform: translateY(-2px); }
  .ppc-btn-acesso:focus-visible { outline: 3px solid #3498db; outline-offset: 3px; }
  .ppc-btn-acesso span.ppc-main-txt { font-weight: 700; font-size: 16px; display: flex; align-items: center; gap: 8px; }
  .ppc-btn-acesso span.ppc-sub-txt { font-size: 11px; color: #bdc3c7; margin-top: 4px; }
  .ppc-titulo-grade { color: #2c3e50; font-size: 1.6rem; font-weight: 700; text-transform: uppercase; margin: 0 0 15px 0; border-bottom: 2px solid #eaeaea; padding-bottom: 10px; line-height: 1.2; }
  .ppc-sr { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }

  .ppc-controls { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: center; margin-bottom: 12px; gap: 12px; }
  .ppc-controls-left { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; }
  .ppc-btn { background-color: #7f8c8d; color: #fff !important; border: none; padding: 10px 16px; border-radius: 6px; font-weight: 600; font-size: 13px; cursor: pointer; display: inline-flex; align-items: center; gap: 8px; transition: background-color .2s; font-family: inherit; line-height: 1; }
  .ppc-btn:hover { background-color: #636e72; }
  .ppc-btn:focus-visible { outline: 3px solid #3498db; outline-offset: 2px; }
  .ppc-seg { display: inline-flex; border-radius: 6px; overflow: hidden; }
  .ppc-seg .ppc-btn { border-radius: 0; border-right: 1px solid rgba(255,255,255,.25); }
  .ppc-seg .ppc-btn:last-child { border-right: none; }
  .ppc-seg .ppc-btn[aria-pressed="true"] { background-color: #2c3e50; }
  .ppc-zoom .ppc-btn { padding: 10px 13px; }
  .ppc-busca { border: 1px solid #ccd3d8; border-radius: 6px; padding: 9px 12px; font-size: 13px; font-family: inherit; min-width: 190px; color: #2c3e50; }
  .ppc-busca:focus-visible { outline: 3px solid #3498db; outline-offset: 1px; border-color: #3498db; }

  .ppc-legenda { display: flex; gap: 12px; flex-wrap: wrap; font-size: 11px; font-weight: 700; align-items: center; }
  .ppc-legenda div { display: flex; align-items: center; gap: 5px; }
  .ppc-legenda span.ppc-chip { display: inline-block; width: 35px; height: 15px; border: 1px solid #444; border-radius: 4px; }
  .ppc-legenda span.ppc-linha-pre { display: inline-block; width: 30px; border-top: 2px solid #888; }
  .ppc-legenda span.ppc-linha-co { display: inline-block; width: 30px; border-top: 2px dashed #6b8e9e; }
  .ppc-legenda span.ppc-ponto-ext { display: inline-block; width: 10px; height: 10px; border-radius: 50%; background: #2e7d32; }

  .ppc-dica { background-color: #e8f4f8; border: 1px solid #d1e8f0; border-bottom: none; padding: 12px 18px; font-size: 13.5px; color: #2c3e50; font-weight: 600; border-radius: 8px 8px 0 0; display: flex; align-items: center; gap: 10px; margin: 0; }
  #ppc-canvas, #ppc-opt-canvas { width: 100%; max-width: 100% !important; overflow: auto !important; background-color: #fafafa; padding: 20px; border: 1px solid #eaeaea; border-radius: 0 0 8px 8px; -webkit-overflow-scrolling: touch; }
  #ppc-opt-canvas { border-radius: 8px; margin-top: 6px; }
  #ppc-canvas svg, #ppc-opt-canvas svg { display: block; max-width: none !important; height: auto; }
  .ppc-oculto { display: none !important; }

  .ppc-node { cursor: pointer; transition: opacity .25s; }
  .ppc-node rect { stroke: #444; stroke-width: 1.2; rx: 5; ry: 5; }
  .ppc-node:hover rect, .ppc-node:focus rect { stroke-width: 2.5; stroke: #000; }
  .ppc-node:focus { outline: none; }
  .ppc-node:focus rect { stroke: #d9534f; }
  .ppc-node text { font-family: system-ui, sans-serif; fill: #111; pointer-events: none; }
  .ppc-node text.ppc-t { font-size: 11px; font-weight: 600; text-anchor: middle; }
  .ppc-node text.ppc-h { font-size: 9px; font-weight: bold; text-anchor: end; fill: #444; }
  .ppc-node text.ppc-s { font-size: 8px; font-weight: bold; text-anchor: start; fill: #5a5a5a; }
  .ppc-node text.ppc-marco { font-size: 8.5px; font-weight: bold; text-anchor: middle; fill: #666; }
  .ppc-node.ppc-locked rect { stroke: #d9534f; stroke-width: 2.5; }

  .ppc-basica rect { fill: #9ecae1; }
  .ppc-geral rect { fill: #d4b5d4; }
  .ppc-flexivel rect { fill: #ccebc5; }
  .ppc-complementar rect { fill: #fdd480; }

  .ppc-edge { stroke: #888; stroke-width: 1.5; fill: none; transition: opacity .25s; marker-end: url(#ppc-seta); }
  .ppc-edge.ppc-co { stroke: #6b8e9e; stroke-dasharray: 5 4; marker-end: url(#ppc-seta-co); }
  .ppc-edge.ppc-co-bi { marker-start: url(#ppc-seta-co-inv); }
  .ppc-edge.ppc-hl { stroke: #d9534f; stroke-width: 2.6; marker-end: url(#ppc-seta-hl); opacity: 1; }
  .ppc-edge.ppc-co.ppc-hl { marker-end: url(#ppc-seta-hl-co); }
  .ppc-edge.ppc-co-bi.ppc-hl { marker-start: url(#ppc-seta-hl-co-inv); }
  .ppc-edge.ppc-dim { opacity: .05; }
  .ppc-node.ppc-dim { opacity: .14; }
  .ppc-periodo-header { font-size: 13px; font-weight: bold; fill: #333; }

#ppc-lista { border: 1px solid #eaeaea; border-top: none; border-radius: 0 0 8px 8px; background: #fff; }
  .ppc-periodo { border-bottom: 1px solid #eef1f3; }
  .ppc-periodo:last-child { border-bottom: none; }
  .ppc-periodo-titulo { display: flex; justify-content: space-between; align-items: baseline; gap: 10px; background: #2c3e50; color: #fff; padding: 9px 14px; font-size: 13px; font-weight: 700; text-transform: uppercase; letter-spacing: .04em; }
  .ppc-periodo-titulo span { font-size: 12px; font-weight: 600; color: #bdc9d4; text-transform: none; letter-spacing: 0; }
  .ppc-item { display: block; width: 100%; text-align: left; border: none; border-bottom: 1px solid #f0f2f4; background: #fff; padding: 11px 14px 11px 12px; cursor: pointer; font-family: inherit; border-left: 6px solid transparent; }
  .ppc-item:last-child { border-bottom: none; }
  .ppc-item:hover { background: #f7f9fa; }
  .ppc-item:focus-visible { outline: 3px solid #3498db; outline-offset: -3px; }
  .ppc-item-basica { border-left-color: #9ecae1; }
  .ppc-item-geral { border-left-color: #d4b5d4; }
  .ppc-item-flexivel { border-left-color: #ccebc5; }
  .ppc-item-complementar { border-left-color: #fdd480; }
  .ppc-item-cab { display: flex; justify-content: space-between; align-items: baseline; gap: 10px; }
  .ppc-item-nome { font-size: 14px; font-weight: 700; color: #2c3e50; line-height: 1.3; }
  .ppc-item-ch { font-size: 12px; font-weight: 700; color: #7f8c8d; white-space: nowrap; }
  .ppc-item-sigla { font-size: 11px; font-weight: 700; color: #8b98a5; letter-spacing: .03em; }
  .ppc-tags { display: flex; flex-wrap: wrap; gap: 5px; margin-top: 7px; }
  .ppc-tag { font-size: 11px; font-weight: 600; border-radius: 20px; padding: 3px 9px; line-height: 1.5; border: 1px solid transparent; }
  .ppc-tag-pre { background: #f0f0f0; color: #555; border-color: #e0e0e0; }
  .ppc-tag-co { background: #eaf2f6; color: #46697c; border-color: #d3e3ec; border-style: dashed; }
  .ppc-tag-marco { background: #fdf3e0; color: #8a6216; border-color: #f3e2c2; }
  .ppc-tag-ext { background: #e9f5ea; color: #2e7d32; border-color: #cfe6d1; }
  .ppc-tag-livre { background: #f7f7f7; color: #999; border-color: #eee; }

  .ppc-grade-wrapper.ppc-panel-aberto { overflow: visible !important; }
  .ppc-backdrop { position: fixed; inset: 0; background: rgba(20,28,35,.5); opacity: 0; pointer-events: none; transition: opacity .25s; z-index: 999998; }
  .ppc-backdrop.ppc-on { opacity: 1; pointer-events: auto; }
  .ppc-panel { position: fixed; top: 0; right: 0; height: 100%; height: 100dvh; max-height: 100dvh; width: min(430px, 100vw); max-width: 100vw; overflow: hidden; background: #fff; box-shadow: -8px 0 30px rgba(0,0,0,.18); transform: translateX(102%); transition: transform .28s ease; z-index: 999999; display: flex; flex-direction: column; font-family: system-ui, -apple-system, sans-serif; overscroll-behavior: contain; }
  .ppc-panel.ppc-on { transform: translateX(0); }
  .ppc-panel-cab { flex: 0 0 auto; padding: calc(16px + env(safe-area-inset-top, 0px)) calc(18px + env(safe-area-inset-right, 0px)) 14px calc(18px + env(safe-area-inset-left, 0px)); border-bottom: 1px solid #eaeaea; display: flex; justify-content: space-between; align-items: flex-start; gap: 12px; background: #fff; }
  .ppc-panel-cab > div { min-width: 0; }
  .ppc-panel-cab h3 { margin: 0 0 4px 0; font-size: 1.05rem; line-height: 1.3; color: #2c3e50; font-weight: 800; }
  .ppc-panel-cab p { margin: 0; font-size: 12px; color: #7f8c8d; font-weight: 600; overflow-wrap: anywhere; }
  .ppc-panel-fechar { background: #eef1f3; border: none; border-radius: 6px; width: 32px; height: 32px; flex: 0 0 32px; cursor: pointer; color: #2c3e50; font-size: 18px; line-height: 1; font-family: inherit; }
  .ppc-panel-fechar:hover { background: #dde3e7; }
  .ppc-panel-fechar:focus-visible { outline: 3px solid #3498db; outline-offset: 2px; }
  .ppc-panel-corpo { min-width: 0; overflow-x: hidden; overflow-y: auto; padding: 16px calc(18px + env(safe-area-inset-right, 0px)) calc(26px + env(safe-area-inset-bottom, 0px)) calc(18px + env(safe-area-inset-left, 0px)); -webkit-overflow-scrolling: touch; overscroll-behavior: contain; }
  .ppc-meta { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; margin-bottom: 16px; }
  .ppc-meta div { background: #f7f9fa; border-radius: 6px; padding: 8px 10px; }
  .ppc-meta dt { font-size: 10px; text-transform: uppercase; letter-spacing: .05em; color: #8b98a5; font-weight: 700; margin: 0; }
  .ppc-meta dd { margin: 2px 0 0 0; font-size: 13px; color: #2c3e50; font-weight: 700; }
  .ppc-sec { margin-bottom: 16px; }
  .ppc-sec h4 { margin: 0 0 6px 0; font-size: 11px; text-transform: uppercase; letter-spacing: .06em; color: #2c3e50; font-weight: 800; border-bottom: 1px solid #eaeaea; padding-bottom: 4px; }
  .ppc-sec p { margin: 0; font-size: 13.5px; line-height: 1.65; color: #3b4753; text-align: justify; }
  .ppc-sec ol { margin: 0; padding-left: 18px; font-size: 12.5px; line-height: 1.6; color: #55606b; }
  .ppc-sec ol li { margin-bottom: 5px; }
  .ppc-req-btn { max-width: 100%; background: #f0f0f0; border: 1px solid #e0e0e0; color: #444; font-size: 11.5px; font-weight: 700; border-radius: 20px; padding: 4px 10px; cursor: pointer; font-family: inherit; margin: 0 4px 4px 0; text-align: left; white-space: normal; overflow-wrap: anywhere; }
  .ppc-req-btn:hover { background: #e2e6e9; }
  .ppc-req-btn:focus-visible { outline: 3px solid #3498db; outline-offset: 1px; }
  .ppc-req-btn.ppc-req-co { background: #eaf2f6; border-color: #d3e3ec; border-style: dashed; color: #46697c; }
  .ppc-panel-nota { font-size: 12px; line-height: 1.55; color: #8a6216; background: #fdf7e8; border: 1px solid #f0e3c4; border-radius: 6px; padding: 9px 11px; }
  .ppc-panel-rodape { font-size: 11.5px; color: #8b98a5; line-height: 1.5; border-top: 1px solid #eaeaea; padding-top: 10px; }

  .ppc-optativas { margin-top: 40px; margin-bottom: 40px; }
  .ppc-opt-cab { display: flex; justify-content: space-between; align-items: center; gap: 12px; margin-bottom: 4px; }
  .ppc-opt-actions { display: flex; flex-wrap: wrap; align-items: center; justify-content: flex-end; gap: 8px; }
  .ppc-optativas-title { color: #2c3e50; font-size: 1.5rem; font-weight: 700; text-transform: uppercase; margin: 0; line-height: 1.2; }
  .ppc-fonte { font-size: 11px; color: #666; margin: 0 0 16px 0; padding-bottom: 12px; border-bottom: 2px solid #eaeaea; font-family: Arial, sans-serif; text-align: left; }
  .ppc-det { background: #fff; border: 1px solid #eaeaea; border-radius: 6px; margin-bottom: 8px; overflow: hidden; box-shadow: 0 1px 3px rgba(0,0,0,.02); transition: box-shadow .3s, border-color .3s; }
  .ppc-det[open] { box-shadow: 0 3px 8px rgba(0,0,0,.06); border-color: #2c3e50; margin-bottom: 15px; }
  .ppc-sum { background: #f8f9fa; color: #2c3e50; padding: 8px 14px; font-weight: 700; font-size: 13px; cursor: pointer; list-style: none; display: flex; justify-content: space-between; align-items: center; transition: background .2s; margin: 0; }
  .ppc-sum:hover { background: #e8ecef; }
  .ppc-sum:focus-visible { outline: 3px solid #3498db; outline-offset: -3px; }
  .ppc-sum::after { content: '+'; font-size: 16px; font-weight: 400; transition: transform .3s; }
  .ppc-det[open] .ppc-sum { background: #2c3e50; color: #fff; }
  .ppc-det[open] .ppc-sum::after { content: '\2212'; transform: rotate(180deg); }
  .ppc-sum::-webkit-details-marker { display: none; }
  .ppc-tab-wrap { padding: 12px; overflow-x: auto; background-color: #fff; }
  .ppc-tab { width: 100%; border-collapse: collapse; min-width: 600px; margin: 0; }
  .ppc-tab caption { caption-side: top; text-align: left; font-size: 11px; color: #666; padding: 0 0 8px 2px; }
  .ppc-tab th { background: #f1f3f5; color: #2c3e50; padding: 8px 10px; text-align: left; font-size: 11.5px; font-weight: 700; border-bottom: 2px solid #dee2e6; }
  .ppc-tab td { padding: 8px 10px; border-bottom: 1px solid #eaeaea; font-size: 12.5px; color: #444; }
  .ppc-tab tr:last-child td { border-bottom: none; }
  .ppc-tab tr:hover td { background-color: #f8f9fa; }
  .ppc-tab button.ppc-link { background: none; border: none; padding: 0; color: #2c3e50; font-weight: 700; font-size: 12.5px; font-family: inherit; text-align: left; cursor: pointer; text-decoration: underline; text-underline-offset: 2px; }
  .ppc-tab button.ppc-link:hover { color: #d9534f; }

.ppc-grade-wrapper:fullscreen,
  .ppc-grade-wrapper:-webkit-full-screen,
  .ppc-grade-wrapper.ppc-pseudo-fs { padding: 12px !important; background-color: #fff !important; display: flex !important; flex-direction: column; overflow: hidden !important; }
  .ppc-grade-wrapper.ppc-pseudo-fs { position: fixed !important; inset: 0 !important; width: 100vw !important; height: 100vh !important; height: 100dvh !important; z-index: 999997 !important; margin: 0 !important; }
  .ppc-grade-wrapper:fullscreen .ppc-titulo, .ppc-grade-wrapper:fullscreen .ppc-descricao, .ppc-grade-wrapper:fullscreen .ppc-btn-container, .ppc-grade-wrapper:fullscreen .ppc-titulo-grade, .ppc-grade-wrapper:fullscreen .ppc-dica, .ppc-grade-wrapper:fullscreen .ppc-optativas,
  .ppc-grade-wrapper:-webkit-full-screen .ppc-titulo, .ppc-grade-wrapper:-webkit-full-screen .ppc-descricao, .ppc-grade-wrapper:-webkit-full-screen .ppc-btn-container, .ppc-grade-wrapper:-webkit-full-screen .ppc-titulo-grade, .ppc-grade-wrapper:-webkit-full-screen .ppc-dica, .ppc-grade-wrapper:-webkit-full-screen .ppc-optativas,
  .ppc-grade-wrapper.ppc-pseudo-fs .ppc-titulo, .ppc-grade-wrapper.ppc-pseudo-fs .ppc-descricao, .ppc-grade-wrapper.ppc-pseudo-fs .ppc-btn-container, .ppc-grade-wrapper.ppc-pseudo-fs .ppc-titulo-grade, .ppc-grade-wrapper.ppc-pseudo-fs .ppc-dica, .ppc-grade-wrapper.ppc-pseudo-fs .ppc-optativas { display: none !important; }
  .ppc-grade-wrapper:fullscreen #ppc-canvas, .ppc-grade-wrapper:fullscreen #ppc-lista,
  .ppc-grade-wrapper:-webkit-full-screen #ppc-canvas, .ppc-grade-wrapper:-webkit-full-screen #ppc-lista,
  .ppc-grade-wrapper.ppc-pseudo-fs #ppc-canvas, .ppc-grade-wrapper.ppc-pseudo-fs #ppc-lista { flex: 1 1 auto; min-height: 0 !important; border-radius: 8px; overflow-y: auto; }
  .ppc-grade-wrapper.ppc-fs-opt:fullscreen .ppc-optativas,
  .ppc-grade-wrapper.ppc-fs-opt:-webkit-full-screen .ppc-optativas,
  .ppc-grade-wrapper.ppc-pseudo-fs.ppc-fs-opt .ppc-optativas { display: flex !important; flex: 1 1 auto; flex-direction: column; min-height: 0; margin: 0 !important; }
  .ppc-grade-wrapper.ppc-fs-opt:fullscreen .ppc-controls, .ppc-grade-wrapper.ppc-fs-opt:fullscreen #ppc-dica, .ppc-grade-wrapper.ppc-fs-opt:fullscreen #ppc-canvas, .ppc-grade-wrapper.ppc-fs-opt:fullscreen #ppc-lista,
  .ppc-grade-wrapper.ppc-fs-opt:-webkit-full-screen .ppc-controls, .ppc-grade-wrapper.ppc-fs-opt:-webkit-full-screen #ppc-dica, .ppc-grade-wrapper.ppc-fs-opt:-webkit-full-screen #ppc-canvas, .ppc-grade-wrapper.ppc-fs-opt:-webkit-full-screen #ppc-lista,
  .ppc-grade-wrapper.ppc-pseudo-fs.ppc-fs-opt .ppc-controls, .ppc-grade-wrapper.ppc-pseudo-fs.ppc-fs-opt #ppc-dica, .ppc-grade-wrapper.ppc-pseudo-fs.ppc-fs-opt #ppc-canvas, .ppc-grade-wrapper.ppc-pseudo-fs.ppc-fs-opt #ppc-lista { display: none !important; }
  .ppc-grade-wrapper.ppc-fs-opt:fullscreen .ppc-fonte, .ppc-grade-wrapper.ppc-fs-opt:fullscreen .ppc-optativas > .ppc-det,
  .ppc-grade-wrapper.ppc-fs-opt:-webkit-full-screen .ppc-fonte, .ppc-grade-wrapper.ppc-fs-opt:-webkit-full-screen .ppc-optativas > .ppc-det,
  .ppc-grade-wrapper.ppc-pseudo-fs.ppc-fs-opt .ppc-fonte, .ppc-grade-wrapper.ppc-pseudo-fs.ppc-fs-opt .ppc-optativas > .ppc-det { display: none !important; }
  .ppc-grade-wrapper.ppc-fs-opt:fullscreen #ppc-opt-canvas,
  .ppc-grade-wrapper.ppc-fs-opt:-webkit-full-screen #ppc-opt-canvas,
  .ppc-grade-wrapper.ppc-pseudo-fs.ppc-fs-opt #ppc-opt-canvas { flex: 1 1 auto; min-height: 0; margin-top: 6px; overflow: auto !important; }
  body.ppc-lock { overflow: hidden !important; }

  @media (max-width: 640px) {
    .ppc-titulo { font-size: 1.5rem; }
    .ppc-titulo-grade { font-size: 1.2rem; }
    .ppc-controls { justify-content: flex-start; }
    .ppc-busca { min-width: 0; flex: 1 1 140px; }
    #ppc-canvas, #ppc-opt-canvas { padding: 12px; }
    .ppc-meta { grid-template-columns: 1fr; }
    .ppc-tab { min-width: 480px; }
    .ppc-opt-cab { align-items: flex-start; flex-direction: column; }
    .ppc-opt-actions { justify-content: flex-start; width: 100%; }
    .ppc-panel { width: 100vw; }
  }

  @media (prefers-reduced-motion: reduce) {
    .ppc-grade-wrapper *, .ppc-panel, .ppc-backdrop { transition: none !important; animation: none !important; }
  }

  @media print {
    .ppc-controls, .ppc-dica, .ppc-btn-container, .ppc-backdrop, .ppc-panel { display: none !important; }
    #ppc-canvas, #ppc-opt-canvas { overflow: visible !important; border: none; background: #fff; padding: 0; }
    .ppc-node.ppc-dim, .ppc-edge.ppc-dim { opacity: 1 !important; }
    #ppc-lista { display: block !important; }
  }
