Ctrl K
ComunidadGuías…

themes/chalkboard.yaml

Rama main · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
# Chalkboard — chalk on a green classroom board.
# A plate theme: the background is a matte slate-green board with a soft chalk
# texture, and the native content uses handwriting-adjacent weights. Nothing else
# in the gallery is a school board, so this is unmistakably distinct.

name: chalkboard
label: Chalkboard
summary: Chalk on a green classroom board — lessons, not slides.

tokens:
  palette:
    bg: "#2E4A3B"          # board green
    surface: "#35523F"
    ink: "#F5F1E1"         # chalk white
    ink_muted: "#C8CEB8"
    accent: "#F2C14E"      # chalk yellow
    accent_alt: "#E8684A"  # chalk red-orange
    rule: "#5A715F"
    on_accent: "#2E4A3B"

  surfaces:
    title:   { bg: "#274031", ink: "#F5F1E1", muted: "#C2CCB4", accent: "#F2C14E" }
    section: { bg: "#F2C14E", ink: "#274031", muted: "#465843" }

  dark:
    bg: "#243B2F"
    surface: "#2A4434"
    ink: "#F5F1E1"
    ink_muted: "#BCC7AE"
    accent: "#F4C95B"
    accent_alt: "#EE7550"
    rule: "#FFFFFF26"
    on_accent: "#243B2F"

  type:
    display:  { family: "Source Serif 4", weight: 600, size: 42, line: 1.12, tracking: -0.3 }
    heading:  { family: "Source Serif 4", weight: 600, size: 30, line: 1.2,  tracking: -0.2 }
    subhead:  { family: Inter,            weight: 400, size: 15, line: 1.5,  tracking: 0 }
    body:     { family: Inter,            weight: 400, size: 13, line: 1.65, tracking: 0 }
    caption:  { family: Inter,            weight: 500, size: 10, line: 1.35, tracking: 0.3 }
    eyebrow:  { family: Inter,            weight: 700, size: 10, line: 1.2,  tracking: 1.8, transform: upper }
    stat:     { family: "Source Serif 4", weight: 700, size: 54, line: 1.0,  tracking: -0.6 }

  grid:
    # A little wider than a flat theme: the content box is the inside of the
    # plate's panel, which the renderer draws past it on every side, and the
    # ground behind has to stay visible. Only a little — `flow`'s vertical
    # spine stops fitting its body above the readable floor past about 0.76in,
    # so this is the widest step that costs no theme a slide.
    margin: { top: 0.66, right: 0.74, bottom: 0.58, left: 0.74 }
    gutter: 0.30
    columns: 12
    band: { eyebrow_y: 0.62, title_y: 1.30, body_y: 2.55 }

  shape:
    radius: { card: 0.08, pill: 0.40, chip: 0.06 }
    border: { width: 1, color: "#7A8F7A" }
    card_pad: 0.30
    card_fill: { color: "#35523F", transparency: 0 }

  shadow:
    card: { type: outer, blur: 10, offset: 3, angle: 90, color: "1A2B20", opacity: 0.4 }

  # Composition — src/composition.js owns the vocabulary; every axis
  # left out here is the shared default.
  layout:
    title:
      composition: centred
    section:
      composition: centred
    heading:
      opening: none
      rule: under
    content:
      frame: inset
    list:
      marker: dash

  plate:
    enabled: true
    html: |
      <style>
        .board{position:absolute;inset:0;background:
          radial-gradient(120% 100% at 50% 0%, {{tokens.palette.surface}} 0%, {{tokens.palette.bg}} 100%);}
        .board:after{content:"";position:absolute;inset:0;
          background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='140' height='140'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2'/><feColorMatrix type='saturate' values='0'/></filter><rect width='100%25' height='100%25' filter='url(%23n)' opacity='0.06'/></svg>");
          opacity:0.7;}
        .panel{position:absolute;left:{{panel.x}}px;top:{{panel.y}}px;width:{{panel.w}}px;height:{{panel.h}}px;
          background:{{tokens.palette.surface}}77;border:1px solid {{tokens.palette.rule}};border-radius:10px;}
      </style>
      <div class="board"></div>
      <div class="panel"></div>
    surfaces:
      title: |
        <style>
          .board{position:absolute;inset:0;background:
            radial-gradient(120% 100% at 50% 0%, {{tokens.palette.surface}} 0%, {{tokens.surfaces.title.bg}} 100%);}
          .board:after{content:"";position:absolute;inset:0;
            background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='140' height='140'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2'/><feColorMatrix type='saturate' values='0'/></filter><rect width='100%25' height='100%25' filter='url(%23n)' opacity='0.06'/></svg>");
            opacity:0.7;}
        </style>
        <div class="board"></div>
      section: |
        <style>
          .sec{position:absolute;inset:0;background:
            linear-gradient(135deg, {{tokens.surfaces.section.bg}} 0%, {{tokens.palette.accent_alt}} 100%);}
          .sec:after{content:"";position:absolute;inset:0;
            background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='140' height='140'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2'/><feColorMatrix type='saturate' values='0'/></filter><rect width='100%25' height='100%25' filter='url(%23n)' opacity='0.06'/></svg>");
            opacity:0.6;}
        </style>
        <div class="sec"></div>

voice:
  feel: patient, teacherly, encouraging, concrete
  density: medium
  prefers:
    - an explainer's patience — walk through the steps
    - concrete examples over abstractions
    - a clear takeaway per slide
  avoid:
    - corporate jargon
    - dense multi-column walls
    - a rushed or breathless tone
  headline_style: >
    Write like a lesson title. "How a Frame Is Built" over "Ray Tracing
    Pipeline". Clear, patient, specific.
  body_style: >
    Friendly but exact. Explain the step, then the next one.