from pathlib import Path
p=Path('/opt/struktur/projects-dashboard/app.py')
s=p.read_text()
old_css='.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:1.5rem}.card{background:#161b27;border:1px solid #1e2330;border-radius:12px;padding:1.5rem}.icon{font-size:2rem;margin-bottom:.8rem}.title{font-size:1.1rem;font-weight:600;color:#fff;margin-bottom:.5rem}.desc{font-size:.85rem;color:#94a3b8;line-height:1.5;min-height:3.8rem}.metrics{display:grid;grid-template-columns:1fr 1fr;gap:.55rem;margin-top:1rem}.metric{background:#0f1420;border:1px solid #263044;border-radius:8px;padding:.6rem}.metric-label{display:block;color:#64748b;font-size:.68rem;text-transform:uppercase;letter-spacing:.05em;margin-bottom:.2rem}.metric-value{display:block;color:#e2e8f0;font-size:.8rem;font-weight:650;line-height:1.3}.plan-note{margin-top:.7rem;color:#64748b;font-size:.7rem}.btn{display:inline-block;margin-top:1.2rem;background:#1e3a5f;color:#60a5fa;border:0;border-radius:6px;padding:.45rem .9rem;text-decoration:none;font-size:.8rem;font-weight:600}'
new_css='.grid{display:flex;flex-direction:column;gap:.85rem}.card{background:#161b27;border:1px solid #1e2330;border-radius:12px;padding:1rem 1.15rem;display:grid;grid-template-columns:minmax(250px,1.6fr) repeat(4,minmax(120px,.75fr)) auto;gap:.8rem;align-items:center}.project-main{display:grid;grid-template-columns:auto 1fr;gap:.8rem;align-items:center}.icon{font-size:1.8rem}.title{font-size:1rem;font-weight:600;color:#fff;margin-bottom:.2rem}.desc{font-size:.78rem;color:#94a3b8;line-height:1.4}.metrics{display:contents}.metric{background:#0f1420;border:1px solid #263044;border-radius:8px;padding:.55rem}.metric-label{display:block;color:#64748b;font-size:.64rem;text-transform:uppercase;letter-spacing:.05em;margin-bottom:.18rem}.metric-value{display:block;color:#e2e8f0;font-size:.78rem;font-weight:650;line-height:1.25}.plan-note{display:none}.btn{display:inline-block;margin:0;background:#1e3a5f;color:#60a5fa;border:0;border-radius:6px;padding:.45rem .9rem;text-decoration:none;font-size:.8rem;font-weight:600;white-space:nowrap}'
old_body='<div class="grid">{% for p in customer_projects %}<article class="card" id="project-card-{{p.id}}"><div class="icon">{{p.icon}}</div><div class="title">{{p.name}}</div><div class="desc">{{p.desc}}</div><div class="metrics">{% for label,value in p.metrics.items() %}<div class="metric"><span class="metric-label">{{label}}</span><span class="metric-value">{{value}}</span></div>{% endfor %}</div><div class="plan-note">Planwerte zur internen Bewertung</div><a class="btn" href="/kundenprojekte/{{p.id}}">Details</a></article>{% endfor %}</div>'
new_body='<div class="grid">{% for p in customer_projects %}<article class="card" id="project-card-{{p.id}}"><div class="project-main"><div class="icon">{{p.icon}}</div><div><div class="title">{{p.name}}</div><div class="desc">{{p.desc}}</div></div></div><div class="metrics">{% for label,value in p.metrics.items() %}<div class="metric"><span class="metric-label">{{label}}</span><span class="metric-value">{{value}}</span></div>{% endfor %}</div><div class="plan-note">Planwerte zur internen Bewertung</div><a class="btn" href="/kundenprojekte/{{p.id}}">Details</a></article>{% endfor %}</div>'
if old_css not in s: raise SystemExit('old_css not found')
if old_body not in s: raise SystemExit('old_body not found')
s=s.replace(old_css,new_css,1).replace(old_body,new_body,1)
s=s.replace('@media(max-width:700px){header,.wrap{padding-left:1.25rem;padding-right:1.25rem}header{gap:1rem;align-items:flex-start}}','@media(max-width:1000px){.card{grid-template-columns:1fr 1fr}.project-main,.btn{grid-column:1/-1}.metrics{display:grid;grid-template-columns:1fr 1fr;grid-column:1/-1}}@media(max-width:700px){header,.wrap{padding-left:1.25rem;padding-right:1.25rem}header{gap:1rem;align-items:flex-start}.card{grid-template-columns:1fr}.metrics{grid-template-columns:1fr 1fr}}',1)
p.write_text(s)
print('PATCH_OK')