Site Planos Cursos Painel
GPlanSiS|Group

Design system · v1.0

A linguagem visual do ONDA, escrita.

Tokens, componentes e blocos extraídos do que já está no ar — mesmos nomes de classe, mesmos valores de _site.php, _admin.php e _topbar.php. Arquivo único, sem dependência nenhuma além das duas fontes.

Archivo + IBM Plex Mono Laranja #FF4B12 · Preto #0B0B0B · Papel #F1F0EC Cantos de 2px, nunca arredondados

Fundamentos

Uma cor de ação, uma escala tipográfica de duas famílias e uma regra de forma que o sistema inteiro obedece: quase nada é arredondado.

Como ler esta página Cada componente traz um selo. no sistema significa que a classe existe hoje no código, com esse nome. novo significa que não existe ainda — foi trazido da referência e vestido com os nossos tokens, pronto para entrar quando for preciso. Sem esse selo, o documento viraria uma promessa que o time descobre quebrada na hora de usar.

Cores

O laranja é ação e foco, nunca decoração. O preto carrega hierarquia (topo, hero, planos em destaque). O papel é o fundo de tudo — o sistema não usa branco puro como superfície de página, só dentro de caixas.

Paleta no sistema
--orange#FF4B12
--orange2#FF7A45
--ink#0B0B0B
--ink2#171613
--paper#F1F0EC
--paper2#E4E3DC
--line#C9C7BE
--muted#6E6B62
--ok#166534
--erro#B3261E
--alerta#8A5A00
:root{
  --orange:#FF4B12;  --orange2:#FF7A45;
  --ink:#0B0B0B;     --ink2:#171613;
  --paper:#F1F0EC;   --paper2:#E4E3DC;
  --line:#C9C7BE;    --muted:#6E6B62;
  --ok:#166534;      --erro:#B3261E;   --alerta:#8A5A00;
}
Regra de contraste. O laranja #FF4B12 sobre papel passa em AA para texto grande e para elementos de interface, não para texto corrido pequeno — em parágrafo use --ink ou --muted. Sobre o preto, use --orange2 (#FF7A45), que é o tom claro criado exatamente para isso.

Tipografia

Archivo para conteúdo, com pesos altos e entrelinha apertada (letter-spacing negativo nos títulos). IBM Plex Mono para tudo que é etiqueta: botões, tags, rótulos de campo, metadados. A regra é simples — se o texto nomeia alguma coisa, é mono e caixa alta; se ele é lido, é Archivo.

Escala no sistema
h1 · 900 · -.05em

Título de página

h2 · 800 · -.04em

Título de seção

h3 · 700

Subtítulo

.lede · 500

Parágrafo de abertura, logo abaixo do título.

corpo · 15/1.55

Texto corrido do sistema, no painel e no site.

.pequeno · 12.5

Explicação de apoio, abaixo de tabela ou campo.

.eyebrow · mono 11 · .16em

Categoria acima do título

label · mono 11 · .12em
<p class="eyebrow">Categoria</p>
<h1>Título de página</h1>
<p class="lede">Parágrafo de abertura.</p>
<p>Texto corrido.</p>
<p class="pequeno">Explicação de apoio.</p>

/* o eyebrow carrega a barrinha laranja no ::before —
   é ela que identifica a marca antes de qualquer logo */

Espaço e forma

Escala

--s-14px
--s-28px
--s-312px
--s-416px
--s-522px
--s-632px
--s-748px
--s-864px

Seções usam clamp() em vez de valor fixo: padding:clamp(16px,2.2vw,26px). O sistema respira menos no celular sem precisar de media query.

Forma

--radius 2px
tudo: caixas, botões, campos
--border
1px sólido, cor --line
borda-guia 3px
mensagens e destaques
sem sombra
profundidade vem da borda
Por que 2px e não 10px O sistema é de engenharia, não de consumo. Canto reto e borda fina leem como instrumento; canto arredondado com sombra lê como app de varejo. É a decisão que mais distingue esta interface — e a mais fácil de estragar sem perceber.

Componentes

Cada bloco traz o componente ao vivo, o selo do que já existe e o HTML para copiar.

Botões

São dois conjuntos, e a diferença é o lugar: .btn é do site público (contorno por padrão, .forte em laranja para a ação principal); button é do painel (preenchido em preto, .sec para secundário, .peq dentro de tabela).

Site · .btn no sistema
<div class="acoes">
  <a class="btn forte" href="#">Ação principal</a>
  <a class="btn" href="#">Ação secundária</a>
</div>
Painel · button no sistema
— dentro de td.acoes
<button type="submit">Gravar</button>
<button type="button" class="sec">Cancelar</button>
<button type="submit" class="peq sec">apagar</button>

/* no PHP, o botão de ação em tabela sai pronto: */
<?= adm_botao_post('sala_apagar', ['id' => $id], 'apagar', 'sec',
      'Apagar a sala? Não há desfazer.') ?>
Sobre fundo escuro no sistema
<a class="btn forte" href="#">Ação principal</a>
<a class="btn claro" href="#">Contorno claro</a>

/* nunca use .btn sem modificador sobre preto:
   a borda escura desaparece no fundo */

Tags e selos

.tag · estados no sistema
aberta fechada link público ligado master neutra

A .tag nomeia estado, não categoria. Verde é o que está funcionando, cinza o que está desligado, laranja o que exige atenção, preto o que é privilégio.

<span class="tag on">aberta</span>
<span class="tag off">fechada</span>
<span class="tag o">link público ligado</span>
<span class="tag d">master</span>

Formulários

Campos no sistema

Endereço inválido: falta o domínio depois do @.

Aparece só no painel, nunca para o aluno.

<div class="campo">
  <label for="nome">Nome da sala</label>
  <input id="nome" name="nome" type="text" placeholder="Encontro da Turma 01">
  <p class="dica">Explicação curta do campo.</p>
</div>

<label class="marcar"><input type="checkbox">
  <span>Rótulo da opção</span></label>

/* o painel envolve tudo em .grade para virar coluna no celular */
<div class="grade" style="grid-template-columns:repeat(auto-fit,minmax(230px,1fr))">
Rótulo é obrigatório, placeholder não substitui O rótulo em mono/caixa alta é o que dá ao painel a cara de instrumento. Placeholder some quando a pessoa digita — e aí ninguém mais sabe o que aquele campo era.

Caixas e cartões

.caixa · o container do painel no sistema

Servidor

Uma caixa por assunto. É a unidade de composição do painel inteiro: título, conteúdo e, quando precisa, a explicação do porquê no fim.

Caixa escura

Para o que é privilegiado ou definitivo — um plano em destaque, um aviso de operação.

<div class="caixa">
  <h2>Servidor</h2>
  …
  <p class="pequeno">Por que este campo existe.</p>
</div>
<div class="caixa escura">…</div>
.card e .plano · site no sistema
4 etapas

Harness de agentes

Como colocar um agente sob regra e medir o que ele entrega.

12 hR$ 480
Acesso inicial
R$ 9,99
  • Catálogo completo
  • Material de apoio
  • Sem prazo
ONDA · Turma 01
R$ 800
  • 16 encontros de 3h
  • Duas imersões
  • Sistema no ar
<a class="card" href="/curso.php?c=harness">
  <span class="tag o">4 etapas</span>
  <h4>Harness de agentes</h4>
  <p class="pequeno">Descrição curta.</p>
  <span class="pe"><span>12 h</span><b>R$ 480</b></span>
</a>

<div class="plano destaque">
  <span class="nome">ONDA · Turma 01</span>
  <div class="preco">R$ 800</div>
  <ul><li>16 encontros de 3h</li></ul>
</div>
Indicador, destaque e pessoa novo
149aulas publicadas
113etapas autorais
18semanas por turma
64 hde encontro

O que você precisa saber

  • Cada turma sai com um sistema em produção, não com certificado.
  • São 16 encontros semanais de 3h mais duas imersões de 8h.
  • A garantia da primeira onda cobre as quatro primeiras semanas.
SB
Stéfano Bianchi
Coordenação · GPlanSiS|Group
Falar por e-mail
<div class="numero"><b>149</b><span>aulas publicadas</span></div>

<div class="destaque-cx"><h4>O que você precisa saber</h4>
  <ul><li>Item</li></ul></div>

<div class="pessoa"><span class="pessoa__av">SB</span>
  <div><div class="pessoa__nome">Nome</div>
    <div class="pessoa__papel">Papel</div></div></div>

Listas

Três estilos novo

Incluído

  • Material das cinco ondas
  • Videoaulas
  • Sala de vídeo
  • Certificado de conclusão

Características

  • Encontros semanais
  • Turma reduzida
  • Caso real da sua operação
  • Entregável verificado

Como funciona

  1. A equipe traz o problema real
  2. O sistema nasce sob harness
  3. Cada onda entrega uma parte no ar
  4. A última semana é a virada de chave
<ul class="lista-ok"><li>Item com marca de conferido</li></ul>
<ul class="lista-tr"><li>Item com traço</li></ul>
<ol class="lista-n"><li>Passo numerado (01, 02…)</li></ol>

Feedback

.msg · as três do painel no sistema
Sala aberta: quem tem direito já entra.
A caixa oficial não está enviando. Configure em Divulgação → Caixa oficial; os botões de campanha ligam sozinhos depois disso.
Essa chave privada não foi aceita pelo OpenSSL. Cole o arquivo inteiro, do -----BEGIN ao -----END.
<div class="msg a">Deu certo.</div>
<div class="msg w">Atenção: falta configurar algo.</div>
<div class="msg e">Não deu, e este é o motivo.</div>

/* no PHP elas vêm de adm_voltar($msg, 'a'|'w'|'e') */
A mensagem diz o que fazer, não só o que houve É a regra de escrita do sistema inteiro: “A caixa não está enviando” é diagnóstico; “Configure em Divulgação → Caixa oficial” é o que tira a pessoa do lugar. Toda .msg de erro ou alerta carrega a saída.
Progresso, dica e diálogo novo
Vagas da Turma 013/20
Cobertura do material92%
taxa de ocupação
<div class="barra"><div class="barra__fill" style="width:15%"></div></div>
<span class="dica-tip" data-tip="Texto de apoio">termo</span>
<button data-modal-abrir="dlg">Abrir diálogo</button>

/* o painel já tem um diálogo de confirmação pronto:
   qualquer <form data-confirmar="…"> pergunta antes de enviar
   — ver adm_confirmar_js() em _admin.php */

Tabelas

.rolar + table no sistema
SalaTipoUsosEstado Ações
Encontro da Turma 01
T01 · Turma 01
sala da turma12 aberta
Plantão GPlanSiS sala livre3 aberta
Reunião · 03/09 16:20 reunião 1:11 fechada

Explicação abaixo da tabela, sempre: o que a coluna significa e o que a ação faz de irreversível.

<div class="rolar">
  <table>
    <thead><tr><th>Sala</th><th class="n">Usos</th></tr></thead>
    <tbody><tr><td>…</td><td class="n">12</td></tr></tbody>
  </table>
</div>

/* adm_fechar() copia o <th> para data-label de cada <td>:
   no celular a tabela vira cartão sem ninguém anotar nada */

Blocos de página

Seções inteiras, na ordem em que o site as empilha.

Hero no sistema

Turma 01 · início 06/10/2026

Sua equipe sai com um sistema no ar.

Não é curso que termina em certificado. São 18 semanas em que cada setor constrói e coloca em produção o próprio sistema.

<section class="hero"><div class="wrap">
  <p class="eyebrow">Turma 01 · início 06/10/2026</p>
  <h1>Sua equipe sai com um sistema <em>no ar</em>.</h1>
  <p class="lede">Subtítulo.</p>
  <div class="acoes"><a class="btn forte" href="#">Ação</a></div>
</div></section>

/* o <em> dentro do h1 pinta a palavra de laranja —
   é o único destaque tipográfico do sistema */
Chamada final novo

Pronto para pôr o primeiro sistema no ar?

Fale com a gente e veja se a sua operação cabe na próxima turma.

<div class="cta">
  <h2>Título da chamada</h2>
  <p>Texto de apoio.</p>
  <div class="cluster"><a class="btn forte" href="#">Ação</a></div>
</div>

/* regra do sistema: todo CTA de WhatsApp tem o par por e-mail —
   quem está no computador do trabalho não tem o app */
Ordem de montagem no sistema
  1. Topbar de sessão (só com login) — topbar_html()
  2. Nav do site ou .topo do painel
  3. Hero preto: eyebrow, h1 com <em>, lede, ações
  4. Faixa de fatos em mono
  5. Seções de conteúdo em .caixa ou .card
  6. Tabela em .rolar, com explicação embaixo
  7. Chamada final e rodapé
<body>
  <?= topbar_html() ?>              /* só com sessão */
  <nav class="topo">…</nav>
  <section class="hero">…</section>
  <section class="sec"><div class="wrap">
    <div class="grade g3">…</div>
  </div></section>
  <footer>…</footer>
</body>

Como usar

1. A fonte da verdade é o PHP

Os estilos moram em site_css() (_site.php), adm_css() (_admin.php) e no bloco do _topbar.php. Esta página é o espelho, não o original: mudou lá, atualize aqui.

2. Nunca escreva cor à mão

Use as variáveis. Um #FF4B12 solto no meio de um arquivo é o que impede trocar a marca depois — e sempre aparece um.

3. Nomes em português

O sistema inteiro nomeia em português: .caixa, .msg, .tag, .rolar, .pequeno. Componente novo segue a mesma língua.

4. Acessibilidade

Foco visível em laranja, sempre. Abas e sanfona já vêm com aria-expanded / aria-selected. Rótulo de campo é obrigatório.

O que este arquivo não é. Ele não é carregado por nenhuma página do sistema — é documentação. Copiar o CSS daqui para dentro de uma página criaria uma segunda fonte da verdade, que é exatamente o problema que um design system existe para evitar.

Tudo em um arquivo, sem build

Abra, copie o bloco que precisar e mantenha os tokens. O resto do sistema continua reconhecendo o que você fizer.