Re-Elect · CCSD Board of Trustees · District G

Linda P.Cavazos

A former teacher, family therapist, and lifelong community servant — fighting every day for the students and families of Clark County's east valley.

Scroll
Linda P. Cavazos — CCSD Board of Trustees, District G
Trustee, District G · Since 2017

About Linda

Rooted in Community. Driven by Students.

"Our children, families, and educators are real people, not just data points — they all deserve a safe learning and teaching environment, stability with qualified educator retention prioritized, and equitable opportunities for every child in every classroom."
— Linda P. Cavazos

Linda P. Cavazos was first appointed to the Clark County School District Board of Trustees in August 2017, elected to a full term in 2018, and re-elected in 2022. She represents District G — home to 48 schools and approximately 41,000 students across the east valley and Henderson.

Originally from Superior, Arizona, Linda grew up in a working-class family where education was everything. With the help of loans and scholarships, she attended Arizona State University before earning her Bachelor's in Secondary Education and Master's in Educational Psychology and Counseling from UNLV.

Linda spent 15 years teaching at Basic High School, nine years as an adjunct faculty member at UNLV supervising student teachers, and continues to serve as a part-time family therapist — working with young children, adolescents, survivors of gun violence, and veterans with PTSD. She and her husband Bob have five grown children and seven grandchildren, several of whom are CCSD graduates.

Education B.S. Secondary Education & M.S. Educational Psychology, UNLV
Teaching Career 15 years at Basic High School; 9 years adjunct at UNLV
Current Role Family therapist — youth, gun violence & PTSD survivors
Board Service Trustee since 2017 · Re-elected 2018 & 2022

Her Platform

Priorities for District G & All of CCSD

📖

Student Achievement

Raising academic outcomes through evidence-based programs, strong curriculum, and rigorous accountability that empowers teachers and supports every learner.

💚

Mental Health & Wellness

Drawing on her background as a family therapist, Linda champions on-campus counseling, social-emotional support, and resources that help students thrive beyond the classroom.

🛡️

Safe Schools

Addressing the root causes of campus violence — not just physical hardening — by investing in restorative practices, community support, and early intervention.

🤝

Community Voice

Elected trustees represent their constituents — not the superintendent, not other board members. Linda stays directly connected to the families of District G.

💰

Fiscal Oversight

Exercising informed, independent oversight of CCSD's budget — ensuring every dollar is spent to benefit students and classrooms across the district.

🎓

Teacher Support

Honoring the educators who shape our children's futures through fair compensation, professional development, and a district culture that values their expertise.

Endorsements

Voices from the Community

Linda has earned the trust of educators, parents, and community leaders across District G through years of consistent, principled service. Add your name to those standing with Linda.

Linda has always put students first. Her background as a teacher and therapist gives her a perspective on this board that is irreplaceable. We need her voice for another term.

Community Supporter
East Valley Parent & Educator

She fights for the kids no one else is fighting for — the ones struggling with mental health, violence at home, trauma. Linda sees those students and advocates for real solutions.

Community Supporter
District G Resident

Her willingness to ask hard questions and hold the district accountable — even when it's unpopular — is exactly what the board needs. Linda doesn't back down from the right thing.

Community Supporter
CCSD Educator
✦ Add your endorsement — contact the campaign to share your support.

Get Involved

Stand With Linda

Whether you'd like to volunteer, request a yard sign, make a donation, or simply stay informed — the campaign wants to hear from you. Every conversation matters in District G.

info@lindacavazos.com 📞 (702) 555-1234 📍 District G · East Valley, Clark County, NV
// ── WebGL Hero — Community Network of Care ── (function() { const canvas = document.getElementById('hero-canvas'); const gl = canvas.getContext('webgl') || canvas.getContext('experimental-webgl'); if (!gl) return; function resize() { const hero = document.getElementById('home'); canvas.width = hero.offsetWidth; canvas.height = hero.offsetHeight; gl.viewport(0, 0, canvas.width, canvas.height); } resize(); window.addEventListener('resize', resize); const vsSource = ` attribute vec2 a_pos; void main() { gl_Position = vec4(a_pos, 0.0, 1.0); } `; // ───────────────────────────────────────────────────────────────────────── // CONCEPT: Linda is the radiant heart at center. // Blue nodes = students (she was a teacher for 15 years) // Red nodes = families (she is a family therapist) // White nodes = community servants // Golden threads pulse outward from her — her daily fight, never stopping. // ───────────────────────────────────────────────────────────────────────── const fsSource = ` precision highp float; uniform float u_time; uniform vec2 u_res; uniform vec2 u_mouse; uniform float u_reveal; // 0..1 scene reveal #define TAU 6.28318530717959 #define PI 3.14159265358979 // ── Noise / fbm for organic background ── float hash(float n) { return fract(sin(n) * 43758.5453); } float hash2(vec2 p) { return fract(sin(dot(p, vec2(127.1,311.7))) * 43758.5453); } float noise(vec2 p) { vec2 i=floor(p), f=fract(p), u=f*f*(3.0-2.0*f); return mix(mix(hash2(i),hash2(i+vec2(1,0)),u.x), mix(hash2(i+vec2(0,1)),hash2(i+vec2(1,1)),u.x),u.y); } float fbm(vec2 p){ float v=0.,a=.5; mat2 m=mat2(1.6,1.2,-1.2,1.6); for(int i=0;i<5;i++){v+=a*noise(p);p=m*p;a*=.5;} return v; } // ── Distance from point p to line segment (a,b) ── float segDist(vec2 p, vec2 a, vec2 b) { vec2 ab = b - a, ap = p - a; float t = clamp(dot(ap, ab) / dot(ab, ab), 0.0, 1.0); return length(ap - t * ab); } // ── Glow helper ── float glow(float d, float radius, float softness) { return smoothstep(radius + softness, radius - softness * 0.5, d); } // ── Draw a single connection thread with traveling pulses ── // Returns: (thread_glow, pulse_glow, pulse_color_t) float drawThread(vec2 uv, vec2 a, vec2 b, float speed, float offset, float t, float reveal, out float pulseGlow) { float aspect = u_res.x / u_res.y; vec2 sc = vec2(aspect, 1.0); float d = segDist(uv * sc, a * sc, b * sc); // Thread fades in with reveal float threadAlpha = smoothstep(0.0, 0.3, reveal); float threadGlow = exp(-d * d * 1800.0) * 0.35 * threadAlpha; // Traveling pulse — 2 pulses per thread at offset phases pulseGlow = 0.0; for (int k = 0; k < 2; k++) { float phase = fract(t * speed + offset + float(k) * 0.5); vec2 pPos = mix(a, b, phase); float pDist = length(uv * sc - pPos * sc); float pAlpha = smoothstep(0.0, 0.2, reveal) * sin(phase * PI); // fade at ends pulseGlow += exp(-pDist * pDist * 2400.0) * pAlpha * 2.8; } return threadGlow; } // ── Draw a person node ── float drawNode(vec2 uv, vec2 center, float radius, float pulseAmt, float t, float revealDelay) { float aspect = u_res.x / u_res.y; vec2 d = (uv - center) * vec2(aspect, 1.0); float r = length(d); float rv = smoothstep(revealDelay, revealDelay + 0.25, u_reveal); float pulse = 1.0 + pulseAmt * sin(t * 2.1 + center.x * 30.0 + center.y * 20.0); float core = exp(-r * r / (radius * radius * 0.6)) * rv * pulse; float halo = exp(-r * r / (radius * radius * 4.0)) * rv * 0.4; return core + halo; } void main() { vec2 uv = gl_FragCoord.xy / u_res; uv.y = 1.0 - uv.y; float t = u_time * 0.5; float rv = u_reveal; float aspect = u_res.x / u_res.y; // ── Mouse ── vec2 mo = u_mouse / u_res; mo.y = 1.0 - mo.y; // ── Domain-warp background (rich, dark, alive) ── vec2 bp = uv * vec2(aspect, 1.0) * 1.6; vec2 q = vec2(fbm(bp + t * 0.15), fbm(bp + vec2(5.2,1.3) + t * 0.12)); vec2 r2 = vec2(fbm(bp + 2.8*q + t*0.08), fbm(bp + 2.8*q + vec2(8.3,2.8) + t*0.07)); float f = fbm(bp + 2.5 * r2 + t * 0.05); vec3 bg = mix(vec3(0.006,0.012,0.048), vec3(0.04,0.08,0.22), f * 0.55); bg += vec3(0.06,0.04,0.18) * fbm(uv * 3.0 - t*0.1) * 0.3; vec3 col = bg; // ════════════════════════════════════════════════════════ // NODE LAYOUT // Linda = L (center, golden) // Students = S1-S7 (left arc, blue — 15 years teaching) // Families = F1-F6 (right arc, red — family therapist) // Community = C1-C3 (top arc, white — lifelong servant) // ════════════════════════════════════════════════════════ vec2 L = vec2(0.500, 0.530); // Linda — center // Students — left arc vec2 S1 = vec2(0.175, 0.300); vec2 S2 = vec2(0.130, 0.455); vec2 S3 = vec2(0.155, 0.610); vec2 S4 = vec2(0.240, 0.220); vec2 S5 = vec2(0.265, 0.695); vec2 S6 = vec2(0.320, 0.195); vec2 S7 = vec2(0.090, 0.530); // Families — right arc (pairs and trios represent family units) vec2 F1 = vec2(0.740, 0.280); // parent vec2 F1c = vec2(0.810, 0.220); // child (smaller) vec2 F2 = vec2(0.790, 0.480); // parent vec2 F2p = vec2(0.860, 0.420); // partner vec2 F2c = vec2(0.820, 0.550); // child vec2 F3 = vec2(0.720, 0.680); // parent vec2 F3c = vec2(0.790, 0.740); // child // Community servants — top arc vec2 C1 = vec2(0.350, 0.125); vec2 C2 = vec2(0.500, 0.095); vec2 C3 = vec2(0.650, 0.125); // ── THREADS: Linda → everyone (her daily outreach) ── float pG; // pulse glow scratch vec3 threadAccum = vec3(0.0); // Color coding for thread types vec3 BLUE_T = vec3(0.30, 0.55, 1.00); // teaching / students vec3 RED_T = vec3(0.90, 0.18, 0.22); // healing / families vec3 WHITE_T = vec3(0.88, 0.90, 1.00); // community service // — Student threads (blue) — float tG; #define STHREAD(na, spd, off) \ tG = drawThread(uv, L, na, spd, off, t, rv, pG); \ threadAccum += BLUE_T * tG + BLUE_T * pG * 0.8; STHREAD(S1, 0.42, 0.00) STHREAD(S2, 0.38, 0.14) STHREAD(S3, 0.45, 0.28) STHREAD(S4, 0.40, 0.07) STHREAD(S5, 0.44, 0.35) STHREAD(S6, 0.37, 0.21) STHREAD(S7, 0.41, 0.42) // — Family threads (red) — #define FTHREAD(na, spd, off) \ tG = drawThread(uv, L, na, spd, off, t, rv, pG); \ threadAccum += RED_T * tG + RED_T * pG * 0.8; FTHREAD(F1, 0.33, 0.05) FTHREAD(F2, 0.36, 0.18) FTHREAD(F2p, 0.31, 0.25) FTHREAD(F3, 0.34, 0.38) // — Community threads (white) — #define CTHREAD(na, spd, off) \ tG = drawThread(uv, L, na, spd, off, t, rv, pG); \ threadAccum += WHITE_T * tG + WHITE_T * pG * 0.9; CTHREAD(C1, 0.28, 0.10) CTHREAD(C2, 0.30, 0.22) CTHREAD(C3, 0.27, 0.33) // — Intra-family bonds (faint, warm red) — #define BOND(na, nb) \ tG = drawThread(uv, na, nb, 0.20, hash2(na), t, max(0.0,rv-0.2), pG); \ threadAccum += vec3(0.9,0.3,0.3) * (tG * 0.5 + pG * 0.3); BOND(F1, F1c) BOND(F2, F2p) BOND(F2, F2c) BOND(F2p, F2c) BOND(F3, F3c) // — Student peer bonds (faint blue) — #define SBOND(na, nb) \ tG = drawThread(uv, na, nb, 0.18, hash2(na+nb), t, max(0.0,rv-0.3), pG); \ threadAccum += vec3(0.2,0.4,0.9) * (tG * 0.3 + pG * 0.2); SBOND(S1, S2) SBOND(S2, S3) SBOND(S3, S5) SBOND(S1, S4) col += clamp(threadAccum, 0.0, 2.0); // ── NODES ── // Students (small, bright blue-white, staggered reveal) float sn = 0.0; sn += drawNode(uv, S1, 0.018, 0.25, t, 0.10); sn += drawNode(uv, S2, 0.016, 0.20, t, 0.18); sn += drawNode(uv, S3, 0.019, 0.22, t, 0.14); sn += drawNode(uv, S4, 0.015, 0.28, t, 0.22); sn += drawNode(uv, S5, 0.017, 0.18, t, 0.12); sn += drawNode(uv, S6, 0.016, 0.24, t, 0.26); sn += drawNode(uv, S7, 0.018, 0.20, t, 0.20); col += vec3(0.45, 0.70, 1.00) * sn * 2.2; col += vec3(0.80, 0.90, 1.00) * sn * 0.9; // white core // Families (medium, warm red, staggered reveal) float fn2 = 0.0; fn2 += drawNode(uv, F1, 0.022, 0.20, t, 0.28); fn2 += drawNode(uv, F1c, 0.013, 0.30, t, 0.34); // child (smaller) fn2 += drawNode(uv, F2, 0.023, 0.18, t, 0.32); fn2 += drawNode(uv, F2p, 0.021, 0.22, t, 0.36); fn2 += drawNode(uv, F2c, 0.013, 0.28, t, 0.40); // child fn2 += drawNode(uv, F3, 0.022, 0.20, t, 0.30); fn2 += drawNode(uv, F3c, 0.013, 0.25, t, 0.38); // child col += vec3(1.00, 0.30, 0.28) * fn2 * 2.0; col += vec3(1.00, 0.80, 0.80) * fn2 * 0.8; // Community (medium, crisp white-silver, staggered reveal) float cn = 0.0; cn += drawNode(uv, C1, 0.020, 0.15, t, 0.42); cn += drawNode(uv, C2, 0.020, 0.12, t, 0.46); cn += drawNode(uv, C3, 0.020, 0.14, t, 0.44); col += vec3(0.92, 0.94, 1.00) * cn * 2.5; col += vec3(0.60, 0.72, 1.00) * cn * 0.8; // ── LINDA — central radiant heart ── vec2 Ld = (uv - L) * vec2(aspect, 1.0); float Lr = length(Ld); float lindaReveal = smoothstep(0.0, 0.20, rv); // Outer atmospheric glow (she fills the whole scene with warmth) float outerGlow = exp(-Lr * Lr * 2.0) * lindaReveal * 0.5; col += vec3(0.55, 0.65, 1.00) * outerGlow; col += vec3(0.90, 0.40, 0.20) * exp(-Lr * Lr * 5.0) * lindaReveal * 0.3; // Heartbeat rings — her daily fight, pulsing outward for (int k = 0; k < 4; k++) { float ringT = fract(t * 0.55 + float(k) * 0.25); float ringR = ringT * 0.42; float ringFade = sin(ringT * PI); float ringD = abs(Lr - ringR); float ring = exp(-ringD * ringD * 3000.0) * ringFade * lindaReveal * 0.7; // Outer rings fade from blue to red — like a heartbeat vec3 ringCol = mix(vec3(0.30,0.55,1.00), vec3(0.90,0.18,0.22), ringT); col += ringCol * ring; } // Core star: 6-ray radiant burst float lAng = atan(Ld.y, Ld.x); float rays = 0.0; for (int i = 0; i < 6; i++) { float ra = float(i) * PI / 3.0 + t * 0.4; float diff = abs(mod(lAng - ra + PI, TAU) - PI); rays += exp(-diff * diff * 8.0) * exp(-Lr * 14.0) * 1.8; } float lCore = exp(-Lr * Lr * 1200.0) * 8.0; float lMid = exp(-Lr * Lr * 180.0) * 2.5; float lPulse = 0.90 + 0.10 * sin(u_time * 2.4); col += vec3(1.00, 0.92, 0.60) * (lCore + rays) * lindaReveal * lPulse; col += vec3(1.00, 0.60, 0.30) * lMid * lindaReveal * lPulse; col += vec3(0.40, 0.65, 1.00) * exp(-Lr * 25.0) * lindaReveal * 0.6; // ── MOUSE — gentle warmth that draws nearby nodes closer ── float md = length((uv - mo) * vec2(aspect, 1.0)); col += vec3(0.60, 0.75, 1.00) * exp(-md * md * 55.0) * 1.4; col += vec3(0.90, 0.92, 1.00) * exp(-md * md * 900.0) * 2.5; // ── STARS (faint, far-off — Nevada night sky) ── float star = 0.0; for (int i = 0; i < 14; i++) { float fi = float(i); vec2 sp = vec2(hash(fi * 3.7 + 1.1), hash(fi * 7.3 + 2.2)) * 0.85 + 0.075; float sd = length((uv - sp) * vec2(aspect, 1.0)); float tw = 0.5 + 0.5 * sin(u_time * (1.0 + hash(fi) * 1.5) + fi * 2.1); star += exp(-sd * sd * 28000.0) * tw * 0.7; } col += vec3(0.85, 0.90, 1.00) * star * smoothstep(0.0, 0.5, rv); // ── VIGNETTE ── float vig = 1.0 - smoothstep(0.30, 1.20, length((uv - vec2(0.5,0.5)) * vec2(0.85,1.0))); col = mix(col * 0.12, col, vig * 0.7 + 0.3); // Overall darkness (keep text readable) col *= 0.76; gl_FragColor = vec4(pow(clamp(col, 0.0, 1.0), vec3(0.82)), 1.0); } `; function compile(type, src) { const sh = gl.createShader(type); gl.shaderSource(sh, src); gl.compileShader(sh); if (!gl.getShaderParameter(sh, gl.COMPILE_STATUS)) console.warn(gl.getShaderInfoLog(sh)); return sh; } const prog = gl.createProgram(); gl.attachShader(prog, compile(gl.VERTEX_SHADER, vsSource)); gl.attachShader(prog, compile(gl.FRAGMENT_SHADER, fsSource)); gl.linkProgram(prog); gl.useProgram(prog); const buf = gl.createBuffer(); gl.bindBuffer(gl.ARRAY_BUFFER, buf); gl.bufferData(gl.ARRAY_BUFFER, new Float32Array([-1,-1,1,-1,-1,1,1,1]), gl.STATIC_DRAW); const aPos = gl.getAttribLocation(prog, 'a_pos'); gl.enableVertexAttribArray(aPos); gl.vertexAttribPointer(aPos, 2, gl.FLOAT, false, 0, 0); const uTime = gl.getUniformLocation(prog, 'u_time'); const uRes = gl.getUniformLocation(prog, 'u_res'); const uMouse = gl.getUniformLocation(prog, 'u_mouse'); const uReveal = gl.getUniformLocation(prog, 'u_reveal'); let mouse = { x: canvas.width / 2, y: canvas.height / 2 }; let reveal = 0; document.getElementById('home').addEventListener('mousemove', e => { const r = canvas.getBoundingClientRect(); mouse.x = e.clientX - r.left; mouse.y = e.clientY - r.top; }); let start = performance.now(); function frame() { const elapsed = (performance.now() - start) / 1000; reveal = Math.min(1.0, elapsed / 3.5); // 3.5 second cinematic reveal gl.uniform1f(uTime, elapsed); gl.uniform1f(uReveal, reveal); gl.uniform2f(uRes, canvas.width, canvas.height); gl.uniform2f(uMouse, mouse.x, mouse.y); gl.drawArrays(gl.TRIANGLE_STRIP, 0, 4); requestAnimationFrame(frame); } frame(); })();YPE html> Linda Cavazos — CCSD District G Board of Trustees
Re-Elect · CCSD Board of Trustees · District G

Linda P.Cavazos

A former teacher, family therapist, and lifelong community servant — fighting every day for the students and families of Clark County's east valley.

Scroll
Photo Coming Soon
Trustee, District G · Since 2017

About Linda

Rooted in Community. Driven by Students.

Linda P. Cavazos was first appointed to the Clark County School District Board of Trustees in August 2017, elected to a full term in 2018, and re-elected in 2022. She represents District G — home to 48 schools and approximately 41,000 students across the east valley and Henderson.

Originally from Superior, Arizona, Linda grew up in a working-class family where education was everything. With the help of loans and scholarships, she attended Arizona State University before earning her Bachelor's in Secondary Education and Master's in Educational Psychology and Counseling from UNLV.

Linda spent 15 years teaching at Basic High School, nine years as an adjunct faculty member at UNLV supervising student teachers, and continues to serve as a part-time family therapist — working with young children, adolescents, survivors of gun violence, and veterans with PTSD. She and her husband Bob have five grown children and seven grandchildren, several of whom are CCSD graduates.

Education B.S. Secondary Education & M.S. Educational Psychology, UNLV
Teaching Career 15 years at Basic High School; 9 years adjunct at UNLV
Current Role Family therapist — youth, gun violence & PTSD survivors
Board Service Trustee since 2017 · Re-elected 2018 & 2022

Her Platform

Priorities for District G & All of CCSD

📖

Student Achievement

Raising academic outcomes through evidence-based programs, strong curriculum, and rigorous accountability that empowers teachers and supports every learner.

💚

Mental Health & Wellness

Drawing on her background as a family therapist, Linda champions on-campus counseling, social-emotional support, and resources that help students thrive beyond the classroom.

🛡️

Safe Schools

Addressing the root causes of campus violence — not just physical hardening — by investing in restorative practices, community support, and early intervention.

🤝

Community Voice

Elected trustees represent their constituents — not the superintendent, not other board members. Linda stays directly connected to the families of District G.

💰

Fiscal Oversight

Exercising informed, independent oversight of CCSD's budget — ensuring every dollar is spent to benefit students and classrooms across the district.

🎓

Teacher Support

Honoring the educators who shape our children's futures through fair compensation, professional development, and a district culture that values their expertise.

Endorsements

Voices from the Community

Linda has earned the trust of educators, parents, and community leaders across District G through years of consistent, principled service. Add your name to those standing with Linda.

Linda has always put students first. Her background as a teacher and therapist gives her a perspective on this board that is irreplaceable. We need her voice for another term.

Community Supporter
East Valley Parent & Educator

She fights for the kids no one else is fighting for — the ones struggling with mental health, violence at home, trauma. Linda sees those students and advocates for real solutions.

Community Supporter
District G Resident

Her willingness to ask hard questions and hold the district accountable — even when it's unpopular — is exactly what the board needs. Linda doesn't back down from the right thing.

Community Supporter
CCSD Educator
✦ Add your endorsement — contact the campaign to share your support.

Get Involved

Stand With Linda

Whether you'd like to volunteer, request a yard sign, make a donation, or simply stay informed — the campaign wants to hear from you. Every conversation matters in District G.

info@lindacavazos.com 📞 (702) 555-1234 📍 District G · East Valley, Clark County, NV